Jump to content
  • 0
Sign in to follow this  
Cardinale

xp rotation system by race

Question

Good evening, someone could kindly help me to make this npc split the bonus xp to members of a PT

 

It works normally, the player gains the xP bonus, but when in a group, only those who killed the mob get the experience gained

prontera,170,187,2	script	EventoXP	767,{
if(getgmlevel() == 99){
while(1){
	mes "^FF0000ROTD^000000 refer to ^0000FFRace of the Day^000000";
mes "In another word, it mean that the ^FF0000Monster's Race^000000 that you killed by day will grant you ^FF0000Extra Bonus EXP / Item / Zeny ^000000.";
next;
mes "[ ^FF0000Today's ROTD^000000 ] = ^0000FF"+.ROTD$[.Race]+"^000000 Race";
mes "^FF0000_____________________________^000000";
mes "Bonus Lists :";
mes "^FF0000@^000000 EXP  = ^0000FF"+( ( !.BonusEXP )?"No":.BonusEXP+" %" )+"^000000 EXP Bonus";
mes "^FF0000@^000000 Zeny = ^0000FF"+( ( !.BonusZeny )?"No":.BonusZeny )+"^000000 Zeny";
mes "^FF0000@^000000 Item = ^0000FF"+( ( !.BonusItemAmount )?"No Items":.BonusItemAmount+" x "+getitemname( .BonusItem ) )+"^000000";
if( .BonusItemAmount ){
    mes "^FF0000@^000000 Rate = ^0000FF"+.BonusRate+"^000000 %";
    mes "^FF0000_____________________________^000000";
    mes "The Amount of Bonus Reward is given ^FF0000Randomly^000000 at a fixed Rate.";
    }
next;
switch(select("^4EEE94ROTD Information^000000",
            ( getgmlevel() < .GMLevel )?"":"^FF0000[GM]^000000Set a New Monster's Race",
            ( getgmlevel() < .GMLevel )?"":"^FF0000[GM]^000000Set EXP Bonus",        
            ( getgmlevel() < .GMLevel )?"":"^FF0000[GM]^000000Set Item / Zeny Bonus")){    
	case 1:
    mes "Today's ROTD has choosen ^0000FF"+.ROTD$[.Race]+"^000000 Race , which will grant you some ^FF0000Extra Bonus EXP^000000.";
    mes "The amount of ^FF0000EXP Bonus^000000 are ^0000FF"+.BonusEXP+" %^000000.";
    next;
    mes "For ^0000FFParty Members^000000 , they will only receive ^FF0000Bonus EXP^000000 if they didnt killed any monster.";
    mes "Besides, they have to stay in the ^FF0000Same Map^000000 in order to get the ^FF0000EXP Bonus^000000.";
    next;
    break;
	case 2:
    mes "Choose ^FF0000Randomly / Manually^000000 ?";
    for( set .@i,0; .@i < getarraysize( .ROTD$ ); set .@i,.@i+1 ){
        mes "[ ^FF0000"+.@i+"^000000. ] ^0000FF"+.ROTD$[.@i]+"^000000 Race";
        }
    message strcharinfo(0),"Input the Number. Choose Random if you want it Randomise a Race for you.";
    input .Race,0,getarraysize( .ROTD$ )-1;
    next;
    if( .Race == getarraysize( .ROTD$ )-1 ){
        set .Race,rand( getarraysize( .ROTD$ )-1 );
    }
    mes "[ ^FF0000ROTD Update^000000 ]";
    mes "[ ^FF0000Updated^000000 ] = ^0000FF"+.ROTD$[.Race]+"^000000 Race";
    mes "[ ^FF0000Bonus EXP^000000 ] = Extra ^0000FF"+.BonusEXP+"^000000 %";
    announce "[ ROTD ] : New Race : "+.ROTD$[.Race]+" with Bonus EXP of "+.BonusEXP+" % ",bc_blue;
    delwaitingroom;
    waitingroom "[ROTD]:"+.ROTD$[.Race]+" ",0;
    next;
    break;
    
case 3:
    mes "Set ^FF0000Random EXP / Manually^000000"; 
    mes "Input 0 for ^0000FFRandom Bonus EXP Rate^000000";
    mes "Input ^FF0000RATE^000000 for ^0000FFManual Bonus EXP Rate^000000";
    mes "^FF0000EXP Range^000000 : 1% ~ 100%";
    mes "Current Rate = [ ^0000FF"+.BonusEXP+"^000000 % ]";
    input .BonusEXP,0,100;
    if( .BonusEXP == 0 ){
    set .BonusEXP,rand( 1,100 );
    }
    next;
    mes "The New EXP Rate is [ ^0000FF"+.BonusEXP+"^000000 % ]";
    announce "[ATENCAO]: Todos os mobs da RACA:["+.ROTD$[.Race]+"] Estao com Bonus de EXP de "+.BonusEXP+" %.",bc_yellow;
    next;
    break;
	case 4:
    mes "You may set a ^FF0000 Item / Zeny Bonus^000000 for the ^0000FFROTD^000000.";
    mes "This will work when you have killed a ^FF0000ROTD's Monster^000000, there will be a chances for Player to gain the ^FF0000Item / Zeny^000000.";
    next;
    mes "Input the ^FF0000Zeny Bonus^000000";
    message strcharinfo(0),"You may input 0 to disable it. [ Use it Wisely ]";
    input .BonusZeny;;
    mes "Input the ^FF0000Item ID^000000";
    do{
        input .BonusItem,0,32767;
    }while( getitemname( .BonusItem ) == "null" );
    mes "Input the ^FF0000Item Bonus Amount^000000";
    mes "Range of Amount = 0 ~ 30,000";
    message strcharinfo(0),"You may input 0 to disable it. [ Use it Wisely ]";
    input .BonusItemAmount,0,30000;
    next;
    mes "^FF0000Rate^000000 to get it ??";
    mes "^FF0000100 = 100%^000000";
    mes "^FF0000 10 =  10%^000000";
    mes "^FF0000  1 =   1%^000000";
    mes "^FF0000  0 = DISABLED^000000";
    input .BonusRate,0,100;
    next;
    mes "[ ^FF0000ROTD Update^000000 ]";
    mes "^0000FFZeny Bonus^000000 : "+.BonusZeny+" Zeny";
    mes "^0000FFItem Bonus^000000 : "+.BonusItemAmount+" x "+getitemname( .BonusItem );
    mes "^0000FFItem Rate^000000  : "+.BonusRate+" %";
    next;
    break;
    }
}
close;
	OnInit:
OnClock0000:
set .GMLevel,80;
setarray .ROTD$[0],
                "Amorfo",
                "Morto-vivo",
                "Bruto",
                "Planta",
                "Inseto",
                "Peixe",
                "Demonio",
                "Humanoide",
                "Anjo",
                "Dragao",
                "Random";
                
set .Race,rand( 10 );
set .BonusEXP,rand( 1,100 );
set .ExpLvlRange,10;
delwaitingroom;
waitingroom "[ROTD]:"+.ROTD$[.Race]+" ",0;
end;
    
OnNPCKillEvent:
if( getmonsterinfo( killedrid,19 ) != .Race  ) end;
if( getcharid(1) ){
set .@Location$,strcharinfo(3);
set .BaseLvl,BaseLevel;
getpartymember getcharid(1),1;
getpartymember getcharid(1),2;
for ( set .@a, 0; .@a < .partymembercount; set .@a, .@a +1 )
    if ( isloggedin( .partymemberaid[.@a] )  )
        attachrid( .partymemberaid[.@a] );
            if( strcharinfo(3) == .@Location$ && ( .BaseLvl - BaseLevel ) <= .ExpLvlRange )
                getexp ( getmonsterinfo( killedrid,3 ) * .BonusEXP / 100 ),( getmonsterinfo( killedrid,4 ) * .BonusEXP / 100 );
}else{
    getexp ( getmonsterinfo( killedrid,3 ) * .BonusEXP / 100 ),( getmonsterinfo( killedrid,4 ) * .BonusEXP / 100 );
	
}
if( rand(100) <= .BonusRate && .BonusItemAmount )
    getitem .BonusItem,rand( 1,.BonusItemAmount );
if( rand(100) <= .BonusRate && .BonusZeny )
    set Zeny,Zeny + rand( 1,.BonusZeny );
end;
}else{
mes "^ff0000[ATENCAO]:^000000";
mes "Todos os mobs da RACA:^000099["+.ROTD$[.Race]+"]^000000";
mes "Estao com Bonus de EXP de "+.BonusEXP+" %.";
close;
}
}

 

Edited by Cardinale

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.