Advertisement
S4T3K

Basic inventory

Nov 13th, 2014
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.33 KB | None | 0 0
  1. #include <a_samp>
  2. #include <mSelection> // d0
  3. #include <zcmd> // Zeex
  4. #include <md-sort> // Slice
  5.  
  6. #define MAX_INV_ITEMS   (150)
  7.  
  8. static
  9.         pInvItems[MAX_PLAYERS][MAX_INV_ITEMS];
  10.  
  11. #define EXPORT%1(%3) \
  12.         forward %1(%3); \
  13.         public %1(%3)
  14.  
  15. #define INV_MENU (0x9ACD32)
  16.  
  17. CMD:inventaire(playerid, params[])
  18. {
  19.     if(!pInvItems[playerid][0])
  20.         return SendClientMessage(playerid, -1, "Inventaire vide !");
  21.     SortDeepArray(pInvItems, playerid, .order = SORT_DESC);
  22.     if(isnull(params))
  23.         ShowModelSelectionMenuEx(playerid, pInvItems[playerid], strlen(pInvItems[playerid]), "Inventaire", INV_MENU);
  24.     else
  25.     {
  26.         new items;
  27.         for(new i = 0, l = strval(params); i < l; ++i)
  28.         {
  29.             if(pInvItems[playerid][i]) items++;
  30.             else break;
  31.         }
  32.         ShowModelSelectionMenuEx(playerid, pInvItems[playerid], items, "Inventaire", INV_MENU);
  33.     }
  34.     return 1;
  35. }
  36.  
  37. public OnPlayerModelSelectionEx(playerid, response, extraid, modelid)
  38. {
  39.     if(extraid == INV_MENU)
  40.     {
  41.         new itemid;
  42.         for(new i = 0; i < MAX_INV_ITEMS; ++i)
  43.         {
  44.             if(pInvItems[playerid][i] == modelid)
  45.             {
  46.                 itemid = i;
  47.                 break;
  48.             }
  49.         }
  50.         CallRemoteFunction("OnPlayerSelectInvItem", "iii", playerid, itemid, modelid);
  51.     }
  52.     return 1;
  53. }
  54.  
  55. // EXPORT
  56.  
  57. EXPORT AddInvItem(playerid, modelid)
  58. {
  59.     if(strlen(pInvItems[playerid]) == MAX_INV_ITEMS)
  60.         return -1;
  61.     if(!modelid)
  62.         return -1;
  63.     SortDeepArray(pInvItems, playerid, .order = SORT_DESC);
  64.     new len = strlen(pInvItems[playerid]);
  65.     pInvItems[playerid][len] = modelid;
  66.     return len;
  67. }
  68.  
  69. EXPORT DelInvItemByItem(playerid, itemid)
  70. {
  71.     if(!pInvItems[playerid][itemid])
  72.         return 0;
  73.  
  74.     pInvItems[playerid][itemid] = 0;
  75.     SortDeepArray(pInvItems, playerid, .order = SORT_DESC);
  76.     return 1;
  77. }
  78.  
  79. EXPORT DelInvItemByModel(playerid, modelid)
  80. {
  81.     SortDeepArray(pInvItems, playerid, .order = SORT_DESC);
  82.     for(new i = 0, l = strlen(pInvItems[playerid]); i < l; ++i)
  83.     {
  84.         if(pInvItems[playerid][i] == modelid)
  85.             return pInvItems[playerid][i] = 0, 1;
  86.     }
  87.     return 0;
  88. }
  89.  
  90. EXPORT GetPlayerInv(playerid, arr[MAX_INV_ITEMS], const size)
  91. {
  92.     for(new i = 0; i < size; ++i) arr[i] = pInvItems[playerid][i];
  93.     return 1;
  94. }
  95.  
  96. EXPORT HasInvItem(playerid, itemid)
  97. {
  98.     return bool:pInvItems[playerid][itemid];
  99. }
  100.  
  101. EXPORT HasInvModel(playerid, modelid)
  102. {
  103.     for(new i = 0, l = strlen(pInvItems[playerid]); i < l; ++i)
  104.     {
  105.         if(pInvItems[playerid][i] == modelid) return true;
  106.     }
  107.     return false;
  108. }
  109.  
  110. EXPORT ShowPlayerInv(playerid, const size)
  111. {
  112.     if(!size)
  113.     {
  114.         new emptystr[2];
  115.         emptystr[0] = EOS;
  116.         emptystr[1] = EOS;
  117.         return cmd_inventaire(playerid, emptystr);
  118.     }
  119.     else
  120.     {
  121.         if(size > MAX_INV_ITEMS)
  122.             return 0;
  123.  
  124.         new params[4];
  125.         format(params, 4, "%d", size);
  126.         return cmd_inventaire(playerid, params);
  127.     }
  128. }
  129.  
  130. EXPORT SetPlayerInv(playerid, arr[MAX_INV_ITEMS], const size)
  131. {
  132.     for(new i = 0; i < size; ++i) pInvItems[playerid][i] = arr[i];
  133.     SortDeepArray(pInvItems, playerid, .order = SORT_DESC);
  134.     return 1;
  135. }
  136.  
  137. EXPORT SetPlayerInvItem(playerid, itemid, modelid)
  138. {
  139.     if(!pInvItems[playerid][itemid])
  140.         return 0;
  141.     if(!modelid)
  142.         return 0;
  143.     pInvItems[playerid][itemid] = modelid;
  144.     SortDeepArray(pInvItems, playerid, .order = SORT_DESC);
  145.     return 1;
  146. }
  147.  
  148. EXPORT CountInvItem(playerid, modelid)
  149. {
  150.     new count;
  151.     for(new i = 0, l = strlen(pInvItems[playerid]); i < l; ++i)
  152.     {
  153.         if(pInvItems[playerid][i] == modelid) count++;
  154.     }
  155.     return count;
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement