ich schreib mal auf die schnelle dieses TuT, ich habe es NICHT Getestet!
Wenn was nicht klappt sagt mir bescheid!
Öffnet die MoverParam.cpp
sucht nach
dann habt ihr das dort stehn:
kommentiert es komplett aus oder löscht es ! (Man wird schonmal kein Master nach 2nd Jobchange)
darunter ist das:
ändert es zu:
darunter addet ihr das:
Fertig
Dieses TuT war eine Arbeit von 5 Minuten, falls etwas falsch ist, korrigiert mich!,
sucht nach
PHP Code:
if( AddChangeJob(m_nJob + 10) )
PHP Code:
if(m_nLevel >= 60 && IsPro())
{
if( AddChangeJob(m_nJob + 10) )
{
((CUser*)this)->AddSetChangeJob( m_nJob );
g_UserMng.AddNearSetChangeJob( this, m_nJob, &this->m_aJobSkill[MAX_JOB_SKILL] );
g_dpDBClient.SendLogLevelUp( (CUser*)this, 4 );
#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
}
}
kommentiert es komplett aus oder löscht es ! (Man wird schonmal kein Master nach 2nd Jobchange)
darunter ist das:
PHP Code:
if(m_nLevel >= MAX_MASTER_LEVEL && IsMaster())
{
if( AddChangeJob(m_nJob + 8) )
{
PHP Code:
if(m_nLevel >= MAX_GENERAL_LEVEL && IsPro())
{
if( AddChangeJob(m_nJob + 10) )
{
((CUser*)this)->AddSetChangeJob( m_nJob );
g_UserMng.AddNearSetChangeJob( this, m_nJob, &this->m_aJobSkill[MAX_JOB_SKILL] );
g_dpDBClient.SendLogLevelUp( (CUser*)this, 4 );
#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
}
}
// nun wird man sobald man das Max. Non-Master Level hat automatisch Master
PHP Code:
if(m_nLevel >= MAX_MASTER_LEVEL && IsMaster())
{
if( AddChangeJob(m_nJob + 8) )
{
((CUser*)this)->AddSetChangeJob( m_nJob );
g_UserMng.AddNearSetChangeJob( this, m_nJob, &this->m_aJobSkill[MAX_JOB_SKILL] );
g_dpDBClient.SendLogLevelUp( (CUser*)this, 4 );
#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
}
}
Fertig
Dieses TuT war eine Arbeit von 5 Minuten, falls etwas falsch ist, korrigiert mich!,
---------------------------------------------------------------
Kleines AddOn von Jopsi (Code von Pumbaaa):
Quote:
bei deinem tut der automaster funktioniert aufjedenfall nicht da du nur den job updates.
daraus musstu das machen
geht in Mover.h und added
dann geht ihr und mover.cpp und addedPHP Code:unter: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °´Ã¼¸¦ nLevel·Î ¹Ù²ãÁÜ
das: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
moverparam.cppPHP Code:void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
{
#ifdef __WORLDSERVER
// ¿î¿µÀÚ ¸í·ÉÀ¸·Î ·¹º§¾÷ Çϴ°÷ÀÓ
MoverProp* pProp = GetProp();
if( pProp )
{
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 );
m_nLevel = nLevel;
SetJobLevel( nLevel, nJob );
m_nDeathLevel = nLevel;
#if __VER >= 10 // __LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
if(IsMaster())
{
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
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;
}
}
}
else if(IsHero())
{
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 = 5;
}
}
}
else if(IsLegendHero())
{
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 = 5;
}
}
}
#endif // __LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
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() );
if( nJob >= 1 && nJob <= 4 )
{
m_nStr = m_nSta = m_nDex = m_nInt = 15;
m_nRemainGP = 28;
}
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
{
m_nRemainGP = 118;
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
m_nStr = m_nSta = m_nDex = m_nInt = 15;
}
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
{
CItemElem itemelem;
itemelem.m_nItemNum = 1;
itemelem.m_bCharged = TRUE;
BYTE nID;
if( nJob == JOB_MENTALIST_HERO )
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
if( nJob == JOB_FORCEMASTER_HERO )
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
( ( CUser*)this)->CreateItem( &itemelem, &nID );
}
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
( (CUser*)this )->AddTaskBar();*/
( (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
}
was voher das war
wir dasPHP Code:if(m_nLevel >= 119 && IsPro())
{
if( AddChangeJob(m_nJob + 10) )
{
((CUser*)this)->AddSetChangeJob( m_nJob );
g_UserMng.AddNearSetChangeJob( this, m_nJob, &this->m_aJobSkill[MAX_JOB_SKILL] );
g_dpDBClient.SendLogLevelUp( (CUser*)this, 4 );
#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
}
}
PHP Code:if(m_nLevel >= 119 && IsPro())
{
InitLevelPumbaaa( m_nJob+10,60);
}







