Just add'd the 3rd jobs and the bug came (from hell, probably).
Printable View
sagenessamerda is this "iGuard" Your guard ? if yes, could i change "/murdajob" to another command ?
greets
can i ask again??
xDD
the ForceMaster is not Bug??
:love:
trashee09 i posted at your profile. I think you just have a wrong Icon folder ?
you have to be in a party for forcemaster buffs? that's not how it's supposed to work
sageness did you have a hard time with the math problem for the skills n weapons to link correctly to the old classes ? in these 2 parts
this is what i have in Mover.cpp
and this is what i have in MoverParam.cppCode:void CMover::InitLevel( int nJob, LONG nLevel, BOOL bGamma )
{
#ifdef __WORLDSERVER
// ¿î¿µÀÚ ¸í·ÉÀ¸·Î ·¹º§¾÷ Çϴ°÷ÀÓ
MoverProp* pProp = GetProp();
if( pProp )
{
// ¹æ¶ûÀÚ ½ºÅ³ °ª °¡Áö°í ÀÖ±â.
int nJobSkillBuf[MAX_JOB_SKILL];
int nJobSkillLevelBuf[MAX_JOB_SKILL];
for( int i = 0 ; i < MAX_JOB_SKILL ; ++i )
{
nJobSkillBuf[ i ] = m_aJobSkill[ i ].dwSkill;
nJobSkillLevelBuf[ i ] = m_aJobSkill[ i ].dwLevel;
}
ZeroMemory( m_aJobSkill, sizeof( m_aJobSkill ) );
LPSKILL lpSkill;
// À⽺ų ÃʱâÈ
for( i = 0; i < MAX_SKILL_JOB; i++ )
{
m_aJobSkill[ i ].dwSkill = NULL_ID;
m_aJobSkill[ i ].dwLevel = 0;
}
// 1. ¹æ¶ûÀÚ ½ºÅ³Àº ±×³É Áö±Þ
m_nJob = JOB_VAGRANT;
ItemProp** apSkillProp = prj.m_aJobSkill[ m_nJob ];
int nJobNum = prj.m_aJobSkillNum[ m_nJob ];
for( i = 0; i < nJobNum; i++ )
{
ItemProp* pSkillProp = apSkillProp[ i ];
lpSkill = &m_aJobSkill[ i ];
lpSkill->dwSkill = pSkillProp->dwID;
}
// 2. ±âº» ´É·ÂÄ¡ ÃʱâÈ
m_nLevel = 1;
m_nStr = m_nSta = m_nDex = m_nInt = 15;
m_nRemainGP = 0;
m_nSkillLevel = 0;
m_nSkillPoint = 0;
// 3. LP, GP, Á÷¾÷
for( i = 1 ; i < nLevel ; i++ )
{
m_nLevel = i + 1;
m_nRemainGP += prj.m_aExpCharacter[ m_nLevel ].dwLPPoint;
#if __VER >= 10 // __LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
if( nJob >= MAX_PROFESSIONAL && i > 59 )
m_nRemainGP++;
if( nJob < MAX_PROFESSIONAL )
{
if( ( i + 1 ) == MAX_JOB_LEVEL )
{
if( nJob < MAX_EXPERT )
{
AddChangeJob( nJob );
}
else
{
if( nJob % 2 != 0 )
{
AddChangeJob( ( nJob - 5 ) / 2 );
}
else
{
AddChangeJob( ( nJob - 4 ) / 2 );
}
}
}
else
if( ( i + 1 ) == MAX_JOB_LEVEL + MAX_EXP_LEVEL )
{
AddChangeJob( nJob );
}
}
else
{
if( ( i + 1 ) == MAX_JOB_LEVEL )
{
if( nJob < MAX_MASTER )
{
if( nJob % 2 != 0 )
{
AddChangeJob( ( nJob - 15 ) / 2 );
}
else
{
AddChangeJob( ( nJob - 14 ) / 2 );
}
}
#ifdef __3RD_LEGEND16
else if( nJob < MAX_JOB )
{
if( nJob % 2 != 0 )
{
AddChangeJob( ( nJob - 31 ) / 2 );
}
else
{
AddChangeJob( ( nJob - 30 ) / 2 );
}
}
#endif
#ifdef __AZURE_CLASS
else if( nJob < MAX_JOB )
{
if( nJob % 2 != 0 )
{
AddChangeJob( ( nJob - 39 ) / 2 );
}
else
{
AddChangeJob( ( nJob - 38 ) / 2 );
}
}
#endif
else
{
if( nJob % 2 != 0 )
{
AddChangeJob( ( nJob - 23 ) / 2 );
}
else
{
AddChangeJob( ( nJob - 22 ) / 2 );
}
}
}
else
if( ( i + 1 ) == MAX_JOB_LEVEL + MAX_EXP_LEVEL )
{
if( nJob < MAX_MASTER )
{
AddChangeJob( nJob - 10 );
AddChangeJob( nJob );
}
#ifdef __3RD_LEGEND16
else if ( nJob < MAX_JOB)
{
AddChangeJob( nJob - 26 );
AddChangeJob( nJob - 16);
AddChangeJob( nJob - 8);
AddChangeJob( nJob );
}
#endif
#ifdef __AZURE_CLASS
else if ( nJob < MAX_JOB)
{
AddChangeJob( nJob - 38 );
AddChangeJob( nJob - 26 );
AddChangeJob( nJob - 16);
AddChangeJob( nJob - 8);
AddChangeJob( nJob );
}
#endif
else
{
AddChangeJob( nJob - 18 );
AddChangeJob( nJob - 8);
AddChangeJob( nJob );
}
}
}
#else //__LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
if( ( i + 1 ) == MAX_JOB_LEVEL )
{
if( nJob < MAX_EXPERT )
{
AddChangeJob( nJob );
}
else
{
if( nJob % 2 != 0 )
{
AddChangeJob( ( nJob - 5 ) / 2 );
}
else
{
AddChangeJob( ( nJob - 4 ) / 2 );
}
}
}
else
if( ( i + 1 ) == MAX_JOB_LEVEL + MAX_EXP_LEVEL )
{
AddChangeJob( nJob );
}
and this is my definejob.hCode:#if __VER >= 10 // __LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
if( IsMaster() ) // ·¹º§ÀÌ ¾ÈµÇ¸é ¸øÂü.
{
if( nJob < MAX_EXPERT )
{
if( nJob * 2 + 14 == m_nJob || nJob * 2 + 15 == m_nJob )
return TRUE;
}
else if( nJob < MAX_PROFESSIONAL )
{
if( nJob + 10 == m_nJob )
return TRUE;
}
}
if( IsHero()) // ·¹º§ÀÌ ¾ÈµÇ¸é ¸øÂü.
{
if( nJob < MAX_EXPERT )
{
if( nJob * 2 + 22 == m_nJob || nJob * 2 + 23 == m_nJob )
return TRUE;
}
else if( nJob < MAX_PROFESSIONAL )
{
if( nJob + 18 == m_nJob )
return TRUE;
}
#if __VER >= 14 // __NEW_ITEM_LIMIT_LEVEL
else if( nJob < MAX_MASTER ) // Hero´Â ¸¶½ºÅÍ ¹«±â¸¦ ÀåÂøÇÒ ¼ö ÀÖ´Ù.
{
if( nJob + 8 == m_nJob )
return TRUE;
}
#endif // __NEW_ITEM_LIMIT_LEVEL
}
#ifdef __3RD_LEGEND16
if( IsLegendHero()) // ·¹º§ÀÌ ¾ÈµÇ¸é ¸øÂü.
{
if( nJob < MAX_EXPERT )
{
if( nJob * 2 + 30 == m_nJob || nJob * 2 + 31 == m_nJob )
return TRUE;
}
else if( nJob < MAX_PROFESSIONAL )
{
if( nJob + 26 == m_nJob )
return TRUE;
}
else if( nJob < MAX_MASTER ) // Hero´Â ¸¶½ºÅÍ ¹«±â¸¦ ÀåÂøÇÒ ¼ö ÀÖ´Ù.
{
if( nJob + 16 == m_nJob )
return TRUE;
}
else if( nJob < MAX_HERO ) // Hero´Â ¸¶½ºÅÍ ¹«±â¸¦ ÀåÂøÇÒ ¼ö ÀÖ´Ù.
{
if( nJob + 8 == m_nJob )
return TRUE;
}
}
#endif
#ifdef __AZURE_CLASS
if( IsAzureLegendHero()) // ·¹º§ÀÌ ¾ÈµÇ¸é ¸øÂü.
{
if( nJob < MAX_EXPERT )
{
if( nJob * 2 + 38 == m_nJob || nJob * 2 + 39 == m_nJob )
return TRUE;
}
else if( nJob < MAX_PROFESSIONAL )
{
if( nJob + 38 == m_nJob )
return TRUE;
}
else if( nJob < MAX_MASTER ) // Hero´Â ¸¶½ºÅÍ ¹«±â¸¦ ÀåÂøÇÒ ¼ö ÀÖ´Ù.
{
if( nJob + 26 == m_nJob )
return TRUE;
}
else if( nJob < MAX_HERO ) // Hero´Â ¸¶½ºÅÍ ¹«±â¸¦ ÀåÂøÇÒ ¼ö ÀÖ´Ù.
{
if( nJob + 16 == m_nJob )
return TRUE;
}
else if( nJob < MAX_AZURE_JOB ) // Hero´Â ¸¶½ºÅÍ ¹«±â¸¦ ÀåÂøÇÒ ¼ö ÀÖ´Ù.
{
if( nJob + 8 == m_nJob )
return TRUE;
}
}
#endif
#endif //__LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
return FALSE;
}
[/code]Code:#ifndef __DEFINE_JOB
#define __DEFINE_JOB
#define JTYPE_BASE 0
#define JTYPE_EXPERT 1
#define JTYPE_PRO 2
#define JTYPE_TROUPE 3
#define JTYPE_COMMON 4
#define JTYPE_MASTER 5
#define JTYPE_HERO 6
#ifdef __3RD_LEGEND16
#define JTYPE_LEGEND_HERO 7
#endif // __3RD_LEGEND16
#ifdef __AZURE_CLASS
#define JTYPE_AZURE_JOB 8
#endif //__AZURE_CLASS
#define MAX_JOB_SKILL 3
#define MAX_EXPERT_SKILL 20
#define MAX_PRO_SKILL 20
#define MAX_TROUPE_SKILL 9
#define MAX_MASTER_SKILL 1
#define MAX_HERO_SKILL 1
#ifdef __3RD_LEGEND16
#define MAX_LEGEND_HERO_SKILL 6
#endif // __3RD_LEGEND16
#ifdef __AZURE_CLASS
#define MAX_AZURE_JOB_SKILL 6
#endif//__AZURE_CLASS
#define MAX_JOB_LEVEL 15
#define MAX_EXP_LEVEL 45
#define MAX_PRO_LEVEL 30
#define MAX_TROUPE_LEVEL 1
#ifdef __AZURE_CLASS
#define MAX_AZURE_JOB_LEVEL 140
#endif
#if __VER >= 15 // __HERO129_VER15 // 15Â÷ È÷¾î·Î ·¹º§È®Àå
#ifdef __3RD_LEGEND16
#define MAX_3RD_LEGEND_LEVEL 139
#define MAX_LEGEND_LEVEL 130
#else // __3RD_LEGEND16
#define MAX_LEGEND_LEVEL 129
#endif // __3RD_LEGEND16
#define MAX_MONSTER_LEVEL 160
#else // 15Â÷ È÷¾î·Î ·¹º§È®Àå
#define MAX_LEGEND_LEVEL 121
#endif // 15Â÷ È÷¾î·Î ·¹º§È®Àå
#if __VER >= 7 //__Y_MAX_LEVEL_8
#define MAX_LEVEL 120
#else //__Y_MAX_LEVEL_8
#define MAX_LEVEL 150
#endif //__Y_MAX_LEVEL_8
//-------------------------------------------------------
// Á÷¾÷ ¹øÈ£¸¦ ¸¶À½´ë·Î ¹Ù²Ù¸é ¾ÈµË´Ï´Ù.
// ¹Ù²Ù°í ½ÍÀ¸½Ã¸é seghope »ó´ãÀ».. ¤»¤»
//-------------------------------------------------------
// Job
#define JOB_VAGRANT 0
#define MAX_JOBBASE 1
// Expert
#define JOB_MERCENARY 1 // ±âº» Á÷¾÷µé
#define JOB_ACROBAT 2
#define JOB_ASSIST 3
#define JOB_MAGICIAN 4
#define JOB_PUPPETEER 5
#define MAX_EXPERT 6
// Professional
#define JOB_KNIGHT 6
#define JOB_BLADE 7
#define JOB_JESTER 8
#define JOB_RANGER 9
#define JOB_RINGMASTER 10
#define JOB_BILLPOSTER 11
#define JOB_PSYCHIKEEPER 12
#define JOB_ELEMENTOR 13
#define JOB_GATEKEEPER 14
#define JOB_DOPPLER 15
#define MAX_PROFESSIONAL 16
// Master
#define JOB_KNIGHT_MASTER 16
#define JOB_BLADE_MASTER 17
#define JOB_JESTER_MASTER 18
#define JOB_RANGER_MASTER 19
#define JOB_RINGMASTER_MASTER 20
#define JOB_BILLPOSTER_MASTER 21
#define JOB_PSYCHIKEEPER_MASTER 22
#define JOB_ELEMENTOR_MASTER 23
#define MAX_MASTER 24
// Hero
#define JOB_KNIGHT_HERO 24
#define JOB_BLADE_HERO 25
#define JOB_JESTER_HERO 26
#define JOB_RANGER_HERO 27
#define JOB_RINGMASTER_HERO 28
#define JOB_BILLPOSTER_HERO 29
#define JOB_PSYCHIKEEPER_HERO 30
#define JOB_ELEMENTOR_HERO 31
#define MAX_HERO 32
#ifdef __3RD_LEGEND16
// 3Â÷ Á÷¾÷
#define JOB_LORDTEMPLER_HERO 32
#define JOB_STORMBLADE_HERO 33
#define JOB_WINDLURKER_HERO 34
#define JOB_CRACKSHOOTER_HERO 35
#define JOB_FLORIST_HERO 36
#define JOB_FORCEMASTER_HERO 37
#define JOB_MENTALIST_HERO 38
#define JOB_ELEMENTORLORD_HERO 39
#define MAX_LEGEND_HERO 40
#endif // __3RD_LEGEND16
#ifdef __AZURE_CLASS
#define JOB_PALIDIN_HERO 40
#define JOB_SAMURAI_HERO 41
#define JOB_NINJA_HERO 42
#define JOB_TAMER_HERO 43
#define JOB_DANCER_HERO 44
#define JOB_MONK_HERO 45
#define JOB_DEATHKNIGHT_HERO 46
#define JOB_MAGICKNIGHT_HERO 47
#define MAX_AZURE_JOB 48
#endif //__AZURE_CLASS
//
#if __VER >= 16
#ifdef __AZURE_CLASS
#define MAX_JOB 48
#endif
#elif __VER >= 10 //#ifdef __LEGEND // 9Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
#ifdef __3RD_LEGEND16
#define MAX_JOB 40
#else // __3RD_LEGEND16
#define MAX_JOB 32
#endif // __3RD_LEGEND16
#else //__LEGEND // 9Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
#define MAX_JOB 16
#endif //__LEGEND // 9Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
#define JOB_ALL MAX_JOB
what i am trying to do is add new third 2nd classes so there more option instead of just the 1 class but im have a problem right there everything else works just fine but im haveing a problem with getting them to link to there old classes n use there old skills n weapons
Has anybody already fixed the missing npc's? D;
That is not (correct) english.
Besides, aren't the npc's a part of character.inc? You can put them on and off with SetOutput "FALSE"/"TRUE" or something like that. If you are having errors using the shops, edit 2 files in the _Interface section. 1 of em was WndNotify.cpp if i am not mistaken.
Silent