Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Inventoriaus kūrimo include
- Autorius "Bebras" 2013 - 2014 ©
- v0.3
- */
- /*
- native AddItem(itemname[]); Ši funkcija pridėta daiktą, nepanaudoję jos negalėsite naudotis tuo daiktu..
- native GivePlayerItem(playerid,item[],amount); Ši funkcija duoda žaidėjui tam tikrą daiktų skaičių(galima naudoti ir daiktų atėmimui).
- native ShowPlayerInventory(playerid); Ši funkcija parodys žaidėjui GUI su visais jo daiktais ir jų kiekiu(taipat paspaudus įvyks nurodytas veiksmas).
- native ResetPlayerItem(playerid,itemname[]); Ši funkcija atiims iš žaidėjo visus nurodytus daiktus.
- native ResetPlayerItems(playerid); Ši funkcija attims visus žaidėjo daiktus.
- native GetPlayerItemAmount(playerid,itemname[]); Ši funkcija gražins nurodyto daikto skaičių.
- */
- /*
- Table structure SQL if MySQL used.
- CREATE TABLE IF NOT EXISTS player_items (
- `Id` INT(11) AUTO_INCREMENT NOT NULL,
- Username VARCHAR(24) NOT NULL,
- ItemName VARCHAR(30) NOT NULL,
- Quantity INT(11) NOT NULL,
- PRIMARY KEY(`Id`)
- );
- */
- #define Bebras AUTORIUS
- #if defined INV_SAVE_Y_INI
- #if !defined _inc_y_ini
- #include <YSI\y_ini>
- #endif
- #elseif defined INV_SAVE_MYSQL
- #if !defined inc_a_mysql
- #include <a_mysql>
- #endif
- #if !defined INV_MYSQL_R38 && !defined INV_MYSQL_R6
- #define INV_MYSQL_R6
- #endif
- #endif
- #if !defined INV_LOAD_ONCONNECT && !defined INV_LOAD_ONSPAWN
- #define INV_LOAD_ONCONNECT
- #endif
- #if !defined isnull
- #define isnull(%1) \
- ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
- #endif
- #if !defined MAX_ITEMS
- #define MAX_ITEMS (15)
- #endif
- #if !defined MAX_ITEM_NAME
- #define MAX_ITEM_NAME (30)
- #endif
- #if !defined INV_EMPTY_DIALOG_ID
- #define INV_EMPTY_DIALOG_ID (32760)
- #endif
- #if !defined INV_INVENTORY_DIALOG_ID
- #define INV_INVENTORY_DIALOG_ID (457)
- #endif
- #define Item:%0(%1) forward item_%0(%1); public item_%0(%1)
- #if !defined ShowEmptyInventory
- #define ShowEmptyInventory(%0) \
- ShowPlayerDialog(%0, INV_EMPTY_DIALOG_ID, DIALOG_STYLE_MSGBOX,"Inventorius","{FF0000}Jūs neturite daiktų!","Gerai","")
- #endif
- static stock UsableItems[MAX_ITEMS][MAX_ITEM_NAME];
- // If MySQL usage is undefined, this should not be compiled either.
- static stock PrimarKeys[MAX_PLAYERS][MAX_ITEMS],inv_con_handle;
- //////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////
- //
- // Functions for users
- //
- //////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////
- stock AddItem(itemname[])
- {
- for(new i; i < MAX_ITEMS; i++)
- {
- if(!isnull(UsableItems[i]) && !strcmp(UsableItems[i],itemname)) return 0;
- if(isnull(UsableItems[i]))
- {
- strins(UsableItems[i],itemname,0,MAX_ITEM_NAME);
- return 1;
- }
- }
- return 0;
- }
- stock GivePlayerItem(playerid,item[],amount)
- {
- if(GetPVarInt(playerid,item) != 0) SetPVarInt(playerid,item,GetPVarInt(playerid,item)+amount);
- else SetPVarInt(playerid,item,amount);
- return GetPVarInt(playerid,item);
- }
- stock GetPlayerItemAmount(playerid,itemname[])
- return GetPVarInt(playerid,itemname[]);
- stock ShowPlayerInventory(playerid)
- {
- new bigstring[MAX_ITEMS*MAX_ITEM_NAME],str[MAX_ITEM_NAME+5];
- for(new i; i < MAX_ITEMS; i++)
- {
- if(GetPVarInt(playerid,UsableItems[i]) > 0)
- {
- format(str,sizeof(str),"%s %d\n",UsableItems[i],GetPVarInt(playerid,UsableItems[i]));
- strcat(bigstring,str);
- }
- }
- if(isnull(bigstring))
- {
- ShowEmptyInventory(playerid);
- return 0;
- }
- ShowPlayerDialog(playerid,INV_INVENTORY_DIALOG_ID,DIALOG_STYLE_LIST,"Inventorius",bigstring,"Pasirinkti","Išeiti");
- return 1;
- }
- stock ResetPlayerItem(playerid,itemname[])
- return DeletePVar(playerid,itemname);
- stock ResetPlayerItems(playerid)
- {
- for(new i; i < MAX_ITEMS; i++)
- {
- if(isnull(UsableItems[i])) break;
- DeletePVar(playerid,UsableItems[i]);
- }
- return 1;
- }
- //////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////
- //
- // Callback & function hooks
- //
- //////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////
- #if defined INV_SAVE_MYSQL && defined INV_MYSQL_R38
- stock inv_mysql_connect(const host[], const user[], const database[], const password[], port = 3306, bool:autoreconnect = true, pool_size = 2)
- {
- inv_con_handle = mysql_connect(host,user,database,password,port,autoreconnect,pool_size);
- return inv_con_handle;
- }
- #if defined _ALS_mysql_connect
- #undef mysql_connect
- #else
- #define _ALS_mysql_connect
- #endif
- #define mysql_connect inv_mysql_connect
- #endif
- public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
- {
- if(dialogid == INV_INVENTORY_DIALOG_ID && response)
- {
- if(isnull(inputtext)) return 1;
- new func[MAX_ITEM_NAME+5];
- strmid(func,inputtext,0,strfind(inputtext," "));
- strins(func,"item_",0);
- if(funcidx(func) == -1) return printf("Daikto \"%s\" funkcija nesukurta",func);
- CallLocalFunction(func,"i",playerid);
- return 1;
- }
- #if defined BInv_OnDialogResponse
- BInv_OnDialogResponse(playerid,dialogid,response,listitem,inputtext);
- #endif
- return 0;
- }
- #if defined _ALS_OnDialogResponse
- #undef OnDialogResponse
- #else
- #define _ALS_OnDialogResponse
- #endif
- #define OnDialogResponse BInv_OnDialogResponse
- #if defined BInv_OnDialogResponse
- forward BInv_OnDialogResponse(playerid,dialogid,response,listitem,inputtext[]);
- #endif
- public OnPlayerConnect(playerid)
- {
- #if defined INV_LOAD_ONCONNECT
- #if defined INV_SAVE_Y_INI
- Inv_YINILoadItems(playerid);
- #elseif defined INV_SAVE_MYSQL
- Inv_MySQLLoadItems(playerid);
- #endif
- #endif
- #if defined BInv_OnPlayerConnect
- BInv_OnPlayerConnect(playerid);
- #endif
- return 1;
- }
- #if defined _ALS_OnPlayerConnect
- #undef OnPlayerConnect
- #else
- #define _ALS_OnPlayerConnect
- #endif
- #define OnPlayerConnect BInv_OnPlayerConnect
- #if defined BInv_OnPlayerConnect
- forward BInv_OnPlayerConnect(playerid);
- #endif
- public OnPlayerSpawn(playerid)
- {
- #if defined INV_LOAD_ONSPAWN
- #if defined INV_SAVE_Y_INI
- Inv_YINILoadItems(playerid);
- #elseif defined INV_SAVE_MYSQL
- Inv_MySQLLoadItems(playerid);
- #endif
- #endif
- #if defined BInv_OnPlayerSpawn
- BInv_OnPlayerSpawn(playerid);
- #endif
- return 1;
- }
- #if defined _ALS_OnPlayerSpawn
- #undef OnPlayerSpawn
- #else
- #define _ALS_OnPlayerSpawn
- #endif
- #if !defined Bebras
- #error Include autorius - Bebras. Nuo tiesos nepabegsi, turek pagarbos.
- #endif
- #define OnPlayerSpawn BInv_OnPlayerSpawn
- #if defined BInv_OnPlayerSpawn
- forward BInv_OnPlayerSpawn(playerid);
- #endif
- public OnPlayerDisconnect(playerid, reason)
- {
- #if defined INV_SAVE_Y_INI
- Inv_YINISaveItems(playerid);
- #elseif defined INV_SAVE_MYSQL
- Inv_MySQLSaveItems(playerid);
- #endif
- #if defined BInv_OnPlayerDisconnect
- BInv_OnPlayerDisconnect(playerid,reason);
- #endif
- return 1;
- }
- #if defined _ALS_OnPlayerDisconnect
- #undef OnPlayerDisconnect
- #else
- #define _ALS_OnPlayerDisconnect
- #endif
- #define OnPlayerDisconnect BInv_OnPlayerDisconnect
- #if defined BInv_OnPlayerDisconnect
- forward BInv_OnPlayerDisconnect(playerid,reason);
- #endif
- //////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////
- //
- // Internal stuff
- //
- //////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////
- //////////////////////////
- // Y_INI //
- //////////////////////////
- #if defined INV_SAVE_Y_INI
- forward LoadPlayerItems_Items(playerid,name[],value[]);
- public LoadPlayerItems_Items(playerid,name[],value[])
- {
- new tmp;
- for(new i; i < sizeof(UsableItems); i++)
- {
- if(isnull(UsableItems[i])) continue;
- if(!strcmp(name,UsableItems[i]))
- GivePlayerItem(playerid,name,strval(value));
- }
- return 1;
- }
- #endif
- stock Inv_YINILoadItems(playerid)
- {
- new pv[MAX_PLAYER_NAME],path_to_inv[32];
- GetPlayerName(playerid, pv,sizeof(pv));
- format(path_to_inv,sizeof(path_to_inv),"Inventory_%s.ini",pv);
- if(fexist(path_to_inv))
- INI_ParseFile(path_to_inv,"LoadPlayerItems_%s",.bExtra=true,.extra=playerid);
- return;
- }
- stock Inv_YINISaveItems(playerid)
- {
- new pv[MAX_PLAYER_NAME],path_to_inv[32];
- GetPlayerName(playerid, pv,sizeof(pv));
- format(path_to_inv,sizeof(path_to_inv),"Inventory_%s.ini",pv);
- new INI:inv_file = INI_Open(path_to_inv);
- INI_SetTag(inv_file,"Items");
- for(new i; i < sizeof(UsableItems); i++)
- {
- if(isnull(UsableItems[i])) continue;
- INI_WriteInt(inv_file,UsableItems[i],GetPVarInt(playerid, UsableItems[i]));
- }
- INI_Close(inv_file);
- return;
- }
- //////////////////////////
- // MySQL //
- //////////////////////////
- stock Inv_MySQLLoadItems(playerid)
- {
- new query[80],name[MAX_PLAYER_NAME];
- new item[MAX_ITEM_NAME],quantity;
- GetPlayerName(playerid,name,sizeof(name));
- #if defined INV_MYSQL_R38
- mysql_format(inv_con_handle,query,sizeof(query),"SELECT * FROM player_items WHERE Username = '%e'",name);
- new Cache:result = mysql_query(inv_con_handle, query);
- {
- for(new i = 0; i < cache_get_row_count(); i++)
- {
- cache_get_field_content(i,"ItemName",item);
- quantity = cache_get_field_content_int(i, "Quantity");
- for(new j; j < sizeof(UsableItems); j++)
- {
- if(isnull(UsableItems[j])) continue;
- if(!strcmp(item,UsableItems[j]))
- {
- GivePlayerItem(playerid,item,quantity);
- PrimarKeys[playerid][j] = cache_get_field_content_int(j,"Id");
- }
- }
- }
- }
- cache_delete(result);
- #elseif defined INV_MYSQL_R6
- mysql_real_escape_string(name,name);
- format(query,sizeof(query),"SELECT * FROM player_items WHERE Username = '%s'",name);
- mysql_query(query);
- mysql_store_result();
- while(mysql_retrieve_row())
- {
- mysql_fetch_field_row(item, "Quantity");
- quantity = strval(item);
- mysql_fetch_field_row(item,"ItemName");
- for(new i; i < sizeof(UsableItems); i++)
- {
- if(isnull(UsableItems[i])) continue;
- if(!strcmp(item,UsableItems[i]))
- {
- GivePlayerItem(playerid,item,quantity);
- mysql_fetch_field_row(item, "Id");
- PrimarKeys[playerid][i] = strval(item);
- }
- }
- }
- mysql_free_result();
- #endif
- return;
- }
- stock Inv_MySQLSaveItems(playerid)
- {
- new query[150],name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, sizeof(name));
- for(new i = 0; i < sizeof(UsableItems); i++)
- {
- if(isnull(UsableItems[i])) continue;
- new amount = GetPVarInt(playerid,UsableItems[i]);
- #if defined INV_MYSQL_R38
- mysql_format(inv_con_handle,query,sizeof(query),"INSERT INTO player_items VALUES(%d,'%e','%e',%d) ON DUPLICATE KEY UPDATE Quantity = %d",
- PrimarKeys[playerid][i],name,UsableItems[i],amount,amount);
- mysql_pquery(inv_con_handle,query);
- #elseif defined INV_MYSQL_R6
- mysql_real_escape_string(name,name);
- mysql_real_escape_string(UsableItems[i],UsableItems[i]);
- format(query,sizeof(query),"INSERT INTO player_items VALUES (%d,'%s','%s',%d) ON DUPLICATE KEY UPDATE Quantity = %d",
- PrimarKeys[playerid][i],name,UsableItems[i],amount,amount);
- mysql_query(query);
- #endif
- }
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement