Originally posted by [b]pakpil[/b]
http://www.eathena.ws/board/index.php?autocom=bugtracker&showbug=943
First of all:
This is the code of Job_Change function:
CODE
function script Job_Change {
if (Upper<2)
jobchange getarg(0); // Common jobchange
else
jobchange getarg(0) + Job_Baby; //Change Job For Baby Class
logmes "CLASS CHANGE: " +strcharinfo(0)+ " become a "+jobname(Class);
return;
}
These are Jobs constants:
[codebox]Job_Novice 0
Job_Swordman 1
Job_Mage 2
Job_Archer 3
Job_Acolyte 4
Job_Merchant 5
Job_Thief 6
Job_Knight 7
Job_Priest 8
Job_Wizard 9
Job_Blacksmith 10
Job_Hunter 11
Job_Assassin 12
Job_Knight2 13
Job_Crusader 14
Job_Monk 15
Job_Sage 16
Job_Rogue 17
Job_Alchem 18
Job_Alchemist 18
Job_Bard 19
Job_Dancer 20
Job_Crusader2 21
Job_Wedding 22
Job_SuperNovice 23
Job_Gunslinger 24
Job_Ninja 25
Job_Xmas 26
[...]
Job_Baby 4023
Job_Baby_Swordman 4024
Job_Baby_Mage 4025
Job_Baby_Archer 4026
Job_Baby_Acolyte 4027
Job_Baby_Merchant 4028
Job_Baby_Thief 4029
Job_Baby_Knight 4030
Job_Baby_Priest 4031
Job_Baby_Wizard 4032
Job_Baby_Blacksmith 4033
Job_Baby_Hunter 4034
Job_Baby_Assassin 4035
Job_Baby_Knight2 4036
Job_Baby_Crusader 4037
Job_Baby_Monk 4038
Job_Baby_Sage 4039
Job_Baby_Rogue 4040
Job_Baby_Alchem 4041
Job_Baby_Alchemist 4041
Job_Baby_Bard 4042
Job_Baby_Dancer 4043
Job_Baby_Crusader2 4044
Job_Super_Baby 4045[/codebox]
Well... when Job_Change function is called by job_changer or job quest, this function recive the job constant as data.
if you want to change to baby class:
Job_Swordman 1 -> Job_Baby_Swordman 4024 = jobchange getarg(0) + Job_Baby; //Change Job For Baby Class
then
1 + 4023 = 4024 Its OK
BUT:
When you go to change to Super Baby you get:
Job_SuperNovice 23 -> Job_Super_Baby 4045 = jobchange getarg(0) + Job_Baby; //Change Job For Baby Class
then
23 + 4023 = 4046 Its No OK. You dont change to Super Baby Novice.
I have solved this problem using something like this:
CODE
function script Job_Change {
if (Upper<2)
jobchange getarg(0); // Common jobchange
else {
if(getarg(0) == Job_SuperNovice)
jobchange getarg(0) + Job_Baby - 1; //Change Job For Super Baby Class
else
jobchange getarg(0) + Job_Baby; //Change Job For Baby Class
}
logmes "CLASS CHANGE: " +strcharinfo(0)+ " become a "+jobname(Class);
return;
}
But, Would it be necessary to review these constants?
This post has been edited by pakpil: Feb 8 2008, 03:10 PM