Hi Emistry, I encountered an issue with regards your script. When set to "Demi-Human", OnPCKillEvent does not trigger but other race's works fine. Thank you!
Attached is the script that I am currently using
prontera,146,166,6 script Bergrand 4_M_CRU_CRUA,{
set .@gmlevel,getgmlevel();
do{
set .@menu,select("^0055FFROTD Information^000000",
( .@gmlevel < .gm_level )?"":"^FF0000[GM]^000000Set a New Monster's Race",
( .@gmlevel < .gm_level )?"":"^FF0000[GM]^000000Set EXP Bonus",
( .@gmlevel < .gm_level )?"":"^FF0000[GM]^000000Set Item / Zeny Bonus",
"Close" );
switch( .@menu ) {
case 1:
mes "^FF0000ROTD^000000 refers to ^0000FFRace of the Day^000000";
mes "In other words, it means that every monster that you kill indicated on the pub, will grant you ^0055FFBonus EXP^000000.";
next;
mes "[ ^0055FFROTD Information^000000 ]";
mes "Today's RACE: ^0000FF"+.rotd$[.today_rotd]+"^000000";
if ( .rotd_exp_bonus ) mes " ~ +^777777"+.rotd_exp_bonus+"% bonus EXP^000000";
if ( ( .rotd_item_amount && .rotd_item_rate ) || .rotd_zeny || .rotd_exp_bonus ) {
mes " ";
mes "Reward : "+( ( .rotd_item_rate )? .rotd_item_rate+"%":"" )+" chance ";
if ( .rotd_item_amount && .rotd_item_rate ) mes " ~ ^777777"+.rotd_item_amount+" x "+getitemname( .rotd_item_id )+"^000000";
if ( .rotd_zeny ) mes " ~ ^777777"+.rotd_zeny+" Zeny^000000";
}
break;
case 2:
mes "Select new race.";
set .today_rotd,select( .rotd_menu$ ) - 1;
if ( .today_rotd >= .rotd_size ) set .today_rotd,rand( .rotd_size );
mes "New Race : ^777777"+.rotd$[.today_rotd]+"^000000";
delwaitingroom;
waitingroom "[ROTD] "+.rotd$[.today_rotd]+" ",0;
break;
case 3:
mes "Set new exp bonus. (%)";
input .rotd_exp_bonus,0,100;
if ( .rotd_exp_bonus ) mes "ROTD EXP : "+.rotd_exp_bonus+" %";
break;
case 4:
mes "Set ROTD Bonus:";
mes "Insert Zeny Bonus:";
input .@zeny;
mes "Insert Item ID:";
do{
input .@item,0,32767;
if ( !.@item ) close;
}while( getitemname( .@item ) == "null" );
mes "Enter amount:";
input .@amount,0,30000;
mes "Enter Rate to gain:";
input .@rate,0,100;
if ( .@amount && .@rate ) {
next;
mes "Updated item bonus : ( "+.@rate+"% )";
mes "^777777"+.@amount+" x "+getitemname( .@item )+"^000000";
mes "^777777"+.@zeny+" Zeny^000000";
if ( select( "Confirm","Cancel" ) == 1 ) {
set .rotd_item_id,.@item;
set .rotd_item_amount,.@amount;
set .rotd_item_rate,.@rate;
set .rotd_zeny,.@zeny;
mes "Updated.";
}
}
default: close;
}
next;
}while( .@menu != 5 );
close;
OnInit:
// min gm level
set .gm_level,90;
// monster race list
setarray .rotd$[0],
"Formless",
"Undead",
"Brute",
"Plant",
"Insect",
"Demi-human",
"Fish";
set .rotd_size,getarraysize( .rotd$ );
for( set .@i,0; .@i < .rotd_size; set .@i,.@i + 1 )
set .rotd_menu$,.rotd_menu$ + .rotd$[.@i] +":";
set .rotd_menu$,.rotd_menu$ + "^0055FFRandom Race^000000";
// min party member lv to gain exp
set .party_level_range,10;
// @rotd command
bindatcmd "rotd",strnpcinfo(3)+"::OnCheck";
// daily reset
OnClock0000:
set .today_rotd,rand( .rotd_size );
set .rotd_exp_bonus,rand( 15,25 );
delwaitingroom;
waitingroom "[ROTD] "+.rotd$[.today_rotd]+" ",0;
announce "(ROTD Officer) Bergrand: Our new Race of the Day is "+.rotd$[.today_rotd]+", ROK ON!",bc_all,0xD6EAF8;
end;
OnClock0200:
announce "(ROTD Officer) Bergrand: Just to inform all of you, our Race of the Day is "+.rotd$[.today_rotd]+". ROK ON!",bc_all,0xD6EAF8;
end;
OnClock0400:
announce "(ROTD Officer) Bergrand: Just to inform all of you, our Race of the Day is "+.rotd$[.today_rotd]+". ROK ON!",bc_all,0xD6EAF8;
end;
OnClock0600:
announce "(ROTD Officer) Bergrand: Just to inform all of you, our Race of the Day is "+.rotd$[.today_rotd]+". ROK ON!",bc_all,0xD6EAF8;
end;
OnClock0800:
announce "(ROTD Officer) Bergrand: Just to inform all of you, our Race of the Day is "+.rotd$[.today_rotd]+". ROK ON!",bc_all,0xD6EAF8;
end;
OnClock1000:
announce "(ROTD Officer) Bergrand: Just to inform all of you, our Race of the Day is "+.rotd$[.today_rotd]+". ROK ON!",bc_all,0xD6EAF8;
end;
OnClock1200:
announce "(ROTD Officer) Bergrand: Just to inform all of you, our Race of the Day is "+.rotd$[.today_rotd]+". ROK ON!",bc_all,0xD6EAF8;
end;
OnClock1400:
announce "(ROTD Officer) Bergrand: Just to inform all of you, our Race of the Day is "+.rotd$[.today_rotd]+". ROK ON!",bc_all,0xD6EAF8;
end;
OnClock1600:
announce "(ROTD Officer) Bergrand: Just to inform all of you, our Race of the Day is "+.rotd$[.today_rotd]+". ROK ON!",bc_all,0xD6EAF8;
end;
OnClock1800:
announce "(ROTD Officer) Bergrand: Just to inform all of you, our Race of the Day is "+.rotd$[.today_rotd]+". ROK ON!",bc_all,0xD6EAF8;
end;
OnClock2000:
announce "(ROTD Officer) Bergrand: Just to inform all of you, our Race of the Day is "+.rotd$[.today_rotd]+". ROK ON!",bc_all,0xD6EAF8;
end;
OnClock2200:
announce "(ROTD Officer) Bergrand: Just to inform all of you, our Race of the Day is "+.rotd$[.today_rotd]+". ROK ON!",bc_all,0xD6EAF8;
end;
// ROTD command check
OnCheck:
mes "[ ^0055FFROTD Information^000000 ]";
mes "Today's RACE: ^A93226"+.rotd$[.today_rotd]+"^000000";
mes "+^777777"+.rotd_exp_bonus+"% bonus EXP^000000";
mes "Kindly visit Bergrand for more info. Happy leveling!";
mes " ";
mes "Celestine";
close;
end;
OnNPCKillEvent:
if ( getmonsterinfo( killedrid,MOB_RACE ) == .today_rotd ) {
set .@partyid,getcharid(1);
set .@mob_base_exp,(( getmonsterinfo( killedrid,MOB_BASEEXP ) / 100 ) * .rotd_exp_bonus );
set .@mob_job_exp,(( getmonsterinfo( killedrid,MOB_JOBEXP ) / 100 ) * .rotd_exp_bonus );
if ( .@partyid ) {
set .@aid,getcharid(3);
set .@baselevel,BaseLevel;
set .@map$,strcharinfo(3);
getpartymember .@partyid,1;
getpartymember .@partyid,2;
while( .@i < $@partymembercount ) {
if ( isloggedin( $@partymemberaid[.@i],$@partymembercid[.@i] ) )
if ( attachrid( $@partymemberaid[.@i] ) )
if ( strcharinfo(3) == .@map$ && ( BaseLevel - .@baselevel ) <= .party_level_range && ( BaseLevel - .@baselevel ) >= ~.party_level_range && Hp >= 1 ) {
set BaseExp,( BaseExp + .@mob_base_exp );
set JobExp,( JobExp + .@mob_job_exp );
dispbottom "[ ROTD Party Bonus ] : Additional "+.@mob_base_exp+" Base EXP | "+.@mob_job_exp+" Job EXP gained.";
}
set .@i,.@i + 1;
}
attachrid( .@aid );
}
else {
set BaseExp,( BaseExp + .@mob_base_exp );
set JobExp,( JobExp + .@mob_job_exp );
dispbottom "[ ROTD Solo Bonus ] : Additional "+.@mob_base_exp+" Base EXP | "+.@mob_job_exp+" Job EXP gained.";
}
if ( rand( 100 ) < .rotd_item_rate && .rotd_zeny )
set Zeny,Zeny + rand( .rotd_zeny );
if ( rand( 100 ) < .rotd_item_rate && .rotd_item_amount )
getitem .rotd_item_id,rand( .rotd_item_amount ),.@aid;
}
end;
}