Advertisement
Poofcakes

CField_MonsterCarnival::OnEnter

Apr 24th, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.88 KB | None | 0 0
  1. int __thiscall CField_MonsterCarnival::OnEnter(CField_MonsterCarnival *this, CUser *pUser)
  2. {
  3. CField_MonsterCarnival *v2; // esi@1
  4. char *v3; // ebx@1
  5. CUser *v4; // edi@1
  6. char *v5; // ecx@2
  7. signed int v6; // ebx@4
  8. ZXString<char> *v7; // eax@8
  9. CField_MonsterCarnival::MEMBERDATA *v8; // eax@8
  10. int v9; // ecx@8
  11. int **v10; // ebx@11
  12. unsigned int v11; // eax@16
  13. bool v12; // zf@16
  14. unsigned int v14; // eax@19
  15. int v15; // eax@21
  16. ZXString<char> v16; // [sp-8h] [bp-54h]@19
  17. int v17; // [sp-4h] [bp-50h]@8
  18. COutPacket v18; // [sp+Ch] [bp-40h]@16
  19. COutPacket oPacket; // [sp+1Ch] [bp-30h]@10
  20. ZRef<CField_MonsterCarnival::MEMBERDATA> value; // [sp+2Ch] [bp-20h]@4
  21. ZFatalSection *v21; // [sp+34h] [bp-18h]@1
  22. unsigned int key; // [sp+38h] [bp-14h]@8
  23. ZFatalSection *v23; // [sp+3Ch] [bp-10h]@1
  24. int v24; // [sp+48h] [bp-4h]@1
  25.  
  26. v2 = this;
  27. v3 = (char *)&this->m_lock;
  28. v23 = &this->m_lock;
  29. v21 = &this->m_lock;
  30. ZFatalSection::Lock(&this->m_lock);
  31. v4 = pUser;
  32. v24 = 0;
  33. if ( pUser && CField::OnEnter((CField *)&v2->vfptr, pUser) )
  34. {
  35. if ( !(v4->m_nGradeCode & 1) )
  36. {
  37. v6 = v4->m_nTeamForMCarnival;
  38. value.p = 0;
  39. LOBYTE(v24) = 1;
  40. if ( v6 < 0 || v6 >= 2 )
  41. {
  42. v17 = 1;
  43. v16._m_pStr = v5;
  44. pUser = (CUser *)&v16;
  45. ZXString<char>::ZXString<char>(&sLog, -1);
  46. LOBYTE(v24) = 1;
  47. v14 = CField::GetForcedReturnFieldId((CField *)&v2->vfptr);
  48. CUser::PostTransferField(v4, v14, v16, v17);
  49. LOBYTE(v24) = 0;
  50. if ( value.p )
  51. {
  52. ZRef<CField_MonsterCarnival::MEMBERDATA>::_ReleaseRaw(&value, 0);
  53. value.p = 0;
  54. }
  55. v15 = (int)v23;
  56. v12 = v23->_m_nRef == 1;
  57. --*(_DWORD *)(v15 + 4);
  58. if ( v12 )
  59. *(_DWORD *)v15 = 0;
  60. return 1;
  61. }
  62. pUser = (CUser *)v4->m_dwCharacterID;
  63. if ( ZMap<unsigned long,ZRef<CField_MonsterCarnival::MEMBERDATA>,unsigned long>::GetAt(
  64. &v2->m_mMember,
  65. (const unsigned int *)&pUser,
  66. &value) )
  67. {
  68. value.p->bIsDead = 0;
  69. }
  70. else
  71. {
  72. ZRef<CField_MonsterCarnival::MEMBERDATA>::_Alloc(&value);
  73. v7 = CUser::GetCharacterName(v4);
  74. v17 = 0;
  75. pUser = (CUser *)&v17;
  76. ZXString<char>::operator=((ZXString<char> *)&v17, v7);
  77. LOBYTE(v24) = 1;
  78. v8 = ZRef<CField_MonsterCarnival::MEMBERDATA>::operator->(&value);
  79. CField_MonsterCarnival::MEMBERDATA::Init(v8, v6, (ZXString<char>)v17);
  80. pUser = (CUser *)v4->m_dwCharacterID;
  81. ZMap<unsigned long,ZRef<CField_MonsterCarnival::MEMBERDATA>,unsigned long>::Insert(
  82. &v2->m_mMember,
  83. (const unsigned int *)&pUser,
  84. &value);
  85. key = v4->m_dwCharacterID;
  86. pUser = (CUser *)1;
  87. ZMap<unsigned long,int,unsigned long>::Insert(&v2->m_mCharacterOut, &key, (const int *)&pUser);
  88. v17 = v9;
  89. pUser = (CUser *)&v17;
  90. CStringDecoder::GetString(&g_sd, (ZXString<char> *)&v17, 3722);
  91. CField_MonsterCarnival::SendMessageA(v4, (ZXString<char>)v17);
  92. if ( CPartyMan::IsPartyBoss(TSingleton<CPartyMan>::ms_pInstance, v4->m_dwCharacterID) )
  93. v2->m_dwPartyBossID[v6] = v4->m_dwCharacterID;
  94. }
  95. COutPacket::COutPacket(&oPacket, 205, 0);
  96. LOBYTE(v24) = 4;
  97. COutPacket::Encode1(&oPacket, v6);
  98. COutPacket::Encode2(&oPacket, value.p->nRestCP);
  99. COutPacket::Encode2(&oPacket, value.p->nTotCP);
  100. COutPacket::Encode2(&oPacket, v2->m_anRestCP[v6]);
  101. COutPacket::Encode2(&oPacket, v2->m_anTotCP[v6]);
  102. COutPacket::Encode2(&oPacket, *((_WORD *)&v2->vfptr + 683 - v6));
  103. COutPacket::Encode2(&oPacket, *((_WORD *)&v2->vfptr + 685 - v6));
  104. pUser = 0;
  105. if ( v2->m_nMobListCount > 0 )
  106. {
  107. v10 = &v2->m_aSummonedMobCount[v6].a;
  108. do
  109. {
  110. COutPacket::Encode1(&oPacket, (*v10)[(_DWORD)pUser]);
  111. pUser = (CUser *)((char *)pUser + 1);
  112. }
  113. while ( (signed int)pUser < v2->m_nMobListCount );
  114. }
  115. CUser::SendPacket(v4, &oPacket);
  116. LOBYTE(v24) = 1;
  117. ZArray<unsigned char>::RemoveAll(&oPacket.m_aSendBuff);
  118. LOBYTE(v24) = 0;
  119. if ( value.p )
  120. ZRef<CField_MonsterCarnival::MEMBERDATA>::_ReleaseRaw(&value, 0);
  121. v3 = (char *)v23;
  122. }
  123. COutPacket::COutPacket(&v18, 97, 0);
  124. LOBYTE(v24) = 5;
  125. COutPacket::Encode1(&v18, 2);
  126. v11 = ((int (__thiscall *)(CField_MonsterCarnival *))v2->vfptr[16].__vecDelDtor)(v2);
  127. COutPacket::Encode4(&v18, v11);
  128. CUser::SendPacket(v4, &v18);
  129. LOBYTE(v24) = 0;
  130. ZArray<unsigned char>::RemoveAll(&v18.m_aSendBuff);
  131. v12 = (*((_DWORD *)v3 + 1))-- == 1;
  132. if ( v12 )
  133. *(_DWORD *)v3 = 0;
  134. return 1;
  135. }
  136. v12 = (*((_DWORD *)v3 + 1))-- == 1;
  137. if ( v12 )
  138. *(_DWORD *)v3 = 0;
  139. return 0;
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement