Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void __fastcall User::SendUserInfo(User *this, CUserSocket *pSocket, CVariableBitSet *pNeedUpdatePacketBitSetToBackup)
- {
- CSharedCreatureData *m_data; // rax
- CUserSocket *v5; // rax
- const wchar_t *v6; // rax
- CSharedCreatureData *v7; // r8
- CSharedCreatureData *v8; // rcx
- CSharedCreatureData *v9; // rcx
- CSharedCreatureData *v10; // rcx
- int *v11; // rbx
- int *m_nOrgSpeed; // rdi
- __int64 v13; // r14
- long double v14; // xmm0_8
- long double v15; // xmm0_8
- __int64 v16; // r15
- bool v17; // al
- long double *p_m_dCollisionRadius; // rdx
- CVariableBitSet *p_m_NeedUpdatePacketBitSet; // rcx
- long double m_orgCollisionHeight; // xmm2_8
- CSharedCreatureData *v21; // rax
- unsigned int v22; // r8d
- bool v23; // zf
- User_vtbl *v24; // rax
- unsigned int v25; // eax
- FVector *p_m_MyPos; // r8
- unsigned int MyStatus; // eax
- unsigned int VitalPoint; // eax
- unsigned int SocialClass; // eax
- __int64 v30; // rcx
- int *v31; // rax
- CSharedCreatureData *v32; // rax
- __int64 v33; // r14
- _DWORD *v34; // r13
- char *v35; // rdi
- CSharedCreatureData *v36; // rbx
- CSharedFactory<CCreature,CSharedCreatureData,CSharedCreatureConstant,&SharedDefine_Creature> *v37; // rax
- const InstantZoneKey *v38; // rbx
- InstantZoneKey *v39; // rdi
- CSharedCreatureData *v40; // rax
- unsigned int v41; // edi
- std::_Tree_node<std::pair<int const ,std::pair<CCubic *,CubicActivationInfo> >,void *> *Left; // rbx
- int v43; // eax
- std::_Tree_node<std::pair<int const ,std::pair<CCubic *,CubicActivationInfo> >,void *> *Right; // rax
- std::_Tree_node<std::pair<int const ,std::pair<CCubic *,CubicActivationInfo> >,void *> *i; // rax
- unsigned int v46; // eax
- unsigned int PledgePowerByGrade; // eax
- char EventMatchTeamId; // al
- CUserSocket *v49; // rbx
- CUserSocket *v50; // rax
- CParty *v51; // rax
- _SETJMP_FLOAT128 *v52; // rbx
- __int64 v53; // rcx
- WOlympiadMatch *Field; // rbx
- int v55; // eax
- CDuelManager *v56; // rax
- int m_nBonusCount; // esi
- int nOrgSpeed3; // [rsp+28h] [rbp-B10h]
- int nOrgSpeed3a; // [rsp+28h] [rbp-B10h]
- int nOrgSpeed3_8; // [rsp+30h] [rbp-B08h]
- unsigned int des; // [rsp+AB8h] [rbp-80h] BYREF
- int m_CrystallizeLevel; // [rsp+ABCh] [rbp-7Ch]
- int nOrgSpeed0[3]; // [rsp+AC0h] [rbp-78h] BYREF
- int nOrgSpeed4[2]; // [rsp+ACCh] [rbp-6Ch] BYREF
- int nOrgSpeed6[2]; // [rsp+AD4h] [rbp-64h] BYREF
- int nOrgSpeed7; // [rsp+ADCh] [rbp-5Ch] BYREF
- unsigned int m_nMyStatus; // [rsp+AE0h] [rbp-58h]
- int m_nHairColorEx; // [rsp+AE4h] [rbp-54h]
- InstantZoneKey *v69; // [rsp+AE8h] [rbp-50h]
- CSharedCreatureData *v70; // [rsp+AF0h] [rbp-48h]
- int v71; // [rsp+AF8h] [rbp-40h]
- int v72; // [rsp+AFCh] [rbp-3Ch]
- int m_nAttackValue; // [rsp+B00h] [rbp-38h]
- int m_nAttackType; // [rsp+B04h] [rbp-34h]
- int v75; // [rsp+B08h] [rbp-30h]
- unsigned int m_nPledgeEmblemDbId; // [rsp+B0Ch] [rbp-2Ch]
- int v77; // [rsp+B10h] [rbp-28h]
- int m_snEnchant; // [rsp+B14h] [rbp-24h]
- int m_dCP; // [rsp+B18h] [rbp-20h]
- int m_dBaseCP; // [rsp+B1Ch] [rbp-1Ch]
- ClassType m_nClass; // [rsp+B20h] [rbp-18h]
- int v82; // [rsp+B24h] [rbp-14h]
- int m_nDuelCount; // [rsp+B28h] [rbp-10h]
- int v84; // [rsp+B2Ch] [rbp-Ch]
- int PrivateStoreType; // [rsp+B30h] [rbp-8h]
- unsigned int m_nPledgeSid; // [rsp+B34h] [rbp-4h]
- int m_nBuilder; // [rsp+B38h] [rbp+0h]
- int HairShapeForBroadcast; // [rsp+B3Ch] [rbp+4h]
- int FaceForBroadcast; // [rsp+B40h] [rbp+8h]
- int v90; // [rsp+B44h] [rbp+Ch]
- int v91; // [rsp+B48h] [rbp+10h]
- int v92; // [rsp+B4Ch] [rbp+14h]
- int v93; // [rsp+B50h] [rbp+18h]
- int v94; // [rsp+B54h] [rbp+1Ch]
- int v95; // [rsp+B58h] [rbp+20h]
- int v96; // [rsp+B5Ch] [rbp+24h]
- int v97; // [rsp+B60h] [rbp+28h]
- int v98; // [rsp+B64h] [rbp+2Ch]
- int v99; // [rsp+B68h] [rbp+30h]
- int v100; // [rsp+B6Ch] [rbp+34h]
- int v101; // [rsp+B70h] [rbp+38h]
- int v102; // [rsp+B74h] [rbp+3Ch]
- int v103; // [rsp+B78h] [rbp+40h]
- int m_hMinNewSetItemEnchantedEffect; // [rsp+B7Ch] [rbp+44h]
- int m_nActiveArtifactSlotGroup_low; // [rsp+B80h] [rbp+48h]
- int m_dMaxAgathionSubSlotCount_low; // [rsp+B84h] [rbp+4Ch]
- int m_dMaxAgathionMainSlotCount_low; // [rsp+B88h] [rbp+50h]
- int m_dMaxJewelSlotCount_low; // [rsp+B8Ch] [rbp+54h]
- char *p_m_cEventMatchTeamID; // [rsp+B90h] [rbp+58h]
- int m_dCarryWeight; // [rsp+B98h] [rbp+60h]
- int m_nCarryingWeight; // [rsp+B9Ch] [rbp+64h]
- int m_dMP; // [rsp+BA0h] [rbp+68h]
- int m_dBaseMP; // [rsp+BA4h] [rbp+6Ch]
- int m_dHP; // [rsp+BA8h] [rbp+70h]
- int m_dBaseHP; // [rsp+BACh] [rbp+74h]
- int v116; // [rsp+BB0h] [rbp+78h]
- int v117; // [rsp+BB4h] [rbp+7Ch]
- int v118; // [rsp+BB8h] [rbp+80h]
- int v119; // [rsp+BBCh] [rbp+84h]
- int v120; // [rsp+BC0h] [rbp+88h]
- int v121; // [rsp+BC4h] [rbp+8Ch]
- int v122; // [rsp+BC8h] [rbp+90h]
- int v123; // [rsp+BCCh] [rbp+94h]
- int m_nLevel; // [rsp+BD0h] [rbp+98h]
- int m_nBaseClass; // [rsp+BD4h] [rbp+9Ch]
- SexType m_Sex; // [rsp+BD8h] [rbp+A0h]
- RaceType m_Race; // [rsp+BDCh] [rbp+A4h]
- int z; // [rsp+BE0h] [rbp+A8h]
- int y; // [rsp+BE4h] [rbp+ACh]
- int v130; // [rsp+BE8h] [rbp+B0h]
- int v131; // [rsp+BECh] [rbp+B4h]
- int v132; // [rsp+BF0h] [rbp+B8h]
- _BOOL8 v133; // [rsp+BF8h] [rbp+C0h]
- __int64 m_nSP; // [rsp+C00h] [rbp+C8h]
- __int64 m_nExp; // [rsp+C08h] [rbp+D0h]
- CSharedCreatureData *v136; // [rsp+C10h] [rbp+D8h]
- int v137; // [rsp+C18h] [rbp+E0h]
- int v138; // [rsp+D18h] [rbp+1E0h] BYREF
- int v139; // [rsp+E18h] [rbp+2E0h] BYREF
- __int64 v140; // [rsp+1018h] [rbp+4E0h]
- wchar_t String1[220]; // [rsp+1020h] [rbp+4E8h] BYREF
- CPacketHelperEx<20480> ph; // [rsp+11D8h] [rbp+6A0h] BYREF
- v140 = -2i64;
- memset(String1, 0, 0x32ui64);
- if ( !this->m_data->m_bIsActive || this->m_nPreviewTimeStamp > 0 && this->m_nPreviewTimeStamp + 10 > time32(0i64) )
- return;
- if ( !FloatChecker::CheckValidation(this->m_data->m_dHP) || !FloatChecker::CheckValidation(this->m_data->m_dCP) )
- {
- m_data = this->m_data;
- CLog::Add(
- &Log,
- LOG_ERROR,
- L"[PLog] HP(%.5f(%p)/%.5f(%p)) CP(%.5f(%p)/%.5f(%p))",
- m_data->m_dHP,
- m_data->m_dHP,
- _mm_unpacklo_pd(*&m_data->m_dBaseHP, *&m_data->m_dBaseHP),
- _mm_unpacklo_pd(*&m_data->m_dCP, *&m_data->m_dCP),
- _mm_unpacklo_pd(*&m_data->m_dBaseCP, *&m_data->m_dBaseCP));
- v5 = this->GetSocket(this);
- CUserSocket::ReportPacketLog(v5, 0);
- }
- v6 = this->GetName(this);
- lstrcpyW(String1, v6);
- v7 = this->m_data;
- m_Race = v7->m_Race;
- m_Sex = v7->m_Sex;
- m_nBaseClass = this->m_nBaseClass;
- m_nClass = v7->m_nClass;
- m_nLevel = v7->m_nLevel;
- m_nExp = v7->m_nExp;
- v123 = v7->m_Stat.m_N[1];
- v122 = v7->m_Stat.m_N[4];
- v121 = v7->m_Stat.m_N[2];
- v120 = v7->m_Stat.m_N[0];
- v119 = v7->m_Stat.m_N[5];
- v118 = v7->m_Stat.m_N[3];
- v117 = v7->m_Stat.m_N[6];
- v116 = v7->m_Stat.m_N[7];
- m_dBaseHP = v7->m_dBaseHP;
- m_dHP = v7->m_dHP;
- m_dBaseMP = v7->m_dBaseMP;
- m_dMP = v7->m_dMP;
- m_dBaseCP = v7->m_dBaseCP;
- m_dCP = v7->m_dCP;
- m_nSP = v7->m_nSP;
- m_nCarryingWeight = this->m_inv.m_nCarryingWeight;
- m_dCarryWeight = v7->m_dCarryWeight;
- FaceForBroadcast = User::GetFaceForBroadcast(this);
- HairShapeForBroadcast = User::GetHairShapeForBroadcast(this);
- v8 = this->m_data;
- m_nHairColorEx = v8->m_nHairColorEx;
- if ( !m_nHairColorEx )
- m_nHairColorEx = v8->m_nHairColor;
- m_nBuilder = v8->m_nBuilder;
- PrivateStoreType = User::GetPrivateStoreType(this);
- v9 = this->m_data;
- v103 = v9->m_dParam[2];
- v101 = v9->m_dParam[0];
- v97 = v9->m_dParam[3];
- v94 = v9->m_dParam[1];
- v102 = v9->m_dParam[4];
- v96 = (v9->m_dParam[5] * 333.0);
- v95 = (v9->m_dParam[6] * 333.0);
- v98 = CCreature::CriticalRateForInfo(this, PCRITICAL);
- v10 = this->m_data;
- v99 = v10->m_dParam[7];
- v100 = v10->m_dParam[14];
- v92 = v10->m_dParam[8];
- v93 = v10->m_dParam[15];
- v91 = CCreature::CriticalRateForInfo(this, MCRITICAL);
- memset(nOrgSpeed0, 0, sizeof(nOrgSpeed0));
- *nOrgSpeed4 = 0i64;
- *nOrgSpeed6 = 0i64;
- nOrgSpeed7 = 0;
- User::SetOrgSpeed(
- this,
- nOrgSpeed0,
- &nOrgSpeed0[1],
- &nOrgSpeed0[2],
- nOrgSpeed4,
- &nOrgSpeed4[1],
- nOrgSpeed6,
- &nOrgSpeed6[1],
- &nOrgSpeed7);
- v11 = nOrgSpeed0;
- m_nOrgSpeed = this->m_nOrgSpeed;
- v13 = 8i64;
- do
- {
- CVariableBitSet::SetIntValue_IfModifed(&this->m_data->m_NeedUpdatePacketBitSet, m_nOrgSpeed++, *v11++, 0x3Du);
- --v13;
- }
- while ( v13 );
- m_CrystallizeLevel = this->m_CrystallizeLevel;
- v14 = this->GetAttackModifier(this);
- CVariableBitSet::SetDoubleValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- &this->m_dAttackSpeedModifier,
- v14,
- 0x3Eu);
- v15 = this->GetMoveModifier(this);
- v16 = 63i64;
- CVariableBitSet::SetDoubleValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- &this->m_dMoveSpeedModifier,
- v15,
- 0x3Fu);
- v17 = this->IsRiding(this);
- p_m_dCollisionRadius = &this->m_dCollisionRadius;
- if ( v17 )
- {
- CVariableBitSet::SetDoubleValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- p_m_dCollisionRadius,
- this->m_pStriderInfo->m_commonInfo.m_orgCollisionRadius,
- 0x1Bu);
- p_m_NeedUpdatePacketBitSet = &this->m_data->m_NeedUpdatePacketBitSet;
- m_orgCollisionHeight = this->m_pStriderInfo->m_commonInfo.m_orgCollisionHeight;
- }
- else
- {
- CVariableBitSet::SetDoubleValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- p_m_dCollisionRadius,
- this->m_data->m_dCollisionRadius,
- 0x1Bu);
- v21 = this->m_data;
- p_m_NeedUpdatePacketBitSet = &v21->m_NeedUpdatePacketBitSet;
- m_orgCollisionHeight = v21->m_dCollisionHeight;
- }
- CVariableBitSet::SetDoubleValue_IfModifed(
- p_m_NeedUpdatePacketBitSet,
- &this->m_dCollisionHeight,
- m_orgCollisionHeight,
- 0x1Cu);
- FVector::FVector(nOrgSpeed0, &this->m_data->m_Pos);
- CVariableBitSet::SetFVectorValue_IfModifed(&this->m_data->m_NeedUpdatePacketBitSet, &this->m_MyPos, nOrgSpeed0, 0x40u);
- des = 0;
- if ( this->IsInVehicle(this) )
- {
- CContainerDB::Inst();
- v22 = 1;
- }
- else
- {
- v23 = !this->IsInAirShip(this);
- v24 = this->__vftable;
- if ( v23 )
- {
- if ( !v24->IsInShuttle(this) )
- goto LABEL_22;
- v25 = this->GetMyShuttleID(this);
- }
- else
- {
- v25 = v24->GetMyAirShipID(this);
- }
- v22 = v25;
- }
- CVariableBitSet::SetIntValue_IfModifed(&this->m_data->m_NeedUpdatePacketBitSet, &des, v22, 0x41u);
- LABEL_22:
- if ( des <= 0 )
- {
- p_m_MyPos = &this->m_MyPos;
- }
- else
- {
- FVector::FVector(nOrgSpeed0, &this->m_RelPos);
- p_m_MyPos = nOrgSpeed0;
- }
- CVariableBitSet::SetFVectorValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- &this->m_InformingPos,
- p_m_MyPos,
- 0x42u);
- m_nPledgeSid = this->m_nPledgeSid;
- m_nPledgeEmblemDbId = this->m_nPledgeEmblemDbId;
- MyStatus = User::GetMyStatus(this);
- CVariableBitSet::SetIntValue_IfModifed(&this->m_data->m_NeedUpdatePacketBitSet, &this->m_nMyStatus, MyStatus, 0x43u);
- CVariableBitSet::SetShortValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- &this->m_sBonusCount,
- this->m_nBonusCount,
- 0x21u);
- VitalPoint = User::GetVitalPoint(this);
- CVariableBitSet::SetIntValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- &this->m_nVitalPoint,
- VitalPoint,
- 0x22u);
- SocialClass = User::GetSocialClass(this);
- CVariableBitSet::SetIntValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- &this->m_nSocialClass,
- SocialClass,
- 0x23u);
- v30 = 63i64;
- v31 = &v139;
- do
- {
- *v31 = 0i64;
- v31 += 2;
- --v30;
- }
- while ( v30 );
- v69 = &v139;
- v32 = (220i64 - &v138);
- v70 = (220i64 - &v138);
- v33 = 0i64;
- do
- {
- v34 = (&v138 + v33);
- v35 = &v138 + v33 + v32;
- v36 = this->m_data;
- v37 = CSharedFactory<CItem,CSharedItemData,CSharedItemConstant,&CSharedDefine const SharedDefine_Item>::Inst();
- CSharedFactory<CItem,CSharedItemData,CSharedItemConstant,&CSharedDefine const SharedDefine_Item>::FindObjectSP(
- v37,
- nOrgSpeed0,
- *(&v36->__vftable + v35));
- v38 = *nOrgSpeed0;
- v39 = v69;
- if ( *nOrgSpeed0 )
- {
- *v34 = *(*nOrgSpeed0 + 24i64);
- *(&v137 + v33) = v38[3].clusterId;
- VariationKey::VariationKey(v39, v38 + 98);
- }
- else
- {
- *v34 = 0;
- *(&v137 + v33) = 0;
- }
- if ( v38 )
- {
- LOBYTE(nOrgSpeed3) = 0;
- (*(*v38 + 8i64))(
- v38,
- "d:\\_jenkins\\workspace\\dailybuild work(live) vs2015\\lineage2build\\server\\main\\shared\\ThreadSafeLibrary.h",
- 133i64,
- nOrgSpeed0[2],
- nOrgSpeed3);
- *nOrgSpeed0 = 0i64;
- }
- v69 = v39 + 1;
- v33 += 4i64;
- --v16;
- v32 = v70;
- }
- while ( v16 );
- if ( this->IsInAirShip(this) )
- this->GetMyAirShipID(this);
- v40 = this->m_data;
- v84 = v40->m_nPKCount - v40->m_nPKPardonCount;
- m_nDuelCount = v40->m_nDuelCount;
- this->GetInventoryLimit(this);
- v41 = 0;
- Left = this->m_cubicMap._Mypair._Myval2._Myval2._Myhead->_Left;
- while ( Left != this->m_cubicMap._Mypair._Myval2._Myval2._Myhead )
- {
- v43 = Assemble(&String1[28] + v41, 128 - v41, "h", SLOWORD(Left->_Myval.second.first->m_classID));
- if ( v43 > 0 )
- v41 += v43;
- if ( !Left->_Isnil )
- {
- Right = Left->_Right;
- if ( Right->_Isnil )
- {
- for ( i = Left->_Parent; !i->_Isnil && Left == i->_Right; i = i->_Parent )
- Left = i;
- Left = i;
- }
- else
- {
- do
- {
- Left = Right;
- Right = Right->_Left;
- }
- while ( !Right->_Isnil );
- }
- }
- }
- v46 = this->CalcCriminalRate(this);
- CVariableBitSet::SetIntValue_IfModifed(&this->m_data->m_NeedUpdatePacketBitSet, &this->m_nCriminalRate, v46, 0x45u);
- PledgePowerByGrade = User::GetPledgePowerByGrade(this);
- CVariableBitSet::SetIntValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- &this->m_pledgePower,
- PledgePowerByGrade,
- 0x46u);
- p_m_cEventMatchTeamID = &this->m_cEventMatchTeamID;
- EventMatchTeamId = User::GetEventMatchTeamId(this);
- CVariableBitSet::SetCharValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- &this->m_cEventMatchTeamID,
- EventMatchTeamId,
- 0x47u);
- ph.__vftable = &CPacketHelperEx<20480>::`vftable';
- memset(ph.m_buffer, 0, 20488);
- CCreature::MakeAbnormalVisualEffectPacket(this, &ph);
- if ( pSocket )
- {
- v136 = this->m_data;
- m_nBonusCount = this->m_nBonusCount;
- z = this->m_MyPos.z;
- y = this->m_MyPos.y;
- LODWORD(v69) = this->m_MyPos.x;
- *nOrgSpeed0 = &pSocket->Send;
- v70 = this->m_data;
- m_nMyStatus = this->m_nMyStatus;
- User::GetVitalPoint(this);
- v130 = v70->m_BaseAttribute.m_nDefendValue[4];
- v131 = v70->m_BaseAttribute.m_nDefendValue[3];
- v132 = v70->m_BaseAttribute.m_nDefendValue[2];
- v71 = v70->m_BaseAttribute.m_nDefendValue[1];
- v72 = v70->m_BaseAttribute.m_nDefendValue[0];
- m_nAttackValue = v70->m_BaseAttribute.m_nAttackValue;
- m_nAttackType = v70->m_BaseAttribute.m_nAttackType;
- v75 = User::GetSocialClass(this);
- v77 = *p_m_cEventMatchTeamID;
- m_snEnchant = this->m_snEnchant;
- v82 = m_nBonusCount;
- v133 = m_CrystallizeLevel > 0;
- m_CrystallizeLevel = (m_nMyStatus >> 6) & 1;
- v90 = this->GetGuilty(this);
- m_hMinNewSetItemEnchantedEffect = this->m_hMinNewSetItemEnchantedEffect;
- m_nActiveArtifactSlotGroup_low = SLOBYTE(this->m_SkillMod.m_nActiveArtifactSlotGroup);
- m_dMaxAgathionSubSlotCount_low = SLOBYTE(this->m_SkillMod.m_dMaxAgathionSubSlotCount);
- m_dMaxAgathionMainSlotCount_low = SLOBYTE(this->m_SkillMod.m_dMaxAgathionMainSlotCount);
- m_dMaxJewelSlotCount_low = SLOBYTE(this->m_SkillMod.m_dMaxJewelSlotCount);
- LODWORD(p_m_cEventMatchTeamID) = SLOBYTE(this->m_SkillMod.m_dMaxDecoSlotCount);
- this->GetAttackRange(this);
- //MISSING DATA !!! SocketAssemblePacket//IDAPRO ISSUE - too many args
- User::SendPrivateStoreMessage(this, pSocket, PSMT_NO_BROADCAST);
- User::SendUserHennaInfo(this, pSocket);
- User::SendVitalityEffectInfo(this, pSocket);
- }
- else
- {
- v49 = this->GetSocket(this);
- User::SendUserInfo2(this, 0, v49);
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 16,
- 15,
- -1,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- User::SendInvenCarryingWeight(this, v49);
- }
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 73,
- 96,
- -1,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- User::SendEquipSlotInfo(this, v49);
- }
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 74,
- 68,
- -1,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- User::SendCubicInfo(this, v49);
- }
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 75,
- 81,
- -1,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- User::SendAbnormalVisualEffectInfo(this, v49);
- }
- if ( CVariableBitSet::IsSet(&this->m_data->m_NeedUpdatePacketBitSet, 0x4Cu) )
- User::SendFishingInfo(this, v49);
- if ( pNeedUpdatePacketBitSetToBackup )
- CVariableBitSet::operator=|(pNeedUpdatePacketBitSetToBackup, &this->m_data->m_NeedUpdatePacketBitSet);
- CVariableBitSet::Clear(&this->m_data->m_NeedUpdatePacketBitSet);
- v50 = this->GetSocket(this);
- User::SendPrivateStoreMessage(this, v50, PSMT_NO_BROADCAST);
- v51 = this->GetParty(this);
- v52 = v51;
- if ( v51 )
- {
- nOrgSpeed3_8 = 0;
- CParty::UpdateWindowPacket(v51, this, 0, 0, 0);
- AtomicUpdateUserPoint::Dump(v52);
- }
- if ( this->m_EventMatchUser.m_byEventMatchTeamId )
- {
- CEventMatchUser::GetEventMatch(&this->m_EventMatchUser, nOrgSpeed0);
- v53 = *nOrgSpeed0;
- if ( *nOrgSpeed0 )
- {
- CEventMatch::UpdateUserStatus(*nOrgSpeed0, this, 0);
- v53 = *nOrgSpeed0;
- }
- if ( v53 )
- {
- LOBYTE(nOrgSpeed3a) = 0;
- (*(*v53 + 8i64))(
- v53,
- "d:\\_jenkins\\workspace\\dailybuild work(live) vs2015\\lineage2build\\server\\main\\shared\\ThreadSafeLibrary.h",
- 133i64,
- nOrgSpeed0[2],
- nOrgSpeed3a,
- nOrgSpeed3_8);
- }
- }
- if ( User::IsOlympiadPlayer(this) )
- {
- Field = WOlympiadUser::GetField(this->m_pWOlympiadUser);
- if ( Field )
- {
- v55 = this->GetServerId(this);
- WOlympiadMatch::UpdateUserStatus(Field, v55, 0);
- }
- }
- if ( CDuelUserInfo::IsInFightStatus(&this->m_DuelUserInfo) )
- {
- v56 = Singleton<CDuelManager>::inst();
- CDuelManager::UpdateDuelPlayerStatus(v56, this);
- }
- }
- }
- //----- (000000000098FD54) ----------------------------------------------------
- void __fastcall User::SendUserInfo2(User *this, bool isGMPacket, CUserSocket *pSocket)
- {
- __int64 ThreadID; // rbx
- __int64 m_nID; // rdi
- const wchar_t *v7; // rax
- CSharedCreatureData *m_data; // rax
- __int64 m_nLevel; // r13
- __int64 m_nExp; // r8
- double v11; // xmm6_8
- __int64 v12; // rdx
- __int64 EquipedWeapon; // rax
- unsigned __int16 v14; // r8
- CSharedCreatureData *v15; // rcx
- CSharedCreatureData *v16; // rcx
- CSharedCreatureData *v17; // rcx
- int *p_nOrgSpeed0; // rbx
- int *m_nOrgSpeed; // r14
- __int64 v20; // r15
- long double v21; // xmm0_8
- long double v22; // xmm0_8
- bool v23; // al
- long double *p_m_dCollisionRadius; // rdx
- CVariableBitSet *p_m_NeedUpdatePacketBitSet; // rcx
- long double m_orgCollisionHeight; // xmm2_8
- CSharedCreatureData *v27; // rax
- unsigned int MyStatus; // eax
- unsigned int v29; // r8d
- bool v30; // zf
- User_vtbl *v31; // rax
- unsigned int v32; // eax
- FVector *p_m_MyPos; // r8
- unsigned int PledgePowerByGrade; // eax
- char EventMatchTeamId; // al
- unsigned __int64 v36; // rax
- bool v37; // al
- CSharedCreatureData *v38; // rcx
- __int64 v39; // rcx
- int *v40; // r8
- CSharedCreatureData *v41; // rcx
- CPartyRoomRegistry *v42; // rcx
- char DoesShowPartyWantedMessage; // al
- unsigned __int64 v44; // rax
- CSharedCreatureData *v45; // rcx
- unsigned int v46; // eax
- unsigned int SocialClass; // eax
- CSharedCreatureData *v48; // rcx
- int v49; // r14d
- int m_nDuelCount; // r13d
- int m_nVoteCount; // ebx
- CSharedCreatureData *v52; // rcx
- CSharedCreatureData *v53; // rcx
- int m_nCursedWeaponClassId; // r14d
- CCursedWeaponMgr *v55; // rax
- unsigned int WeaponLevel; // r8d
- unsigned int m_transformID; // r8d
- CVariableBitSet *v58; // rcx
- CSharedCreatureData *v59; // rax
- CSharedCreatureData *v60; // rcx
- char UserFlag; // al
- int *nOrgSpeed3; // [rsp+20h] [rbp-E0h]
- int *nOrgSpeed3a; // [rsp+20h] [rbp-E0h]
- unsigned int des; // [rsp+60h] [rbp-A0h] BYREF
- int m_nHairColorEx; // [rsp+64h] [rbp-9Ch]
- int m_nBuilder; // [rsp+68h] [rbp-98h]
- RaceType m_Race; // [rsp+6Ch] [rbp-94h]
- SexType m_Sex; // [rsp+70h] [rbp-90h]
- int m_nBaseClass; // [rsp+74h] [rbp-8Ch]
- int m_nClass; // [rsp+78h] [rbp-88h]
- int v71; // [rsp+7Ch] [rbp-84h]
- int v72; // [rsp+80h] [rbp-80h]
- int v73; // [rsp+84h] [rbp-7Ch]
- int v74; // [rsp+88h] [rbp-78h]
- int v75; // [rsp+8Ch] [rbp-74h]
- int v76; // [rsp+90h] [rbp-70h]
- int v77; // [rsp+94h] [rbp-6Ch]
- int v78; // [rsp+98h] [rbp-68h]
- l2::UserInfo_BaseAttr v79; // [rsp+9Ch] [rbp-64h]
- int m_dHP; // [rsp+A8h] [rbp-58h]
- int m_dMP; // [rsp+ACh] [rbp-54h]
- int m_dCP; // [rsp+B0h] [rbp-50h]
- int FaceForBroadcast; // [rsp+B4h] [rbp-4Ch]
- int HairShapeForBroadcast; // [rsp+B8h] [rbp-48h]
- int m_nPrivateStoreType; // [rsp+BCh] [rbp-44h]
- BOOL v86; // [rsp+C0h] [rbp-40h]
- int RemainAP; // [rsp+C4h] [rbp-3Ch]
- int v88; // [rsp+C8h] [rbp-38h]
- int v89; // [rsp+CCh] [rbp-34h]
- int v90; // [rsp+D0h] [rbp-30h]
- int v91; // [rsp+D4h] [rbp-2Ch]
- int v92; // [rsp+D8h] [rbp-28h]
- int v93; // [rsp+DCh] [rbp-24h]
- int v94; // [rsp+E0h] [rbp-20h]
- int v95; // [rsp+E4h] [rbp-1Ch]
- int v96; // [rsp+E8h] [rbp-18h]
- int v97; // [rsp+ECh] [rbp-14h]
- int v98; // [rsp+F0h] [rbp-10h]
- int v99; // [rsp+F4h] [rbp-Ch]
- int v100; // [rsp+F8h] [rbp-8h]
- int m_rideClassID; // [rsp+FCh] [rbp-4h]
- int v102; // [rsp+100h] [rbp+0h]
- int nOrgSpeed0; // [rsp+108h] [rbp+8h] BYREF
- int nOrgSpeed1[2]; // [rsp+10Ch] [rbp+Ch] BYREF
- int nOrgSpeed4[2]; // [rsp+114h] [rbp+14h] BYREF
- int nOrgSpeed5[2]; // [rsp+11Ch] [rbp+1Ch] BYREF
- int nOrgSpeed7[3]; // [rsp+124h] [rbp+24h] BYREF
- l2::S_UserInfo v108; // [rsp+130h] [rbp+30h] BYREF
- unsigned __int8 bits; // [rsp+2F0h] [rbp+1F0h] BYREF
- __int64 v110; // [rsp+2F1h] [rbp+1F1h]
- int v111; // [rsp+2F9h] [rbp+1F9h]
- __int64 m_nSP; // [rsp+300h] [rbp+200h]
- __int64 v113; // [rsp+308h] [rbp+208h]
- CSPointer<User> v114; // [rsp+310h] [rbp+210h] BYREF
- CVariableBitSet v115; // [rsp+320h] [rbp+220h] BYREF
- network::Stream v116; // [rsp+330h] [rbp+230h] BYREF
- network::Stream rStream; // [rsp+350h] [rbp+250h] BYREF
- JOB *v118; // [rsp+370h] [rbp+270h]
- __int64 v119; // [rsp+378h] [rbp+278h]
- wchar_t String1[28]; // [rsp+380h] [rbp+280h] BYREF
- FVector src; // [rsp+3B8h] [rbp+2B8h] BYREF
- FVector v122; // [rsp+3D0h] [rbp+2D0h] BYREF
- char v123[20480]; // [rsp+3F0h] [rbp+2F0h] BYREF
- char v124[20480]; // [rsp+53F0h] [rbp+52F0h] BYREF
- void **v125; // [rsp+A3F0h] [rbp+A2F0h]
- char v126[20480]; // [rsp+A3F8h] [rbp+A2F8h] BYREF
- __int64 v127; // [rsp+F3F8h] [rbp+F2F8h]
- char m_rideType; // [rsp+F468h] [rbp+F368h]
- v119 = -2i64;
- v118 = &JOB_SEND_EXUSERINFO;
- ThreadID = (int)CThreadManager::GetThreadID();
- m_nID = JOB_SEND_EXUSERINFO.m_nID;
- g_Timer.m_EachJobBeginTimes[ThreadID]._Mypair._Myval2._Myfirst[m_nID] = GetTickCount();
- if ( pSocket )
- {
- memset(String1, 0, 0x32ui64);
- v7 = this->GetName(this);
- lstrcpyW(String1, v7);
- m_data = this->m_data;
- m_nBuilder = m_data->m_nBuilder;
- m_Race = m_data->m_Race;
- m_Sex = m_data->m_Sex;
- m_nBaseClass = this->m_nBaseClass;
- m_nClass = m_data->m_nClass;
- m_nLevel = m_data->m_nLevel;
- v71 = m_data->m_Stat.m_N[1];
- v72 = m_data->m_Stat.m_N[4];
- v73 = m_data->m_Stat.m_N[2];
- v74 = m_data->m_Stat.m_N[0];
- v75 = m_data->m_Stat.m_N[5];
- v76 = m_data->m_Stat.m_N[3];
- v77 = m_data->m_Stat.m_N[6];
- v78 = m_data->m_Stat.m_N[7];
- v79.nBaseHP = (int)m_data->m_dBaseHP;
- v79.nBaseMP = (int)m_data->m_dBaseMP;
- v79.nBaseCP = (int)m_data->m_dBaseCP;
- m_dHP = (int)m_data->m_dHP;
- m_dMP = (int)m_data->m_dMP;
- m_dCP = (int)m_data->m_dCP;
- m_nSP = m_data->m_nSP;
- m_nExp = m_data->m_nExp;
- v113 = m_nExp;
- v11 = 0.0;
- if ( (int)m_nLevel > 0 )
- {
- v12 = ExpByLevel[(int)m_nLevel - 1];
- v11 = (double)((int)m_nExp - (int)v12) / (double)(int)(ExpByLevel[m_nLevel] - v12);
- }
- EquipedWeapon = CCreature::GetEquipedWeapon(this);
- if ( EquipedWeapon )
- v14 = *(_WORD *)(EquipedWeapon + 116);
- else
- v14 = 0;
- CVariableBitSet::SetShortValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- (unsigned __int16 *)&this->m_snEnchant,
- v14,
- 0x4Du);
- FaceForBroadcast = User::GetFaceForBroadcast(this);
- HairShapeForBroadcast = User::GetHairShapeForBroadcast(this);
- v15 = this->m_data;
- m_nHairColorEx = v15->m_nHairColorEx;
- if ( !m_nHairColorEx )
- m_nHairColorEx = v15->m_nHairColor;
- m_rideType = v15->m_rideType;
- m_rideClassID = v15->m_rideClassID;
- m_nPrivateStoreType = v15->m_nPrivateStoreType;
- RemainAP = CSharedCreatureData::GetRemainAP(v15);
- v16 = this->m_data;
- v88 = (int)v16->m_dParam[2];
- v90 = (int)v16->m_dParam[0];
- v94 = (int)v16->m_dParam[3];
- v98 = (int)v16->m_dParam[1];
- v89 = (int)v16->m_dParam[4];
- v95 = (int)(v16->m_dParam[5] * 333.0);
- v96 = (int)(v16->m_dParam[6] * 333.0);
- v93 = CCreature::CriticalRateForInfo(this, PCRITICAL);
- v17 = this->m_data;
- v92 = (int)v17->m_dParam[7];
- v91 = (int)v17->m_dParam[14];
- v99 = (int)v17->m_dParam[8];
- v97 = (int)v17->m_dParam[15];
- v100 = CCreature::CriticalRateForInfo(this, MCRITICAL);
- FVector::FVector(&src, &this->m_data->m_Pos);
- CVariableBitSet::SetFVectorValue_IfModifed(&this->m_data->m_NeedUpdatePacketBitSet, &this->m_MyPos, &src, 0x40u);
- nOrgSpeed0 = 0;
- *(_QWORD *)nOrgSpeed1 = 0i64;
- *(_QWORD *)nOrgSpeed4 = 0i64;
- *(_QWORD *)nOrgSpeed5 = 0i64;
- nOrgSpeed7[0] = 0;
- User::SetOrgSpeed(
- this,
- &nOrgSpeed0,
- nOrgSpeed1,
- &nOrgSpeed1[1],
- nOrgSpeed4,
- &nOrgSpeed4[1],
- nOrgSpeed5,
- &nOrgSpeed5[1],
- nOrgSpeed7);
- p_nOrgSpeed0 = &nOrgSpeed0;
- m_nOrgSpeed = this->m_nOrgSpeed;
- v20 = 8i64;
- do
- {
- CVariableBitSet::SetIntValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- (unsigned int *)m_nOrgSpeed++,
- *p_nOrgSpeed0++,
- 0x3Du);
- --v20;
- }
- while ( v20 );
- v21 = this->GetAttackModifier(this);
- CVariableBitSet::SetDoubleValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- &this->m_dAttackSpeedModifier,
- v21,
- 0x3Eu);
- v22 = this->GetMoveModifier(this);
- CVariableBitSet::SetDoubleValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- &this->m_dMoveSpeedModifier,
- v22,
- 0x3Fu);
- v23 = this->IsRiding(this);
- p_m_dCollisionRadius = &this->m_dCollisionRadius;
- if ( v23 )
- {
- CVariableBitSet::SetDoubleValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- p_m_dCollisionRadius,
- this->m_pStriderInfo->m_commonInfo.m_orgCollisionRadius,
- 0x1Bu);
- p_m_NeedUpdatePacketBitSet = &this->m_data->m_NeedUpdatePacketBitSet;
- m_orgCollisionHeight = this->m_pStriderInfo->m_commonInfo.m_orgCollisionHeight;
- }
- else
- {
- CVariableBitSet::SetDoubleValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- p_m_dCollisionRadius,
- this->m_data->m_dCollisionRadius,
- 0x1Bu);
- v27 = this->m_data;
- p_m_NeedUpdatePacketBitSet = &v27->m_NeedUpdatePacketBitSet;
- m_orgCollisionHeight = v27->m_dCollisionHeight;
- }
- CVariableBitSet::SetDoubleValue_IfModifed(
- p_m_NeedUpdatePacketBitSet,
- &this->m_dCollisionHeight,
- m_orgCollisionHeight,
- 0x1Cu);
- v86 = this->m_CrystallizeLevel > CRT_NONE;
- MyStatus = User::GetMyStatus(this);
- CVariableBitSet::SetIntValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- (unsigned int *)&this->m_nMyStatus,
- MyStatus,
- 0x43u);
- CVariableBitSet::SetShortValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- (unsigned __int16 *)&this->m_sBonusCount,
- this->m_nBonusCount,
- 0x21u);
- CVariableBitSet::SetIntValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- (unsigned int *)&this->m_nVitalPoint,
- this->m_pVitality->m_Data.vitalPoint,
- 0x22u);
- des = 0;
- if ( this->IsInVehicle(this) )
- {
- CContainerDB::Inst();
- v29 = 1;
- goto LABEL_23;
- }
- v30 = !this->IsInAirShip(this);
- v31 = this->__vftable;
- if ( v30 )
- {
- if ( !v31->IsInShuttle(this) )
- {
- v29 = 0;
- LABEL_23:
- CVariableBitSet::SetIntValue_IfModifed(&this->m_data->m_NeedUpdatePacketBitSet, &des, v29, 0x41u);
- if ( (int)des <= 0 )
- {
- p_m_MyPos = &this->m_MyPos;
- }
- else
- {
- FVector::FVector(&v122, &this->m_RelPos);
- p_m_MyPos = &v122;
- }
- CVariableBitSet::SetFVectorValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- &this->m_InformingPos,
- p_m_MyPos,
- 0x42u);
- v102 = this->GetInventoryLimit(this);
- PledgePowerByGrade = (unsigned int)User::GetPledgePowerByGrade(this);
- CVariableBitSet::SetIntValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- (unsigned int *)&this->m_pledgePower,
- PledgePowerByGrade,
- 0x46u);
- EventMatchTeamId = User::GetEventMatchTeamId(this);
- CVariableBitSet::SetCharValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- &this->m_cEventMatchTeamID,
- EventMatchTeamId,
- 0x47u);
- v125 = &CPacketHelperEx<20480>::`vftable';
- v127 = 0i64;
- memset(v126, 0, sizeof(v126));
- CVariableBitSet::CVariableBitSet(&v115);
- l2::S_UserInfo::S_UserInfo(&v108);
- if ( CVariableBitSet::Init(&v108.bitSet, 0x18u, 3u, v108.bits) )
- CVariableBitSet::SetAllBits(&v108.bitSet);
- CVariableBitSet::Clear(&v108.bitSet);
- bits = 0;
- v110 = 0i64;
- v111 = 0;
- if ( !CVariableBitSet::Init(&v115, 0x67u, 0xDu, &bits) )
- goto LABEL_104;
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 0,
- 17,
- 1,
- 2u,
- 4u,
- 3u,
- 5u,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- if ( String1[0] )
- v36 = wcslen(String1);
- else
- v36 = 0i64;
- std::basic_string<wchar_t,std::char_traits<wchar_t>,std::xallocator<wchar_t>>::assign(
- &v108.basic.wstrName,
- String1,
- v36);
- v108.basic.nBuilder = m_nBuilder;
- v108.basic.nRace = m_Race;
- v108.basic.nSex = m_Sex;
- v108.basic.nOriginalClass = m_nBaseClass;
- v108.basic.nNowClass = m_nClass;
- v108.basic.nLevel = m_nLevel;
- CVariableBitSet::SetBit(&v108.bitSet, 1u);
- }
- if ( CVariableBitSet::IsSet(&this->m_data->m_NeedUpdatePacketBitSet, 0x3Cu) )
- {
- v108.stat.nStr = v71;
- v108.stat.nDex = v72;
- v108.stat.nCon = v73;
- v108.stat.nInt = v74;
- v108.stat.nWit = v75;
- v108.stat.nMen = v76;
- v108.stat.nLuc = v77;
- v108.stat.nCha = v78;
- CVariableBitSet::SetBit(&v108.bitSet, 2u);
- }
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 8,
- 9,
- 10,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- v108.baseAttr = v79;
- CVariableBitSet::SetBit(&v108.bitSet, 3u);
- }
- v37 = CDuelUserInfo::IsDuelDead(&this->m_DuelUserInfo, this)
- || (unsigned __int8)CPledgeGameUser::IsPlayer(&this->m_PledgeGameUser) && !this->m_PledgeGameUser.m_IsAlive
- || this->m_data->m_bIsAlive == 0;
- v38 = this->m_data;
- if ( !v37 != v38->m_bIsAlive )
- CVariableBitSet::SetBit(&v38->m_NeedUpdatePacketBitSet, 0x61u);
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 11,
- 12,
- 13,
- 0xEu,
- 6u,
- 7u,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- v108.attribute.nHP = m_dHP;
- v108.attribute.nMP = m_dMP;
- v108.attribute.nCP = m_dCP;
- v108.attribute.nSP = m_nSP;
- v108.attribute.nExp = v113;
- v108.attribute.expRatio = v11;
- CVariableBitSet::SetBit(&v108.bitSet, 4u);
- }
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 77,
- 78,
- -1,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- v108.equipSlot.cEnchant = this->m_snEnchant;
- v108.equipSlot.hMinSetItemEnchanted = this->m_hMinNewSetItemEnchantedEffect;
- CVariableBitSet::SetBit(&v108.bitSet, 5u);
- }
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 18,
- 21,
- 19,
- 0x16u,
- 0x14u,
- 0x17u,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- v108.hairShop.nFace = FaceForBroadcast;
- v108.hairShop.nHairShape = HairShapeForBroadcast;
- v108.hairShop.nHairColor = m_nHairColorEx;
- v108.hairShop.bIsUseHairAccessory = this->m_bHairAccFlag;
- CVariableBitSet::SetBit(&v108.bitSet, 6u);
- }
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 24,
- 26,
- 53,
- 0x64u,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- v108.rideStoreCrystalizeAp.cYongmaType = m_rideType;
- v108.rideStoreCrystalizeAp.cPrivateStore = m_nPrivateStoreType;
- v108.rideStoreCrystalizeAp.canCrystallize = v86;
- v108.rideStoreCrystalizeAp.cRemainAbilityPoint = RemainAP;
- CVariableBitSet::SetBit(&v108.bitSet, 7u);
- }
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 37,
- 59,
- -1,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- v108.parameter.hAttackRange = this->GetAttackRange(this);
- v108.parameter.nPAttack = v88;
- v108.parameter.nPAttackSpeed = v89;
- v108.parameter.nPDefence = v90;
- v108.parameter.nPAvoid = v91;
- v108.parameter.nPHitRate = v92;
- v108.parameter.nPCriticalRate = v93;
- v108.parameter.nMAttack = v94;
- v108.parameter.nMCastingSpeed = v95;
- v108.parameter.nPCastingSpeed = v96;
- v108.parameter.nMAvoid = v97;
- v108.parameter.nMDefend = v98;
- v108.parameter.nMHitRate = v99;
- v108.parameter.nMCriticalRate = v100;
- CVariableBitSet::SetBit(&v108.bitSet, 8u);
- }
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 64,
- 65,
- -1,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- v108.posVehicle.nPosX = (int)this->m_MyPos.x;
- v108.posVehicle.nPosY = (int)this->m_MyPos.y;
- v108.posVehicle.nPosZ = (int)this->m_MyPos.z;
- v108.posVehicle.nVehicleID = des;
- CVariableBitSet::SetBit(&v108.bitSet, 0xAu);
- }
- if ( CVariableBitSet::IsSet(&this->m_data->m_NeedUpdatePacketBitSet, 0x3Du) )
- {
- v39 = 0i64;
- v40 = this->m_nOrgSpeed;
- do
- v108.orgSpeed.nOrgSpeed[v39++] = *(_WORD *)v40++;
- while ( v39 < 8 );
- CVariableBitSet::SetBit(&v108.bitSet, 0xBu);
- }
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 63,
- 62,
- -1,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- v108.speedModifier.dMoveSpeedModifier = this->m_dMoveSpeedModifier;
- v108.speedModifier.dAttackSpeedModifier = this->m_dAttackSpeedModifier;
- CVariableBitSet::SetBit(&v108.bitSet, 0xCu);
- }
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 27,
- 28,
- -1,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- v108.collisionInfo = *(l2::UserInfo_CollisionInfo *)&this->m_dCollisionRadius;
- CVariableBitSet::SetBit(&v108.bitSet, 0xDu);
- }
- if ( CVariableBitSet::IsSet(&this->m_data->m_NeedUpdatePacketBitSet, 0x24u) )
- {
- v41 = this->m_data;
- v108.attackInfo.nAttackType = v41->m_BaseAttribute.m_nAttackType;
- v108.attackInfo.nAttackValue = v41->m_BaseAttribute.m_nAttackValue;
- CVariableBitSet::SetBit(&v108.bitSet, 0xEu);
- v108.defend = *(l2::UserInfo_Defend *)this->m_data->m_BaseAttribute.m_nDefendValue;
- CVariableBitSet::SetBit(&v108.bitSet, 9u);
- }
- v114.m_p = this;
- v114.m_ort = ORT_FUNCTION_CHAIN;
- this->AddRef(
- this,
- "d:\\_jenkins\\workspace\\dailybuild work(live) vs2015\\lineage2build\\server\\main\\shared\\ThreadSafeLibrary.h",
- 155i64,
- ORT_FUNCTION_CHAIN);
- v42 = CPartyRoomRegistry::inst();
- DoesShowPartyWantedMessage = CPartyRoomRegistry::DoesShowPartyWantedMessage(v42, &v114);
- CVariableBitSet::SetCharValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- &this->m_cShowPartyWantedMessage,
- DoesShowPartyWantedMessage != 0,
- 0x52u);
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 79,
- 51,
- 50,
- 0x34u,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF)
- || CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 48,
- 47,
- 49,
- 0x46u,
- 0x52u,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- if ( this->m_sNickName[0] )
- v44 = wcslen(this->m_sNickName);
- else
- v44 = 0i64;
- std::basic_string<wchar_t,std::char_traits<wchar_t>,std::xallocator<wchar_t>>::assign(
- &v108.pledge.wstrNickName,
- this->m_sNickName,
- v44);
- v45 = this->m_data;
- v108.pledge.nPledgetype = v45->m_nPledgeType;
- v108.pledge.nPledgeSId = this->m_nPledgeSid;
- v108.pledge.nPledgeEmblemId = this->m_nPledgeEmblemDbId;
- v108.pledge.nPledgeCrestId = this->m_nPledgeCrestDbId;
- v108.pledge.nPledgePower = this->m_pledgePower;
- v108.pledge.cIsPledgeMaster = (this->m_nMyStatus & 0x40) != 0;
- v108.pledge.nAllianceId = v45->m_nAllianceId;
- v108.pledge.nAllianceCrestId = this->m_nAllianceCrestDbId;
- v108.pledge.cIsShowPartyWantedMessage = this->m_cShowPartyWantedMessage;
- CVariableBitSet::SetBit(&v108.bitSet, 0xFu);
- }
- if ( CVariableBitSet::IsSet(&this->m_data->m_NeedUpdatePacketBitSet, 0x43u) )
- {
- v108.nMyStatus = this->m_nMyStatus;
- CVariableBitSet::SetBit(&v108.bitSet, 0);
- }
- v46 = this->CalcCriminalRate(this);
- CVariableBitSet::SetIntValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- (unsigned int *)&this->m_nCriminalRate,
- v46,
- 0x45u);
- SocialClass = User::GetSocialClass(this);
- CVariableBitSet::SetIntValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- (unsigned int *)&this->m_nSocialClass,
- SocialClass,
- 0x23u);
- v48 = this->m_data;
- v49 = v48->m_nPKCount - v48->m_nPKPardonCount;
- m_nDuelCount = v48->m_nDuelCount;
- if ( CVariableBitSet::IsSet(
- &v48->m_NeedUpdatePacketBitSet,
- 38,
- 69,
- 40,
- 0x27u,
- 0x23u,
- 0x1Eu,
- 0x1Du,
- 0x1Fu,
- 0x20u,
- 0x21u) )
- {
- m_nVoteCount = this->m_nVoteCount;
- v108.social.nGuility = this->GetGuilty(this);
- v108.social.nCriminalRate = this->m_nCriminalRate;
- v52 = this->m_data;
- v108.social.cIsNobless = v52->m_nNoblessType;
- v108.social.cIsHero = v52->m_nHeroType;
- v108.social.nSocialClass = this->m_nSocialClass;
- v108.social.nPkCount = v49;
- v108.social.nDuelCount = m_nDuelCount;
- v108.social.m_sVoteCount = m_nVoteCount;
- v108.social.m_sBonusCount = this->m_sBonusCount;
- CVariableBitSet::SetBit(&v108.bitSet, 0x10u);
- }
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 34,
- 45,
- 42,
- 0x2Bu,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- v108.point.nVitalPoint = this->m_nVitalPoint;
- v108.point.cBR_LectureMark = this->m_BR_LectureMark;
- v53 = this->m_data;
- v108.point.nPVPPoint = v53->m_nPVPPoint;
- v108.point.nRaidPoint = v53->m_nRaidPointAsset;
- CVariableBitSet::SetBit(&v108.bitSet, 0x11u);
- }
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 54,
- 55,
- 44,
- 0x47u,
- 0x48u,
- 0x38u,
- 0x39u,
- 0x66u,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- v108.etc1.nSkillModMaxDecoSlotCount = this->m_SkillMod.m_dMaxDecoSlotCount;
- v108.etc1.nSkillModMaxJewelSlotCount = this->m_SkillMod.m_dMaxJewelSlotCount;
- v108.etc1.cEventMatchTeamID = this->m_cEventMatchTeamID;
- v108.etc1.nFootEffect = this->m_FootEffect;
- v108.etc1.nSkillModMaxAgathionMainSlotCount = this->m_SkillMod.m_dMaxAgathionMainSlotCount;
- v108.etc1.nSkillModMaxAgathionSubSlotCount = this->m_SkillMod.m_dMaxAgathionSubSlotCount;
- v108.etc1.nSkillModMaxArtifactSlotGroupCount = this->m_SkillMod.m_nActiveArtifactSlotGroup;
- CVariableBitSet::SetBit(&v108.bitSet, 0x12u);
- }
- if ( isGMPacket )
- {
- memset(v123, 0, sizeof(v123));
- rStream.__vftable = (network::Stream_vtbl *)&network::Stream::`vftable';
- rStream.m_pBuffer = v123;
- rStream.m_pCursor = v123;
- rStream.m_bufferSize = 20480;
- if ( !l2::S_UserInfo::Encode(&v108, &rStream) )
- {
- LODWORD(nOrgSpeed3) = 6485;
- CLog::Add(&Log, LOG_ERROR, (wchar_t *)L"[%s][%d] GMPacket Encode Failed", L"User.cpp", nOrgSpeed3);
- LABEL_104:
- std::basic_string<wchar_t,std::char_traits<wchar_t>,std::xallocator<wchar_t>>::_Tidy(
- &v108.pledge.wstrNickName,
- 1,
- 0i64);
- std::basic_string<wchar_t,std::char_traits<wchar_t>,std::xallocator<wchar_t>>::_Tidy(
- &v108.basic.wstrName,
- 1,
- 0i64);
- CVariableBitSet::~CVariableBitSet(&v108.bitSet);
- v108.__vftable = (l2::S_UserInfo_vtbl *)&network::IPacket::`vftable';
- CVariableBitSet::~CVariableBitSet(&v115);
- v125 = &IPacketHelper::`vftable';
- goto LABEL_105;
- }
- pSocket->Send(pSocket, "chddb", 254i64);
- }
- else
- {
- Singleton<CCursedWeaponMgr>::inst();
- m_nCursedWeaponClassId = this->m_nCursedWeaponClassId;
- if ( m_nCursedWeaponClassId <= 0 )
- {
- WeaponLevel = 0;
- }
- else
- {
- v55 = Singleton<CCursedWeaponMgr>::inst();
- WeaponLevel = CCursedWeaponMgr::GetWeaponLevel(v55, m_nCursedWeaponClassId);
- }
- CVariableBitSet::SetIntValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- (unsigned int *)&this->m_nCursedWeaponLevel,
- WeaponLevel,
- 0x50u);
- if ( this->GetMorphID(this) )
- {
- m_transformID = this->GetMorphID(this);
- v58 = &this->m_data->m_NeedUpdatePacketBitSet;
- }
- else
- {
- v59 = this->m_data;
- v58 = &v59->m_NeedUpdatePacketBitSet;
- m_transformID = v59->m_transformID;
- }
- CVariableBitSet::SetIntValue_IfModifed(v58, (unsigned int *)&this->m_nTransformId, m_transformID, 0x51u);
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 83,
- 84,
- -1,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- v60 = this->m_data;
- v108.etc2.cEnvironment = v60->m_Environment;
- v108.etc2.cIsFastMoveMode = v60->m_MoveMode != MT_SLOW;
- CVariableBitSet::SetBit(&v108.bitSet, 0x13u);
- }
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 85,
- 86,
- -1,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- v108.etc3 = *(l2::UserInfo_Etc3 *)&this->m_nCharNameColor;
- CVariableBitSet::SetBit(&v108.bitSet, 0x14u);
- }
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 25,
- 87,
- 80,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- v108.etc4.nYongmaClass = m_rideClassID;
- v108.etc4.hInvenLimit = v102;
- v108.etc4.nCursedWeaponLevel = this->m_nCursedWeaponLevel;
- CVariableBitSet::SetBit(&v108.bitSet, 0x15u);
- }
- CVariableBitSet::SetCharValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- &this->m_cPVPRestrainStatus,
- this->KillPVPPointChecker.m_bStatus,
- 0x58u);
- UserFlag = CPledgeGameSystem::GetUserFlag(&g_PledgeGameSystem, this);
- CVariableBitSet::SetCharValue_IfModifed(
- &this->m_data->m_NeedUpdatePacketBitSet,
- &this->m_cPledgeGameMemberFlag,
- UserFlag,
- 0x5Eu);
- if ( CVariableBitSet::IsSet(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 88,
- 89,
- 90,
- 0x5Eu,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF) )
- {
- v108.etc5.cPVPRestrainStatus = this->m_cPVPRestrainStatus;
- v108.etc5.nUltimateSkillGauge = this->m_data->m_UltimateSkillGauge;
- v108.etc5.cIsSheathingWeapon = this->m_IsSheathingWeapon;
- v108.etc5.cPledgeGameMemberFlag = this->m_cPledgeGameMemberFlag;
- CVariableBitSet::SetBit(&v108.bitSet, 0x16u);
- }
- memset(v124, 0, sizeof(v124));
- v116.__vftable = (network::Stream_vtbl *)&network::Stream::`vftable';
- v116.m_pBuffer = v124;
- v116.m_pCursor = v124;
- v116.m_bufferSize = 20480;
- if ( !l2::S_UserInfo::Encode(&v108, &v116) )
- {
- LODWORD(nOrgSpeed3a) = 6614;
- CLog::Add(&Log, LOG_ERROR, (wchar_t *)L"[%s][%d] GMPacket Encode Failed", L"User.cpp", nOrgSpeed3a);
- goto LABEL_104;
- }
- pSocket->Send(
- pSocket,
- "cddb",
- 50i64,
- this->m_nId,
- LODWORD(v116.m_pCursor) - LODWORD(v116.m_pBuffer),
- LODWORD(v116.m_pCursor) - LODWORD(v116.m_pBuffer),
- v116.m_pBuffer);
- if ( !this->m_bIsSendUserInfoCompleted )
- this->m_bIsSendUserInfoCompleted = 1;
- }
- std::basic_string<wchar_t,std::char_traits<wchar_t>,std::xallocator<wchar_t>>::_Tidy(
- &v108.pledge.wstrNickName,
- 1,
- 0i64);
- std::basic_string<wchar_t,std::char_traits<wchar_t>,std::xallocator<wchar_t>>::_Tidy(
- &v108.basic.wstrName,
- 1,
- 0i64);
- CVariableBitSet::~CVariableBitSet(&v108.bitSet);
- v108.__vftable = (l2::S_UserInfo_vtbl *)&network::IPacket::`vftable';
- CVariableBitSet::~CVariableBitSet(&v115);
- v125 = &IPacketHelper::`vftable';
- CTimer::EndJob(&g_Timer, &JOB_SEND_EXUSERINFO);
- return;
- }
- v32 = this->GetMyShuttleID(this);
- }
- else
- {
- v32 = v31->GetMyAirShipID(this);
- }
- v29 = v32;
- goto LABEL_23;
- }
- CLog::Add(&Log, LOG_ERROR, (wchar_t *)L"[%s][%d] pSocket is NULL", L"User.cpp", 5845);
- LABEL_105:
- CTimer::EndJob(&g_Timer, &JOB_SEND_EXUSERINFO);
- }
- void __fastcall CNPC::SendCharInfo_internal(CNPC *this, User *pUser, bool bInSight)
- {
- DroidNPCInfo *p_m_DroidNPCInfo; // r12
- CSharedCreatureData *m_data; // rax
- long double v6; // xmm6_8
- long double v7; // xmm7_8
- const int *p_nKarma; // rcx
- CSharedCreatureData *v9; // rax
- int m_length; // r13d
- int cHairAccFlag; // ebx
- int m_dBaseMP; // edi
- int m_dMP; // esi
- int m_dBaseHP; // r14d
- int m_dHP; // r15d
- int nPledgeType_low; // r12d
- const wchar_t *v17; // rax
- CUserSocket *v18; // rax
- int nHairShapeEx; // [rsp+388h] [rbp-80h]
- int nFaceEx; // [rsp+38Ch] [rbp-7Ch]
- int m_bIsAlive; // [rsp+390h] [rbp-78h]
- int m_assembledCount; // [rsp+394h] [rbp-74h]
- int Yaw_low; // [rsp+398h] [rbp-70h]
- int cHero; // [rsp+39Ch] [rbp-6Ch]
- int cNobless; // [rsp+3A0h] [rbp-68h]
- int m_Environment_low; // [rsp+3A4h] [rbp-64h]
- BOOL m_bIsInCombatMode; // [rsp+3A8h] [rbp-60h]
- BOOL v28; // [rsp+3ACh] [rbp-5Ch]
- BOOL v29; // [rsp+3B0h] [rbp-58h]
- int v30; // [rsp+3B4h] [rbp-54h]
- int v31; // [rsp+3B8h] [rbp-50h]
- int v32; // [rsp+3BCh] [rbp-4Ch]
- int nVariationOpt2; // [rsp+3C0h] [rbp-48h]
- int nVariationOpt1; // [rsp+3C4h] [rbp-44h]
- int cGender; // [rsp+3C8h] [rbp-40h]
- int cRace; // [rsp+3CCh] [rbp-3Ch]
- int v37; // [rsp+3D0h] [rbp-38h]
- int v38; // [rsp+3D4h] [rbp-34h]
- int v39; // [rsp+3D8h] [rbp-30h]
- OrgSpeeds s; // [rsp+3E0h] [rbp-28h] BYREF
- __int64 v41[5]; // [rsp+400h] [rbp-8h] BYREF
- char v42[128]; // [rsp+428h] [rbp+20h] BYREF
- CPacketHelperEx<20480> ph; // [rsp+4A8h] [rbp+A0h] BYREF
- CPacketHelperEx<20480> v44; // [rsp+54B8h] [rbp+50B0h] BYREF
- int nHairColorEx; // [rsp+A550h] [rbp+A148h]
- v41[3] = -2i64;
- if ( this->m_isDroidNPC )
- {
- p_m_DroidNPCInfo = &this->m_DroidNPCInfo;
- if ( this != -30264i64 )
- {
- this->GetPos(this, v41);
- m_data = this->m_data;
- v31 = m_data->m_dParam[5];
- v30 = m_data->m_dParam[6];
- memset(&s, 0, sizeof(s));
- CNPC::GetOrgSpeeds(this, &s);
- v6 = this->GetMoveModifier(this);
- v7 = this->GetAttackModifier(this);
- m_bIsAlive = this->m_data->m_bIsAlive;
- memset(v42, 0, sizeof(v42));
- p_nKarma = &MAX_CRIMINAL_RATE;
- if ( p_m_DroidNPCInfo->nKarma < 500 )
- p_nKarma = &p_m_DroidNPCInfo->nKarma;
- v32 = *p_nKarma;
- if ( !p_m_DroidNPCInfo->cHairAccFlag || p_m_DroidNPCInfo->nSlotHair == -1 && p_m_DroidNPCInfo->nSlotHair2 == -1 )
- {
- nFaceEx = p_m_DroidNPCInfo->nFaceEx;
- if ( !nFaceEx )
- nFaceEx = p_m_DroidNPCInfo->nFace;
- nHairShapeEx = p_m_DroidNPCInfo->nHairShapeEx;
- if ( !nHairShapeEx )
- nHairShapeEx = p_m_DroidNPCInfo->nHairShape;
- nHairColorEx = p_m_DroidNPCInfo->nHairColorEx;
- if ( nHairColorEx )
- goto LABEL_15;
- }
- else
- {
- nFaceEx = p_m_DroidNPCInfo->nFace;
- nHairShapeEx = p_m_DroidNPCInfo->nHairShape;
- }
- nHairColorEx = p_m_DroidNPCInfo->nHairColor;
- LABEL_15:
- ph.__vftable = &CPacketHelperEx<20480>::`vftable';
- memset(ph.m_buffer, 0, 20488);
- CCreature::MakeAbnormalVisualEffectPacket(this, &ph);
- v44.__vftable = &CPacketHelperEx<20480>::`vftable';
- memset(v44.m_buffer, 0, 20488);
- v9 = this->m_data;
- v29 = (v9->m_StopMode & 0xFFFFFFFD) != 0;
- m_length = ph.m_length;
- m_assembledCount = ph.m_assembledCount;
- Yaw_low = LOWORD(v9->m_Dir.Yaw);
- v37 = *&v41[2];
- v38 = *&v41[1];
- v39 = *v41;
- nVariationOpt2 = p_m_DroidNPCInfo->nVariationOpt2;
- nVariationOpt1 = p_m_DroidNPCInfo->nVariationOpt1;
- cHairAccFlag = p_m_DroidNPCInfo->cHairAccFlag;
- m_dBaseMP = v9->m_dBaseMP;
- m_dMP = v9->m_dMP;
- m_dBaseHP = v9->m_dBaseHP;
- m_dHP = v9->m_dHP;
- nPledgeType_low = SLOWORD(p_m_DroidNPCInfo->nPledgeType);
- cHero = this->m_DroidNPCInfo.cHero;
- cNobless = this->m_DroidNPCInfo.cNobless;
- m_Environment_low = SLOBYTE(v9->m_Environment);
- m_bIsInCombatMode = v9->m_bIsInCombatMode;
- v28 = v9->m_MoveMode != MT_SLOW;
- cGender = this->m_DroidNPCInfo.cGender;
- cRace = this->m_DroidNPCInfo.cRace;
- v17 = this->GetName(this);
- CPacketHelperEx<20480>::Assemble(
- &v44,
- "ccdddddShcdddddddddddddddddddcdddddddddcdddhhhhhhhhffffdddSddddccccccchbcchdddccdcccdddddchdcdddcdddddcdbccc",
- 49i64,
- !bInSight,
- v39,
- v38,
- v37,
- 0i64,
- this->m_data->m_nId,
- v17,
- cRace,
- cGender,
- this->m_DroidNPCInfo.nBaseClass,
- this->m_DroidNPCInfo.nSlotUnderware,
- this->m_DroidNPCInfo.nSlotHead,
- this->m_DroidNPCInfo.nSlotRightHand,
- this->m_DroidNPCInfo.nSlotLeftHand,
- this->m_DroidNPCInfo.nSlotGloves,
- this->m_DroidNPCInfo.nSlotChest,
- this->m_DroidNPCInfo.nSlotLegs,
- this->m_DroidNPCInfo.nSlotFeet,
- this->m_DroidNPCInfo.nSlotBack,
- this->m_DroidNPCInfo.nSlotBothHands,
- this->m_DroidNPCInfo.nSlotHair,
- this->m_DroidNPCInfo.nSlotHair2,
- nVariationOpt1,
- nVariationOpt2,
- nVariationOpt1,
- nVariationOpt2,
- nVariationOpt1,
- nVariationOpt2,
- 0i64,
- this->m_DroidNPCInfo.nShapeShiftRightHand,
- this->m_DroidNPCInfo.nShapeShiftLeftHand,
- this->m_DroidNPCInfo.nShapeShiftBothHands,
- this->m_DroidNPCInfo.nShapeShiftGloves,
- this->m_DroidNPCInfo.nShapeShiftChest,
- this->m_DroidNPCInfo.nShapeShiftLegs,
- this->m_DroidNPCInfo.nShapeShiftFeet,
- this->m_DroidNPCInfo.nShapeShiftHair,
- this->m_DroidNPCInfo.nShapeShfitHair2,
- 0i64,
- v32,
- v31,
- v30,
- SLOWORD(s.m_nOrgSpeed0),
- SLOWORD(s.m_nOrgSpeed1),
- SLOWORD(s.m_nOrgSpeed2),
- SLOWORD(s.m_nOrgSpeed3),
- SLOWORD(s.m_nOrgSpeed4),
- SLOWORD(s.m_nOrgSpeed5),
- SLOWORD(s.m_nOrgSpeed6),
- SLOWORD(s.m_nOrgSpeed7),
- v6,
- v7,
- this->m_DroidNPCInfo.dCollisionRadius,
- this->m_DroidNPCInfo.dCollisionHeight,
- nFaceEx,
- nHairShapeEx,
- nHairColorEx,
- this->m_sNickName,
- this->m_DroidNPCInfo.nPledgeSID,
- this->m_DroidNPCInfo.nPledgeCrestDBID,
- this->m_DroidNPCInfo.nAllianceDBID,
- this->m_DroidNPCInfo.nAllianceCrestDBID,
- v29,
- v28,
- m_bIsInCombatMode,
- m_bIsAlive == 0,
- 0i64,
- 0i64,
- 0i64,
- 0i64,
- 0,
- v42,
- 0i64,
- m_Environment_low,
- this->m_DroidNPCInfo.nBonusCount,
- 0i64,
- this->m_DroidNPCInfo.nNowClass,
- 0i64,
- this->m_DroidNPCInfo.nEnchantWeapon,
- 0i64,
- this->m_DroidNPCInfo.nPledgeEmblemDBID,
- cNobless,
- cHero,
- 0i64,
- 0i64,
- 0i64,
- 0i64,
- this->m_DroidNPCInfo.nCharNameColor,
- Yaw_low,
- 0i64,
- nPledgeType_low,
- this->m_DroidNPCInfo.nNickNameColor,
- 0i64,
- 0i64,
- 0i64,
- 0i64,
- 0,
- 0i64,
- m_dHP,
- m_dBaseHP,
- m_dMP,
- m_dBaseMP,
- 0i64,
- m_assembledCount,
- m_length,
- ph.m_buffer,
- 0i64,
- cHairAccFlag,
- this->m_DroidNPCInfo.nAP);
- if ( pUser )
- {
- if ( pUser->GetSocket(pUser) )
- {
- v18 = pUser->GetSocket(pUser);
- v18->Send(v18, "b", v44.m_length, v44.m_buffer);
- }
- }
- else
- {
- this->GetPos(this, &s);
- }
- }
- }
- }
- void __fastcall CCreature::Init(CCreature *this)
- {
- __int64 i; // rcx
- CContributeData *v3; // rax
- CContributeData *v4; // rax
- wchar_t *m_sNickName; // rdi
- __int64 j; // rcx
- FVector v; // [rsp+28h] [rbp-50h] BYREF
- FVector v8; // [rsp+40h] [rbp-38h] BYREF
- this->pClassConstant = &DEFAULT_CLASS_CONSTANT;
- *(_QWORD *)this->m_attackLeaderId = 0i64;
- *(_QWORD *)&this->m_attackLeaderId[2] = 0i64;
- this->m_data->m_iLastArrowIndex = -1;
- for ( i = 220i64; i < 472; i += 4i64 )
- *(_DWORD *)((char *)&this->m_data->__vftable + i) = -1;
- v3 = (CContributeData *)CGeneralObject::operator new(0x1E0ui64);
- if ( v3 )
- CContributeData::CContributeData(v3);
- else
- v4 = 0i64;
- this->m_pContribute = v4;
- this->m_bDietMode = 0;
- this->m_dGMSpeed = 1.0;
- this->m_dSpeedModByWeight = 1.0;
- this->m_dHPRegenModByWeight = 1.0;
- this->m_dMPRegenModByWeight = 1.0;
- this->m_nSetItemClassId = 0;
- std::_Tree<std::_Tmap_traits<int,int,std::less<int>,std::allocator<std::pair<int const,int>>,0>>::clear(&this->m_mapNewSetItem);
- std::_Tree<std::_Tmap_traits<int,int,std::less<int>,std::allocator<std::pair<int const,int>>,0>>::clear(&this->m_mapShapeShiftedSetItem);
- this->m_data->m_nCanHarvest = 0;
- this->m_bLeft = 0;
- this->m_AlwaysSkillSuccess = 0;
- this->m_dMeleeMultiTargetBias = 1.0;
- *(_WORD *)&this->m_bAttackedByRange = 0;
- this->m_bIgnoreRegeneration = 0;
- this->PrepareLookNeighbor = 0;
- this->m_bMoving = 0;
- memset(&v, 0, sizeof(v));
- FVector::operator=(&this->m_vMovingDirection, &v);
- this->m_nLastTick = -1;
- this->m_data->m_bIsActive = 0;
- this->m_data->m_ClanId[0] = 0;
- this->m_data->m_nClanHelpRange = 500;
- this->m_data->m_nPrivateID = 0;
- *(_QWORD *)&this->m_dwDamagedTick = 0i64;
- CSharedCreatureData::DeleteAllAbnormalStatus(this->m_data);
- this->m_data->m_bMoveTrouble = 0;
- this->m_data->m_dwPathFindFailCount = 0;
- memset(&v8, 0, sizeof(v8));
- FVector::operator=(&this->m_vPosOnTick, &v8);
- this->m_data->m_BossID = 0;
- this->SetMyAirShipID(this, 0);
- *(_WORD *)&this->m_AvoidAgroWhenEnterWorld = 0;
- m_sNickName = this->m_sNickName;
- for ( j = 25i64; j; --j )
- *m_sNickName++ = 0;
- this->m_nLaunchedSkills = 0;
- this->m_bDoubleCastingMod = 0;
- this->m_OnSummonStatBonus = 0;
- this->m_bCanEscape = 1;
- this->nCountAttacked = 0;
- this->dDPSBonusForBuilder = 1.0;
- this->m_InitializingSkillMod = 0;
- *(_QWORD *)&this->m_nWeaponPAttackBonusByLevel = 0i64;
- *(_DWORD *)&this->m_hMinNewSetItemEnchantedEffect = 0;
- CVariableBitSet::Init(
- &this->m_data->m_NeedUpdatePacketBitSet,
- 0x67u,
- 0x10u,
- (unsigned __int8 *)this->m_data->m_bNeedUpdatePacketBits);
- CVariableBitSet::SetAllBits(&this->m_data->m_NeedUpdatePacketBitSet);
- this->m_nDamageExceptAttackerId = 0;
- this->m_dExtraParam[0] = 0.0;
- this->m_dExtraParam[1] = 0.0;
- this->m_nChainAttackCount = 0;
- this->m_DefenceFatalBlowSuccessBonus.m_Diff = 0.0;
- this->m_DefenceFatalBlowSuccessBonus.m_Per = 1.0;
- this->m_lSaveSkillReuseDelay = 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement