Advertisement
Guest User

Untitled

a guest
Nov 19th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1.  
  2. #pragma region CHANGEINV
  3. else if (!strcmp(p->Cmd, "changeinv"))
  4. {
  5. if (!nP->Chars[nP->Ingame.LoggedMob].Inventarios.hasBuyed[0] && !nP->Chars[nP->Ingame.LoggedMob].Inventarios.hasBuyed[1])
  6. {
  7. SendClientMessage(cId, "Necessário possuir novos inventários antes de utilizar o comando.");
  8.  
  9. return;
  10. }
  11.  
  12. // Copia o inventário atual para uma variável nova, salvaremos posteriormente no código
  13. st_Item Invent[60];
  14. memcpy(&Invent, &player->Inventory, sizeof(st_Item) * 60);
  15. // Por segurança, seta o inventário atual como zero, para evitar erros nos itens
  16. memset(&player->Inventory, 0x0, sizeof st_Item * 60);
  17. // Dá load no inventário com as infos do primeiro invent do buffer
  18. memcpy(&player->Inventory, nP->Chars[nP->Ingame.LoggedMob].Inventarios.sInv1, sizeof st_Item * 60);
  19. // Zera o primeiro inventario do buffer por segurança
  20. memset(nP->Chars[nP->Ingame.LoggedMob].Inventarios.sInv1, 0x0, sizeof st_Item * 60);
  21.  
  22. // Caso tenha sido comprado um segundo inventário extra
  23. // Joga as infos dele para o primeiro slot de inventário para o próximo load
  24. // E então joga as infos do inventário anterior no ultimo slot de save
  25. // Caso não tenha sido, salva as infos do inventário anterior no primeiro slot para o próximo load
  26. if (nP->Chars[nP->Ingame.LoggedMob].Inventarios.hasBuyed[1])
  27. {
  28. memcpy(nP->Chars[nP->Ingame.LoggedMob].Inventarios.sInv1, nP->Chars[nP->Ingame.LoggedMob].Inventarios.sInv2, sizeof(st_Item) * 60);
  29. memset(nP->Chars[nP->Ingame.LoggedMob].Inventarios.sInv2, 0, sizeof(st_Item) * 60);
  30. memcpy(nP->Chars[nP->Ingame.LoggedMob].Inventarios.sInv2, &Invent, sizeof(st_Item) * 60);
  31. }
  32. else
  33. memcpy(nP->Chars[nP->Ingame.LoggedMob].Inventarios.sInv1, &Invent, sizeof(st_Item) * 60);
  34.  
  35. // Atualiza o inventário sem necessariamente abri-lo
  36. for (int i = 0; i < 60; i++)
  37. SendItem(cId, INVENTORY, i, &player->Inventory[i]);
  38.  
  39. SendClientMessage(cId, "Inventário trocado.");
  40.  
  41. return;
  42. }
  43.  
  44.  
  45. #pragma endregion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement