- Joined
- May 22, 2010
- Messages
- 224
- Reaction score
- 22
Okay xP , well i thought i fixed skills but i didnt q.q wrecking my head @ wndskillinventory once again q.q .
Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!
Join Today!Okay xP , well i thought i fixed skills but i didnt q.q wrecking my head @ wndskillinventory once again q.q .
Offtopic :Clean source by spikens , could you tell me where to look to fix skill bugs? i got no ideas :S
I believe the skills are in WndField.cpp and WndField.h in your /_Interface folder.
yeah right
#if __VER >= 10 // __CSC_VER9_1
//Master SkillÀº ½ÃÀÛºÎÅÍ 1LvÀ̹ǷΠ¹è°æ À̹ÌÁö Á¦¿Ü.
switch( m_nJob )
case JOB_RANGER_HERO:
m_strHeroSkilBg = "Back_Hero_RagHawkeye.tga";
break;
case JOB_LORDTEMPLER_HERO:
m_strHeroSkilBg = "Back_Hero_KntDrawing.tga";
break;
case JOB_STORMBLADE_HERO:
m_strHeroSkilBg = "Back_Hero_BldDefence.tga";
break;
case JOB_FORCEMASTER_HERO:
m_strHeroSkilBg = "Back_Hero_BilDisEnchant.tga";
break;
case JOB_FLORIST_HERO:
m_strHeroSkilBg = "Back_Hero_RigReturn.tga";
break;
case JOB_ELEMENTORLORD_HERO:
m_strHeroSkilBg = "Back_Hero_EleCursemind.tga";
break;
case JOB_MENTALIST_HERO:
m_strHeroSkilBg = "Back_Hero_PsyStone.tga";
break;
case JOB_WINDLURKER_HERO:
m_strHeroSkilBg = "Back_Hero_JstSilence.tga";
break;
case JOB_CRACKSHOOTER_HERO:
m_strHeroSkilBg = "Back_Hero_RagHawkeye.tga";
break;
#if __VER >= 10 // __CSC_VER9_1
case JOB_RANGER_MASTER:
case JOB_RANGER_HERO:
#endif //__CSC_VER9_1
m_nCount = 20;
strTex[0] = "Back_Acr.tga";
strTex[1] = "Back_Rag.TGA";//"Back_Lower.TGA";
lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName );
lpWndStatic2->SetTitle( prj.m_aJob[JOB_ACROBAT].szName );
lpWndStatic3->SetTitle( prj.m_aJob[JOB_RANGER].szName );
break;
case JOB_LORDTEMPLER_HERO:
m_nCount = 26;
strTex[0] = "Back_Me.TGA";
strTex[1] = "Back_Night.TGA";
lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName );
lpWndStatic2->SetTitle( prj.m_aJob[JOB_MERCENARY].szName );
lpWndStatic3->SetTitle( prj.m_aJob[JOB_KNIGHT].szName );
lpWndStatic4->SetTitle( prj.m_aJob[JOB_LORDTEMPLER_HERO].szName );
break;
case JOB_STORMBLADE_HERO:
m_nCount = 26;
strTex[0] = "Back_Me.TGA";
strTex[1] = "Back_Blade.TGA";
lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName );
lpWndStatic2->SetTitle( prj.m_aJob[JOB_MERCENARY].szName );
lpWndStatic3->SetTitle( prj.m_aJob[JOB_BLADE].szName );
lpWndStatic4->SetTitle( prj.m_aJob[JOB_STORMBLADE_HERO].szName );
break;
case JOB_FORCEMASTER_HERO:
m_nCount = 28;
strTex[0] = "Back_As.TGA";
strTex[1] = "Back_Bill.TGA";
lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName );
lpWndStatic2->SetTitle( prj.m_aJob[JOB_ASSIST].szName );
lpWndStatic3->SetTitle( prj.m_aJob[JOB_BILLPOSTER].szName );
lpWndStatic4->SetTitle( prj.m_aJob[JOB_FORCEMASTER_HERO].szName );
break;
case JOB_FLORIST_HERO:
m_nCount = 28;
strTex[0] = "Back_As.TGA";
strTex[1] = "Back_Ring.TGA";
lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName );
lpWndStatic2->SetTitle( prj.m_aJob[JOB_ASSIST].szName );
lpWndStatic3->SetTitle( prj.m_aJob[JOB_RINGMASTER].szName );
lpWndStatic4->SetTitle( prj.m_aJob[JOB_FLORIST_HERO].szName );
break;
case JOB_ELEMENTORLORD_HERO:
m_nCount = 39;
strTex[0] = "Back_Ma.TGA";
strTex[1] = "Back_Ele.TGA";
lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName );
lpWndStatic2->SetTitle( prj.m_aJob[JOB_MAGICIAN].szName );
lpWndStatic3->SetTitle( prj.m_aJob[JOB_ELEMENTOR].szName );
lpWndStatic4->SetTitle( prj.m_aJob[JOB_ELEMENTORLORD_HERO].szName );
break;
case JOB_MENTALIST_HERO:
m_nCount = 28;
strTex[0] = "Back_Ma.TGA";
strTex[1] = "Back_Psy.TGA";
lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName );
lpWndStatic2->SetTitle( prj.m_aJob[JOB_MAGICIAN].szName );
lpWndStatic3->SetTitle( prj.m_aJob[JOB_PSYCHIKEEPER].szName );
lpWndStatic4->SetTitle( prj.m_aJob[JOB_MENTALIST_HERO].szName );
break;
case JOB_WINDLURKER_HERO :
m_nCount = 20;
strTex[0] = "Back_Acr.tga";
strTex[1] = "Back_Jst.TGA";//"Back_Lower.TGA";
lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName );
lpWndStatic2->SetTitle( prj.m_aJob[JOB_ACROBAT].szName );
lpWndStatic3->SetTitle( prj.m_aJob[JOB_JESTER].szName );
lpWndStatic4->SetTitle( prj.m_aJob[JOB_WINDLURKER_HERO].szName );
break;
case JOB_CRACKSHOOTER_HERO:
m_nCount = 20;
strTex[0] = "Back_Acr.tga";
strTex[1] = "Back_Rag.TGA";//"Back_Lower.TGA";
lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName );
lpWndStatic2->SetTitle( prj.m_aJob[JOB_ACROBAT].szName );
lpWndStatic4->SetTitle( prj.m_aJob[JOB_RANGER].szName );
break;
CWndGuildCombatRank_Class* CWndGuildCombatRank_Person::__GetJobKindWnd(int nJob)
{
switch(nJob)
case JOB_MERCENARY:
case JOB_KNIGHT:
case JOB_BLADE:
case JOB_KNIGHT_MASTER:
case JOB_BLADE_MASTER:
case JOB_KNIGHT_HERO:
case JOB_BLADE_HERO:
case JOB_LORDTEMPLER_HERO:
case JOB_STORMBLADE_HERO:
return &m_WndGuildCombatTabClass_Mer;
break;
case JOB_ACROBAT:
case JOB_JESTER:
case JOB_RANGER:
case JOB_JESTER_MASTER:
case JOB_RANGER_MASTER:
case JOB_JESTER_HERO:
case JOB_RANGER_HERO:
case JOB_WINDLURKER_HERO:
case JOB_CRACKSHOOTER_HERO:
return &m_WndGuildCombatTabClass_Acr;
break;
case JOB_ASSIST:
case JOB_RINGMASTER:
case JOB_BILLPOSTER:
case JOB_RINGMASTER_MASTER:
case JOB_BILLPOSTER_MASTER:
case JOB_RINGMASTER_HERO:
case JOB_BILLPOSTER_HERO:
case JOB_FLORIST_HERO:
case JOB_FORCEMASTER_HERO:
return &m_WndGuildCombatTabClass_Ass;
break;
case JOB_MAGICIAN:
case JOB_PSYCHIKEEPER:
case JOB_ELEMENTOR:
case JOB_PSYCHIKEEPER_MASTER:
case JOB_ELEMENTOR_MASTER:
case JOB_PSYCHIKEEPER_HERO:
case JOB_ELEMENTOR_HERO:
case JOB_MENTALIST_HERO:
case JOB_ELEMENTORLORD_HERO:
return &m_WndGuildCombatTabClass_Mag;
break;
Okay thanks , ill try it in sec . If it works ima like you so you know it works :3 and the last one is about guild ranking so it could be done laterIn WndField.cpp, look for this:
Code:#if __VER >= 10 // __CSC_VER9_1 //Master SkillÀº ½ÃÀÛºÎÅÍ 1LvÀ̹ǷΠ¹è°æ À̹ÌÁö Á¦¿Ü. switch( m_nJob )
Right below:
I believe there should be 3rd Jobs right after so you would put this:Code:case JOB_RANGER_HERO: m_strHeroSkilBg = "Back_Hero_RagHawkeye.tga"; break;
Code:case JOB_LORDTEMPLER_HERO: m_strHeroSkilBg = "Back_Hero_KntDrawing.tga"; break; case JOB_STORMBLADE_HERO: m_strHeroSkilBg = "Back_Hero_BldDefence.tga"; break; case JOB_FORCEMASTER_HERO: m_strHeroSkilBg = "Back_Hero_BilDisEnchant.tga"; break; case JOB_FLORIST_HERO: m_strHeroSkilBg = "Back_Hero_RigReturn.tga"; break; case JOB_ELEMENTORLORD_HERO: m_strHeroSkilBg = "Back_Hero_EleCursemind.tga"; break; case JOB_MENTALIST_HERO: m_strHeroSkilBg = "Back_Hero_PsyStone.tga"; break; case JOB_WINDLURKER_HERO: m_strHeroSkilBg = "Back_Hero_JstSilence.tga"; break; case JOB_CRACKSHOOTER_HERO: m_strHeroSkilBg = "Back_Hero_RagHawkeye.tga"; break;
Then look forCode:#if __VER >= 10 // __CSC_VER9_1 case JOB_RANGER_MASTER: case JOB_RANGER_HERO: #endif //__CSC_VER9_1 m_nCount = 20; strTex[0] = "Back_Acr.tga"; strTex[1] = "Back_Rag.TGA";//"Back_Lower.TGA"; lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName ); lpWndStatic2->SetTitle( prj.m_aJob[JOB_ACROBAT].szName ); lpWndStatic3->SetTitle( prj.m_aJob[JOB_RANGER].szName ); break;
Right after that you need to add the 3rd Jobs again:
Code:case JOB_LORDTEMPLER_HERO: m_nCount = 26; strTex[0] = "Back_Me.TGA"; strTex[1] = "Back_Night.TGA"; lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName ); lpWndStatic2->SetTitle( prj.m_aJob[JOB_MERCENARY].szName ); lpWndStatic3->SetTitle( prj.m_aJob[JOB_KNIGHT].szName ); lpWndStatic4->SetTitle( prj.m_aJob[JOB_LORDTEMPLER_HERO].szName ); break; case JOB_STORMBLADE_HERO: m_nCount = 26; strTex[0] = "Back_Me.TGA"; strTex[1] = "Back_Blade.TGA"; lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName ); lpWndStatic2->SetTitle( prj.m_aJob[JOB_MERCENARY].szName ); lpWndStatic3->SetTitle( prj.m_aJob[JOB_BLADE].szName ); lpWndStatic4->SetTitle( prj.m_aJob[JOB_STORMBLADE_HERO].szName ); break; case JOB_FORCEMASTER_HERO: m_nCount = 28; strTex[0] = "Back_As.TGA"; strTex[1] = "Back_Bill.TGA"; lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName ); lpWndStatic2->SetTitle( prj.m_aJob[JOB_ASSIST].szName ); lpWndStatic3->SetTitle( prj.m_aJob[JOB_BILLPOSTER].szName ); lpWndStatic4->SetTitle( prj.m_aJob[JOB_FORCEMASTER_HERO].szName ); break; case JOB_FLORIST_HERO: m_nCount = 28; strTex[0] = "Back_As.TGA"; strTex[1] = "Back_Ring.TGA"; lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName ); lpWndStatic2->SetTitle( prj.m_aJob[JOB_ASSIST].szName ); lpWndStatic3->SetTitle( prj.m_aJob[JOB_RINGMASTER].szName ); lpWndStatic4->SetTitle( prj.m_aJob[JOB_FLORIST_HERO].szName ); break; case JOB_ELEMENTORLORD_HERO: m_nCount = 39; strTex[0] = "Back_Ma.TGA"; strTex[1] = "Back_Ele.TGA"; lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName ); lpWndStatic2->SetTitle( prj.m_aJob[JOB_MAGICIAN].szName ); lpWndStatic3->SetTitle( prj.m_aJob[JOB_ELEMENTOR].szName ); lpWndStatic4->SetTitle( prj.m_aJob[JOB_ELEMENTORLORD_HERO].szName ); break; case JOB_MENTALIST_HERO: m_nCount = 28; strTex[0] = "Back_Ma.TGA"; strTex[1] = "Back_Psy.TGA"; lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName ); lpWndStatic2->SetTitle( prj.m_aJob[JOB_MAGICIAN].szName ); lpWndStatic3->SetTitle( prj.m_aJob[JOB_PSYCHIKEEPER].szName ); lpWndStatic4->SetTitle( prj.m_aJob[JOB_MENTALIST_HERO].szName ); break; case JOB_WINDLURKER_HERO : m_nCount = 20; strTex[0] = "Back_Acr.tga"; strTex[1] = "Back_Jst.TGA";//"Back_Lower.TGA"; lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName ); lpWndStatic2->SetTitle( prj.m_aJob[JOB_ACROBAT].szName ); lpWndStatic3->SetTitle( prj.m_aJob[JOB_JESTER].szName ); lpWndStatic4->SetTitle( prj.m_aJob[JOB_WINDLURKER_HERO].szName ); break; case JOB_CRACKSHOOTER_HERO: m_nCount = 20; strTex[0] = "Back_Acr.tga"; strTex[1] = "Back_Rag.TGA";//"Back_Lower.TGA"; lpWndStatic1->SetTitle( prj.m_aJob[JOB_VAGRANT].szName ); lpWndStatic2->SetTitle( prj.m_aJob[JOB_ACROBAT].szName ); lpWndStatic4->SetTitle( prj.m_aJob[JOB_RANGER].szName ); break;
Then look for:
Code:CWndGuildCombatRank_Class* CWndGuildCombatRank_Person::__GetJobKindWnd(int nJob) { switch(nJob)
You need to add the 3rd Jobs again there so the entire thing should look like:
Code:case JOB_MERCENARY: case JOB_KNIGHT: case JOB_BLADE: case JOB_KNIGHT_MASTER: case JOB_BLADE_MASTER: case JOB_KNIGHT_HERO: case JOB_BLADE_HERO: case JOB_LORDTEMPLER_HERO: case JOB_STORMBLADE_HERO: return &m_WndGuildCombatTabClass_Mer; break; case JOB_ACROBAT: case JOB_JESTER: case JOB_RANGER: case JOB_JESTER_MASTER: case JOB_RANGER_MASTER: case JOB_JESTER_HERO: case JOB_RANGER_HERO: case JOB_WINDLURKER_HERO: case JOB_CRACKSHOOTER_HERO: return &m_WndGuildCombatTabClass_Acr; break; case JOB_ASSIST: case JOB_RINGMASTER: case JOB_BILLPOSTER: case JOB_RINGMASTER_MASTER: case JOB_BILLPOSTER_MASTER: case JOB_RINGMASTER_HERO: case JOB_BILLPOSTER_HERO: case JOB_FLORIST_HERO: case JOB_FORCEMASTER_HERO: return &m_WndGuildCombatTabClass_Ass; break; case JOB_MAGICIAN: case JOB_PSYCHIKEEPER: case JOB_ELEMENTOR: case JOB_PSYCHIKEEPER_MASTER: case JOB_ELEMENTOR_MASTER: case JOB_PSYCHIKEEPER_HERO: case JOB_ELEMENTOR_HERO: case JOB_MENTALIST_HERO: case JOB_ELEMENTORLORD_HERO: return &m_WndGuildCombatTabClass_Mag; break;
NOTE: I'm not entirely sure if this works so try it at your own risk.
the 3d jod is complete except quest
Well skills are working untill changing to 3rd job. And well /skilllevelAll doesn' t work right , it only lvls vagrant skills and blocks rest of the skills.
Virtuos = this one. Everything is exactly same as there. I might try hes skill window and anyway /skilllevelAll doesn't work q.q xD