DP_S/test/main.cc

1514 lines
38 KiB
C++
Raw Normal View History

2022-09-01 16:56:37 +08:00
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
return 0;
}
2022-09-02 23:34:06 +08:00
int __cdecl CUser::exchange_interspace(
CUser* this,
int type,
int equipment_pos,
unsigned int a4,
int a5,
int a6,
CInventory* empty_slot,
unsigned int a8,
int* a9)
{
int v9; // ebx
CInventory* CurCharacInvenW; // eax
int CurCharacInvenR; // eax
int v12; // ebx
CDataManager* v13; // eax
CCargo* CurCharacCargoR; // eax
CCargo* v15; // eax
int v16; // ebx
CCargo* v17; // eax
CCargo* v18; // eax
CCargo* v19; // eax
CCargo* v20; // eax
CInventory* v21; // eax
CCargo* CurCharacCargoW; // eax
int v23; // eax
int add_info; // eax
char CurCharacNo; // bl
int v26; // ebx
CGameManager* v27; // eax
unsigned int acc_id; // eax
void* v29; // eax
int v30; // eax
CInventory* v31; // eax
int v32; // eax
int v33; // eax
CCargo* v34; // eax
int v35; // eax
unsigned int v36; // eax
char v37; // bl
char v38; // bl
CCargo* v39; // eax
int v40; // eax
CCargo* v41; // eax
int v42; // eax
int v43; // eax
int v45; // ebx
CGameManager* v46; // eax
GameWorld* v47; // eax
CInventory* v48; // eax
char* String; // eax
CInventory* v50; // eax
int v51; // ebx
CGameManager* v52; // eax
int v53; // eax
int v54; // eax
int v55; // eax
int v56; // eax
int v57; // eax
CInventory* v59; // eax
int v60; // ebx
CGameManager* v61; // eax
CGameManager* v62; // eax
GameWorld* v63; // eax
CInventory* v64; // eax
CInventory* v65; // eax
CInventory* v66; // eax
int v67; // ebx
CGameManager* v68; // eax
CGameManager* v69; // eax
void* v70; // eax
int v71; // eax
int v72; // eax
unsigned int v73; // eax
char v74; // bl
CCargo* v75; // eax
CCargo* v76; // eax
int v77; // ebx
CCargo* v78; // eax
CCargo* v79; // eax
CCargo* v80; // eax
CCargo* v81; // eax
CCargo* v82; // eax
unsigned int v83; // eax
char v84; // bl
int v86; // [esp+4h] [ebp-464h]
int v87; // [esp+4h] [ebp-464h]
int v88; // [esp+4h] [ebp-464h]
const Inven_Item* v89; // [esp+4h] [ebp-464h]
int v90; // [esp+4h] [ebp-464h]
const Inven_Item* v91; // [esp+4h] [ebp-464h]
int v92; // [esp+40h] [ebp-428h]
int v93; // [esp+40h] [ebp-428h]
long double v94; // [esp+50h] [ebp-418h] BYREF
int v95; // [esp+5Ch] [ebp-40Ch]
int v96; // [esp+60h] [ebp-408h]
int v97; // [esp+64h] [ebp-404h]
int v98; // [esp+68h] [ebp-400h]
int v99; // [esp+6Ch] [ebp-3FCh]
int v100; // [esp+70h] [ebp-3F8h]
int v101; // [esp+74h] [ebp-3F4h]
int v102; // [esp+78h] [ebp-3F0h]
int v103; // [esp+7Ch] [ebp-3ECh]
int v104; // [esp+80h] [ebp-3E8h]
int v105; // [esp+84h] [ebp-3E4h]
int v106; // [esp+88h] [ebp-3E0h]
char v107; // [esp+8Ch] [ebp-3DCh]
char v108[7]; // [esp+98h] [ebp-3D0h] BYREF
int v109; // [esp+9Fh] [ebp-3C9h]
char v110[7]; // [esp+D5h] [ebp-393h] BYREF
int v111; // [esp+DCh] [ebp-38Ch]
long double v112; // [esp+112h] [ebp-356h] BYREF
int v113; // [esp+11Eh] [ebp-34Ah]
int v114; // [esp+122h] [ebp-346h]
int v115; // [esp+126h] [ebp-342h]
int v116; // [esp+12Ah] [ebp-33Eh]
int v117; // [esp+12Eh] [ebp-33Ah]
int v118; // [esp+132h] [ebp-336h]
int v119; // [esp+136h] [ebp-332h]
int v120; // [esp+13Ah] [ebp-32Eh]
int v121; // [esp+13Eh] [ebp-32Ah]
int v122; // [esp+142h] [ebp-326h]
int v123; // [esp+146h] [ebp-322h]
int v124; // [esp+14Ah] [ebp-31Eh]
char v125; // [esp+14Eh] [ebp-31Ah]
int v126; // [esp+14Fh] [ebp-319h] BYREF
__int64 v127; // [esp+153h] [ebp-315h]
int v128; // [esp+15Bh] [ebp-30Dh]
int v129; // [esp+15Fh] [ebp-309h]
int v130; // [esp+163h] [ebp-305h]
int v131; // [esp+167h] [ebp-301h]
int v132; // [esp+16Bh] [ebp-2FDh]
int v133; // [esp+16Fh] [ebp-2F9h]
int v134; // [esp+173h] [ebp-2F5h]
int v135; // [esp+177h] [ebp-2F1h]
int v136; // [esp+17Bh] [ebp-2EDh]
int v137; // [esp+17Fh] [ebp-2E9h]
int v138; // [esp+183h] [ebp-2E5h]
int v139; // [esp+187h] [ebp-2E1h]
char v140; // [esp+18Bh] [ebp-2DDh]
int v141; // [esp+18Ch] [ebp-2DCh] BYREF
__int64 v142; // [esp+190h] [ebp-2D8h]
int v143; // [esp+198h] [ebp-2D0h]
int v144; // [esp+19Ch] [ebp-2CCh]
int v145; // [esp+1A0h] [ebp-2C8h]
int v146; // [esp+1A4h] [ebp-2C4h]
int v147; // [esp+1A8h] [ebp-2C0h]
int v148; // [esp+1ACh] [ebp-2BCh]
int v149; // [esp+1B0h] [ebp-2B8h]
int v150; // [esp+1B4h] [ebp-2B4h]
int v151; // [esp+1B8h] [ebp-2B0h]
int v152; // [esp+1BCh] [ebp-2ACh]
int v153; // [esp+1C0h] [ebp-2A8h]
int v154; // [esp+1C4h] [ebp-2A4h]
char v155; // [esp+1C8h] [ebp-2A0h]
char v156[7]; // [esp+1C9h] [ebp-29Fh] BYREF
WongWork::CAvatarItemMgr* v157; // [esp+1D0h] [ebp-298h]
char v158[7]; // [esp+206h] [ebp-262h] BYREF
WongWork::CAvatarItemMgr* v159; // [esp+20Dh] [ebp-25Bh]
char v160[2]; // [esp+243h] [ebp-225h] BYREF
int v161; // [esp+245h] [ebp-223h]
int v162; // [esp+24Ah] [ebp-21Eh]
long double v163; // [esp+280h] [ebp-1E8h] BYREF
int v164; // [esp+28Ch] [ebp-1DCh]
int v165; // [esp+290h] [ebp-1D8h]
int v166; // [esp+294h] [ebp-1D4h]
int v167; // [esp+298h] [ebp-1D0h]
int v168; // [esp+29Ch] [ebp-1CCh]
int v169; // [esp+2A0h] [ebp-1C8h]
int v170; // [esp+2A4h] [ebp-1C4h]
int v171; // [esp+2A8h] [ebp-1C0h]
int v172; // [esp+2ACh] [ebp-1BCh]
int v173; // [esp+2B0h] [ebp-1B8h]
int v174; // [esp+2B4h] [ebp-1B4h]
int v175; // [esp+2B8h] [ebp-1B0h]
char v176; // [esp+2BCh] [ebp-1ACh]
char v177[2]; // [esp+2BDh] [ebp-1ABh] BYREF
int v178; // [esp+2BFh] [ebp-1A9h]
int v179; // [esp+2C4h] [ebp-1A4h]
char v180[61]; // [esp+2FAh] [ebp-16Eh] BYREF
long double v181; // [esp+337h] [ebp-131h] BYREF
int v182; // [esp+343h] [ebp-125h]
int v183; // [esp+347h] [ebp-121h]
int v184; // [esp+34Bh] [ebp-11Dh]
int v185; // [esp+34Fh] [ebp-119h]
int v186; // [esp+353h] [ebp-115h]
int v187; // [esp+357h] [ebp-111h]
int v188; // [esp+35Bh] [ebp-10Dh]
int v189; // [esp+35Fh] [ebp-109h]
int v190; // [esp+363h] [ebp-105h]
int v191; // [esp+367h] [ebp-101h]
int v192; // [esp+36Bh] [ebp-FDh]
int v193; // [esp+36Fh] [ebp-F9h]
char v194; // [esp+373h] [ebp-F5h]
char v195[12]; // [esp+374h] [ebp-F4h] BYREF
int v196[4]; // [esp+380h] [ebp-E8h] BYREF
int v197[4]; // [esp+390h] [ebp-D8h] BYREF
int v198[4]; // [esp+3A0h] [ebp-C8h] BYREF
int v199[4]; // [esp+3B0h] [ebp-B8h] BYREF
int v200[4]; // [esp+3C0h] [ebp-A8h] BYREF
int v201[4]; // [esp+3D0h] [ebp-98h] BYREF
char v202[4]; // [esp+3E0h] [ebp-88h]
CTradeSpace* TradeSpace; // [esp+3E4h] [ebp-84h]
int v204; // [esp+3E8h] [ebp-80h]
int item; // [esp+3ECh] [ebp-7Ch]
CInventory* v207; // [esp+3F4h] [ebp-74h]
CParty* Party; // [esp+3F8h] [ebp-70h]
int v209; // [esp+3FCh] [ebp-6Ch]
CAccountCargo* AccountCargo; // [esp+400h] [ebp-68h]
int SpecificItemSlot; // [esp+408h] [ebp-60h]
int v214; // [esp+410h] [ebp-58h]
CAccountCargo* v215; // [esp+414h] [ebp-54h]
int v217; // [esp+41Ch] [ebp-4Ch]
int v218; // [esp+420h] [ebp-48h]
online_preliminary::COnlinePreliminary* InvenRef; // [esp+424h] [ebp-44h]
int v220; // [esp+428h] [ebp-40h]
int v221; // [esp+42Ch] [ebp-3Ch]
online_preliminary::COnlinePreliminary* v222; // [esp+430h] [ebp-38h]
int v223; // [esp+434h] [ebp-34h]
int v224; // [esp+438h] [ebp-30h]
CAccountCargo* v225; // [esp+43Ch] [ebp-2Ch]
CAccountCargo* v226; // [esp+440h] [ebp-28h]
CAccountCargo* v228; // [esp+448h] [ebp-20h]
CInventory* inserted; // [esp+488h] [ebp+20h]
CInventory* v231; // [esp+488h] [ebp+20h]
PacketGuard::PacketGuard((PacketGuard*)v195);
Inven_Item::Inven_Item((Inven_Item*)&v181);
*(_DWORD*)v202 = 0;
if ((unsigned __int8)_checkItemMovable(this, type, equipment_pos, a4, a6, (int)empty_slot, a8) != 1)
{
*a9 = -1;
v9 = 21;
goto LABEL_303;
}
switch (type)
{
case 0:
switch (a6)
{
case 0:
v204 = 0;
CurCharacInvenW = (CInventory*)CUserCharacInfo::getCurCharacInvenW(this);
v204 = CInventory::move_item(CurCharacInvenW, 1, equipment_pos, 1, empty_slot);
if (v204)
{
v9 = v204;
}
else
{
*a9 = (int)empty_slot;
v9 = 0;
}
goto LABEL_303;
case 2:
if ((unsigned __int8)CUser::CheckInTrade(this))
{
v9 = 19;
goto LABEL_303;
}
CurCharacInvenR = CUserCharacInfo::getCurCharacInvenR(this);
CInventory::GetInvenSlot((CInventory*)&v94, CurCharacInvenR, 1, equipment_pos);
v181 = v94;
v182 = v95;
v183 = v96;
v184 = v97;
v185 = v98;
v186 = v99;
v187 = v100;
v188 = v101;
v189 = v102;
v190 = v103;
v191 = v104;
v192 = v105;
v193 = v106;
v194 = v107;
v12 = *(_DWORD*)((char*)&v181 + 2);
v13 = (CDataManager*)G_CDataManager();
item = CDataManager::find_item(v13, v12);
if (!item)
{
v9 = 23;
goto LABEL_303;
}
if ((*(unsigned __int8(__cdecl**)(int))(*(_DWORD*)item + 64))(item))
{
v9 = 23;
goto LABEL_303;
}
if (*(_DWORD*)((char*)&v181 + 2) > 0x1963u && *(_DWORD*)((char*)&v181 + 2) <= 0x1B57u)
{
v9 = 23;
goto LABEL_303;
}
if (BYTE1(v181) == 1)
{
CurCharacCargoR = (CCargo*)CUserCharacInfo::getCurCharacCargoR(this);
if ((unsigned __int8)CCargo::check_slot_empty(CurCharacCargoR, (int)empty_slot) != 1)
{
v15 = (CCargo*)CUserCharacInfo::getCurCharacCargoR(this);
empty_slot = (CInventory*)CCargo::get_empty_slot(v15);
if ((int)empty_slot < 0)
{
v9 = 4;
goto LABEL_303;
}
}
}
else
{
if (BYTE1(v181) == 4)
{
v9 = 23;
goto LABEL_303;
}
if (Inven_Item::get_add_info((Inven_Item*)&v181) < a5)
{
v9 = 17;
goto LABEL_303;
}
Inven_Item::set_add_info((Inven_Item*)&v181, a5);
v207 = 0;
v16 = *(_DWORD*)((char*)&v181 + 2);
v17 = (CCargo*)CUserCharacInfo::getCurCharacCargoR(this);
v207 = (CInventory*)CCargo::check_item_exist(v17, v16);
if ((int)v207 >= 0)
{
empty_slot = v207;
}
else
{
v18 = (CCargo*)CUserCharacInfo::getCurCharacCargoR(this);
if ((unsigned __int8)CCargo::check_slot_empty(v18, (int)empty_slot) != 1)
{
v19 = (CCargo*)CUserCharacInfo::getCurCharacCargoR(this);
empty_slot = (CInventory*)CCargo::get_empty_slot(v19);
if ((int)empty_slot < 0)
{
v9 = 4;
goto LABEL_303;
}
}
}
}
v20 = (CCargo*)CUserCharacInfo::getCurCharacCargoR(this);
inserted = (CInventory*)CCargo::tryInsertItemSpecialSlot(v20, (const Inven_Item*)&v181, (int)empty_slot);
if ((int)inserted >= 0)
{
v21 = (CInventory*)CUserCharacInfo::getCurCharacInvenW(this);
if ((unsigned __int8)CInventory::delete_item(v21, 1, equipment_pos, a5, 7, 1))
{
CurCharacCargoW = (CCargo*)CUserCharacInfo::getCurCharacCargoW(this);
*a9 = CCargo::insert_item_special_slot(CurCharacCargoW, (Inven_Item*)&v181, (int)inserted);
v23 = CUserCharacInfo::getCurCharacCargoR(this);
CCargo::get_cargo_slot((CCargo*)v180, v23);
if (v180[1] == 1)
{
cUserHistoryLog::ItemAddCargo((CUser*)((char*)this + 497408), *(int*)((char*)&v181 + 2), a5, 1);
}
else
{
add_info = Inven_Item::get_add_info((Inven_Item*)v180);
cUserHistoryLog::ItemAddCargo(
(CUser*)((char*)this + 497408),
*(int*)((char*)&v181 + 2),
a5,
add_info);
}
}
else
{
CurCharacNo = CUserCharacInfo::getCurCharacNo(this);
cMyTrace::cMyTrace(
(cMyTrace*)v196,
"int CUser::exchange_interspace(int, int, itemIndexOnlyServer_t, int, int, int, itemIndexOnlyServer_t, int*)",
15137,
5);
cMyTrace::operator()((int)v196, "delete_item failed %d %d %d", CurCharacNo);
}
goto LABEL_302;
}
v9 = 4;
goto LABEL_303;
case 3:
if ((unsigned __int8)CUser::CheckInTrade(this))
{
v9 = 19;
}
else
{
*(_DWORD*)v202 = CUser::change_equip(this, type, equipment_pos, (int)empty_slot);
if (*(_DWORD*)v202)
{
v9 = *(_DWORD*)v202;
}
else
{
*a9 = (int)empty_slot;
Party = (CParty*)CUser::GetParty(this);
if (Party)
CParty::Reset_party_overlapped_drop_ratio(Party);
v9 = 0;
}
}
goto LABEL_303;
case 4:
v26 = *((__int16*)this + 288769);
v27 = (CGameManager*)G_CGameManager();
TradeSpace = (CTradeSpace*)CGameManager::GetTradeSpace(v27, v26);
if (TradeSpace)
{
if ((unsigned __int8)CTradeSpace::is_empty(TradeSpace))
{
*((_WORD*)this + 288769) = -1;
v9 = 21;
}
else
{
if ((unsigned __int8)CTradeSpace::check_trade_possibility(TradeSpace) != 1)
goto LABEL_234;
if ((unsigned __int8)CTradeSpace::IsLocked(TradeSpace))
{
v9 = 17;
}
else
{
*(_DWORD*)v202 = CTradeSpace::regist_item(TradeSpace, this, 0, equipment_pos, a5);
if (*(int*)v202 >= 0)
{
*a9 = *(_DWORD*)v202;
goto LABEL_302;
}
CUserCharacInfo::getCurCharacNo(this);
acc_id = CUser::get_acc_id(this);
NumberToString(acc_id, 0);
cMyTrace::cMyTrace(
(cMyTrace*)v197,
"int CUser::exchange_interspace(int, int, itemIndexOnlyServer_t, int, int, int, itemIndexOnlyServer_t, int*)",
15191,
5);
cMyTrace::operator()(
(int)v197,
"(regist_item(): %d)(m_id: %s) (CharacNo: %d) (from_slot: %d) (item_count: %d)",
v202[0]);
if (*(_DWORD*)v202 == -4)
v9 = 94;
else
v9 = 17;
}
}
}
else
{
v9 = 1;
}
goto LABEL_303;
case 12:
if ((unsigned __int8)CUser::CheckInTrade(this))
{
v9 = 19;
}
else
{
v29 = ARAD::Singleton<ServiceRestrictManager>::Get();
if ((unsigned __int8)ServiceRestrictManager::isRestricted((int)v29, this, 1, 27))
{
v9 = 209;
}
else
{
v209 = CSecu_ProtectionField::Check(GlobalData::s_pSecuProtectionField, this, 1);
if (v209)
{
v9 = v209;
}
else if ((unsigned __int8)CUser::IsExistAccountCargo(this) != 1)
{
v9 = 19;
}
else
{
AccountCargo = (CAccountCargo*)CUser::GetAccountCargo(this);
v30 = CUserCharacInfo::getCurCharacInvenR(this);
CInventory::GetInvenSlot((CInventory*)&v94, v30, 1, equipment_pos);
v181 = v94;
v182 = v95;
v183 = v96;
v184 = v97;
v185 = v98;
v186 = v99;
v187 = v100;
v188 = v101;
v189 = v102;
v190 = v103;
v191 = v104;
v192 = v105;
v193 = v106;
v194 = v107;
if ((unsigned __int8)IsTradeLimitAttachTypeItem((const Inven_Item*)&v181))
{
v9 = 23;
}
else
{
if ((unsigned __int8)CAccountCargo::CheckInsertCondition(AccountCargo, (Inven_Item*)&v181) == 1)
{
if (BYTE1(v181) == 1)
{
if ((unsigned __int8)CAccountCargo::CheckSlotEmpty(AccountCargo, (int)empty_slot) != 1)
{
empty_slot = (CInventory*)CAccountCargo::GetEmptySlot(AccountCargo);
if ((int)empty_slot < 0)
{
v9 = 4;
goto LABEL_303;
}
}
}
else
{
if (Inven_Item::get_add_info((Inven_Item*)&v181) < a5)
{
v9 = 17;
goto LABEL_303;
}
Inven_Item::set_add_info((Inven_Item*)&v181, a5);
SpecificItemSlot = CAccountCargo::GetSpecificItemSlot(AccountCargo, *(int*)((char*)&v181 + 2));
if (SpecificItemSlot < 0)
{
if ((unsigned __int8)CAccountCargo::CheckSlotEmpty(AccountCargo, (int)empty_slot) != 1)
{
empty_slot = (CInventory*)CAccountCargo::GetEmptySlot(AccountCargo);
if ((int)empty_slot < 0)
{
v9 = 4;
goto LABEL_303;
}
}
}
else
{
if ((unsigned __int8)CAccountCargo::CheckStackLimit(
AccountCargo,
SpecificItemSlot,
*(int*)((char*)&v181 + 2),
a5) != 1)
{
v9 = 4;
goto LABEL_303;
}
empty_slot = (CInventory*)SpecificItemSlot;
}
}
v31 = (CInventory*)CUserCharacInfo::getCurCharacInvenW(this);
if ((unsigned __int8)CInventory::delete_item(v31, 1, equipment_pos, a5, 37, 1))
{
*a9 = CAccountCargo::InsertItem(AccountCargo, (Inven_Item*)&v181, (int)empty_slot);
CAccountCargo::GetSlot((CAccountCargo*)v177, (int)AccountCargo, *a9);// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
if (v177[1] == 1)
cUserHistoryLog::AccountCargoAddItem((char*)this + 497408, v178, 1, 1, 45);
else
cUserHistoryLog::AccountCargoAddItem((char*)this + 497408, v178, v179, a5, 45);
}
goto LABEL_302;
}
v9 = 17;
}
}
}
}
break;
default:
v9 = 1;
goto LABEL_303;
}
goto LABEL_303;
case 1:
Inven_Item::Inven_Item((Inven_Item*)&v141);
Inven_Item::Inven_Item((Inven_Item*)&v126);
switch (a6)
{
case 3:
v53 = CUserCharacInfo::getCurCharacInvenR(this);
CInventory::GetInvenSlot((CInventory*)&v94, v53, 2, equipment_pos);
v126 = LODWORD(v94);
v127 = *(_QWORD*)((char*)&v94 + 4);
v128 = v95;
v129 = v96;
v130 = v97;
v131 = v98;
v132 = v99;
v133 = v100;
v134 = v101;
v135 = v102;
v136 = v103;
v137 = v104;
v138 = v105;
v139 = v106;
v140 = v107;
v54 = CUserCharacInfo::getCurCharacInvenR(this);
CInventory::GetInvenSlot((CInventory*)&v94, v54, 0, (int)empty_slot);
v141 = LODWORD(v94);
v142 = *(_QWORD*)((char*)&v94 + 4);
v143 = v95;
v144 = v96;
v145 = v97;
v146 = v98;
v147 = v99;
v148 = v100;
v149 = v101;
v150 = v102;
v151 = v103;
v152 = v104;
v153 = v105;
v154 = v106;
v155 = v107;
break;
case 4:
v57 = CUserCharacInfo::getCurCharacInvenR(this);
CInventory::GetInvenSlot((CInventory*)&v94, v57, 2, equipment_pos);
v126 = LODWORD(v94);
v127 = *(_QWORD*)((char*)&v94 + 4);
v128 = v95;
v129 = v96;
v130 = v97;
v131 = v98;
v132 = v99;
v133 = v100;
v134 = v101;
v135 = v102;
v136 = v103;
v137 = v104;
v138 = v105;
v139 = v106;
v140 = v107;
break;
case 1:
v55 = CUserCharacInfo::getCurCharacInvenR(this);
CInventory::GetInvenSlot((CInventory*)&v94, v55, 2, equipment_pos);
v126 = LODWORD(v94);
v127 = *(_QWORD*)((char*)&v94 + 4);
v128 = v95;
v129 = v96;
v130 = v97;
v131 = v98;
v132 = v99;
v133 = v100;
v134 = v101;
v135 = v102;
v136 = v103;
v137 = v104;
v138 = v105;
v139 = v106;
v140 = v107;
v56 = CUserCharacInfo::getCurCharacInvenR(this);
CInventory::GetInvenSlot((CInventory*)&v94, v56, 2, (int)empty_slot);
v141 = LODWORD(v94);
v142 = *(_QWORD*)((char*)&v94 + 4);
v143 = v95;
v144 = v96;
v145 = v97;
v146 = v98;
v147 = v99;
v148 = v100;
v149 = v101;
v150 = v102;
v151 = v103;
v152 = v104;
v153 = v105;
v154 = v106;
v155 = v107;
break;
}
if ((unsigned __int8)WongWork::CAvatarItemMgr::IsTempKey(*(WongWork::CAvatarItemMgr**)((char*)&v127 + 3), v86)
|| (unsigned __int8)WongWork::CAvatarItemMgr::IsTempKey(*(WongWork::CAvatarItemMgr**)((char*)&v142 + 3), v90))
{
v9 = 19;
goto LABEL_303;
}
switch (a6)
{
case 3:
*(_DWORD*)v202 = CUser::change_equip(this, type, equipment_pos, (int)empty_slot);
if (*(int*)v202 > 0)
{
v9 = *(_DWORD*)v202;
goto LABEL_303;
}
*a9 = (int)empty_slot;
break;
case 4:
v60 = *((__int16*)this + 288769);
v61 = (CGameManager*)G_CGameManager();
TradeSpace = (CTradeSpace*)CGameManager::GetTradeSpace(v61, v60);
if (!TradeSpace)
{
v9 = 1;
goto LABEL_303;
}
if ((unsigned __int8)CTradeSpace::is_empty(TradeSpace))
{
*((_WORD*)this + 288769) = -1;
v9 = 21;
goto LABEL_303;
}
if ((unsigned __int8)CTradeSpace::check_trade_possibility(TradeSpace) != 1)
{
CTradeSpace::cancel_trade(TradeSpace);
v62 = (CGameManager*)G_CGameManager();
CGameManager::PutTradeSpace(v62, TradeSpace);
goto LABEL_302;
}
if ((unsigned __int8)CTradeSpace::IsLocked(TradeSpace))
{
v9 = 17;
goto LABEL_303;
}
*(_DWORD*)v202 = CTradeSpace::regist_item(TradeSpace, this, 1, equipment_pos, a5);
if (*(int*)v202 < 0)
{
v9 = 17;
goto LABEL_303;
}
*a9 = *(_DWORD*)v202;
break;
case 1:
v220 = 0;
v59 = (CInventory*)CUserCharacInfo::getCurCharacInvenW(this);
v220 = CInventory::move_item(v59, 2, equipment_pos, 2, empty_slot);
if (v220)
{
v9 = v220;
goto LABEL_303;
}
*a9 = (int)empty_slot;
break;
default:
v9 = 1;
goto LABEL_303;
}
goto LABEL_302;
case 2:
switch (a6)
{
case 0:
if ((unsigned __int8)CUser::CheckInTrade(this))
{
v9 = 19;
}
else
{
v32 = CUserCharacInfo::getCurCharacCargoR(this);
CCargo::get_cargo_slot((CCargo*)&v94, v32);
v181 = v94;
v182 = v95;
v183 = v96;
v184 = v97;
v185 = v98;
v186 = v99;
v187 = v100;
v188 = v101;
v189 = v102;
v190 = v103;
v191 = v104;
v192 = v105;
v193 = v106;
v194 = v107;
v163 = v94;
v164 = v95;
v165 = v96;
v166 = v97;
v167 = v98;
v168 = v99;
v169 = v100;
v170 = v101;
v171 = v102;
v172 = v103;
v173 = v104;
v174 = v105;
v175 = v106;
v176 = v107;
if (BYTE1(v94) != 1)
Inven_Item::set_add_info((Inven_Item*)&v163, a5);
v33 = CUserCharacInfo::getCurCharacInvenW(this);
if (CInventory::tryInsertItemIntoInventory(
v33,
LODWORD(v163),
DWORD1(v163),
HIDWORD(v163),
v164,
v165,
v166,
v167,
v168,
v169,
v170,
v171,
v172,
v173,
v174,
v175,
v176) != -1)
{
v34 = (CCargo*)CUserCharacInfo::getCurCharacCargoW(this);
if ((unsigned __int8)CCargo::delete_item(v34, equipment_pos, a5, 7))
{
v35 = CUserCharacInfo::getCurCharacInvenW(this);
LOBYTE(v92) = v176;
*a9 = CInventory::insertItemIntoInventory(
v35,
LODWORD(v163),
DWORD1(v163),
HIDWORD(v163),
v164,
v165,
v166,
v167,
v168,
v169,
v170,
v171,
v172,
v173,
v174,
v175,
v92,
7,
1,
0);
if (*a9 == -1)
{
CUserCharacInfo::getCurCharacNo(this);
v36 = CUser::get_acc_id(this);
v37 = NumberToString(v36, 0);
cMyTrace::cMyTrace(
(cMyTrace*)v198,
"int CUser::exchange_interspace(int, int, itemIndexOnlyServer_t, int, int, int, itemIndexOnlyServer_t, int*)",
15333,
5);
cMyTrace::operator()((int)v198, "insertItemIntoInventory failed %s %d %d %d", v37);
}
}
else
{
v38 = CUserCharacInfo::getCurCharacNo(this);
cMyTrace::cMyTrace(
(cMyTrace*)v199,
"int CUser::exchange_interspace(int, int, itemIndexOnlyServer_t, int, int, int, itemIndexOnlyServer_t, int*)",
15338,
5);
cMyTrace::operator()((int)v199, "delete_item failed %d %d %d", v38);
}
goto LABEL_302;
}
v9 = 17;
}
goto LABEL_303;
case 2:
v39 = (CCargo*)CUserCharacInfo::getCurCharacCargoW(this);
if ((unsigned __int8)CCargo::move_item(v39, equipment_pos, (int)empty_slot) != 1)
{
v9 = 17;
}
else
{
*a9 = (int)empty_slot;
v9 = 0;
}
goto LABEL_303;
case 3:
if ((unsigned __int8)CUser::CheckInTrade(this))
v9 = 19;
else
v9 = 1;
goto LABEL_303;
case 7:
v9 = 1;
goto LABEL_303;
case 12:
if ((unsigned __int8)CUser::CheckInTrade(this))
{
v9 = 19;
}
else
{
v214 = CSecu_ProtectionField::Check(GlobalData::s_pSecuProtectionField, this, 1);
if (v214)
{
v9 = v214;
}
else if ((unsigned __int8)CUser::IsExistAccountCargo(this) != 1)
{
v9 = 19;
}
else
{
v215 = (CAccountCargo*)CUser::GetAccountCargo(this);
v40 = CUserCharacInfo::getCurCharacCargoR(this);
CCargo::get_cargo_slot((CCargo*)&v94, v40);
v181 = v94;
v182 = v95;
v183 = v96;
v184 = v97;
v185 = v98;
v186 = v99;
v187 = v100;
v188 = v101;
v189 = v102;
v190 = v103;
v191 = v104;
v192 = v105;
v193 = v106;
v194 = v107;
if ((unsigned __int8)CAccountCargo::CheckInsertCondition(v215, (Inven_Item*)&v181) == 1)
{
if (BYTE1(v181) == 1)
{
if ((unsigned __int8)CAccountCargo::CheckSlotEmpty(v215, (int)empty_slot) != 1)
{
empty_slot = (CInventory*)CAccountCargo::GetEmptySlot(v215);
if ((int)empty_slot < 0)
{
v9 = 4;
goto LABEL_303;
}
}
}
else
{
if (Inven_Item::get_add_info((Inven_Item*)&v181) < a5)
{
v9 = 17;
goto LABEL_303;
}
Inven_Item::set_add_info((Inven_Item*)&v181, a5);
v217 = CAccountCargo::GetSpecificItemSlot(v215, *(int*)((char*)&v181 + 2));
if (v217 < 0)
{
if ((unsigned __int8)CAccountCargo::CheckSlotEmpty(v215, (int)empty_slot) != 1)
{
empty_slot = (CInventory*)CAccountCargo::GetEmptySlot(v215);
if ((int)empty_slot < 0)
{
v9 = 4;
goto LABEL_303;
}
}
}
else
{
if ((unsigned __int8)CAccountCargo::CheckStackLimit(v215, v217, *(int*)((char*)&v181 + 2), a5) != 1)
{
v9 = 4;
goto LABEL_303;
}
empty_slot = (CInventory*)v217;
}
}
v41 = (CCargo*)CUserCharacInfo::getCurCharacCargoW(this);
if ((unsigned __int8)CCargo::delete_item(v41, equipment_pos, a5, 37))
{
*a9 = CAccountCargo::InsertItem(v215, (Inven_Item*)&v181, (int)empty_slot);
CAccountCargo::GetSlot((CAccountCargo*)v160, (int)v215, *a9);
if (v160[1] == 1)
cUserHistoryLog::AccountCargoAddItem((char*)this + 497408, v161, 1, 1, 46);
else
cUserHistoryLog::AccountCargoAddItem((char*)this + 497408, v161, v162, a5, 46);
}
goto LABEL_302;
}
v9 = 17;
}
}
break;
default:
v9 = 1;
goto LABEL_303;
}
goto LABEL_303;
case 3:
switch (a6)
{
case 0:
if ((unsigned __int8)CUser::CheckInTrade(this))
{
v9 = 19;
}
else
{
*(_DWORD*)v202 = CUser::change_equip(this, a6, (__int16)empty_slot, equipment_pos);
if (*(_DWORD*)v202)
{
v9 = *(_DWORD*)v202;
}
else
{
*a9 = equipment_pos;
v9 = 0;
}
}
break;
case 1:
v42 = CUserCharacInfo::getCurCharacInvenR(this);
CInventory::GetInvenSlot((CInventory*)v158, v42, 0, equipment_pos);
v43 = CUserCharacInfo::getCurCharacInvenR(this);
CInventory::GetInvenSlot((CInventory*)v156, v43, 2, (int)empty_slot);
if ((unsigned __int8)WongWork::CAvatarItemMgr::IsTempKey(v159, v87)
|| (unsigned __int8)WongWork::CAvatarItemMgr::IsTempKey(v157, v88))
{
v9 = 19;
}
else
{
*(_DWORD*)v202 = CUser::change_equip(this, type, equipment_pos, (int)empty_slot);
if (*(int*)v202 <= 0)
{
*a9 = (int)empty_slot;
v9 = 0;
}
else
{
v9 = *(_DWORD*)v202;
}
}
break;
case 2:
if ((unsigned __int8)CUser::CheckInTrade(this))
v9 = 19;
else
v9 = 1;
break;
case 4:
v45 = *((__int16*)this + 288769);
v46 = (CGameManager*)G_CGameManager();
TradeSpace = (CTradeSpace*)CGameManager::GetTradeSpace(v46, v45);
if (TradeSpace)
{
if ((unsigned __int8)CTradeSpace::is_empty(TradeSpace))
{
*((_WORD*)this + 288769) = -1;
v9 = 21;
}
else
{
if ((unsigned __int8)CTradeSpace::check_trade_possibility(TradeSpace) != 1)
goto LABEL_234;
if ((unsigned __int8)CTradeSpace::IsLocked(TradeSpace))
{
v9 = 17;
}
else
{
*(_DWORD*)v202 = CTradeSpace::regist_item(TradeSpace, this, 3, equipment_pos, a5);
if (*(int*)v202 >= 0)
{
*a9 = *(_DWORD*)v202;
CUser::send_equip(this, equipment_pos);
goto LABEL_302;
}
v9 = 17;
}
}
}
else
{
v9 = 1;
}
break;
case 7:
v47 = (GameWorld*)G_GameWorld();
if ((unsigned __int8)GameWorld::IsCheckUnusableEquipmentChannel(v47))
{
v48 = (CInventory*)CUserCharacInfo::getCurCharacInvenR(this);
InvenRef = (online_preliminary::COnlinePreliminary*)CInventory::GetInvenRef(v48, 3, (int)empty_slot);
if ((unsigned __int8)online_preliminary::COnlinePreliminary::CheckUnusableEquipment(InvenRef, v89) != 1)
goto LABEL_164;
}
v218 = 0;
v50 = (CInventory*)CUserCharacInfo::getCurCharacInvenW(this);
v218 = CInventory::move_item(v50, 0, equipment_pos, 3, empty_slot);
if (!v218)
goto LABEL_167;
v9 = v218;
break;
default:
v9 = 1;
break;
}
goto LABEL_303;
case 4:
if ((unsigned int)a6 > 7 || ((1 << a6) & 0x8B) == 0)
{
v9 = 1;
goto LABEL_303;
}
v51 = *((__int16*)this + 288769);
v52 = (CGameManager*)G_CGameManager();
TradeSpace = (CTradeSpace*)CGameManager::GetTradeSpace(v52, v51);
if (!TradeSpace)
{
v9 = 1;
goto LABEL_303;
}
if ((unsigned __int8)CTradeSpace::is_empty(TradeSpace))
{
*((_WORD*)this + 288769) = -1;
v9 = 21;
goto LABEL_303;
}
if ((unsigned __int8)CTradeSpace::check_trade_possibility(TradeSpace) != 1)
goto LABEL_234;
if ((unsigned __int8)CTradeSpace::IsLocked(TradeSpace))
{
v9 = 17;
goto LABEL_303;
}
*(_DWORD*)v202 = CTradeSpace::remove_item(TradeSpace, this, equipment_pos, a6, (int)empty_slot, a5);
if (*(int*)v202 < 0)
{
v9 = 17;
goto LABEL_303;
}
*a9 = *(_DWORD*)v202;
if (a6 == 3)
CUser::send_equip(this, (int)empty_slot);
goto LABEL_302;
case 7:
switch (a6)
{
case 4:
v67 = *((__int16*)this + 288769);
v68 = (CGameManager*)G_CGameManager();
TradeSpace = (CTradeSpace*)CGameManager::GetTradeSpace(v68, v67);
if (!TradeSpace)
{
v9 = 1;
break;
}
if ((unsigned __int8)CTradeSpace::is_empty(TradeSpace))
{
*((_WORD*)this + 288769) = -1;
v9 = 21;
break;
}
if ((unsigned __int8)CTradeSpace::check_trade_possibility(TradeSpace) != 1)
{
LABEL_234:
CTradeSpace::cancel_trade(TradeSpace);
v69 = (CGameManager*)G_CGameManager();
CGameManager::PutTradeSpace(v69, TradeSpace);
}
else
{
if ((unsigned __int8)CTradeSpace::IsLocked(TradeSpace))
{
v9 = 17;
break;
}
*(_DWORD*)v202 = CTradeSpace::regist_item(TradeSpace, this, 7, equipment_pos, a5);
if (*(int*)v202 < 0)
{
v9 = 17;
break;
}
*a9 = *(_DWORD*)v202;
}
goto LABEL_302;
case 7:
v223 = 0;
v66 = (CInventory*)CUserCharacInfo::getCurCharacInvenW(this);
v223 = CInventory::move_item(v66, 3, equipment_pos, 3, empty_slot);
if (v223)
{
v9 = v223;
break;
}
*a9 = (int)empty_slot;
LABEL_302:
v9 = 0;
break;
case 3:
v63 = (GameWorld*)G_GameWorld();
if ((unsigned __int8)GameWorld::IsCheckUnusableEquipmentChannel(v63)
&& (v64 = (CInventory*)CUserCharacInfo::getCurCharacInvenR(this),
v222 = (online_preliminary::COnlinePreliminary*)CInventory::GetInvenRef(v64, 3, equipment_pos),
(unsigned __int8)online_preliminary::COnlinePreliminary::CheckUnusableEquipment(v222, v91) ^ 1))
{
LABEL_164:
String = (char*)RDARScriptStringManager::findString(
(RDARScriptStringManager*)&g_scriptStringManager_,
4,
"game_server_msg_146",
0);
CUser::SendNotiPacketMessage(this, String, 0);
v9 = 1;
}
else
{
v221 = 0;
v65 = (CInventory*)CUserCharacInfo::getCurCharacInvenW(this);
v221 = CInventory::move_item(v65, 3, equipment_pos, 0, empty_slot);
if (v221)
{
v9 = v221;
}
else
{
LABEL_167:
*a9 = (int)empty_slot;
CUser::send_equip(this, (int)empty_slot);
v9 = 0;
}
}
break;
default:
v9 = 1;
break;
}
LABEL_303:
PacketGuard::~PacketGuard((PacketGuard*)v195);
return v9;
case 12:
v70 = ARAD::Singleton<ServiceRestrictManager>::Get();
if ((unsigned __int8)ServiceRestrictManager::isRestricted((int)v70, this, 1, 27))
{
v9 = 209;
goto LABEL_303;
}
v224 = CSecu_ProtectionField::Check(GlobalData::s_pSecuProtectionField, this, 1);
if (v224)
{
v9 = v224;
goto LABEL_303;
}
switch (a6)
{
case 0:
if ((unsigned __int8)CUser::CheckInTrade(this))
{
v9 = 19;
}
else if ((unsigned __int8)CUser::IsExistAccountCargo(this) != 1)
{
v9 = 19;
}
else
{
v226 = (CAccountCargo*)CUser::GetAccountCargo(this);
CAccountCargo::GetSlot((CAccountCargo*)&v94, (int)v226, equipment_pos);
v181 = v94;
v182 = v95;
v183 = v96;
v184 = v97;
v185 = v98;
v186 = v99;
v187 = v100;
v188 = v101;
v189 = v102;
v190 = v103;
v191 = v104;
v192 = v105;
v193 = v106;
v194 = v107;
v112 = v94;
v113 = v95;
v114 = v96;
v115 = v97;
v116 = v98;
v117 = v99;
v118 = v100;
v119 = v101;
v120 = v102;
v121 = v103;
v122 = v104;
v123 = v105;
v124 = v106;
v125 = v107;
if (BYTE1(v94) != 1)
Inven_Item::set_add_info((Inven_Item*)&v112, a5);
v71 = CUserCharacInfo::getCurCharacInvenW(this);
if (CInventory::tryInsertItemIntoInventory(
v71,
LODWORD(v112),
DWORD1(v112),
HIDWORD(v112),
v113,
v114,
v115,
v116,
v117,
v118,
v119,
v120,
v121,
v122,
v123,
v124,
v125) != -1)
{
if ((unsigned __int8)CAccountCargo::DeleteItem(v226, equipment_pos, a5))
{
v72 = CUserCharacInfo::getCurCharacInvenW(this);
LOBYTE(v93) = v125;
*a9 = CInventory::insertItemIntoInventory(
v72,
LODWORD(v112),
DWORD1(v112),
HIDWORD(v112),
v113,
v114,
v115,
v116,
v117,
v118,
v119,
v120,
v121,
v122,
v123,
v124,
v93,
7,
1,
0);
if (*a9 == -1)
{
CUserCharacInfo::getCurCharacNo(this);
v73 = CUser::get_acc_id(this);
v74 = NumberToString(v73, 0);
cMyTrace::cMyTrace(
(cMyTrace*)v200,
"int CUser::exchange_interspace(int, int, itemIndexOnlyServer_t, int, int, int, itemIndexOnlyServer_t, int*)",
16083,
5);
cMyTrace::operator()((int)v200, "insertItemIntoInventory failed %s %d %d %d", v74);
}
CAccountCargo::GetSlot((CAccountCargo*)v110, (int)v226, equipment_pos);
if (v110[1] == 1)
cUserHistoryLog::AccountCargoDelItem((char*)this + 497408, *(_DWORD*)((char*)&v112 + 2), 0, 1, 38);
else
cUserHistoryLog::AccountCargoDelItem(
(char*)this + 497408,
*(_DWORD*)((char*)&v112 + 2),
v111,
a5,
38);
}
goto LABEL_302;
}
v9 = 17;
}
goto LABEL_303;
case 2:
if ((unsigned __int8)CUser::CheckInTrade(this))
{
v9 = 19;
goto LABEL_303;
}
if ((unsigned __int8)CUser::IsExistAccountCargo(this) != 1)
{
v9 = 19;
goto LABEL_303;
}
v228 = (CAccountCargo*)CUser::GetAccountCargo(this);
CAccountCargo::GetSlot((CAccountCargo*)&v94, (int)v228, equipment_pos);
v181 = v94;
v182 = v95;
v183 = v96;
v184 = v97;
v185 = v98;
v186 = v99;
v187 = v100;
v188 = v101;
v189 = v102;
v190 = v103;
v191 = v104;
v192 = v105;
v193 = v106;
v194 = v107;
if (*(_DWORD*)((char*)&v181 + 2) > 0x1963u && *(_DWORD*)((char*)&v181 + 2) <= 0x1B57u)
{
v9 = 23;
goto LABEL_303;
}
if (BYTE1(v181) == 4)
{
v9 = 23;
goto LABEL_303;
}
if (BYTE1(v181) == 1)
{
v75 = (CCargo*)CUserCharacInfo::getCurCharacCargoR(this);
if ((unsigned __int8)CCargo::check_slot_empty(v75, (int)empty_slot) != 1)
{
v76 = (CCargo*)CUserCharacInfo::getCurCharacCargoR(this);
empty_slot = (CInventory*)CCargo::get_empty_slot(v76);
if ((int)empty_slot < 0)
{
v9 = 4;
goto LABEL_303;
}
}
}
else
{
if (Inven_Item::get_add_info((Inven_Item*)&v181) < a5)
{
v9 = 17;
goto LABEL_303;
}
Inven_Item::set_add_info((Inven_Item*)&v181, a5);
v77 = *(_DWORD*)((char*)&v181 + 2);
v78 = (CCargo*)CUserCharacInfo::getCurCharacCargoR(this);
if ((int)CCargo::check_item_exist(v78, v77) < 0)
{
v79 = (CCargo*)CUserCharacInfo::getCurCharacCargoR(this);
if ((unsigned __int8)CCargo::check_slot_empty(v79, (int)empty_slot) != 1)
{
v80 = (CCargo*)CUserCharacInfo::getCurCharacCargoR(this);
empty_slot = (CInventory*)CCargo::get_empty_slot(v80);
if ((int)empty_slot < 0)
{
v9 = 4;
goto LABEL_303;
}
}
}
}
v81 = (CCargo*)CUserCharacInfo::getCurCharacCargoR(this);
v231 = (CInventory*)CCargo::tryInsertItemSpecialSlot(v81, (const Inven_Item*)&v181, (int)empty_slot);
if ((int)v231 >= 0)
{
if ((unsigned __int8)CAccountCargo::DeleteItem(v228, equipment_pos, a5))
{
v82 = (CCargo*)CUserCharacInfo::getCurCharacCargoW(this);
*a9 = CCargo::insert_item_special_slot(v82, (Inven_Item*)&v181, (int)v231);
if (*a9 == -1)
{
CUserCharacInfo::getCurCharacNo(this);
v83 = CUser::get_acc_id(this);
v84 = NumberToString(v83, 0);
cMyTrace::cMyTrace(
(cMyTrace*)v201,
"int CUser::exchange_interspace(int, int, itemIndexOnlyServer_t, int, int, int, itemIndexOnlyServer_t, int*)",
16151,
5);
cMyTrace::operator()((int)v201, "insertItemIntoInventory failed %s %d %d %d", v84);
}
CAccountCargo::GetSlot((CAccountCargo*)v108, (int)v228, equipment_pos);
if (v108[1] == 1)
cUserHistoryLog::AccountCargoDelItem((char*)this + 497408, *(_DWORD*)((char*)&v181 + 2), 0, 1, 39);
else
cUserHistoryLog::AccountCargoDelItem(
(char*)this + 497408,
*(_DWORD*)((char*)&v181 + 2),
v109,
a5,
39);
}
goto LABEL_302;
}
v9 = 4;
break;
case 3:
if ((unsigned __int8)CUser::CheckInTrade(this))
v9 = 19;
else
v9 = 1;
goto LABEL_303;
case 7:
v9 = 1;
goto LABEL_303;
case 12:
if ((unsigned __int8)CUser::CheckInTrade(this))
{
v9 = 19;
}
else if ((unsigned __int8)CUser::IsExistAccountCargo(this) != 1)
{
v9 = 19;
}
else
{
v225 = (CAccountCargo*)CUser::GetAccountCargo(this);
if ((unsigned __int8)CAccountCargo::MoveItem(v225, equipment_pos, (int)empty_slot) == 1)
{
*a9 = (int)empty_slot;
goto LABEL_302;
}
v9 = 17;
}
goto LABEL_303;
default:
v9 = 1;
goto LABEL_303;
}
goto LABEL_303;
default:
v9 = 1;
goto LABEL_303;
}
}