in src\EclipseStudio\Sources\UI\HUDPause.cpp]
Search for
add aboveCode:void HUDPause::eventBackpackDrop(r3dScaleformMovie* pMovie, const Scaleform::GFx::Value* args, unsigned argCount) { r3d_assert(argCount==1); int slotID = args[0].GetInt(); obj_Player* plr = gClientLogic().localPlayer_; r3d_assert(plr); plr->DropItem(slotID); updateSurvivorTotalWeight(); gfxMovie.Invoke("_root.api.backpackGridSwapSuccess", ""); }
search forCode:void HUDPause::eventBackpackUnloadClip(r3dScaleformMovie* pMovie, const Scaleform::GFx::Value* args, unsigned argCount) { obj_Player* plr = gClientLogic().localPlayer_; int slotID = args[0].GetInt(); uint32_t itemID = args[0].GetUInt(); wiInventoryItem& wi = plr->CurLoadout.Items[slotID]; const WeaponConfig* wc = g_pWeaponArmory->getWeaponConfig(itemID); r3d_assert(argCount==1); r3d_assert(plr); r3d_assert(wi.itemID && wi.quantity > 0); { const WeaponConfig* wc = g_pWeaponArmory->getWeaponConfig(wi.itemID); if(wc) { // UNLOAD CLIP if(wc->category >= storecat_ASR && wc->category <= storecat_SMG) { if(wi.Var1 > 0) { PKT_C2S_UnloadClipReq_s n; n.slotID = slotID; p2pSendToHost(gClientLogic().localPlayer_, &n, sizeof(n), true); wi.Var1 = 0; plr->CurLoadout.Items[slotID] = wi; plr->OnBackpackChanged(slotID); updateSurvivorTotalWeight(); } Scaleform::GFx::Value var[2]; var[0].SetString("Erro ao descarregar"); var[1].SetInt(2); gfxMovie.Invoke("_root.api.Main.Inventory.addContextMenuOption", var, 2); return; } } } }
add aboveCode:gfxMovie.RegisterEventHandler("eventBackpackDrop", MAKE_CALLBACK(eventBackpackDrop));
in src\EclipseStudio\Sources\UI\HUDPause.hCode:gfxMovie.RegisterEventHandler("eventBackpackUnloadClip", MAKE_CALLBACK(eventBackpackUnloadClip));
seach for
add aboveCode:void eventBackpackDrop(r3dScaleformMovie* pMovie, const Scaleform::GFx::Value* args, unsigned argCount);
in src\EclipseStudio\Sources\multiplayer\P2PMessages.hCode:void eventBackpackUnloadClip(r3dScaleformMovie* pMovie, const Scaleform::GFx::Value* args, unsigned argCount);
search for
add aboveCode:PKT_C2S_DisconnectReq,
search forCode:PKT_C2S_UnloadClipReq,
add aboveCode:struct PKT_C2S_DisconnectReq_s : public DefaultPacketMixin<PKT_C2S_DisconnectReq> { };
in server\WO_GameServer\Sources\ObjectsCode\obj_ServerPlayer.cppCode:struct PKT_C2S_UnloadClipReq_s : public DefaultPacketMixin<PKT_C2S_UnloadClipReq> { int slotID; };
search for
add aboveCode:void obj_ServerPlayer::OnNetPacket(const PKT_C2S_InventoryOp_s& n) { }
search forCode:void obj_ServerPlayer::OnNetPacket(const PKT_C2S_UnloadClipReq_s& n) { if(loadout_->Alive == 0) return; wiInventoryItem item = loadout_->Items[n.slotID]; const WeaponConfig* wc = g_pWeaponArmory->getWeaponConfig(item.itemID); //m_WeaponArray[n.slotID] if(wc) { if(wc->category >= storecat_ASR && wc->category <= storecat_SMG) { if(item.Var1 > 0 && item.Var2 > 0) { wiInventoryItem wi; wi.itemID = item.Var2; wi.quantity = 1; wi.Var1 = item.Var1; item.Var1 = 0; item.Var2 = wi.itemID; if(BackpackAddItem(wi)) loadout_->Items[n.slotID] = item; OnBackpackChanged(n.slotID); }else{ gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_Protocol, false, "Clip is serverside empty", "slot%d %d - %d", n.slotID, item.itemID, item.Var1); } } } }
add aboveCode:DEFINE_GAMEOBJ_PACKET_HANDLER(PKT_C2C_PlayerUseItem);
in server\WO_GameServer\Sources\ObjectsCode\obj_ServerPlayer.hCode:DEFINE_GAMEOBJ_PACKET_HANDLER(PKT_C2S_UnloadClipReq);
search for
add aboveCode:void OnNetPacket(const PKT_C2S_DisconnectReq_s& n);
Recompile the Server and Client..Code:void OnNetPacket(const PKT_C2S_UnloadClipReq_s& n);


Reply With Quote


