Advertisement
Mateus_Costa

Inventario

Nov 11th, 2014 (edited)
5,694
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.30 KB | None | 0 0
  1. //==============================================================================
  2. // Sistema de inventário criado por: Artista
  3. // Usem como quiser ¯\_(ツ)_/¯
  4. //==============================================================================
  5. #include <a_samp>
  6. #include <DOF2>
  7. #include <zcmd>
  8.  
  9. #define DialogInv 200
  10. #define DialogOpc 201
  11.  
  12. new InventarioArma[8][MAX_PLAYERS];
  13. new InventarioAmmo[8][MAX_PLAYERS];
  14. new ItemOpcao[MAX_PLAYERS];
  15.  
  16. public OnFilterScriptInit()
  17. {
  18.     print("\n-----------------------------------------");
  19.     print(" Sistema de inventario carregado com sucesso");
  20.     print("-----------------------------------------\n");
  21.     return 1;
  22. }
  23.  
  24. public OnFilterScriptExit()
  25. {
  26.     DOF2_Exit();
  27.     return 1;
  28. }
  29.  
  30. CMD:inventario(playerid)
  31. {
  32.     new Inv[160];
  33.     new Nome[20];
  34.     for(new i = 0; i != 8; i++)
  35.     {
  36.         GetWeaponName(InventarioArma[i][playerid], Nome, 20);
  37.         strcat(Inv, InventarioArma[i][playerid] > 0 ? (InventarioArma[i][playerid] == 18 ? ("Cocktail Molotov") : (Nome)) : ("(Vazio)"));
  38.         strcat(Inv, "\n");
  39.     }
  40.     strcat(Inv, "Guardar equipamento atual");
  41.     ShowPlayerDialog(playerid, DialogInv, DIALOG_STYLE_LIST, "Itens", Inv, "Selecionar", "Fechar");
  42.     return 1;
  43. }
  44.  
  45. public OnPlayerConnect(playerid)
  46. {
  47.     CarregarIventario(playerid);
  48.     return 1;
  49. }
  50.  
  51. public OnPlayerDisconnect(playerid, reason)
  52. {
  53.     SalvarIventario(playerid);
  54.     return 1;
  55. }
  56.  
  57. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  58. {
  59.     if(dialogid == DialogInv)
  60.     {
  61.         if(!response) return 1;
  62.         if(response)
  63.         {
  64.             switch(listitem)
  65.             {
  66.                 case 0: ItemOpcoes(playerid, 0);
  67.                 case 1: ItemOpcoes(playerid, 1);
  68.                 case 2: ItemOpcoes(playerid, 2);
  69.                 case 3: ItemOpcoes(playerid, 3);
  70.                 case 4: ItemOpcoes(playerid, 4);
  71.                 case 5: ItemOpcoes(playerid, 5);
  72.                 case 6: ItemOpcoes(playerid, 6);
  73.                 case 7: ItemOpcoes(playerid, 7);
  74.                 case 8: GuardarItem(playerid);
  75.             }
  76.             return 1;
  77.         }
  78.     }
  79.  
  80.     if(dialogid == DialogOpc)
  81.     {
  82.         if(!response) return 1;
  83.         if(response)
  84.         {
  85.             switch(listitem)
  86.             {
  87.                 case 0:
  88.                 {
  89.                     GivePlayerWeapon(playerid, InventarioArma[ItemOpcao[playerid]][playerid], InventarioAmmo[ItemOpcao[playerid]][playerid]);
  90.                     InventarioArma[ItemOpcao[playerid]][playerid]=0;
  91.                     InventarioAmmo[ItemOpcao[playerid]][playerid]=0;
  92.                 }
  93.                 case 1:
  94.                 {
  95.                     InventarioArma[ItemOpcao[playerid]][playerid]=0;
  96.                     InventarioAmmo[ItemOpcao[playerid]][playerid]=0;
  97.                     SendClientMessage(playerid, -1, "Item destruído!");
  98.                 }
  99.             }
  100.             return 1;
  101.         }
  102.     }
  103.     return 0;
  104. }
  105.  
  106. stock GanharItem(playerid, Item, Ammo)
  107. {
  108.     new Nome[20];
  109.     new i;
  110.     while(i != 8)
  111.     {
  112.         if(InventarioArma[i][playerid] == Item)
  113.         {
  114.             InventarioAmmo[i][playerid]=InventarioAmmo[i][playerid]+Ammo;
  115.             break;
  116.         }
  117.         if(InventarioArma[i][playerid] == 0)
  118.         {
  119.             InventarioArma[i][playerid]=Item;
  120.             InventarioAmmo[i][playerid]=Ammo;
  121.             break;
  122.         }
  123.         i++;
  124.     }
  125.     GetWeaponName(Item, Nome, 20);
  126.     new string[35]=" Adquirido!";
  127.     strins(string, Item == 18 ? ("Cocktail Molotov") : (Nome), 0, 20);
  128.     return SendClientMessage(playerid, -1, i == 8 ? ("Inventário cheio!") : (string));
  129. }
  130.  
  131. stock GuardarItem(playerid)
  132. {
  133.     new Item = GetPlayerWeapon(playerid);
  134.     new Ammo = GetPlayerAmmo(playerid);
  135.     if(Item == 0) return SendClientMessage(playerid, -1, "Item inválido!");
  136.     new i;
  137.     while(i != 8)
  138.     {
  139.         if(InventarioArma[i][playerid] == Item)
  140.         {
  141.             InventarioAmmo[i][playerid]=InventarioAmmo[i][playerid]+Ammo;
  142.             RemoverItem(playerid, Item);
  143.             break;
  144.         }
  145.         if(InventarioArma[i][playerid] == 0)
  146.         {
  147.             InventarioArma[i][playerid]=Item;
  148.             InventarioAmmo[i][playerid]=Ammo;
  149.             RemoverItem(playerid, Item);
  150.             break;
  151.         }
  152.         i++;
  153.     }
  154.     return i == 8 ? SendClientMessage(playerid, -1, "Inventário cheio!") : 1;
  155. }
  156.  
  157. stock RemoverItem(playerid, item)
  158. {
  159.     new Arma[13][2];
  160.     for(new i = 1; i < 13; ++i) GetPlayerWeaponData(playerid, i, Arma[i][0], Arma[i][1]);
  161.     ResetPlayerWeapons(playerid);
  162.     for(new i = 1; i < 13; ++i)
  163.     {
  164.         if(item != Arma[i][0]) GivePlayerWeapon(playerid, Arma[i][0], Arma[i][1]);
  165.     }
  166. }
  167.  
  168. stock ItemOpcoes(playerid, Item)
  169. {
  170.     if(InventarioArma[Item][playerid] == 0) return PlayerPlaySound(playerid, 1053, 0.0, 0.0, 0.0);
  171.     ItemOpcao[playerid]=Item;
  172.     return ShowPlayerDialog(playerid,DialogOpc,DIALOG_STYLE_LIST,"Opções:","Usar\nDestruir","OK","Fechar");
  173. }
  174.  
  175. stock SalvarIventario(playerid)
  176. {
  177.     new Nome[25];
  178.     GetPlayerName(playerid,Nome,sizeof(Nome));
  179.     new Arquivo[41]="Inventarios/.ini";
  180.     strins(Arquivo, Nome, 12, 25);
  181.     if(!DOF2_FileExists(Arquivo))
  182.     {
  183.         DOF2_CreateFile(Arquivo);
  184.     }
  185.     new str[12];
  186.     for(new i = 0; i != 8; ++i)
  187.     {
  188.         format(str, sizeof(str), "Arma inv %d", i);
  189.         DOF2_SetInt(Arquivo, str, InventarioArma[i][playerid]);
  190.         format(str, sizeof(str), "Ammo inv %d", i);
  191.         DOF2_SetInt(Arquivo, str, InventarioAmmo[i][playerid]);
  192.     }
  193.     DOF2_SaveFile();
  194.     return 1;
  195. }
  196.  
  197. stock CarregarIventario(playerid)
  198. {
  199.     new Nome[25];
  200.     GetPlayerName(playerid,Nome,sizeof(Nome));
  201.     new Arquivo[41]="Inventarios/.ini";
  202.     strins(Arquivo, Nome, 12, 25);
  203.     if(DOF2_FileExists(Arquivo))
  204.     {
  205.         new str[12];
  206.         for(new i = 0; i != 8; ++i)
  207.         {
  208.             format(str, sizeof(str), "Arma inv %d", i);
  209.             InventarioArma[i][playerid]=DOF2_GetInt(Arquivo, str);
  210.             format(str, sizeof(str), "Ammo inv %d", i);
  211.             InventarioAmmo[i][playerid]=DOF2_GetInt(Arquivo, str);
  212.         }
  213.     }
  214.     return 1;
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement