Advertisement
Guest User

Untitled

a guest
Jul 21st, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.48 KB | None | 0 0
  1. void __thiscall CWvsContext::OnSkillLearnItemResult(CWvsContext *this, CInPacket *iPacket)
  2. {
  3. CInPacket *v2; // esi
  4. unsigned int v3; // eax
  5. CUserLocal *v4; // eax
  6. int v5; // eax
  7. CUser *v6; // edi
  8. unsigned __int8 v7; // al
  9. int v8; // ebx
  10. char *v9; // eax
  11. ZXString<unsigned short> *v10; // ecx
  12. IWzVector2D *v11; // ecx
  13. IWzGr2DLayer *v12; // esi
  14. ULONG (__stdcall *v13)(IUnknown *); // edx
  15. HRESULT v14; // eax
  16. wchar_t *v15; // esi
  17. StringPool *v16; // eax
  18. ZXString<unsigned short> *v17; // eax
  19. signed int v18; // ebx
  20. StringPool *v19; // eax
  21. const wchar_t *v20; // eax
  22. int v21; // esi
  23. StringPool *v22; // eax
  24. ZXString<char> *v23; // eax
  25. int v24; // ebx
  26. StringPool *v25; // eax
  27. char *v26; // edi
  28. StringPool *v27; // eax
  29. char *v28; // eax
  30. StringPool *v29; // eax
  31. char *v30; // eax
  32. StringPool *v31; // eax
  33. StringPool *v32; // eax
  34. CInPacket *v33; // esi
  35. _com_ptr_t<_com_IIID<IWzVector2D,&_GUID_f28bd1ed_3deb_4f92_9eec_10ef5a1c3fb4> > v34; // [esp-Ch] [ebp-58h]
  36. ZXString<unsigned short> *v35; // [esp-8h] [ebp-54h]
  37. char *v36; // [esp-4h] [ebp-50h]
  38. int v37; // [esp+14h] [ebp-38h]
  39. ZXString<char> sTarget; // [esp+18h] [ebp-34h]
  40. int bSucceed; // [esp+1Ch] [ebp-30h]
  41. int bOnExclRequest; // [esp+20h] [ebp-2Ch]
  42. ZXString<unsigned short> result; // [esp+24h] [ebp-28h]
  43. int bIsMaterbook; // [esp+28h] [ebp-24h]
  44. int bUsed; // [esp+2Ch] [ebp-20h]
  45. ZXString<unsigned short> **v44; // [esp+30h] [ebp-1Ch]
  46. ZXString<unsigned short> **v45; // [esp+34h] [ebp-18h]
  47. char pUser; // [esp+38h] [ebp-14h]
  48. int v47; // [esp+3Ch] [ebp-10h]
  49. int v48; // [esp+48h] [ebp-4h]
  50.  
  51. result._m_pStr = (wchar_t *)this;
  52. v37 = 0;
  53. v2 = iPacket;
  54. bOnExclRequest = (unsigned __int8)CInPacket::Decode1(iPacket);
  55. v3 = CInPacket::Decode4(v2);
  56. v4 = CUserPool::GetUser((CUserPool *)TSingleton<CUserPool>::ms_pInstance.m_pInterface, v3);
  57. if ( v4 && (v5 = (int)&v4->vfptr) != 0 )
  58. {
  59. v6 = (CUser *)(v5 - 8);
  60. v47 = v5 - 8;
  61. if ( v5 != 8 )
  62. InterlockedIncrement(&v6->_m_nRef);
  63. }
  64. else
  65. {
  66. v6 = 0;
  67. v47 = 0;
  68. }
  69. v48 = 0;
  70. if ( v6 )
  71. {
  72. bIsMaterbook = (unsigned __int8)CInPacket::Decode1(v2);
  73. CInPacket::Decode4(v2);
  74. CInPacket::Decode4(v2);
  75. v7 = CInPacket::Decode1(v2);
  76. v8 = v7;
  77. bUsed = v7;
  78. v9 = (char *)(unsigned __int8)CInPacket::Decode1(v2);
  79. bSucceed = (unsigned __int8)v9;
  80. if ( v8 )
  81. {
  82. v36 = v9;
  83. v35 = v10;
  84. v44 = &v35;
  85. CAvatar::GetLayerUnderFace(
  86. (CAvatar *)&v6->vfptr,
  87. (_com_ptr_t<_com_IIID<IWzGr2DLayer,&_GUID_6dc8c7ce_8e81_4420_b4f6_4b60b7d5fcdf> > *)&v35);
  88. v34.m_pInterface = v11;
  89. v45 = (ZXString<unsigned short> **)&v34;
  90. LOBYTE(v48) = 1;
  91. CUser::GetVecCtrl(v6, &v34);
  92. LOBYTE(v48) = 2;
  93. v12 = CAvatar::GetLayerUnderFace(
  94. (CAvatar *)&v6->vfptr,
  95. (_com_ptr_t<_com_IIID<IWzGr2DLayer,&_GUID_6dc8c7ce_8e81_4420_b4f6_4b60b7d5fcdf> > *)&sTarget)->m_pInterface;
  96. LOBYTE(v48) = 3;
  97. if ( !v12 )
  98. _com_issue_error(-2147467261);
  99. v13 = v12->lpVtbl[17].Release;
  100. iPacket = 0;
  101. v14 = ((int (__stdcall *)(IWzGr2DLayer *, CInPacket **))v13)(v12, &iPacket);
  102. if ( v14 < 0 )
  103. _com_issue_errorex(v14, (IUnknown *)&v12->lpVtbl, &_GUID_6dc8c7ce_8e81_4420_b4f6_4b60b7d5fcdf);
  104. LOBYTE(v48) = 4;
  105. CAnimationDisplayer::Effect_SkillBookUsed(
  106. TSingleton<CAnimationDisplayer>::ms_pInstance,
  107. (int)iPacket,
  108. v34,
  109. (_com_ptr_t<_com_IIID<IWzGr2DLayer,&_GUID_6dc8c7ce_8e81_4420_b4f6_4b60b7d5fcdf> >)v35,
  110. (int)v36);
  111. LOBYTE(v48) = 0;
  112. if ( sTarget._m_pStr )
  113. (*(void (__stdcall **)(char *))(*(_DWORD *)sTarget._m_pStr + 8))(sTarget._m_pStr);
  114. }
  115. if ( ((int (__thiscall *)(CUser *))v6->vfptr[3].Update)(v6) )
  116. {
  117. if ( bOnExclRequest )
  118. {
  119. v15 = result._m_pStr;
  120. *((_DWORD *)result._m_pStr + 2094) = 0;
  121. *((_DWORD *)v15 + 2095) = get_update_time();
  122. }
  123. if ( bSucceed )
  124. {
  125. v36 = (char *)1287;
  126. v35 = &result;
  127. v16 = StringPool::GetInstance();
  128. v17 = StringPool::GetStringW(v16, v35, (unsigned int)v36);
  129. LOBYTE(v48) = 5;
  130. v18 = 1;
  131. }
  132. else
  133. {
  134. v36 = (char *)1288;
  135. v35 = (ZXString<unsigned short> *)&iPacket;
  136. v19 = StringPool::GetInstance();
  137. v17 = StringPool::GetStringW(v19, v35, (unsigned int)v36);
  138. v48 = 6;
  139. v18 = 2;
  140. }
  141. v20 = v17->_m_pStr;
  142. v37 = v18;
  143. play_game_sound(v20, 0x64u);
  144. v48 = 5;
  145. if ( v18 & 2 )
  146. {
  147. v18 &= 0xFFFFFFFD;
  148. v37 = v18;
  149. if ( iPacket )
  150. ZXString<unsigned short>::_Release((ZXString<unsigned short>::_ZXStringData *)&iPacket[-1].m_uLength);
  151. }
  152. v48 = 0;
  153. if ( v18 & 1 )
  154. {
  155. v18 &= 0xFFFFFFFE;
  156. v37 = v18;
  157. if ( result._m_pStr )
  158. ZXString<unsigned short>::_Release((ZXString<unsigned short>::_ZXStringData *)result._m_pStr - 1);
  159. }
  160. sTarget._m_pStr = 0;
  161. iPacket = 0;
  162. v21 = bIsMaterbook;
  163. LOBYTE(v48) = 8;
  164. if ( bIsMaterbook )
  165. {
  166. v36 = (char *)3887;
  167. v35 = &result;
  168. v22 = StringPool::GetInstance();
  169. v23 = StringPool::GetString(v22, (ZXString<char> *)v35, (unsigned int)v36);
  170. LOBYTE(v48) = 9;
  171. v24 = v18 | 4;
  172. }
  173. else
  174. {
  175. v36 = (char *)3888;
  176. v35 = (ZXString<unsigned short> *)&bIsMaterbook;
  177. v25 = StringPool::GetInstance();
  178. v23 = StringPool::GetString(v25, (ZXString<char> *)v35, (unsigned int)v36);
  179. v48 = 10;
  180. v24 = v18 | 8;
  181. }
  182. v36 = v23->_m_pStr;
  183. v37 = v24;
  184. ZXString<char>::Format(&sTarget, "%s", v36);
  185. v48 = 9;
  186. if ( v24 & 8 )
  187. {
  188. v24 &= 0xFFFFFFF7;
  189. v37 = v24;
  190. if ( bIsMaterbook )
  191. ZXString<char>::_Release((ZXString<char>::_ZXStringData *)(bIsMaterbook - 12));
  192. }
  193. v48 = 8;
  194. if ( v24 & 4 && result._m_pStr )
  195. ZXString<char>::_Release((ZXString<char>::_ZXStringData *)result._m_pStr - 1);
  196. v26 = sTarget._m_pStr;
  197. if ( bUsed )
  198. {
  199. if ( bSucceed )
  200. {
  201. if ( v21 )
  202. {
  203. v36 = (char *)3891;
  204. v35 = (ZXString<unsigned short> *)&bUsed;
  205. v31 = StringPool::GetInstance();
  206. v36 = StringPool::GetString(v31, (ZXString<char> *)v35, (unsigned int)v36)->_m_pStr;
  207. LOBYTE(v48) = 13;
  208. }
  209. else
  210. {
  211. v36 = (char *)3892;
  212. v35 = (ZXString<unsigned short> *)&bUsed;
  213. v32 = StringPool::GetInstance();
  214. v36 = StringPool::GetString(v32, (ZXString<char> *)v35, (unsigned int)v36)->_m_pStr;
  215. LOBYTE(v48) = 14;
  216. }
  217. ZXString<char>::Format((ZXString<char> *)&iPacket, v36);
  218. }
  219. else
  220. {
  221. v36 = (char *)3890;
  222. v35 = (ZXString<unsigned short> *)&bUsed;
  223. v29 = StringPool::GetInstance();
  224. v30 = StringPool::GetString(v29, (ZXString<char> *)v35, (unsigned int)v36)->_m_pStr;
  225. v36 = v26;
  226. LOBYTE(v48) = 12;
  227. ZXString<char>::Format((ZXString<char> *)&iPacket, v30, v26);
  228. }
  229. }
  230. else
  231. {
  232. v36 = (char *)3889;
  233. v35 = (ZXString<unsigned short> *)&bUsed;
  234. v27 = StringPool::GetInstance();
  235. v28 = StringPool::GetString(v27, (ZXString<char> *)v35, (unsigned int)v36)->_m_pStr;
  236. v36 = v26;
  237. LOBYTE(v48) = 11;
  238. ZXString<char>::Format((ZXString<char> *)&iPacket, v28, v26);
  239. }
  240. LOBYTE(v48) = 8;
  241. if ( bUsed )
  242. ZXString<char>::_Release((ZXString<char>::_ZXStringData *)(bUsed - 12));
  243. v33 = iPacket;
  244. if ( TSingleton<CUIStatusBar>::ms_pInstance._m_pStr )
  245. {
  246. v45 = &v35;
  247. CUIStatusBar::ChatLogAdd(
  248. (CUIStatusBar *)TSingleton<CUIStatusBar>::ms_pInstance._m_pStr,
  249. (const char *)iPacket,
  250. 12,
  251. -1,
  252. 0,
  253. (ZRef<GW_ItemSlotBase>)(unsigned int)v35);
  254. }
  255. LOBYTE(v48) = 7;
  256. if ( v33 )
  257. ZXString<char>::_Release((ZXString<char>::_ZXStringData *)&v33[-1].m_uLength);
  258. LOBYTE(v48) = 0;
  259. if ( v26 )
  260. ZXString<char>::_Release((ZXString<char>::_ZXStringData *)v26 - 1);
  261. }
  262. v48 = -1;
  263. ZRef<CUser>::_ReleaseRaw((ZRef<CUser> *)&pUser, 0);
  264. }
  265. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement