Untitled
unknown
c_cpp
3 years ago
4.1 kB
12
Indexable
void __thiscall CLogin::OnWorldInformation(CLogin *this, CInPacket *iPacket)
{
CLogin *v2; // ebp
CInPacket *v3; // esi
int v4; // ebx
CInPacket *v5; // eax
CLogin::WORLDITEM *v6; // edi
const ZXString<char> *v7; // eax
const ZXString<char> *v8; // eax
unsigned __int8 v9; // al
int v10; // ebx
ZArray<CLogin::CHANNELITEM> *p_ci; // ebp
CLogin::CHANNELITEM *v12; // edi
const ZXString<char> *v13; // eax
int m_nBalloonCount; // eax
const ZXString<char> *v15; // eax
CLogin::BALLOON *v16; // eax
int nY; // ecx
bool v18; // cc
ZXString<char> result; // [esp+18h] [ebp-1Ch] BYREF
CLogin::BALLOON baTemp; // [esp+1Ch] [ebp-18h] BYREF
int v22; // [esp+30h] [ebp-4h]
v2 = this;
v3 = iPacket;
v4 = (char)CInPacket::Decode1(iPacket);
if ( v4 >= 0 )
{
v6 = ZArray<CLogin::WORLDITEM>::InsertBefore(&v2->m_WorldItem, -1);
v6->nWorldID = v4;
v7 = CInPacket::DecodeStr(v3, (ZXString<char> *)&iPacket);
ZXString<char>::operator=(&v6->sName, v7);
v22 = -1;
if ( iPacket )
ZXString<char>::_Release((ZXString<char>::_ZXStringData *)&iPacket[-1].m_uLength);
v6->nWorldState = CInPacket::Decode1(v3);
v8 = CInPacket::DecodeStr(v3, (ZXString<char> *)&iPacket);
ZXString<char>::operator=(&v6->sWorldEventDesc, v8);
v22 = -1;
if ( iPacket )
ZXString<char>::_Release((ZXString<char>::_ZXStringData *)&iPacket[-1].m_uLength);
v6->nWorldEventEXP_WSE = CInPacket::Decode2(v3);
v6->nWorldEventDrop_WSE = CInPacket::Decode2(v3);
v6->nBlockCharCreation = CInPacket::Decode1(v3);
v9 = CInPacket::Decode1(v3);
v10 = v9;
if ( v9 )
{
p_ci = &v6->ci;
do
{
v12 = ZArray<CLogin::CHANNELITEM>::InsertBefore(p_ci, -1);
v13 = CInPacket::DecodeStr(v3, (ZXString<char> *)&iPacket);
ZXString<char>::operator=(&v12->sName, v13);
v22 = -1;
if ( iPacket )
ZXString<char>::_Release((ZXString<char>::_ZXStringData *)&iPacket[-1].m_uLength);
v12->nUserNo = CInPacket::Decode4(v3);
v12->nWorldID = CInPacket::Decode1(v3);
v12->nChannelID = CInPacket::Decode1(v3);
--v10;
v12->bAdultChannel = CInPacket::Decode1(v3);
}
while ( v10 > 0 );
v2 = this;
}
v2->m_nBalloonCount = CInPacket::Decode2(v3);
ZArray<CLogin::BALLOON>::RemoveAll(&v2->m_aBalloon);
m_nBalloonCount = v2->m_nBalloonCount;
if ( m_nBalloonCount )
{
iPacket = 0;
if ( m_nBalloonCount > 0 )
{
do
{
baTemp.sMessage._m_pStr = 0;
v22 = 4;
baTemp.nX = CInPacket::Decode2(v3);
baTemp.nY = CInPacket::Decode2(v3);
v15 = CInPacket::DecodeStr(v3, &result);
LOBYTE(v22) = 5;
ZXString<char>::operator=(&baTemp.sMessage, v15);
LOBYTE(v22) = 4;
if ( result._m_pStr )
ZXString<char>::_Release((ZXString<char>::_ZXStringData *)result._m_pStr - 1);
v16 = ZArray<CLogin::BALLOON>::InsertBefore(&v2->m_aBalloon, -1);
nY = baTemp.nY;
v16->nX = baTemp.nX;
v16->nY = nY;
ZXString<char>::operator=(&v16->sMessage, &baTemp.sMessage);
v22 = -1;
if ( baTemp.sMessage._m_pStr )
ZXString<char>::_Release((ZXString<char>::_ZXStringData *)baTemp.sMessage._m_pStr - 1);
v18 = (int)&iPacket->m_bLoopback + 1 < v2->m_nBalloonCount;
iPacket = (CInPacket *)((char *)iPacket + 1);
}
while ( v18 );
}
}
}
else if ( TSingleton<CUIWorldSelect>::ms_pInstance )
{
CUIWorldSelect::DrawWorldItems(TSingleton<CUIWorldSelect>::ms_pInstance);
CLogin::ChangeStep(v2, 1);
}
else
{
v5 = (CInPacket *)ZAllocEx<ZAllocAnonSelector>::Alloc(&ZAllocEx<ZAllocAnonSelector>::_s_alloc, 0x1D8u);
iPacket = v5;
v22 = 0;
if ( v5 )
CUIWorldSelect::CUIWorldSelect((CUIWorldSelect *)v5, v2);
v22 = -1;
CLogin::ChangeStep(v2, 1);
}
}Editor is loading...