- script sv_lvlup_sys -1,{
/*-----------------------------------------------------
Script
-----------------------------------------------------*/
OnNPCKillEvent:
// Loop through all unlockable maps
for (.@i = 0; .@i < getarraysize(.map_name$); .@i++) {
// Determine if player is eligible to contribute experience
if (Elaria_Story || strcharinfo(3) == .map_name$[.@i]) {
// Determine the amount of experience gained from kill
.@killed_exp = getmonsterinfo(killedrid, MOB_BASEEXP);
// Add experience value to current continent experience
$cont_exp += .@killed_exp;
// Check if threshold met for current map
if ($cont_exp < .min_exp[$next_map]) {
// Do nothing if threshold not met
end;
}
// Announce map unlock
announce "The map \""+ .map_vanity$[$next_map] +"\" ("+ .map_name$[$next_map] +") has been unlocked!", bc_all;
// Set flag to unlock next map
$next_map++;
}
}
end;
/*-----------------------------------------------------
Configuration
-----------------------------------------------------*/
OnInit:
// Base experience thresholds (11)
setarray .min_exp[0],
1000000,
2000000,
5000000,
10000000,
30000000,
50000000,
200000000,
400000000,
600000000,
800000000,
1000000000,
2000000000;
// Corresponding maps to unlock
setarray .map_name$[0],
"prt_fild01",
"prt_fild02",
"prt_fild03",
"prt_fild04",
"prt_fild05",
"prt_fild06",
"prt_fild07",
"prt_fild08",
"prt_fild09",
"prt_fild10",
"prt_fild11";
// Corresponding vanity names
setarray .map_vanity$[0],
"Prontera Field 01",
"Prontera Field 02",
"Prontera Field 03",
"Prontera Field 04",
"Prontera Field 05",
"Prontera Field 06",
"Prontera Field 07",
"Prontera Field 08",
"Prontera Field 09",
"Prontera Field 10",
"Prontera Field 11";
// Create atcommand to check experience progress
bindatcmd "checkexp", strnpcinfo(3) +"::OnCheckEXP", 0, 99;
end;
/*-----------------------------------------------------
Atcommand @checkexp
-----------------------------------------------------*/
OnCheckEXP:
// Display information about unlocking next map
message strcharinfo(0), $cont_exp +" / "+ .min_exp[$next_map] +" EXP has been gained toward unlocking "+ $map_vanity$[$next_map];
end;
/*-----------------------------------------------------
Map Status
-----------------------------------------------------*/
OnPCLoadMapEvent:
// Loop through all unlockable maps
for (.@i = 0; .@i < getarraysize(.map_name$); .@i++) {
// Check if player is on map and if map is unlocked
if (strcharinfo(3) == .map_name$[.@i] && .@i < $next_map) {
// Return to SavePoint if map is locked
warp "SavePoint", 0, 0;
end;
}
}
end;
}
/*-----------------------------------------------------
Mapflags
-----------------------------------------------------*/
prt_fild01 mapflag loadevent
prt_fild02 mapflag loadevent
prt_fild03 mapflag loadevent
prt_fild04 mapflag loadevent
prt_fild05 mapflag loadevent
prt_fild06 mapflag loadevent
prt_fild07 mapflag loadevent
prt_fild08 mapflag loadevent
prt_fild09 mapflag loadevent
prt_fild10 mapflag loadevent
prt_fild11 mapflag loadevent