1534 Level & Stat & Skill & NP & Clan Bug Fix!

 

Gameserver / User.cpp & SendMyInfo'yu Bulun tamamen silin verdiğimle değiştirin...


QlWb1A.jpg



 İçeriğiniz Açıldı!
Kod:
Gameserver / User.cpp & SendMyInfo'yu Bulun tamamen silin verdiğimle değiştirin...
 İçeriğiniz Açıldı!
Kod:
void CUser::SendMyInfo(){
	C3DMap* pMap = GetMap();
	CKnights* pKnights = nullptr;


	if (!pMap->IsValidPosition(GetX(), GetZ(), 0.0f))
	{
		short x = 0, z = 0;
		GetStartPosition(x, z); 


		m_curx = (float)x;
		m_curz = (float)z;
	}


	QuestDataRequest();


	Packet result(WIZ_MYINFO);


	// Load up our user rankings (for our NP symbols).
	g_pMain->GetUserRank(this);


	// Are we the King? Let's see, shall we?
	CKingSystem * pData = g_pMain->m_KingSystemArray.GetData(GetNation());
	if (pData != nullptr
		&& STRCASECMP(pData->m_strKingName.c_str(), m_strUserID.c_str()) == 0)
		m_bRank = 1; // We're da King, man.
	else
		m_bRank = 0; // totally not da King.


	result.SByte(); // character name has a single byte length
	result	<< GetSocketID()
			<< GetName()
			<< GetSPosX() << GetSPosZ() << GetSPosY()
			<< GetNation() 
			<< m_bRace << m_sClass << m_bFace
			<< m_nHair
			<< m_bRank << m_bTitle
			<< GetLevel()
			<< m_sPoints
			<< uint32(m_iMaxExp) << uint32(m_iExp)
			<< GetLoyalty() << GetMonthlyLoyalty()
			<< GetFame() << GetClanID();


	if (isInClan())
		pKnights = g_pMain->GetClanPtr(GetClanID());


	if (pKnights == nullptr)
	{
		result	<< uint64(0) << uint16(-1) << uint32(0);
	}
	else 
	{
		if (pKnights->m_sAlliance != 0) {
			pKnights->OnLoginAlliance(this);
		} else {
			pKnights->OnLogin(this);
		}


		CKnights *aKnights = g_pMain->GetClanPtr(pKnights->GetAllianceID());


		result	<< pKnights->GetAllianceID()
			<< pKnights->m_byFlag
			<< pKnights->m_strName
			<< pKnights->m_byGrade << pKnights->m_byRanking
			<< uint16(pKnights->m_sMarkVersion)
			<< uint16(pKnights->m_sCape)
			<< pKnights->m_bCapeR << pKnights->m_bCapeG << pKnights->m_bCapeB << uint8(0);
	}


	result  << uint8(2) << uint8(3) << uint8(4) << uint8(5)
			<< m_iMaxHp << m_sHp << m_iMaxMp << m_sMp
			<< m_sMaxWeight << m_sItemWeight
			<< GetStat(STAT_STR) << uint8(GetStatItemBonus(STAT_STR))
			<< GetStat(STAT_STA) << uint8(GetStatItemBonus(STAT_STA))
			<< GetStat(STAT_DEX) << uint8(GetStatItemBonus(STAT_DEX))
			<< GetStat(STAT_INT) << uint8(GetStatItemBonus(STAT_INT))
			<< GetStat(STAT_CHA) << uint8(GetStatItemBonus(STAT_CHA))
			<< m_sTotalHit << m_sTotalAc
			<< uint8(m_sFireR) << uint8(m_sColdR) << uint8(m_sLightningR)
			<< uint8(m_sMagicR) << uint8(m_sDiseaseR) << uint8(m_sPoisonR)
			<< m_iGold
			<< m_bAuthority
			<< m_bKnightsRank << m_bPersonalRank; // national rank, leader rank


	result.append(m_bstrSkill, 9);


	for (int i = 0; i < INVENTORY_TOTAL; i++)
	{
		_ITEM_DATA *pItem = GetItem(i);
		if((pItem->nExpirationTime - UNIXTIME < 0 && pItem->nExpirationTime != 0) || pItem->sCount < 1) 
		{
			result	<< uint32(0) << uint16(0) << uint16(0) << uint8(0)<< uint16(0)  << uint32(0) << uint32(0);
			pItem->nNum= 0;
		}
		else
		{
			result	<< pItem->nNum
				<< pItem->sDuration << pItem->sCount
				<< pItem->bFlag	// item type flag (e.g. rented)
				<< pItem->sRemainingRentalTime	// remaining time
				<< uint32(0) // unknown
				<< pItem->nExpirationTime; // expiration date in unix time
		}
	}


	m_bIsChicken = CheckExistEvent(50, 1);
	result	<< m_bAccountStatus	// account status (0 = none, 1 = normal prem with expiry in hours, 2 = pc room)
		<< m_bPremiumType		// premium type (7 = platinum premium)
		<< m_sPremiumTime		// premium time
		<< m_bIsChicken						// chicken/beginner flag
		<< m_iMannerPoint;




	Send(&result);


	g_pMain->AddCharacterName(this);


	SetZoneAbilityChange(GetZoneID());
	Send2AI_UserUpdateInfo(true); 
}


Yorumlar

Bu blogdaki popüler yayınlar

Knight Online Pointer ve Offset Bulma 2023 - 2024

1453/1534/1886/v2039 Soruce Npc Ve Monster Uzaktan Saldırılarını Düşürme Range Mesafesini Ayarlama.

PPCARD kod üretici (SQL KOD)