Hallo wie der ein oder andere sicherlich gelesen hat bin ich dabei das Rebirth System zu fixxen
dabei bin ich nun auf ein problem gestoßen und zwar müssten die einträge alle richtig sein jedoch wird die Aktuelle Rebirth Count nicht in der DB gespeichert
Hier mal meine Einträge:
Obj.h
Obj.cpp
DBManagerSave.cpp
DBManager.h
DBManager.cpp
DBManagerfun.cpp
ObjSerializeOpt.cpp
Mover.h
Mover.cpp
FuncTextCmd.cpp
VersionCommon.h
DB:
Spallte ist erstellt und auf 0 gesetzt und vom Typ int
Character_STR
Hoffe jemand hat eine Idee was ich vergessen habe...
dabei bin ich nun auf ein problem gestoßen und zwar müssten die einträge alle richtig sein jedoch wird die Aktuelle Rebirth Count nicht in der DB gespeichert
Hier mal meine Einträge:
Obj.h
Code:
#ifdef __REBIRTH public: int m_nRebirthCount; #endif //__REBIRTH
Code:
#ifdef __REBIRTH m_nRebirthCount = 0; #endif //__REBIRTH #ifdef __REBIRTH m_nRebirthCount = pMover->m_nRebirthCount; #endif //__REBIRTH
Code:
#ifdef __REBIRTH MAX_SAVEPARAM += 1; // m_nRebirthCount #endif //__REBIRTH #ifdef __REBIRTH bOK[++j] = qry->BindParameter( ++i, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &pMover->m_nRebirthCount, 0, 0 ); #endif //__REBIRTH
Code:
#ifdef __REBIRTH , int nRebirthCount = 0 #endif //__REBIRTH
Code:
#ifdef __REBIRTH , int nRebirthCount #endif //__REBIRTH #ifdef __REBIRTH sprintf( strCharacter, ",@im_nRebirthCount=%d", nRebirthCount ); strncat( qryCharacter, strCharacter, sizeof(strCharacter) ); #endif //__REBIRTH
Code:
#ifdef __REBIRTH
mover.m_nRebirthCount = qry->GetInt("m_nRebirthCount");
#endif //__REBIRTH
Code:
#ifdef __REBIRTH ar << m_nRebirthCount; #endif //__REBIRTH #ifdef __REBIRTH ar >> m_nRebirthCount; #endif //__REBIRTH
Code:
#ifdef __REBIRTH public: int m_nRebirthCount; #endif //__REBIRTH
Code:
#ifdef __REBIRTH
m_nRebirthCount = 0;
#endif //__REBIRTH
#ifdef __REBIRTH
void CMover::InitLevelRebirth( int nJob, LONG nLevel, BOOL bGamma ){
#ifdef __WORLDSERVER
MoverProp* pProp = GetProp();
if( pProp ){
if( m_nRebirthCount >= MAX_REBIRTH_COUNT)
return;
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
AddChangeJob( nJob );
else
return;
int nPoint = 0;
if( m_nJob == JOB_MERCENARY )
nPoint += 40;
else if( m_nJob == JOB_ACROBAT )
nPoint += 50;
else if( m_nJob == JOB_ASSIST )
nPoint += 60;
else if( m_nJob == JOB_MAGICIAN )
nPoint += 90;
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
nPoint += 120;
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
nPoint += 150;
else if( m_nJob == JOB_RINGMASTER )
nPoint += 160;
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
nPoint += 180;
else if( m_nJob == JOB_ELEMENTOR )
nPoint += 390;
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
nPoint += 120;
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
nPoint += 150;
else if( nJob == JOB_FLORIST_HERO )
nPoint += 160;
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
nPoint += 180;
else if( nJob == JOB_ELEMENTORLORD_HERO )
nPoint += 390;
AddSkillPoint( nPoint );
SetJobLevel( nLevel, nJob );
m_nLevel = nLevel;
m_nDeathLevel = nLevel;
#if __VER >= 10 //__LEGEND
if(IsMaster()){
int dwTmpSkLevel = 1;
if( nLevel > 59 && nLevel < 72 )
dwTmpSkLevel = 1;
else if( nLevel > 71 && nLevel < 84 )
dwTmpSkLevel = 2;
else if( nLevel > 83 && nLevel < 96 )
dwTmpSkLevel = 3;
else if( nLevel > 95 && nLevel < 108 )
dwTmpSkLevel = 4;
else if( nLevel > 107 && nLevel < 120 )
dwTmpSkLevel = 5;
for( int i = 0; i < MAX_SKILL_JOB; i++ ){
LPSKILL lpSkill = &(m_aJobSkill[i]);
if( lpSkill && lpSkill->dwSkill != NULL_ID ){
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
if( pSkillProp == NULL )
continue;
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
continue;
lpSkill->dwLevel = dwTmpSkLevel;
}
}
}
#endif //__LEGEND
if( bGamma )
m_nExp1 = 0;
( (CUser*)this )->AddSetChangeJob( nJob );
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
#if __VER >= 11 // __SYS_PLAYER_DATA
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
#else // __SYS_PLAYER_DATA
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
if( m_idGuild != 0 )
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
#endif // __SYS_PLAYER_DATA
SetHitPoint( GetMaxHitPoint() );
SetManaPoint( GetMaxManaPoint() );
SetFatiguePoint( GetMaxFatiguePoint() );
m_nRebirthCount++;
if( nJob >= 1 && nJob <= 4 )
m_nRemainGP = 28;
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ){
if ( m_nRemainGP > 0)
m_nRemainGP = 0;
if (m_nRebirthCount == 1)
m_nRemainGP = 200;
else if (m_nRebirthCount == 2)
m_nRemainGP = 300;
else if (m_nRebirthCount == 3)
m_nRemainGP = 400;
else if (m_nRebirthCount == 4)
m_nRemainGP = 500;
else if (m_nRebirthCount >= 5)
m_nRemainGP = 600;
}
m_nStr = m_nSta = m_nDex = m_nInt = 50;
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel, m_nRebirthCount );
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
#if __VER >= 13 // __HONORABLE_TITLE
((CUser*)this)->CheckHonorStat();
((CUser*)this)->AddHonorListAck();
g_UserMng.AddHonorTitleChange( this, m_nHonor);
#endif // __HONORABLE_TITLE
}
#endif // __WORLDSERVER
}
#endif //__REBIRTH
Code:
#ifdef __REBIRTH
BOOL TextCmd_rebirth( CScanner& scanner )
{
#ifdef __WORLDSERVER
CUser *pUser;
pUser = (CUser*)scanner.dwValue;
if(pUser->m_nRebirthCount > MAX_REBIRTH_COUNT)
pUser->AddText("Du hast bereits die maximale anzahl von Rebirthes erreicht!");
else if(pUser->m_nLevel >= MAX_3RD_LEGEND_LEVEL && pUser->IsLegendHero())
pUser->InitLevelRebirth( pUser->m_nJob-16,60, false);
else
pUser->AddText("Du hast nicht das passende Level für einen Rebirth!");
#endif
return TRUE;
}
#endif //__REBIRTH
Code:
#define MAX_REBIRTH_COUNT 5 //Default = 0 #define __REBIRTH //Standart Rebirth System
Spallte ist erstellt und auf 0 gesetzt und vom Typ int
Character_STR
Code:
, @im_nRebirthCount , m_nRebirthCount , m_nRebirthCount = @im_nRebirthCount , @im_nRebirthCount int = 0