LukasCCB icon

Move all items to Global Inventory - Source code Part

LukasCCB | PRO | 06/20/16 04:22:08 PM UTC | 0 ⭐ | 262 👁️ | Never ⏰ | []
C++ |

3.62 KB

|

None

|

0 👍

/

0 👎

In FrontEndWarZ.CPP
AFTER THIS
gfxMovie.RegisterEventHandler("eventMarketplaceActive", MAKE_CALLBACK(eventMarketplaceActive)); 
 
ADD THIS    
gfxMovie.RegisterEventHandler("eventMoveAllItems", MAKE_CALLBACK(eventMoveAllItems));
 
AFTER THIS FUNCTION
void FrontendWarZ::OnDonateToServerSuccess()
 
ADD THIS ENTERY ONE
void FrontendWarZ::eventMoveAllItems(r3dScaleformMovie* pMovie, const Scaleform::GFx::Value* args, unsigned argCount)
{
    //Simple logic for buttons, move all items from backpack to inventory
    const wiCharDataFull& slot = gUserProfile.ProfileData.ArmorySlots[gUserProfile.SelectedCharID];
    if(!(slot.GameFlags & wiCharDataFull::GAMEFLAG_NearPostBox))
        return;
 
    int itemsToMove = 0;
    for(int i=8; i < slot.BackpackSize; ++i)
    {
        const wiInventoryItem& wi = slot.Items[i];
        if(wi.itemID > 0)
        {
            itemsToMove++;
        }
    }
 
    if(itemsToMove)
    {
        if((gUserProfile.ProfileData.NumItems + itemsToMove) > wiUserProfile::INVENTORY_SIZE_LIMIT)
        {
            Scaleform::GFx::Value vars[3];
            vars[0].SetString(gLangMngr.getString("InGameUI_ErrorMsg_NoInventorySpace"));
            vars[1].SetBoolean(true);
            vars[2].SetString("$ERROR");
            gfxMovie.Invoke("_root.api.showInfoMsg", vars, 3);
            return;
        }
    }
    else
    {
        //If we don't find any item, don't do anything.
        return;
    }
 
    Scaleform::GFx::Value var[2];
    var[0].SetString(gLangMngr.getString("OneMomentPlease"));
    var[1].SetBoolean(false);
    gfxMovie.Invoke("_root.api.showInfoMsg", var, 2);
 
    StartAsyncOperation(&FrontendWarZ::as_MoveAllItemsThread, &FrontendWarZ::OnMoveAllItemsSucessfully);
}
 
unsigned int WINAPI FrontendWarZ::as_MoveAllItemsThread(void* in_data)
{
    r3dThreadAutoInstallCrashHelper crashHelper;
    FrontendWarZ* This = (FrontendWarZ*)in_data;
    
    This->DelayServerRequest();
 
    int BackpackSlot = 0;
    int Quantity = 0;
    int apiCode = 0;
    const wiCharDataFull& slot = gUserProfile.ProfileData.ArmorySlots[gUserProfile.SelectedCharID];
    for(int i=8; i < slot.BackpackSize; ++i)
    {
        const wiInventoryItem& wi = slot.Items[i];
        if(wi.itemID > 0)
        {
            BackpackSlot = i;
            Quantity = wi.quantity;
            apiCode = gUserProfile.ApiBackpackToInventory(BackpackSlot, Quantity);
        }
    }
 
    if(apiCode != 0)
    {
        if(apiCode == 7)
        {
            This->SetAsyncError(0, gLangMngr.getString("GameSessionHasNotClosedYet"));
        }
        else if(apiCode == 9)
        {
            This->SetAsyncError(0, gLangMngr.getString("InGameUI_ErrorMsg_NoInventorySpace"));
        }
        else if(apiCode == 6)
        {
            return 1; //This function was made for 1 by 1 item to inventory, we're trying something different here, so, skip this error, it will make no difference, item will be moved to inventory anyway.
        }
        else
        {
            This->SetAsyncError(apiCode, gLangMngr.getString("BackpackToInventoryFail"));
        }
        return 0;
    }
 
    return 1;
}
 
void FrontendWarZ::OnMoveAllItemsSucessfully()
{
    Scaleform::GFx::Value var[8];
    gfxMovie.Invoke("_root.api.clearBackpack", "");
    int slot = gUserProfile.SelectedCharID;
 
    addBackpackItems(gUserProfile.ProfileData.ArmorySlots[slot], slot);
 
    updateInventoryAndSkillItems();
 
    updateSurvivorTotalWeight(slot);
 
    gfxMovie.Invoke("_root.api.hideInfoMsg", "");
    gfxMovie.Invoke("_root.api.backpackToInventorySuccess", "");
    return;
}
 
IN FrontEndWarZ.h
AFTER THIS
void eventOpenURL(r3dScaleformMovie* pMovie, const Scaleform::GFx::Value* args, unsigned argCount);
 
ADD THIS
void eventMoveAllItems(r3dScaleformMovie* pMovie, const Scaleform::GFx::Value* args, unsigned argCount);
 
AFTER THIS
void        OnRequestGCTransactionSuccess();
 
ADD THIS
static unsigned int WINAPI as_MoveAllItemsThread(void* in_data);
void        OnMoveAllItemsSucessfully();

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎