I'm sorry, I made a mistake. Here you go, please upvote my post.
///////////////////////////////////////////////////////
// ___________ _____.__
// \__ ___/__.__.________/ ____\__| ____ ____
// | | < | |\_ __ \ __\| |/ \ / ___\
// | | \___ | | | \/| | | | | \/ /_/ >
// |____| / ____| |__| |__| |__|___| /\___ /
// \/ Scripts \//_____/
//
//=====================================================
// Name: Race to Max Level
//
// Description:
// This NPC allows for Game Masters to set a reward to
// be given to the first player of each 2nd class that
// reaches maximum level (base and class).
//=====================================================
///////////////////////////////////////////////////////
prontera,147,180,5 script Race to Max Level 58,{
set .@gm_level, 99; // GM level required to set the reward
set .@maxbase, 99;
set .@maxjob, 50;
set .@defaultreward, 510;
setarray .@rewardablejobs[0], Job_Knight, Job_Alchemist, Job_Assassin, Job_Bard, Job_Blacksmith, Job_Crusader, Job_Dancer, Job_Hunter, Job_Monk, Job_Priest, Job_Rogue, Job_Sage, Job_Wizard;
Begin:
clear;
mes "[ ^0099ccRace to Max Level^000000 ]";
mes "Hello, " + ((getgmlevel() >= .@gm_level) ? "master! What do you want to do today?" : "are you here for your reward?");
switch(select(((getgmlevel() >= .@gm_level) ? "Set Reward:Restart Race" : ":") + ":YES!:...Reward?:Who was rewarded?:Cancel")) {
case 1:
goto SetReward;
case 2:
goto RestartRace;
case 3:
goto GetReward;
case 4:
goto ExplainRace;
case 5:
goto ShowRewarded;
default:
end;
}
SetReward:
clear;
mes "[ ^0099ccRace to Max Level^000000 ]";
if ($reward == 0)
set $reward, .@defaultreward;
mes "The reward is " + getitemname($reward) + " (ID: " + $reward + ").";
mes "Do you want to change it?";
if (select("Yes:No") == 1) {
clear;
mes "[ ^0099ccRace to Max Level^000000 ]";
mes "Please enter the new reward item ID.";
input .@rewardid;
clear;
mes "[ ^0099ccRace to Max Level^000000 ]";
mes "Set " + getitemname(.@rewardid) + " as the reward?";
if(select("Yes:No") == 1) {
set $reward, .@rewardid;
}
}
goto Begin;
RestartRace:
clear;
mes "[ ^0099ccRace to Max Level^000000 ]";
mes "Are you sure you want to restart the race?";
if (select("Yes:No") == 1) {
for (.@i = 0; .@i < getarraysize(.@rewardablejobs); .@i++) {
set $rewarded$[.@rewardablejobs[.@i]], "";
}
announce "The Race to Max Level has begun! Claim a reward once you reach " + .@maxbase + " base and " + .@maxjob + " class!", bc_all;
}
goto Begin;
GetReward:
mes "Let's see... " + strcharinfo(0) + ", huh?";
set .@competitioner, 0;
for (.@i = 0; .@i < getarraysize(.@rewardablejobs); .@i++) {
if (Class == .@rewardablejobs[.@i]) {
set .@competitioner, 1;
if (BaseLevel < .@maxbase || JobLevel < .@maxjob) {
mes "I'm sorry, but you still need to level a bit more.";
} else if ($rewarded$[Class] == strcharinfo(0)) {
mes "You have already claimed your reward.";
} else if ($rewarded$[Class] != "") {
mes "Too late!";
mes "The reward for " + jobname(Class) + " was already claimed by " + $rewarded$[Class] + ".";
} else goto GiveReward;
}
}
if (.@competitioner == 0)
mes "You need to change your job.";
close;
GiveReward:
set $rewarded$[Class], strcharinfo(0);
clear;
mes "[ ^0099ccRace to Max Level^000000 ]";
mes "Congratulations! You were the first " + jobname(Class) + " to reach " + .@maxbase + " base and " + .@maxjob + " class!";
getitem $reward, 1;
announce strcharinfo(0) + " (" + jobname(Class) + ") reached Max. Level and received " + getitemname($reward) + "!", bc_all;
close;
ExplainRace:
clear;
mes "[ ^0099ccRace to Max Level^000000 ]";
mes "Yes! When you reach the maximum level for your class, talk to me and you'll be rewarded with a special item.";
next;
goto Begin;
ShowRewarded:
clear;
mes "[ ^0099ccRace to Max Level^000000 ]";
for (.@i = 0; .@i < getarraysize(.@rewardablejobs); .@i++) {
mes jobname(.@rewardablejobs[.@i]) + ": " + (($rewarded$[.@rewardablejobs[.@i]] != "") ? $rewarded$[.@rewardablejobs[.@i]] : "^ff0000Nobody^000000");
}
next;
goto Begin;
}
You can change the maxbase and maxjob variables to match your server configuration, as well as define the minimum GM level to set the rewards on the NPC by changing gm_level variable.