Advertisement
Bebras

[INC]Inventory v0.2 - Bebras

Feb 21st, 2014
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.78 KB | None | 0 0
  1.                                 /*
  2.                                                 Inventoriaus kūrimo include
  3.                                                 Autorius "Bebras" 2014 ©
  4.                                                 v0.2
  5.                                                
  6.                                 */
  7.  
  8.                                
  9. /*
  10.         native AddItem(itemname[]);                                     Ši funkcija pridėta daiktą, nepanaudoję jos negalėsite naudotis tuo daiktu..
  11.         native GivePlayerItem(playerid,item[],amount);                  Ši funkcija duoda žaidėjui tam tikrą daiktų skaičių(galima naudoti ir daiktų atėmimui).
  12.         native ShowPlayerInventory(playerid);                           Ši funkcija parodys žaidėjui GUI su visais jo daiktais ir jų kiekiu(taipat paspaudus įvyks nurodytas veiksmas).
  13.         native ResetPlayerItem(playerid,itemname[]);                    Ši funkcija atiims iš žaidėjo visus nurodytus daiktus.
  14.         native ResetPlayerItems(playerid);                              Ši funkcija attims visus žaidėjo daiktus.
  15.         native GetPlayerItemAmount(playerid,itemname[]);                Ši funkcija gražins nurodyto daikto skaičių.
  16.        
  17. */
  18.  
  19.  
  20. #define Bebras AUTORIUS
  21.  
  22.  
  23. #if defined INV_SAVE_Y_INI
  24.     #if !defined _inc_y_ini
  25.         #include <YSI\y_ini>
  26.     #endif
  27.     #if !defined INV_LOAD_ONCONNECT && !defined INV_LOAD_ONSPAWN
  28.         #define INV_LOAD_ONCONNECT
  29.     #endif
  30. #endif
  31.  
  32.  
  33.  
  34. #if !defined isnull
  35.     #define isnull(%1) \
  36.                 ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  37. #endif
  38.  
  39. #define MAX_ITEMS                           15
  40. #define MAX_ITEM_NAME                       30
  41. #define DIALOG_INVENTORY                    457
  42.  
  43.  
  44.  
  45. #define Item:%0(%1)  forward item_%0(%1); public item_%0(%1)
  46.  
  47.  
  48.  
  49. #if !defined ShowEmptyInventory
  50.     #define ShowEmptyInventory(%0) \
  51.         ShowPlayerDialog(%0, 32760, DIALOG_STYLE_MSGBOX,"Inventorius","{FF0000}Jūs neturite daiktų!","Gerai","")
  52. #endif
  53.  
  54.  
  55.  
  56. static stock UsableItems[MAX_ITEMS][MAX_ITEM_NAME];
  57.  
  58.  
  59. stock AddItem(itemname[])
  60. {
  61.     for(new i; i < MAX_ITEMS; i++)
  62.     {
  63.         if(!isnull(UsableItems[i]) && !strcmp(UsableItems[i],itemname)) return 0;
  64.         if(isnull(UsableItems[i]))
  65.         {
  66.             strins(UsableItems[i],itemname,0,MAX_ITEM_NAME);
  67.             return 1;
  68.         }
  69.     }
  70.     return 0;
  71. }
  72.  
  73. stock GivePlayerItem(playerid,item[],amount)
  74. {
  75.     if(GetPVarInt(playerid,item) !=  0) SetPVarInt(playerid,item,GetPVarInt(playerid,item)+amount);
  76.     else SetPVarInt(playerid,item,amount);
  77.     return GetPVarInt(playerid,item);
  78. }
  79. stock GetPlayerItemAmount(playerid,itemname[])
  80.     return GetPVarInt(playerid,itemname[]);
  81.        
  82. stock ShowPlayerInventory(playerid)
  83. {
  84.     new bigstring[MAX_ITEMS*MAX_ITEM_NAME],str[MAX_ITEM_NAME+5];
  85.     for(new i; i < MAX_ITEMS; i++)
  86.     {
  87.         if(GetPVarInt(playerid,UsableItems[i]) > 0)
  88.         {    
  89.             format(str,sizeof(str),"%s  %d\n",UsableItems[i],GetPVarInt(playerid,UsableItems[i]));
  90.             strcat(bigstring,str);
  91.         }
  92.     }
  93.     if(isnull(bigstring))
  94.     {
  95.         ShowEmptyInventory(playerid);
  96.         return 0;
  97.     }
  98.     ShowPlayerDialog(playerid,DIALOG_INVENTORY,DIALOG_STYLE_LIST,"Inventorius",bigstring,"Pasirinkti","Išeiti");
  99.     return 1;
  100. }
  101. stock ResetPlayerItem(playerid,itemname[])
  102.     return DeletePVar(playerid,itemname);
  103.  
  104. stock ResetPlayerItems(playerid)
  105. {
  106.     for(new i; i < MAX_ITEMS; i++)
  107.     {
  108.         if(isnull(UsableItems[i])) break;
  109.         DeletePVar(playerid,UsableItems[i]);
  110.     }
  111.     return 1;
  112. }
  113. public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
  114. {
  115.     if(dialogid == DIALOG_INVENTORY && response)
  116.     {
  117.         if(isnull(inputtext)) return 1;
  118.         new func[MAX_ITEM_NAME];
  119.         strmid(func,inputtext,0,strfind(inputtext,"  "));
  120.         strins(func,"item_",0);
  121.         if(funcidx(func) == -1) return printf("Daikto \"%s\" funkcija nesukurta",func);
  122.         CallLocalFunction(func,"i",playerid);
  123.         return 1;
  124.     }
  125.     #if defined BInv_OnDialogResponse
  126.         BInv_OnDialogResponse(playerid,dialogid,response,listitem,inputtext);
  127.     #endif
  128.     return 0;
  129. }
  130. #if defined _ALS_OnDialogResponse
  131.     #undef OnDialogResponse
  132. #else  
  133.     #define _ALS_OnDialogResponse
  134. #endif
  135. #define OnDialogResponse BInv_OnDialogResponse
  136. #if defined BInv_OnDialogResponse
  137.     forward BInv_OnDialogResponse(playerid,dialogid,response,listitem,inputtext[]);
  138. #endif
  139.  
  140. #if defined INV_SAVE_Y_INI
  141.     forward LoadPlayerItems_Items(playerid,name[],value[]);
  142.     public LoadPlayerItems_Items(playerid,name[],value[])
  143.     {
  144.         new tmp;
  145.         for(new i; i < sizeof(UsableItems); i++)
  146.         {
  147.             if(isnull(UsableItems[i])) continue;
  148.             if(!strcmp(name,UsableItems[i]))
  149.                 GivePlayerItem(playerid,name,strval(value));
  150.         }
  151.         return 1;
  152.     }
  153. #endif
  154.  
  155. public OnPlayerConnect(playerid)
  156. {
  157.     #if defined INV_SAVE_Y_INI && defined INV_LOAD_ONCONNECT
  158.         new pv[MAX_PLAYER_NAME],path_to_inv[32];
  159.         GetPlayerName(playerid, pv,sizeof(pv));
  160.         format(path_to_inv,sizeof(path_to_inv),"Inventory_%s.ini",pv);
  161.         if(fexist(path_to_inv))
  162.             INI_ParseFile(path_to_inv,"LoadPlayerItems_%s",.bExtra=true,.extra=playerid);
  163.     #endif
  164.     #if defined BInv_OnPlayerConnect
  165.         BInv_OnPlayerConnect(playerid);
  166.     #endif
  167.     return 1;
  168. }
  169. #if defined _ALS_OnPlayerConnect
  170.     #undef OnPlayerConnect
  171. #else
  172.     #define _ALS_OnPlayerConnect
  173. #endif
  174. #define OnPlayerConnect BInv_OnPlayerConnect
  175. #if defined BInv_OnPlayerConnect
  176.     forward BInv_OnPlayerConnect(playerid);
  177. #endif
  178.  
  179. public OnPlayerSpawn(playerid)
  180. {
  181.     #if defined INV_SAVE_Y_INI && defined INV_LOAD_ONSPAWN
  182.         new pv[MAX_PLAYER_NAME],path_to_inv[32];
  183.         GetPlayerName(playerid, pv,sizeof(pv));
  184.         format(path_to_inv,sizeof(path_to_inv),"Inventory_%s.ini",pv);
  185.         if(fexist(path_to_inv))
  186.             INI_ParseFile(path_to_inv,"LoadPlayerItems_%s",.bExtra=true,.extra=playerid);
  187.     #endif
  188.     #if defined BInv_OnPlayerSpawn
  189.         BInv_OnPlayerSpawn(playerid);
  190.     #endif
  191.     return 1;
  192. }
  193. #if defined _ALS_OnPlayerSpawn
  194.     #undef OnPlayerSpawn
  195. #else
  196.     #define _ALS_OnPlayerSpawn
  197. #endif
  198. #if !defined Bebras
  199.     #error Include autorius - Bebras. Nuo tiesos nepabegsi, turek pagarbos.
  200. #endif
  201. #define OnPlayerSpawn BInv_OnPlayerSpawn
  202. #if defined BInv_OnPlayerSpawn
  203.     forward BInv_OnPlayerSpawn(playerid);
  204. #endif
  205.  
  206. public OnPlayerDisconnect(playerid, reason)
  207. {
  208.     #if defined INV_SAVE_Y_INI
  209.         new pv[MAX_PLAYER_NAME],path_to_inv[32];
  210.         GetPlayerName(playerid, pv,sizeof(pv));
  211.         format(path_to_inv,sizeof(path_to_inv),"Inventory_%s.ini",pv);
  212.         new INI:inv_file = INI_Open(path_to_inv);
  213.         INI_SetTag(inv_file,"Items");
  214.         for(new i; i < sizeof(UsableItems); i++)
  215.         {
  216.             if(isnull(UsableItems[i])) continue;
  217.             INI_WriteInt(inv_file,UsableItems[i],GetPVarInt(playerid, UsableItems[i]));
  218.         }
  219.         INI_Close(inv_file);
  220.     #endif
  221.     #if defined BInv_OnPlayerDisconnect
  222.         BInv_OnPlayerDisconnect(playerid,reason);
  223.     #endif
  224.     return 1;
  225. }
  226. #if defined _ALS_OnPlayerDisconnect
  227.     #undef OnPlayerDisconnect
  228. #else
  229.     #define _ALS_OnPlayerDisconnect
  230. #endif
  231. #define OnPlayerDisconnect BInv_OnPlayerDisconnect
  232. #if defined BInv_OnPlayerDisconnect
  233.     forward BInv_OnPlayerDisconnect(playerid,reason);
  234. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement