ErickStorm

[Tutorial] GiveItem with more features

Jun 15th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. int ServerGameLogic::Cmd_GiveItem(obj_ServerPlayer* plr, const char* cmd, bool toeveryone, bool topremium)
  2. {    
  3.     char buf[128];    
  4.     int itemid;    
  5.     int count = 1;      
  6.     if(2 > sscanf(cmd, "%s %d %d", buf, &itemid, &count))        
  7.         return 2;  
  8.    
  9.     if(g_pWeaponArmory->getConfig(itemid) == NULL)
  10.     {        
  11.         r3dOutToLog("Cmd_GiveItem: no item %d\n", itemid);      
  12.         return 3;          
  13.     }    
  14.     bool logGiveItem=true;
  15. #ifdef DISABLE_GI_ACCESS_ON_PTE_MAP    
  16.     if(ginfo_.channel==6) // don't care about PTE maps, as nothing there is saved        
  17.         logGiveItem=false;
  18. #endif
  19. #ifdef DISABLE_GI_ACCESS_ON_PTE_STRONGHOLD_MAP    
  20.     if(ginfo_.channel==6 && ginfo_.mapId==GBGameInfo::MAPID_WZ_Cliffside) // don't care about PTE maps, as nothing there is saved        
  21.         logGiveItem=false;
  22. #endif
  23. #ifdef DISABLE_GI_ACCESS_FOR_CALI_SERVER    
  24.     if(gServerLogic.ginfo_.mapId==GBGameInfo::MAPID_WZ_California)        
  25.         logGiveItem=false;
  26. #endif                
  27.     if(logGiveItem)        
  28.         LogCheat(plr->peerId_, PKT_S2C_CheatWarning_s::CHEAT_AdminGiveItem, 0, "Admin Spawn Item", "%d (%s) spawned %d with quantity %d on server %s\n", plr->profile_.CustomerID, plr->userName, itemid, count, ginfo_.name);
  29.     char* itemname="";
  30.     const BaseItemConfig* getitem = g_pWeaponArmory->getConfig(itemid);
  31.     if(getitem)                
  32.         itemname = getitem->m_StoreName;    
  33.     if(toeveryone)        
  34.     {
  35.         //give item to all players.
  36.         for(int i=0; i<curPlayers_; i++)
  37.         {                
  38.             obj_ServerPlayer* player = plrList_[i];                
  39.             if(player->loadout_->Alive == 0) // do not give item to death players !                    
  40.                 continue;                
  41.             if(player->profile_.ProfileData.PremiumAcc < 0 && topremium ) // only give item if user is premium !                    
  42.                 continue;                
  43.             char msg[512]="";                
  44.             sprintf(msg,"Player: %s Rewarded with: %s ",player->loadout_->Gamertag, itemname);      
  45.             PKT_C2C_ChatMessage_s n;        
  46.             n.userFlag = 0;        
  47.             n.msgChannel = 1;        
  48.             r3dscpy(n.msg, msg);        
  49.             r3dscpy(n.gamertag, "[GiveItem]");        
  50.             gServerLogic.p2pBroadcastToAll(&n, sizeof(n), true);
  51.             wiInventoryItem wi;    
  52.             wi.itemID   = itemid;    
  53.             wi.quantity = count;        
  54.             player->BackpackAddItem(wi);
  55.         }      
  56.     }    
  57.     else        
  58.     {    
  59.         wiInventoryItem wi;    
  60.         wi.itemID   = itemid;    
  61.         wi.quantity = count;        
  62.         plr->BackpackAddItem(wi);            
  63.     }            
  64.     return 0;
  65. }
Add Comment
Please, Sign In to add comment