void CCrywolf::GiveRewardExp(int iUserIndex, int iRewardExp) { if ( !gObjIsConnected(iUserIndex)) return; if ( iRewardExp <= -1 ) return; int iRET_EXP = 0; int iCAL_EXP = iRewardExp; int iMAX_LEVCOUNT = 0; if ( !gObjIsConnected(iUserIndex)) return; iRET_EXP = iCAL_EXP; if ( gObj[iUserIndex].Type == OBJ_USER ) { while ( iCAL_EXP > 0 ) { if ( iCAL_EXP > 0 ) { iCAL_EXP = UTIL.CrywolfMVPLevelUp(iUserIndex, iCAL_EXP); } iMAX_LEVCOUNT++; if ( iMAX_LEVCOUNT > 5 ) { LogAdd("[ Crywolf ][GiveRewardExp] LevelUp Error [%s][%s]", gObj[iUserIndex].AccountID, gObj[iUserIndex].Name); break; } } PMSG_KILLPLAYER_EXT pMsg; PHeadSetBE((LPBYTE)&pMsg, 0x9C, sizeof(pMsg)); pMsg.NumberH = -1; pMsg.NumberL = -1; pMsg.ExpH = SET_NUMBERHW(iRewardExp); pMsg.ExpL = SET_NUMBERLW(iRewardExp); pMsg.DamageH = 0; pMsg.DamageL = 0; DataSend(iUserIndex, (LPBYTE)&pMsg, pMsg.h.size); } }
//00554540 -> 100% void CMasterLevelSystem::GCMasterLevelInfo(LPOBJ lpObj) //OK { if( !lpObj->m_bMasterLevelDBLoad ) { this->GDReqMasterLevelInfo(lpObj); return; } // ---- PMSG_MASTERLEVEL_INFO pMsg; PHeadSubSetB(&pMsg.h.c, 0xF3, 0x50, sizeof(PMSG_MASTERLEVEL_INFO)); // ---- pMsg.nMLevel = lpObj->m_nMasterLevel; // ---- pMsg.btMLExp1 = SET_NUMBERH(SET_NUMBERHW(HIDWORD(lpObj->m_i64MasterLevelExp))); pMsg.btMLExp2 = SET_NUMBERL(SET_NUMBERHW(HIDWORD(lpObj->m_i64MasterLevelExp))); pMsg.btMLExp3 = SET_NUMBERH(SET_NUMBERLW(HIDWORD(lpObj->m_i64MasterLevelExp))); pMsg.btMLExp4 = SET_NUMBERL(SET_NUMBERLW(HIDWORD(lpObj->m_i64MasterLevelExp))); pMsg.btMLExp5 = SET_NUMBERH(SET_NUMBERHW(LODWORD(lpObj->m_i64MasterLevelExp))); pMsg.btMLExp6 = SET_NUMBERL(SET_NUMBERHW(LODWORD(lpObj->m_i64MasterLevelExp))); pMsg.btMLExp7 = SET_NUMBERH(SET_NUMBERLW(LODWORD(lpObj->m_i64MasterLevelExp))); pMsg.btMLExp8 = SET_NUMBERL(SET_NUMBERLW(LODWORD(lpObj->m_i64MasterLevelExp))); // ---- pMsg.btMLNextExp1 = SET_NUMBERH(SET_NUMBERHW(HIDWORD(lpObj->m_i64NextMasterLevelExp))); pMsg.btMLNextExp2 = SET_NUMBERL(SET_NUMBERHW(HIDWORD(lpObj->m_i64NextMasterLevelExp))); pMsg.btMLNextExp3 = SET_NUMBERH(SET_NUMBERLW(HIDWORD(lpObj->m_i64NextMasterLevelExp))); pMsg.btMLNextExp4 = SET_NUMBERL(SET_NUMBERLW(HIDWORD(lpObj->m_i64NextMasterLevelExp))); pMsg.btMLNextExp5 = SET_NUMBERH(SET_NUMBERHW(LODWORD(lpObj->m_i64NextMasterLevelExp))); pMsg.btMLNextExp6 = SET_NUMBERL(SET_NUMBERHW(LODWORD(lpObj->m_i64NextMasterLevelExp))); pMsg.btMLNextExp7 = SET_NUMBERH(SET_NUMBERLW(LODWORD(lpObj->m_i64NextMasterLevelExp))); pMsg.btMLNextExp8 = SET_NUMBERL(SET_NUMBERLW(LODWORD(lpObj->m_i64NextMasterLevelExp))); // ---- pMsg.nMLPoint = LOWORD(lpObj->m_iMasterLevelPoint); pMsg.wMaxLife = (double)lpObj->AddLife + lpObj->MaxLife; pMsg.wMaxMana = (double)lpObj->AddMana + lpObj->MaxMana; pMsg.wMaxShield = LOWORD(lpObj->iAddShield) + LOWORD(lpObj->iMaxShield); pMsg.wMaxBP = LOWORD(lpObj->AddBP) + LOWORD(lpObj->MaxBP); // ---- DataSend(lpObj->m_Index, (LPBYTE)&pMsg, pMsg.h.size); }