| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- #include <YSI_Coding\y_hooks>
- #define MAX_DRUGS 10
- #define MAX_DRUG_NAME 35
- #define DRUG_LIQUID (1)
- #define DRUG_GRAMS (2)
- #define DRUG_PILL (3)
- static DrugName[MAX_DRUGS][MAX_DRUG_NAME];
- static DrugType[MAX_DRUGS];
- static TempDrugName[MAX_PLAYERS][MAX_DRUG_NAME];
- static TempDrugType[MAX_PLAYERS];
- new Iterator:Drug<MAX_DRUGS>;
- hook OnMySQLConnected()
- {
- inline const OnDrugsFound()
- {
- for(new i; i < cache_num_rows(); i++)
- {
- if(Iter_Free(Drug) == INVALID_ITERATOR_SLOT)
- {
- printf("The maximum amount of drugs has been reached. (%d)", Iter_Count(Drug));
- break;
- }
- new drugid = INVALID_ITERATOR_SLOT;
- cache_get_value_name_int(i, "id", drugid);
- cache_get_value_name(i, "name", DrugName[drugid]);
- cache_get_value_name_int(i, "type", DrugType[drugid]);
- Iter_Add(Drug, drugid);
- }
- }
- MySQL_TQueryInline(MySQL_GetHandle(), using inline OnDrugsFound, "SELECT * FROM drugs");
- }
- Drug_CreateStep(playerid, step)
- {
- switch(step)
- {
- case 1: // Name
- {
- inline _response(response, listitem, string:inputtext[])
- {
- #pragma unused listitem
- if(!response) return 0;
- if(strlen(inputtext) < 1 || strlen(inputtext) > MAX_DRUG_NAME - 1)
- {
- SendErrorMessageF(playerid, "The drug name must be between 1 and %d characters.", MAX_DRUG_NAME - 1);
- return Drug_CreateStep(playerid, 1);
- }
- new drugName[MAX_DRUG_NAME];
- StrCpy(drugName, inputtext, sizeof(drugName));
- inline const OnNameVerified()
- {
- if(cache_num_rows())
- {
- SendErrorMessage(playerid, "That drug name is already in use.");
- return Drug_CreateStep(playerid, 1);
- }
- format(TempDrugName[playerid], 24, "%s", inputtext);
- Drug_CreateStep(playerid, 2);
- }
- MySQL_TQueryInline(MySQL_GetHandle(), using inline OnNameVerified, "SELECT id FROM drugs WHERE name = '%e'", drugName);
- }
- Dialog_ShowCallback(playerid, using inline _response, DIALOG_STYLE_INPUT, "Create drug", "{b3b3b3}Type the drug name:", "Next", "Back");
- }
- case 2: // Type
- {
- inline _response(response, listitem, string:inputtext[])
- {
- #pragma unused inputtext
- if(!response) return Drug_CreateStep(playerid, 1);
- TempDrugType[playerid] = listitem + 1;
- new drugid = Drug_InsertToDB(TempDrugName[playerid], TempDrugType[playerid]);
- SendAdminWarningF(playerid, "You have created a new drug. ID: %d, Name: %s, Selling in: %s", drugid, DrugName[drugid], Drug_GetTypeName(drugid));
- }
- Dialog_ShowCallback(playerid, using inline _response, DIALOG_STYLE_TABLIST_HEADERS, "Create drug", "Choose the drug type\n{b3b3b3}Liquid\n{b3b3b3}Grams\n{b3b3b3}Pill", "Next", "Back");
- }
- }
- return 1;
- }
- Drug_InsertToDB(const name[], type)
- {
- new drugid = Iter_Free(Drug);
- DrugType[drugid] = type;
- format(DrugName[drugid], MAX_DRUG_NAME, name);
- new query[128];
- mysql_format(MySQL_GetHandle(), query, sizeof(query), "INSERT INTO drugs (id, name, type) VALUES (%d, '%e', %d)", drugid, name, type);
- mysql_tquery(MySQL_GetHandle(), query);
- Iter_Add(Drug, drugid);
- return drugid;
- }
- CMD:createdrug(playerid, params[])
- {
- if(Iter_Free(Drug) == INVALID_ITERATOR_SLOT) return SendErrorMessage(playerid, "The maximum amount of drugs has been reached.");
- Drug_CreateStep(playerid, 1);
- return 1;
- }
- CMD:drugs(playerid, params[])
- {
- new string[256];
- strcat(string, "Drug name\tSelling in\n");
- foreach(new i : Drug)
- {
- strcat(string, va_return("{b3b3b3}%s\t%s\n", DrugName[i], Drug_GetTypeName(i)));
- }
- Dialog_Show(playerid, DIALOG_STYLE_TABLIST_HEADERS, "Available drugs on the server", string, "Close");
- return 1;
- }
- stock Drug_GetTypeName(drugid)
- {
- new string[MAX_DRUG_NAME];
- switch(DrugType[drugid])
- {
- case 1: strcat(string, "milliliters");
- case 2: strcat(string, "grams");
- case 3: strcat(string, "pills");
- default: strcat(string, "unknown");
- }
- return string;
- }
|