Advertisement
Guest User

Inventory system help.

a guest
Jul 1st, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.34 KB | None | 0 0
  1. #define DIALOG_INVENTORY 13337
  2. #define MAX_ITEMS 20
  3. #define MAX_ITEM_STACK 300
  4. #define MAX_ITEM_NAME 32
  5. #define egyezik(%1) (!strcmp(%1, true))
  6. forward OnPlayerUseItem(playerid,ItemName[]);
  7. new _ItemInfo[MAX_PLAYERS][MAX_ITEMS][2];
  8. //0 = itemname, 1 = itemamount
  9. /*
  10. native AddItem(playerid,ItemName[],amount);
  11. native RemoveItem(playerid,ItemName[],amount);
  12. native PlayerHasItem(playerid,ItemName[]);
  13. native ResetPlayerInventory(playerid);
  14. native ShowInventory(playerid);
  15. native SaveInventory(playerid);
  16. native LoadInventory(playerid);
  17. */
  18. stock GetItemName(playerid,item)
  19. {
  20. new itemname[MAX_ITEM_NAME];
  21. if(_ItemInfo[playerid][item][1] > 0)
  22. {
  23. if(!egyezik(_ItemInfo[playerid][item][0],""))
  24. {
  25. format(itemname,sizeof(itemname),"%s",_ItemInfo[playerid][item][0]);
  26. }
  27. }
  28. return itemname;
  29. }
  30. stock SetItemName(playerid,item,ItemName[])
  31. {
  32. if(_ItemInfo[playerid][item][1] > 0)
  33. {
  34. if(egyezik(_ItemInfo[playerid][item][0],""))
  35. {
  36. format(_ItemInfo[playerid][item][0],MAX_ITEM_NAME,"%s",ItemName);
  37. }
  38. }
  39. }
  40. stock GetItemAmount(playerid,ItemName[])
  41. {
  42. new amount = 0;
  43. for(new i = 0; i < MAX_ITEMS; i++)
  44. {
  45. if(egyezik(_ItemInfo[playerid][i][0],ItemName))
  46. {
  47. if(_ItemInfo[playerid][i][1] > 0)
  48. {
  49. amount = _ItemInfo[playerid][i][1];
  50. break;
  51. }
  52. }
  53. }
  54. return amount;
  55. }
  56. stock GetItemID(playerid,ItemName[])
  57. {
  58. new id = -1;
  59. for(new i = 0; i < MAX_ITEMS; i++)
  60. {
  61. if(egyezik(_ItemInfo[playerid][i][0],ItemName))
  62. {
  63. id = i;
  64. break;
  65. }
  66. }
  67. return id;
  68. }
  69. stock SetItemAmount(playerid,item,amount)
  70. {
  71. if(_ItemInfo[playerid][item][1] > 0)
  72. {
  73. if(egyezik(_ItemInfo[item][0],""))
  74. {
  75. _ItemInfo[playerid][item][1] = amount;
  76. }
  77. }
  78. }
  79. stock RemoveItem(playerid,ItemName[],amount)
  80. {
  81. new currentamount = 0;
  82. currentamount = GetItemAmount(playerid,ItemName);
  83. if(currentamount > 0)
  84. {
  85. if(currentamount - amount > 1)
  86. {
  87. new result = 0;
  88. result = currentamount - amount;
  89. SetItemAmount(playerid,GetItemID(playerid,ItemName),result);
  90. }
  91. }
  92. }
  93. stock AddItem(playerid,ItemName[],amount)
  94. {
  95. new itemslot = -1;
  96. for(new i = 0; i < MAX_ITEMS; i++)
  97. {
  98. if(GetItemAmount(playerid,ItemName) < 1)
  99. {
  100. if(itemslot == -1)
  101. {
  102. itemslot = i;
  103. continue;
  104. }
  105. }
  106. if(egyezik(_ItemInfo[playerid][i][0],ItemName))
  107. {
  108. new currentamount = 0;
  109. currentamount = GetItemAmount(playerid,ItemName);
  110. new result = 0;
  111. result = currentamount + _ItemInfo[playerid][i][1] + amount;
  112. SetItemAmount(playerid,i,result);
  113. SendClientMessage(playerid,-1,"Egy itemből kaptál még pluszba!");
  114. if(result >= MAX_ITEM_STACK)
  115. {
  116. SetItemAmount(playerid,i,MAX_ITEM_STACK-1);
  117. SendClientMessage(playerid,-1,"Egy itemből túl sokat kaptál ezért a maxot megkaptad!");
  118. return 2;
  119. }
  120. return 1;
  121. }
  122. }
  123. if(itemslot > -1)
  124. {
  125. SetItemName(playerid,itemslot,ItemName);
  126. SetItemAmount(playerid,itemslot,amount);
  127. SendClientMessage(playerid,-1,"Egy itemből kaptál valamennyit, ez az első ilyen tárgy a táskádban!");
  128. if(GetItemAmount(playerid,GetItemName(playerid,itemslot)) > MAX_ITEM_STACK)
  129. {
  130. SetItemAmount(playerid,itemslot,MAX_ITEM_STACK);
  131. SendClientMessage(playerid,-1,"Egy itemből túl sokat kaptál ezért a maxot megkaptad, ez az első ilyen tárgy a táskádban!!");
  132. return 2;
  133. }
  134. return 1;
  135. }
  136. return 0;
  137. }
  138. stock ShowItems(playerid)
  139. {
  140. new dialogstring[256],s[128];
  141. format(dialogstring,sizeof(dialogstring),"Tárgy\tMennyiség");
  142. for(new i = 0; i < MAX_ITEMS; i++)
  143. {
  144. if(GetItemAmount(playerid,GetItemName(playerid,i)) > 0)
  145. {
  146. if(!egyezik(GetItemName(playerid,i),""))
  147. {
  148. format(s,sizeof(s),"%s\t%d",GetItemName(playerid,i),GetItemAmount(playerid,GetItemName(playerid,i)));
  149. strcat(dialogstring,s);
  150. }
  151. }
  152. }
  153. ShowPlayerDialog(playerid,DIALOG_INVENTORY,DIALOG_STYLE_TABLIST_HEADERS,"Táska",dialogstring,"Használ","Mégse");
  154. }
  155. stock ResetPlayerInventory(playerid)
  156. {
  157. for(new i = 0; i < MAX_ITEMS; i++)
  158. {
  159. SetItemAmount(playerid,i,0);
  160. SetItemName(playerid,i,"");
  161. }
  162. }
  163. stock PlayerItem(playerid,ItemName[])
  164. {
  165. for(new i = 0; i < MAX_ITEMS; i++)
  166. {
  167. if(GetItemAmount(playerid,ItemName) > 0)
  168. {
  169. if(egyezik(GetItemName(playerid,i),ItemName))
  170. {
  171. return GetItemAmount(playerid,ItemName);
  172. }
  173. }
  174. }
  175. return 0;
  176. }
  177. stock LoadInventory(playerid)
  178. {
  179. }
  180. stock SaveInventory(playerid)
  181. {
  182. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement