can someone check if its right?
Code:
////////////////////////////////////////
// WCS - Warcraft:Source //
// ---------------------------------- //
// by kRypT0n!Te //
// http://wc3source.de //
// ---------------------------------- //
// Content of this subscript //
// - race handling //
////////////////////////////////////////
// say commands:
// raceinfo, changerace
//
// admin commands:
// wcs_race_menu <userid>
// wcs_showraceinfo <userid>
//
////////////////////////////////////////
block load
{
es_xexists ex keygroup "WCSinfo"
if (server_var(ex) = 0) then es_xkeygroupcreate "WCSinfo"
es_xexists ex key "WCSinfo" "raceinfo"
if (server_var(ex) = 0) do
{
es_xkeycreate "WCSinfo" "raceinfo"
}
es_xelse do
{
es_xkeydelete "WCSinfo" "raceinfo"
es_xkeycreate "WCSinfo" "raceinfo"
}
es_xkeygroupload "WCSraces" "|wcs/WCSraces"
// loadup races, shop items
es_xset wcs_numberofraces 0
alias wcs_checkracealias "if (racealias in server_var(wcs_val)) then es_xkeygetvalue wcs_tmp WCSraces server_var(wcs_key) server_var(wcs_val);if (racealias in server_var(wcs_val)) then alias server_var(wcs_val) server_var(wcs_tmp)"
alias wcs_checkracelanguage "if (wcs_lng_r in server_var(wcs_name)) then wcs_getlanguage wcs_name server_var(wcs_name);es_keysetvalue WCSraces server_var(wcs_key) name server_var(wcs_name);es_keygetvalue wcs_descr WCSraces server_var(wcs_key) skilldescr;if (wcs_lng_r in server_var(wcs_descr)) then wcs_getlanguage wcs_descr server_var(wcs_descr);es_keysetvalue WCSraces server_var(wcs_key) skilldescr server_var(wcs_descr);es_keygetvalue wcs_tmp WCSraces server_var(wcs_key) skillnames;if (wcs_lng_r in server_var(wcs_tmp)) then wcs_getlanguage wcs_tmp server_var(wcs_tmp);es_keysetvalue WCSraces server_var(wcs_key) skillnames server_var(wcs_tmp);wcs_checkracelanguage2"
alias wcs_checkracelanguage2 "es_keygetvalue wcs_descr WCSraces server_var(wcs_key) shortdescription;if (wcs_lng_r in server_var(wcs_descr)) then wcs_getlanguage wcs_descr server_var(wcs_descr);es_keysetvalue WCSraces server_var(wcs_key) shortdescription server_var(wcs_descr)"
es_xforeachkey wcs_key in "WCSraces" "es_keygetvalue wcs_cmd WCSraces server_var(wcs_key) preloadcmd;if (server_var(wcs_cmd) != 0) then alias wcs_loadcmd server_var(wcs_cmd);if (server_var(wcs_cmd) != 0) then wcs_loadcmd;es_foreachval wcs_val in WCSraces server_var(wcs_key) wcs_checkracealias;es_keygetvalue wcs_name WCSraces server_var(wcs_key) name;wcs_checkracelanguage;es echo [WCS] loaded race : server_var(wcs_name);es_xmath wcs_numberofraces + 1"
es echo "[WCS] total : " server_var(wcs_numberofraces) " races loaded"
// create the raceinfo data
es_xdoblock wcs/WCSraces/wcs_raceinfo
es_xexists ex command wcs_race_menu
if (server_var(ex) = 0) then es_xregcmd wcs_race_menu wcs/WCSraces/wcs_race_menu "wcs_race_menu - usage: wcs_race_menu <userid>"
es_xexists ex command wcs_showraceinfo
if (server_var(ex) = 0) then es_xregcmd wcs_showraceinfo wcs/WCSraces/wcs_showraceinfo "Shows detail info about races"
es_xexists ex saycommand changerace
if (server_var(ex) = 0) then es_xregsaycmd changerace wcs/WCSraces/wcs_changerace "Change your race"
es_xexists ex saycommand raceinfo
if (server_var(ex) = 0) then es_xregsaycmd raceinfo wcs/WCSraces/wcs_showraceinfo "Shows detail info about the races"
es_xset avast_ex 0
es_xkeygroupcreate vippers
}
block unload
{
es_xkeygroupdelete "WCSraces"
es_xkeygropudelete vippers
es_xkeydelete "WCSinfo" "raceinfo"
}
event dod_round_start
{
// checks the roundstartcmd for all races
es_xforeachkey wcs_key in "WCSraces" "es_keygetvalue wcs_cmd WCSraces server_var(wcs_key) round_start_cmd;es_strlen wcs_strlen server_var(wcs_cmd);if (server_var(wcs_strlen) > 1) then alias wcs_runcmd server_var(wcs_cmd);if (server_var(wcs_strlen) > 1) then wcs_runcmd"
}
event round_start
{
// checks the roundstartcmd for all races
es_xforeachkey wcs_key in "WCSraces" "es_keygetvalue wcs_cmd WCSraces server_var(wcs_key) round_start_cmd;es_strlen wcs_strlen server_var(wcs_cmd);if (server_var(wcs_strlen) > 1) then alias wcs_runcmd server_var(wcs_cmd);if (server_var(wcs_strlen) > 1) then wcs_runcmd"
}
event round_end
{
// checks the roundendcmd for all races, and reset race counter
es_xforeachkey wcs_key in "WCSraces" "es_keygetvalue wcs_cmd WCSraces server_var(wcs_key) round_end_cmd;es_strlen wcs_strlen server_var(wcs_cmd);if (server_var(wcs_strlen) > 1) then alias wcs_runcmd server_var(wcs_cmd);if (server_var(wcs_strlen) > 1) then wcs_runcmd;es_keysetvalue WCSraces server_var(wcs_key) 2 0;es_keysetvalue WCSraces server_var(wcs_key) 3 0"
if (server_var(wcs_cfg_enableraceteamlimit) = "1") do
{
// check the player's races
es_xforeachkey wcs_key in "WCSuserdata" "es_getplayerteam wcs_team server_var(wcs_key);es_keygetvalue wcs_race WCSuserdata server_var(wcs_key) race;es_keygetvalue wcs_tmp WCSraces server_var(wcs_race) server_var(wcs_team);es_xmath wcs_tmp + 1;if (server_var(wcs_team) >= 2) then es_xif (server_var(wcs_team) <= 3) then es_xkeysetvalue WCSraces server_var(wcs_race) server_var(wcs_team) server_var(wcs_tmp)"
// check again, if one player is over the race limit/team
es_xforeachkey wcs_key in "WCSuserdata" "es_getplayerteam wcs_team server_var(wcs_key);es_keygetvalue wcs_race WCSuserdata server_var(wcs_key) race;es_keygetvalue wcs_tmp WCSraces server_var(wcs_race) server_var(wcs_team);es_keygetvalue wcs_limit WCSraces server_var(wcs_race) teamlimit;if (server_var(wcs_limit) != 0) then es_xif (server_var(wcs_limit) < server_var(wcs_tmp)) then es_xdoblock wcs/WCSraces/wcs_checkplayerrace"
}
}
event player_spawn
{
es_exists avast_ex key vippers event_var(userid)
if (server_var(avast_ex) == 1) then es_keydelete vippers event_var(userid)
}
event player_disconnect
{
es_exists avast_ex key vippers event_var(userid)
if (server_var(avast_ex) == 1) then es_keydelete vippers event_var(userid)
}
event player_team
{
es_exists ex key WCSuserdata event_var(userid)
if (server_var(wcs_cfg_enableraceteamlimit) != "1") then es_xset ex "0"
if (server_var(ex) = "1") do
{
es_keygetvalue wcs_limit WCSuserdata event_var(userid) "limitedrace"
if (server_var(wcs_limit) = "1") do
{
ifx true(wcs_cfg_limitedraceforcespec) do
{
if (server_var(wcs_game) = server_var(wcs_game_css)) then wcs_moneysavenow
es est_Team event_var(userid) 1 1
}
es_tell event_var(userid) #multi #greenPlease change your race -> #lightgreen'changerace'
}
}
}
block wcs_checkplayerrace
{
// wcs_key=userid wcs_race=race wcs_tmp=status wcs_limit=limit
es_keysetvalue WCSuserdata server_var(wcs_key) "limitedrace" "1"
if (server_var(wcs_cfg_limitedraceforcespec) = "1") then est_Team server_var(wcs_key) "1" "1"
es_keygetvalue wcs_racename "WCSraces" server_var(wcs_race) "name"
wcs_getlanguage "wcs_lng" "wcs_lng_limitedrace"
es_format wcs_lng server_var(wcs_lng) server_var(wcs_race) server_var(wcs_racename) server_var(wcs_limit) server_var(wcs_tmp)
es_menu 10 server_var(wcs_key) server_var(wcs_lng)
}
// >>>>>>>>>>>>>>>>> RACE INFO >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
block wcs_showraceinfo
{
wcs_debuglog wcs_showraceinfo start
// first, is it a custom command ?
es_xgetargv wcs_userid 1
es_exists ex userid server_var(wcs_userid)
if (server_var(ex) = 0) do
{
// or a say command
es_xgetcmduserid wcs_userid
es_exists ex userid server_var(wcs_userid)
es wcs_menuzero server_var(wcs_userid)
es_keygetvalue wcs_page "WCSuserdata" server_var(wcs_userid) "race"
es_xmath wcs_page - 1
}
es_xelse do
{
es_keygetvalue wcs_page WCSuserdata server_var(wcs_userid) page
}
es_keysetvalue WCSuserdata server_var(wcs_userid) menu "raceinfo"
es_xmath wcs_page + 1
es_keysetvalue WCSuserdata server_var(wcs_userid) page server_var(wcs_page)
es_xset wcs_infotext 0
es_keygetvalue wcs_infotext WCSinfo raceinfo server_var(wcs_page)
if (server_var(wcs_infotext) != "0") do
{
es_strlen wcs_strlen server_var(wcs_infotext)
if (server_var(wcs_strlen) <= 1020) then es_xmenu 0 server_var(wcs_userid) server_var(wcs_infotext)
if (server_var(wcs_strlen) > 1020) then es_xmenu 0 server_var(wcs_userid) "WARNING:\n \n Text too long ! Report this to an admin."
}
wcs_debuglog wcs_showraceinfo end
}
block wcs_raceinfo
{
wcs_debuglog wcs_raceinfo start
es_xforeachkey wcs_key in WCSraces "es_keygetvalue wcs_name WCSraces server_var(wcs_key) name;es_keygetvalue wcs_numberofskills WCSraces server_var(wcs_key) numberofskills;es_keygetvalue wcs_numberoflevels WCSraces server_var(wcs_key) numberoflevels;es_xdoblock wcs/WCSraces/wcs_raceinfo_skills1"
wcs_debuglog wcs_raceinfo end
}
block wcs_raceinfo_skills1
{
wcs_getlanguage "wcs_lng" "wcs_lng_skills"
es_format wcs_text "\n->%1. %2 (%3 lvls/%4 %5)\n" server_var(wcs_key) server_var(wcs_name) server_var(wcs_numberoflevels) server_var(wcs_numberofskills) server_var(wcs_lng)
es_keygetvalue wcs_requiredlevel WCSraces server_var(wcs_key) required_level
wcs_getlanguage "wcs_lng" "wcs_lng_required"
wcs_getlanguage "wcs_lng2" "wcs_lng_level"
if (server_var(wcs_cfg_requiredlevel) = 1) then es_xif (server_var(wcs_requiredlevel) > 0) then es_xformat wcs_text "%1%2 %3 : %4\n" server_var(wcs_text) server_var(wcs_lng) server_var(wcs_lng2) server_var(wcs_requiredlevel)
es_keygetvalue wcs_maxlevel "WCSraces" server_var(wcs_key) "maximum_level"
wcs_getlanguage "wcs_lng" "wcs_lng_maxlevel"
if (server_var(wcs_cfg_maxracelevel) = 1) then es_xif (server_var(wcs_maxlevel) > 0) then es_xformat wcs_text server_var(wcs_lng) server_var(wcs_text) server_var(wcs_maxlevel)
es_keygetvalue wcs_allow_only WCSraces server_var(wcs_key) allow_only
wcs_getlanguage "wcs_lng" "wcs_lng_privaterace"
if (server_var(wcs_cfg_restrictedrace) = 1) then es_xif (server_var(wcs_allow_only) != "0") then es_xformat wcs_text "%1< %2 > \n" server_var(wcs_text) server_var(wcs_lng)
es_keygetvalue wcs_tmp1 WCSraces server_var(wcs_key) author
if (server_var(wcs_tmp1) != "0") then es_xformat wcs_text "%1 credits: %2\n \n" server_var(wcs_text) server_var(wcs_tmp1)
es_keygetvalue wcs_skillname WCSraces server_var(wcs_key) skillnames
es_keygetvalue wcs_skilldescr WCSraces server_var(wcs_key) skilldescr
es_xset wcs_counter 1
while "server_var(wcs_numberofskills) >= server_var(wcs_counter)" "es_xdoblock wcs/WCSraces/wcs_raceinfo_skills2;es_xmath wcs_counter + 1"
es_format wcs_text "%1\n \n " server_var(wcs_text)
if (server_var(wcs_key) > 1) then es_xformat wcs_text "%1\n->8. %2" server_var(wcs_text) server_var(wcs_lng_back)
es_set wcs_keynext server_var(wcs_key)
es_xmath wcs_keynext + 1
es_exists ex key WCSraces server_var(wcs_keynext)
if (server_var(ex) = 1) then es_xformat wcs_text "%1\n->9. %2" server_var(wcs_text) server_var(wcs_lng_next)
es_keysetvalue WCSinfo raceinfo server_var(wcs_key) server_var(wcs_text)
}
block wcs_raceinfo_skills2
{
es_token wcs_skill server_var(wcs_skillname) server_var(wcs_counter) |
es_token wcs_skilld server_var(wcs_skilldescr) server_var(wcs_counter) |
if (server_var(wcs_skilld) != "0") then es_xformatv wcs_text "%1\n->%2. %3\n%4" wcs_text wcs_counter wcs_skill wcs_skilld
if (server_var(wcs_skilld) = "0") then es_xformatv wcs_text "%1\n->%2. %3" wcs_text wcs_counter wcs_skill
}
// <<<<<<<<<<<<<<<<< END RACE INFO <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// >>>>>>>>>>>>>>>>> START RACE MENU >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
block wcs_changerace
{
wcs_debuglog wcs_changerace start
es_xset wcs_userid 0
// if its a say command
es_xgetcmduserid wcs_userid
es_exists ex userid server_var(wcs_userid)
if (server_var(ex) = 1) do
{
es_exists ex key WCSuserdata server_var(wcs_userid)
if (server_var(ex) = 1) do
{
es_exists avast_ex key vipppers server_var(wcs_userid)
jf (server_var(avast_ex) ==0) do
{
es_keycreate vippers server_var(wcs_userid)
es_xdelayed 5 es_keydelete vippers server_var(wcs_userid)
ifx false(wcs_cfg_changeracenextround) do
{
wcs_getlanguage "wcs_lng" "wcs_lng_changerace"
es_tell server_var(wcs_userid) #multi server_var(wcs_lng)
}
es wcs_menuzero server_var(wcs_userid)
es wcs_race_menu server_var(wcs_userid)
}
else do
{
es_tell server_var(wcs_userid) Por Favor, use o Changerace no proximo round!
}
}
}
wcs_debuglog wcs_changerace end
}
block wcs_race_menu
{
wcs_debuglog wcs_race_menu start
// a custom command
es_xgetargv wcs_userid 1
wcs_getlanguage "wcs_lng" "wcs_lng_chooserace"
es_format wcs_text "%1:\n " server_var(wcs_lng)
es_xset wcs_counter 0
// get ID
es_keygetvalue wcs_id WCSuserdata server_var(wcs_userid) id
es_getplayerteam wcs_team server_var(wcs_userid)
// get race level
es_keygetvalue wcs_race "WCSuserdata" server_var(wcs_userid) "race"
// variables
es_xset wcs_racename 0
es_keygetvalue wcs_page WCSuserdata server_var(wcs_userid) page
es_xmath wcs_page + 1
es_keysetvalue WCSuserdata server_var(wcs_userid) page server_var(wcs_page)
es_xset wcs_racenumber 0
es_xset wcs_raceid 0
es_xset wcs_addnum 7
es_math wcs_addnum * server_var(wcs_page)
es_xmath wcs_addnum - 7
// how many races ?
es_xset wcs_racecount 0
es_xforeachkey wcs_key in WCSraces "es_xmath wcs_racecount + 1"
// get id
es_math wcs_raceid + server_var(wcs_addnum)
// start is at 1
es_xset wcs_counter 1
// buildin menu 1..7
es_xmath wcs_raceid + 1
es_xdoblock wcs/WCSraces/wcs_race_menu_init
es_xmath wcs_raceid + 1
es_xdoblock wcs/WCSraces/wcs_race_menu_init
es_xmath wcs_raceid + 1
es_xdoblock wcs/WCSraces/wcs_race_menu_init
es_xmath wcs_raceid + 1
es_xdoblock wcs/WCSraces/wcs_race_menu_init
es_xmath wcs_raceid + 1
es_xdoblock wcs/WCSraces/wcs_race_menu_init
es_xmath wcs_raceid + 1
es_xdoblock wcs/WCSraces/wcs_race_menu_init
es_xmath wcs_raceid + 1
es_xdoblock wcs/WCSraces/wcs_race_menu_init
es_xmath wcs_raceid + 1
// check if we need next page
es_format wcs_text "%1 %2\n %3\n \n " server_var(wcs_lng_page) server_var(wcs_page) server_var(wcs_text)
if (server_var(wcs_raceid) > server_var(wcs_racecount)) then es_xif (server_var(wcs_page) = 1) then es_xformat wcs_text "%1 0. %2" server_var(wcs_text) server_var(wcs_lng_exit)
if (server_var(wcs_raceid) <= server_var(wcs_racecount)) then es_xif (server_var(wcs_page) = 1) then es_xformat wcs_text "%1 9. %2\n 0. %3" server_var(wcs_text) server_var(wcs_lng_next) server_var(wcs_lng_exit)
if (server_var(wcs_raceid) > server_var(wcs_racecount)) then es_xif (server_var(wcs_page) > 1) then es_xformat wcs_text "%1 8. %2\n 0. %3" server_var(wcs_text) server_var(wcs_lng_back) server_var(wcs_lng_exit)
if (server_var(wcs_raceid) <= server_var(wcs_racecount)) then es_xif (server_var(wcs_page) > 1) then es_xformat wcs_text "%1 8. %2\n 9. %3\n 0. %4" server_var(wcs_text) server_var(wcs_lng_back) server_var(wcs_lng_next) server_var(wcs_lng_exit)
es_menu 0 server_var(wcs_userid) server_var(wcs_text)
es_keysetvalue WCSuserdata server_var(wcs_userid) menu race
wcs_debuglog wcs_race_menu end
}
block wcs_race_menu_init
{
wcs_debuglog wcs_race_menu_init start
if (server_var(wcs_raceid) <= server_var(wcs_racecount)) do
{
es_exists ex key WCSraces server_var(wcs_raceid)
ifx true(ex) do
{
es_keygetvalue wcs_racename WCSraces server_var(wcs_raceid) name
if (server_var(wcs_racename) != 0) do
{
es_keygetvalue wcs_limit "WCSraces" server_var(wcs_raceid) "teamlimit"
es_xset wcs_limited "0"
if (server_var(wcs_cfg_enableraceteamlimit) != "1") then es_xset wcs_limit "0"
if (server_var(wcs_limit) != "0") do
{
es_keygetvalue wcs_tmp1 "WCSraces" server_var(wcs_raceid) "2"
es_keygetvalue wcs_tmp2 "WCSraces" server_var(wcs_raceid) "3"
if (server_var(wcs_team) = "1") then es_xif (server_var(wcs_tmp1) > server_var(wcs_tmp2)) then es_xcopy wcs_tmp1 wcs_tmp2
if (server_var(wcs_team) = "1") then es_xif (server_var(wcs_tmp1) >= server_var(wcs_limit)) then es_xset wcs_limited "1"
if (server_var(wcs_team) = "2") then es_xif (server_var(wcs_tmp1) >= server_var(wcs_limit)) then es_xset wcs_limited "1"
if (server_var(wcs_team) = "3") then es_xif (server_var(wcs_tmp2) >= server_var(wcs_limit)) then es_xset wcs_limited "1"
}
// get level stuff
es_format wcs_racef "race_%1" server_var(wcs_raceid)
// TODOOOOOOOOO!!!!!!!
//es_keygetvalue wcs_level "WCSusers" server_var(wcs_id) server_var(wcs_racef)
//es_xset wcs_level 0
es_xformatv wcs_level rl_%1 wcs_raceid
es_keygetvalue wcs_level WCSuserdata server_var(wcs_userid) server_var(wcs_level)
if (server_var(wcs_level) = "0") then es_xset wcs_level 0
//es_token wcs_level server_var(wcs_level) "1" "|"
///////////////////
es_keygetvalue wcs_requiredlevel WCSraces server_var(wcs_raceid) "required_level"
es_keygetvalue wcs_allow_only WCSraces server_var(wcs_raceid) "allow_only"
if (server_var(wcs_cfg_restrictedrace) = 0) then es_xset wcs_allow_only 0
es_keygetvalue wcs_total_level "WCSuserdata" server_var(wcs_userid) "total_level"
if (server_var(wcs_cfg_requiredlevel) = "0") then es_xset wcs_requiredlevel 0
if (server_var(wcs_total_level) >= server_var(wcs_requiredlevel)) do
{
es_keygetvalue wcs_maxlevel "WCSraces" server_var(wcs_raceid) "maximum_level"
if (server_var(wcs_cfg_maxracelevel) = "0") then es_xset wcs_maxlevel server_var(wcs_total_level)
if (server_var(wcs_maxlevel) = "0") then es_xset wcs_maxlevel server_var(wcs_total_level)
if (server_var(wcs_total_level) <= server_var(wcs_maxlevel)) do
{
es_xset wcs_allow 0
if (server_var(wcs_allow_only) = 0) then es_xset wcs_allow 1
es_format wcs_uid "<%1>" server_var(wcs_id)
if (server_var(wcs_uid) in server_var(wcs_allow_only)) then es_xset wcs_allow 1
if (server_var(wcs_allow_only) != "0") do
{
if (server_var(wcs_uid) notin server_var(wcs_allow_only)) do
{
// check for admin
es_exists wcs_isadmin key "WCSadmin" server_var(wcs_id)
if (server_var(wcs_isadmin) = "1") then es_xif ("<admins>" in server_var(wcs_allow_only)) then es_xset wcs_allow "1"
if (server_var(wcs_allow) = 0) do
{
wcs_getlanguage "wcs_lng" "wcs_lng_privaterace"
es_format wcs_text "%1 \n%2. %3 < %4 >" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_racename) server_var(wcs_lng)
}
}
}
if (server_var(wcs_allow) = 1) do
{
if (server_var(wcs_limited) = "0") do
{
if (server_var(wcs_level) > 0) then es_xif (server_var(wcs_cfg_globallevel) = "0") then es_xformat wcs_text "%1 \n->%2. %3 (lvl %4)" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_racename) server_var(wcs_level)
if (server_var(wcs_level) > 0) then es_xif (server_var(wcs_cfg_globallevel) = "1") then es_xformat wcs_text "%1 \n->%2. %3 (lvl %4)" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_racename) server_var(wcs_total_level)
if (server_var(wcs_level) = 0) then es_xformat wcs_text "%1 \n->%2. %3" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_racename)
}
es_xelse do
{
// level too high
wcs_getlanguage "wcs_lng" "wcs_lng_limited"
es_format wcs_text "%1 \n%2. %3 (%4 : %5)" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_racename) server_var(wcs_lng) server_var(wcs_limit)
}
}
}
es_xelse do
{
// level too high
wcs_getlanguage "wcs_lng" "wcs_lng_maximum"
es_format wcs_text "%1 \n%2. %3 (%4 lvl %5)" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_racename) server_var(wcs_lng) server_var(wcs_maxlevel)
}
}
es_xelse do
{
// level too low
wcs_getlanguage "wcs_lng" "wcs_lng_required"
es_format wcs_text "%1 \n%2. %3 (%4 lvl %5)" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_racename) server_var(wcs_lng) server_var(wcs_requiredlevel)
}
if (server_var(wcs_cfg_changeracedetails) = "1") do
{
es_keygetvalue wcs_descr "WCSraces" server_var(wcs_raceid) "shortdescription"
if (server_var(wcs_descr) != "0") then es_xformat wcs_text "%1\n %2" server_var(wcs_text) server_var(wcs_descr)
}
// IMPORTANT !!
es_xmath wcs_counter + 1
}
es_xelse do
{
es_format wcs_text "%1\n (-)" server_var(wcs_text)
}
}
es_xelse do
{
es_format wcs_text "%1\n (-)" server_var(wcs_text)
}
}
wcs_debuglog wcs_race_menu_init end
}
block wcs_race_handle
{
wcs_debuglog wcs_race_handle start
es_xset wcs_page 0
es_keygetvalue wcs_page WCSuserdata event_var(userid) page
es_keygetvalue wcs_id WCSuserdata event_var(userid) id
es_xset wcs_racecount 0
es_xforeachkey wcs_key in WCSraces "es_xmath wcs_racecount + 1"
es_xset wcs_r8id 7
es_math wcs_r8id * server_var(wcs_page)
es_xmath wcs_r8id + 1
// handle back
if (event_var(commandstring) = "8") do
{
if (server_var(wcs_page) > 1) do
{
es_xmath wcs_page - 2
es_keysetvalue WCSuserdata event_var(userid) page server_var(wcs_page)
es wcs_race_menu event_var(userid)
}
}
// handle next
if (event_var(commandstring) = "9") then es_xif (server_var(wcs_r8id) <= server_var(wcs_racecount)) then wcs_race_menu event_var(userid)
// race selected
if (event_var(commandstring) < 8) do
{
if (event_var(commandstring) > 0) do
{
es_xset wcs_raceid 0
es_xset wcs_racename 0
es_xset wcs_addnum 7
es_math wcs_addnum * server_var(wcs_page)
es_xmath wcs_addnum - 7
es_math wcs_raceid + server_var(wcs_addnum)
es_math wcs_raceid + event_var(commandstring)
es_exists ex key WCSraces server_var(wcs_raceid)
if (server_var(ex) = 1) do
{
es_keygetvalue wcs_racename WCSraces server_var(wcs_raceid) name
es_keygetvalue wcs_requiredlevel WCSraces server_var(wcs_raceid) required_level
es_keygetvalue wcs_total_level WCSuserdata server_var(wcs_userid) total_level
if (server_var(wcs_cfg_requiredlevel) = 0) then es_xset wcs_requiredlevel 0
es_keygetvalue wcs_allow_only WCSraces server_var(wcs_raceid) allow_only
if (server_var(wcs_cfg_restrictedrace) = 0) then es_xset wcs_allow_only 0
if (server_var(wcs_total_level) >= server_var(wcs_requiredlevel)) do
{
es_keygetvalue wcs_maxlevel "WCSraces" server_var(wcs_raceid) "maximum_level"
if (server_var(wcs_cfg_maxracelevel) = "0") then es_xset wcs_maxlevel server_var(wcs_total_level)
if (server_var(wcs_maxlevel) = "0") then es_xset wcs_maxlevel server_var(wcs_total_level)
if (server_var(wcs_total_level) <= server_var(wcs_maxlevel)) do
{
es_xset wcs_allow 0
if (server_var(wcs_allow_only) = 0) then es_xset wcs_allow 1
es_format wcs_uid "<%1>" server_var(wcs_id)
if (server_var(wcs_uid) in server_var(wcs_allow_only)) then es_xset wcs_allow 1
if (server_var(wcs_allow_only) != "0") do
{
if (server_var(wcs_uid) notin server_var(wcs_allow_only)) do
{
// check for admin
es_exists wcs_isadmin key "WCSadmin" server_var(wcs_id)
if (server_var(wcs_isadmin) = "1") then es_xif ("<admins>" in server_var(wcs_allow_only)) then es_xset wcs_allow "1"
if (server_var(wcs_allow) = 0) do
{
wcs_getlanguage "wcs_lng" "wcs_lng_notallowed"
es_format wcs_text "#lightgreen%1 : #green%2" server_var(wcs_racename) server_var(wcs_lng)
es_tell event_var(userid) #multi server_var(wcs_text)
}
}
}
// check team limit
es_getplayerteam wcs_team event_var(userid)
es_keygetvalue wcs_limit "WCSraces" server_var(wcs_raceid) "teamlimit"
es_xset wcs_limited "0"
if (server_var(wcs_cfg_enableraceteamlimit) != "1") then es_xset wcs_limit "0"
if (server_var(wcs_limit) != "0") do
{
es_keygetvalue wcs_tmp1 "WCSraces" server_var(wcs_raceid) "2"
es_keygetvalue wcs_tmp2 "WCSraces" server_var(wcs_raceid) "3"
if (server_var(wcs_team) = "1") then es_xif (server_var(wcs_tmp1) > server_var(wcs_tmp2)) then es_xcopy wcs_tmp1 wcs_tmp2
if (server_var(wcs_team) = "1") then es_xif (server_var(wcs_tmp1) >= server_var(wcs_limit)) then es_xset wcs_allow "0"
if (server_var(wcs_team) = "2") then es_xif (server_var(wcs_tmp1) >= server_var(wcs_limit)) then es_xset wcs_allow "0"
if (server_var(wcs_team) = "3") then es_xif (server_var(wcs_tmp2) >= server_var(wcs_limit)) then es_xset wcs_allow "0"
}
if (server_var(wcs_allow) = 1) do
{
ifx true(wcs_cfg_changeracenextround) do
{
wcs_getlanguage wcs_lng wcs_lng_changeracenextround
es_tell event_var(userid) #multi server_var(wcs_lng)
es_keysetvalue WCSuserdata event_var(userid) forcechangerace 1
es_keysetvalue WCSuserdata event_var(userid) forcechangeraceid server_var(wcs_raceid)
}
es_xelse do
{
if (event_var(es_userdead) = 0) then est_Slay event_var(userid)
// save the old race !
es wcs_saveplayer event_var(userid)
es_keysetvalue "WCSuserdata" event_var(userid) "race" server_var(wcs_raceid)
es wcs_playercheck server_var(wcs_raceid)
es wcs_getplayer event_var(userid)
es_xset wcs_text 0
wcs_getlanguage "wcs_lng" "wcs_lng_changedrace"
es_format wcs_text "#lightgreen%1: #green%2" server_var(wcs_lng) server_var(wcs_racename)
es_tell event_var(userid) #multi server_var(wcs_text)
// refresh skills
es_keysetvalue "WCSuserdata" event_var(userid) "skillcheck" "1"
// unrestrict all (required for predator)
es est_UnrestrictAll event_var(userid)
// reset the limited flag
es_keysetvalue "WCSuserdata" event_var(userid) "limitedrace" "0"
}
}
}
es_xelse do
{
es_math wcs_total_level - server_var(wcs_maxlevel)
wcs_getlanguage "wcs_lng" "wcs_lng_overmaxlevel"
es_format wcs_text server_var(wcs_lng) server_var(wcs_racename) server_var(wcs_total_level)
es_tell event_var(userid) #multi server_var(wcs_text)
}
}
es_xelse do
{
es_math wcs_requiredlevel - server_var(wcs_total_level)
wcs_getlanguage "wcs_lng" "wcs_lng_notreqlevel"
es_format wcs_text server_var(wcs_lng) server_var(wcs_racename) server_var(wcs_requiredlevel)
es_tell event_var(userid) #multi server_var(wcs_text)
}
}
}
}
// set page to 0 if race selected
if (event_var(commandstring) != "9") then es_xif (event_var(commandstring) != "8") then es_xkeysetvalue WCSuserdata event_var(userid) menu 0
wcs_debuglog wcs_race_handle end
}
// <<<<<<<<<<<<<<<<< END RACE MENU <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
block wcs_calcracestats
{
es_xforeachkey wcs_key in WCSraces "es_keysetvalue WCSraces server_var(wcs_key) rcounter 0"
es_xforeachkey wcs_key in WCSuserdata "es_keygetvalue wcs_raceid WCSuserdata server_var(wcs_key) race;es_keygetvalue wcs_tmp WCSraces server_var(wcs_raceid) rcounter;es_xmath wcs_tmp + 1;es_keysetvalue WCSraces server_var(wcs_raceid) server_var(wcs_tmp)"
}
Thanks!// WCS - Warcraft:Source //
// ---------------------------------- //
// by kRypT0n!Te //
// http://wc3source.de //
// ---------------------------------- //
// Content of this subscript //
// - race handling //
////////////////////////////////////////
// say commands:
// raceinfo, changerace
//
// admin commands:
// wcs_race_menu <userid>
// wcs_showraceinfo <userid>
//
////////////////////////////////////////
block load
{
es_xexists ex keygroup "WCSinfo"
if (server_var(ex) = 0) then es_xkeygroupcreate "WCSinfo"
es_xexists ex key "WCSinfo" "raceinfo"
if (server_var(ex) = 0) do
{
es_xkeycreate "WCSinfo" "raceinfo"
}
es_xelse do
{
es_xkeydelete "WCSinfo" "raceinfo"
es_xkeycreate "WCSinfo" "raceinfo"
}
es_xkeygroupload "WCSraces" "|wcs/WCSraces"
// loadup races, shop items
es_xset wcs_numberofraces 0
alias wcs_checkracealias "if (racealias in server_var(wcs_val)) then es_xkeygetvalue wcs_tmp WCSraces server_var(wcs_key) server_var(wcs_val);if (racealias in server_var(wcs_val)) then alias server_var(wcs_val) server_var(wcs_tmp)"
alias wcs_checkracelanguage "if (wcs_lng_r in server_var(wcs_name)) then wcs_getlanguage wcs_name server_var(wcs_name);es_keysetvalue WCSraces server_var(wcs_key) name server_var(wcs_name);es_keygetvalue wcs_descr WCSraces server_var(wcs_key) skilldescr;if (wcs_lng_r in server_var(wcs_descr)) then wcs_getlanguage wcs_descr server_var(wcs_descr);es_keysetvalue WCSraces server_var(wcs_key) skilldescr server_var(wcs_descr);es_keygetvalue wcs_tmp WCSraces server_var(wcs_key) skillnames;if (wcs_lng_r in server_var(wcs_tmp)) then wcs_getlanguage wcs_tmp server_var(wcs_tmp);es_keysetvalue WCSraces server_var(wcs_key) skillnames server_var(wcs_tmp);wcs_checkracelanguage2"
alias wcs_checkracelanguage2 "es_keygetvalue wcs_descr WCSraces server_var(wcs_key) shortdescription;if (wcs_lng_r in server_var(wcs_descr)) then wcs_getlanguage wcs_descr server_var(wcs_descr);es_keysetvalue WCSraces server_var(wcs_key) shortdescription server_var(wcs_descr)"
es_xforeachkey wcs_key in "WCSraces" "es_keygetvalue wcs_cmd WCSraces server_var(wcs_key) preloadcmd;if (server_var(wcs_cmd) != 0) then alias wcs_loadcmd server_var(wcs_cmd);if (server_var(wcs_cmd) != 0) then wcs_loadcmd;es_foreachval wcs_val in WCSraces server_var(wcs_key) wcs_checkracealias;es_keygetvalue wcs_name WCSraces server_var(wcs_key) name;wcs_checkracelanguage;es echo [WCS] loaded race : server_var(wcs_name);es_xmath wcs_numberofraces + 1"
es echo "[WCS] total : " server_var(wcs_numberofraces) " races loaded"
// create the raceinfo data
es_xdoblock wcs/WCSraces/wcs_raceinfo
es_xexists ex command wcs_race_menu
if (server_var(ex) = 0) then es_xregcmd wcs_race_menu wcs/WCSraces/wcs_race_menu "wcs_race_menu - usage: wcs_race_menu <userid>"
es_xexists ex command wcs_showraceinfo
if (server_var(ex) = 0) then es_xregcmd wcs_showraceinfo wcs/WCSraces/wcs_showraceinfo "Shows detail info about races"
es_xexists ex saycommand changerace
if (server_var(ex) = 0) then es_xregsaycmd changerace wcs/WCSraces/wcs_changerace "Change your race"
es_xexists ex saycommand raceinfo
if (server_var(ex) = 0) then es_xregsaycmd raceinfo wcs/WCSraces/wcs_showraceinfo "Shows detail info about the races"
es_xset avast_ex 0
es_xkeygroupcreate vippers
}
block unload
{
es_xkeygroupdelete "WCSraces"
es_xkeygropudelete vippers
es_xkeydelete "WCSinfo" "raceinfo"
}
event dod_round_start
{
// checks the roundstartcmd for all races
es_xforeachkey wcs_key in "WCSraces" "es_keygetvalue wcs_cmd WCSraces server_var(wcs_key) round_start_cmd;es_strlen wcs_strlen server_var(wcs_cmd);if (server_var(wcs_strlen) > 1) then alias wcs_runcmd server_var(wcs_cmd);if (server_var(wcs_strlen) > 1) then wcs_runcmd"
}
event round_start
{
// checks the roundstartcmd for all races
es_xforeachkey wcs_key in "WCSraces" "es_keygetvalue wcs_cmd WCSraces server_var(wcs_key) round_start_cmd;es_strlen wcs_strlen server_var(wcs_cmd);if (server_var(wcs_strlen) > 1) then alias wcs_runcmd server_var(wcs_cmd);if (server_var(wcs_strlen) > 1) then wcs_runcmd"
}
event round_end
{
// checks the roundendcmd for all races, and reset race counter
es_xforeachkey wcs_key in "WCSraces" "es_keygetvalue wcs_cmd WCSraces server_var(wcs_key) round_end_cmd;es_strlen wcs_strlen server_var(wcs_cmd);if (server_var(wcs_strlen) > 1) then alias wcs_runcmd server_var(wcs_cmd);if (server_var(wcs_strlen) > 1) then wcs_runcmd;es_keysetvalue WCSraces server_var(wcs_key) 2 0;es_keysetvalue WCSraces server_var(wcs_key) 3 0"
if (server_var(wcs_cfg_enableraceteamlimit) = "1") do
{
// check the player's races
es_xforeachkey wcs_key in "WCSuserdata" "es_getplayerteam wcs_team server_var(wcs_key);es_keygetvalue wcs_race WCSuserdata server_var(wcs_key) race;es_keygetvalue wcs_tmp WCSraces server_var(wcs_race) server_var(wcs_team);es_xmath wcs_tmp + 1;if (server_var(wcs_team) >= 2) then es_xif (server_var(wcs_team) <= 3) then es_xkeysetvalue WCSraces server_var(wcs_race) server_var(wcs_team) server_var(wcs_tmp)"
// check again, if one player is over the race limit/team
es_xforeachkey wcs_key in "WCSuserdata" "es_getplayerteam wcs_team server_var(wcs_key);es_keygetvalue wcs_race WCSuserdata server_var(wcs_key) race;es_keygetvalue wcs_tmp WCSraces server_var(wcs_race) server_var(wcs_team);es_keygetvalue wcs_limit WCSraces server_var(wcs_race) teamlimit;if (server_var(wcs_limit) != 0) then es_xif (server_var(wcs_limit) < server_var(wcs_tmp)) then es_xdoblock wcs/WCSraces/wcs_checkplayerrace"
}
}
event player_spawn
{
es_exists avast_ex key vippers event_var(userid)
if (server_var(avast_ex) == 1) then es_keydelete vippers event_var(userid)
}
event player_disconnect
{
es_exists avast_ex key vippers event_var(userid)
if (server_var(avast_ex) == 1) then es_keydelete vippers event_var(userid)
}
event player_team
{
es_exists ex key WCSuserdata event_var(userid)
if (server_var(wcs_cfg_enableraceteamlimit) != "1") then es_xset ex "0"
if (server_var(ex) = "1") do
{
es_keygetvalue wcs_limit WCSuserdata event_var(userid) "limitedrace"
if (server_var(wcs_limit) = "1") do
{
ifx true(wcs_cfg_limitedraceforcespec) do
{
if (server_var(wcs_game) = server_var(wcs_game_css)) then wcs_moneysavenow
es est_Team event_var(userid) 1 1
}
es_tell event_var(userid) #multi #greenPlease change your race -> #lightgreen'changerace'
}
}
}
block wcs_checkplayerrace
{
// wcs_key=userid wcs_race=race wcs_tmp=status wcs_limit=limit
es_keysetvalue WCSuserdata server_var(wcs_key) "limitedrace" "1"
if (server_var(wcs_cfg_limitedraceforcespec) = "1") then est_Team server_var(wcs_key) "1" "1"
es_keygetvalue wcs_racename "WCSraces" server_var(wcs_race) "name"
wcs_getlanguage "wcs_lng" "wcs_lng_limitedrace"
es_format wcs_lng server_var(wcs_lng) server_var(wcs_race) server_var(wcs_racename) server_var(wcs_limit) server_var(wcs_tmp)
es_menu 10 server_var(wcs_key) server_var(wcs_lng)
}
// >>>>>>>>>>>>>>>>> RACE INFO >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
block wcs_showraceinfo
{
wcs_debuglog wcs_showraceinfo start
// first, is it a custom command ?
es_xgetargv wcs_userid 1
es_exists ex userid server_var(wcs_userid)
if (server_var(ex) = 0) do
{
// or a say command
es_xgetcmduserid wcs_userid
es_exists ex userid server_var(wcs_userid)
es wcs_menuzero server_var(wcs_userid)
es_keygetvalue wcs_page "WCSuserdata" server_var(wcs_userid) "race"
es_xmath wcs_page - 1
}
es_xelse do
{
es_keygetvalue wcs_page WCSuserdata server_var(wcs_userid) page
}
es_keysetvalue WCSuserdata server_var(wcs_userid) menu "raceinfo"
es_xmath wcs_page + 1
es_keysetvalue WCSuserdata server_var(wcs_userid) page server_var(wcs_page)
es_xset wcs_infotext 0
es_keygetvalue wcs_infotext WCSinfo raceinfo server_var(wcs_page)
if (server_var(wcs_infotext) != "0") do
{
es_strlen wcs_strlen server_var(wcs_infotext)
if (server_var(wcs_strlen) <= 1020) then es_xmenu 0 server_var(wcs_userid) server_var(wcs_infotext)
if (server_var(wcs_strlen) > 1020) then es_xmenu 0 server_var(wcs_userid) "WARNING:\n \n Text too long ! Report this to an admin."
}
wcs_debuglog wcs_showraceinfo end
}
block wcs_raceinfo
{
wcs_debuglog wcs_raceinfo start
es_xforeachkey wcs_key in WCSraces "es_keygetvalue wcs_name WCSraces server_var(wcs_key) name;es_keygetvalue wcs_numberofskills WCSraces server_var(wcs_key) numberofskills;es_keygetvalue wcs_numberoflevels WCSraces server_var(wcs_key) numberoflevels;es_xdoblock wcs/WCSraces/wcs_raceinfo_skills1"
wcs_debuglog wcs_raceinfo end
}
block wcs_raceinfo_skills1
{
wcs_getlanguage "wcs_lng" "wcs_lng_skills"
es_format wcs_text "\n->%1. %2 (%3 lvls/%4 %5)\n" server_var(wcs_key) server_var(wcs_name) server_var(wcs_numberoflevels) server_var(wcs_numberofskills) server_var(wcs_lng)
es_keygetvalue wcs_requiredlevel WCSraces server_var(wcs_key) required_level
wcs_getlanguage "wcs_lng" "wcs_lng_required"
wcs_getlanguage "wcs_lng2" "wcs_lng_level"
if (server_var(wcs_cfg_requiredlevel) = 1) then es_xif (server_var(wcs_requiredlevel) > 0) then es_xformat wcs_text "%1%2 %3 : %4\n" server_var(wcs_text) server_var(wcs_lng) server_var(wcs_lng2) server_var(wcs_requiredlevel)
es_keygetvalue wcs_maxlevel "WCSraces" server_var(wcs_key) "maximum_level"
wcs_getlanguage "wcs_lng" "wcs_lng_maxlevel"
if (server_var(wcs_cfg_maxracelevel) = 1) then es_xif (server_var(wcs_maxlevel) > 0) then es_xformat wcs_text server_var(wcs_lng) server_var(wcs_text) server_var(wcs_maxlevel)
es_keygetvalue wcs_allow_only WCSraces server_var(wcs_key) allow_only
wcs_getlanguage "wcs_lng" "wcs_lng_privaterace"
if (server_var(wcs_cfg_restrictedrace) = 1) then es_xif (server_var(wcs_allow_only) != "0") then es_xformat wcs_text "%1< %2 > \n" server_var(wcs_text) server_var(wcs_lng)
es_keygetvalue wcs_tmp1 WCSraces server_var(wcs_key) author
if (server_var(wcs_tmp1) != "0") then es_xformat wcs_text "%1 credits: %2\n \n" server_var(wcs_text) server_var(wcs_tmp1)
es_keygetvalue wcs_skillname WCSraces server_var(wcs_key) skillnames
es_keygetvalue wcs_skilldescr WCSraces server_var(wcs_key) skilldescr
es_xset wcs_counter 1
while "server_var(wcs_numberofskills) >= server_var(wcs_counter)" "es_xdoblock wcs/WCSraces/wcs_raceinfo_skills2;es_xmath wcs_counter + 1"
es_format wcs_text "%1\n \n " server_var(wcs_text)
if (server_var(wcs_key) > 1) then es_xformat wcs_text "%1\n->8. %2" server_var(wcs_text) server_var(wcs_lng_back)
es_set wcs_keynext server_var(wcs_key)
es_xmath wcs_keynext + 1
es_exists ex key WCSraces server_var(wcs_keynext)
if (server_var(ex) = 1) then es_xformat wcs_text "%1\n->9. %2" server_var(wcs_text) server_var(wcs_lng_next)
es_keysetvalue WCSinfo raceinfo server_var(wcs_key) server_var(wcs_text)
}
block wcs_raceinfo_skills2
{
es_token wcs_skill server_var(wcs_skillname) server_var(wcs_counter) |
es_token wcs_skilld server_var(wcs_skilldescr) server_var(wcs_counter) |
if (server_var(wcs_skilld) != "0") then es_xformatv wcs_text "%1\n->%2. %3\n%4" wcs_text wcs_counter wcs_skill wcs_skilld
if (server_var(wcs_skilld) = "0") then es_xformatv wcs_text "%1\n->%2. %3" wcs_text wcs_counter wcs_skill
}
// <<<<<<<<<<<<<<<<< END RACE INFO <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// >>>>>>>>>>>>>>>>> START RACE MENU >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
block wcs_changerace
{
wcs_debuglog wcs_changerace start
es_xset wcs_userid 0
// if its a say command
es_xgetcmduserid wcs_userid
es_exists ex userid server_var(wcs_userid)
if (server_var(ex) = 1) do
{
es_exists ex key WCSuserdata server_var(wcs_userid)
if (server_var(ex) = 1) do
{
es_exists avast_ex key vipppers server_var(wcs_userid)
jf (server_var(avast_ex) ==0) do
{
es_keycreate vippers server_var(wcs_userid)
es_xdelayed 5 es_keydelete vippers server_var(wcs_userid)
ifx false(wcs_cfg_changeracenextround) do
{
wcs_getlanguage "wcs_lng" "wcs_lng_changerace"
es_tell server_var(wcs_userid) #multi server_var(wcs_lng)
}
es wcs_menuzero server_var(wcs_userid)
es wcs_race_menu server_var(wcs_userid)
}
else do
{
es_tell server_var(wcs_userid) Por Favor, use o Changerace no proximo round!
}
}
}
wcs_debuglog wcs_changerace end
}
block wcs_race_menu
{
wcs_debuglog wcs_race_menu start
// a custom command
es_xgetargv wcs_userid 1
wcs_getlanguage "wcs_lng" "wcs_lng_chooserace"
es_format wcs_text "%1:\n " server_var(wcs_lng)
es_xset wcs_counter 0
// get ID
es_keygetvalue wcs_id WCSuserdata server_var(wcs_userid) id
es_getplayerteam wcs_team server_var(wcs_userid)
// get race level
es_keygetvalue wcs_race "WCSuserdata" server_var(wcs_userid) "race"
// variables
es_xset wcs_racename 0
es_keygetvalue wcs_page WCSuserdata server_var(wcs_userid) page
es_xmath wcs_page + 1
es_keysetvalue WCSuserdata server_var(wcs_userid) page server_var(wcs_page)
es_xset wcs_racenumber 0
es_xset wcs_raceid 0
es_xset wcs_addnum 7
es_math wcs_addnum * server_var(wcs_page)
es_xmath wcs_addnum - 7
// how many races ?
es_xset wcs_racecount 0
es_xforeachkey wcs_key in WCSraces "es_xmath wcs_racecount + 1"
// get id
es_math wcs_raceid + server_var(wcs_addnum)
// start is at 1
es_xset wcs_counter 1
// buildin menu 1..7
es_xmath wcs_raceid + 1
es_xdoblock wcs/WCSraces/wcs_race_menu_init
es_xmath wcs_raceid + 1
es_xdoblock wcs/WCSraces/wcs_race_menu_init
es_xmath wcs_raceid + 1
es_xdoblock wcs/WCSraces/wcs_race_menu_init
es_xmath wcs_raceid + 1
es_xdoblock wcs/WCSraces/wcs_race_menu_init
es_xmath wcs_raceid + 1
es_xdoblock wcs/WCSraces/wcs_race_menu_init
es_xmath wcs_raceid + 1
es_xdoblock wcs/WCSraces/wcs_race_menu_init
es_xmath wcs_raceid + 1
es_xdoblock wcs/WCSraces/wcs_race_menu_init
es_xmath wcs_raceid + 1
// check if we need next page
es_format wcs_text "%1 %2\n %3\n \n " server_var(wcs_lng_page) server_var(wcs_page) server_var(wcs_text)
if (server_var(wcs_raceid) > server_var(wcs_racecount)) then es_xif (server_var(wcs_page) = 1) then es_xformat wcs_text "%1 0. %2" server_var(wcs_text) server_var(wcs_lng_exit)
if (server_var(wcs_raceid) <= server_var(wcs_racecount)) then es_xif (server_var(wcs_page) = 1) then es_xformat wcs_text "%1 9. %2\n 0. %3" server_var(wcs_text) server_var(wcs_lng_next) server_var(wcs_lng_exit)
if (server_var(wcs_raceid) > server_var(wcs_racecount)) then es_xif (server_var(wcs_page) > 1) then es_xformat wcs_text "%1 8. %2\n 0. %3" server_var(wcs_text) server_var(wcs_lng_back) server_var(wcs_lng_exit)
if (server_var(wcs_raceid) <= server_var(wcs_racecount)) then es_xif (server_var(wcs_page) > 1) then es_xformat wcs_text "%1 8. %2\n 9. %3\n 0. %4" server_var(wcs_text) server_var(wcs_lng_back) server_var(wcs_lng_next) server_var(wcs_lng_exit)
es_menu 0 server_var(wcs_userid) server_var(wcs_text)
es_keysetvalue WCSuserdata server_var(wcs_userid) menu race
wcs_debuglog wcs_race_menu end
}
block wcs_race_menu_init
{
wcs_debuglog wcs_race_menu_init start
if (server_var(wcs_raceid) <= server_var(wcs_racecount)) do
{
es_exists ex key WCSraces server_var(wcs_raceid)
ifx true(ex) do
{
es_keygetvalue wcs_racename WCSraces server_var(wcs_raceid) name
if (server_var(wcs_racename) != 0) do
{
es_keygetvalue wcs_limit "WCSraces" server_var(wcs_raceid) "teamlimit"
es_xset wcs_limited "0"
if (server_var(wcs_cfg_enableraceteamlimit) != "1") then es_xset wcs_limit "0"
if (server_var(wcs_limit) != "0") do
{
es_keygetvalue wcs_tmp1 "WCSraces" server_var(wcs_raceid) "2"
es_keygetvalue wcs_tmp2 "WCSraces" server_var(wcs_raceid) "3"
if (server_var(wcs_team) = "1") then es_xif (server_var(wcs_tmp1) > server_var(wcs_tmp2)) then es_xcopy wcs_tmp1 wcs_tmp2
if (server_var(wcs_team) = "1") then es_xif (server_var(wcs_tmp1) >= server_var(wcs_limit)) then es_xset wcs_limited "1"
if (server_var(wcs_team) = "2") then es_xif (server_var(wcs_tmp1) >= server_var(wcs_limit)) then es_xset wcs_limited "1"
if (server_var(wcs_team) = "3") then es_xif (server_var(wcs_tmp2) >= server_var(wcs_limit)) then es_xset wcs_limited "1"
}
// get level stuff
es_format wcs_racef "race_%1" server_var(wcs_raceid)
// TODOOOOOOOOO!!!!!!!
//es_keygetvalue wcs_level "WCSusers" server_var(wcs_id) server_var(wcs_racef)
//es_xset wcs_level 0
es_xformatv wcs_level rl_%1 wcs_raceid
es_keygetvalue wcs_level WCSuserdata server_var(wcs_userid) server_var(wcs_level)
if (server_var(wcs_level) = "0") then es_xset wcs_level 0
//es_token wcs_level server_var(wcs_level) "1" "|"
///////////////////
es_keygetvalue wcs_requiredlevel WCSraces server_var(wcs_raceid) "required_level"
es_keygetvalue wcs_allow_only WCSraces server_var(wcs_raceid) "allow_only"
if (server_var(wcs_cfg_restrictedrace) = 0) then es_xset wcs_allow_only 0
es_keygetvalue wcs_total_level "WCSuserdata" server_var(wcs_userid) "total_level"
if (server_var(wcs_cfg_requiredlevel) = "0") then es_xset wcs_requiredlevel 0
if (server_var(wcs_total_level) >= server_var(wcs_requiredlevel)) do
{
es_keygetvalue wcs_maxlevel "WCSraces" server_var(wcs_raceid) "maximum_level"
if (server_var(wcs_cfg_maxracelevel) = "0") then es_xset wcs_maxlevel server_var(wcs_total_level)
if (server_var(wcs_maxlevel) = "0") then es_xset wcs_maxlevel server_var(wcs_total_level)
if (server_var(wcs_total_level) <= server_var(wcs_maxlevel)) do
{
es_xset wcs_allow 0
if (server_var(wcs_allow_only) = 0) then es_xset wcs_allow 1
es_format wcs_uid "<%1>" server_var(wcs_id)
if (server_var(wcs_uid) in server_var(wcs_allow_only)) then es_xset wcs_allow 1
if (server_var(wcs_allow_only) != "0") do
{
if (server_var(wcs_uid) notin server_var(wcs_allow_only)) do
{
// check for admin
es_exists wcs_isadmin key "WCSadmin" server_var(wcs_id)
if (server_var(wcs_isadmin) = "1") then es_xif ("<admins>" in server_var(wcs_allow_only)) then es_xset wcs_allow "1"
if (server_var(wcs_allow) = 0) do
{
wcs_getlanguage "wcs_lng" "wcs_lng_privaterace"
es_format wcs_text "%1 \n%2. %3 < %4 >" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_racename) server_var(wcs_lng)
}
}
}
if (server_var(wcs_allow) = 1) do
{
if (server_var(wcs_limited) = "0") do
{
if (server_var(wcs_level) > 0) then es_xif (server_var(wcs_cfg_globallevel) = "0") then es_xformat wcs_text "%1 \n->%2. %3 (lvl %4)" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_racename) server_var(wcs_level)
if (server_var(wcs_level) > 0) then es_xif (server_var(wcs_cfg_globallevel) = "1") then es_xformat wcs_text "%1 \n->%2. %3 (lvl %4)" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_racename) server_var(wcs_total_level)
if (server_var(wcs_level) = 0) then es_xformat wcs_text "%1 \n->%2. %3" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_racename)
}
es_xelse do
{
// level too high
wcs_getlanguage "wcs_lng" "wcs_lng_limited"
es_format wcs_text "%1 \n%2. %3 (%4 : %5)" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_racename) server_var(wcs_lng) server_var(wcs_limit)
}
}
}
es_xelse do
{
// level too high
wcs_getlanguage "wcs_lng" "wcs_lng_maximum"
es_format wcs_text "%1 \n%2. %3 (%4 lvl %5)" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_racename) server_var(wcs_lng) server_var(wcs_maxlevel)
}
}
es_xelse do
{
// level too low
wcs_getlanguage "wcs_lng" "wcs_lng_required"
es_format wcs_text "%1 \n%2. %3 (%4 lvl %5)" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_racename) server_var(wcs_lng) server_var(wcs_requiredlevel)
}
if (server_var(wcs_cfg_changeracedetails) = "1") do
{
es_keygetvalue wcs_descr "WCSraces" server_var(wcs_raceid) "shortdescription"
if (server_var(wcs_descr) != "0") then es_xformat wcs_text "%1\n %2" server_var(wcs_text) server_var(wcs_descr)
}
// IMPORTANT !!
es_xmath wcs_counter + 1
}
es_xelse do
{
es_format wcs_text "%1\n (-)" server_var(wcs_text)
}
}
es_xelse do
{
es_format wcs_text "%1\n (-)" server_var(wcs_text)
}
}
wcs_debuglog wcs_race_menu_init end
}
block wcs_race_handle
{
wcs_debuglog wcs_race_handle start
es_xset wcs_page 0
es_keygetvalue wcs_page WCSuserdata event_var(userid) page
es_keygetvalue wcs_id WCSuserdata event_var(userid) id
es_xset wcs_racecount 0
es_xforeachkey wcs_key in WCSraces "es_xmath wcs_racecount + 1"
es_xset wcs_r8id 7
es_math wcs_r8id * server_var(wcs_page)
es_xmath wcs_r8id + 1
// handle back
if (event_var(commandstring) = "8") do
{
if (server_var(wcs_page) > 1) do
{
es_xmath wcs_page - 2
es_keysetvalue WCSuserdata event_var(userid) page server_var(wcs_page)
es wcs_race_menu event_var(userid)
}
}
// handle next
if (event_var(commandstring) = "9") then es_xif (server_var(wcs_r8id) <= server_var(wcs_racecount)) then wcs_race_menu event_var(userid)
// race selected
if (event_var(commandstring) < 8) do
{
if (event_var(commandstring) > 0) do
{
es_xset wcs_raceid 0
es_xset wcs_racename 0
es_xset wcs_addnum 7
es_math wcs_addnum * server_var(wcs_page)
es_xmath wcs_addnum - 7
es_math wcs_raceid + server_var(wcs_addnum)
es_math wcs_raceid + event_var(commandstring)
es_exists ex key WCSraces server_var(wcs_raceid)
if (server_var(ex) = 1) do
{
es_keygetvalue wcs_racename WCSraces server_var(wcs_raceid) name
es_keygetvalue wcs_requiredlevel WCSraces server_var(wcs_raceid) required_level
es_keygetvalue wcs_total_level WCSuserdata server_var(wcs_userid) total_level
if (server_var(wcs_cfg_requiredlevel) = 0) then es_xset wcs_requiredlevel 0
es_keygetvalue wcs_allow_only WCSraces server_var(wcs_raceid) allow_only
if (server_var(wcs_cfg_restrictedrace) = 0) then es_xset wcs_allow_only 0
if (server_var(wcs_total_level) >= server_var(wcs_requiredlevel)) do
{
es_keygetvalue wcs_maxlevel "WCSraces" server_var(wcs_raceid) "maximum_level"
if (server_var(wcs_cfg_maxracelevel) = "0") then es_xset wcs_maxlevel server_var(wcs_total_level)
if (server_var(wcs_maxlevel) = "0") then es_xset wcs_maxlevel server_var(wcs_total_level)
if (server_var(wcs_total_level) <= server_var(wcs_maxlevel)) do
{
es_xset wcs_allow 0
if (server_var(wcs_allow_only) = 0) then es_xset wcs_allow 1
es_format wcs_uid "<%1>" server_var(wcs_id)
if (server_var(wcs_uid) in server_var(wcs_allow_only)) then es_xset wcs_allow 1
if (server_var(wcs_allow_only) != "0") do
{
if (server_var(wcs_uid) notin server_var(wcs_allow_only)) do
{
// check for admin
es_exists wcs_isadmin key "WCSadmin" server_var(wcs_id)
if (server_var(wcs_isadmin) = "1") then es_xif ("<admins>" in server_var(wcs_allow_only)) then es_xset wcs_allow "1"
if (server_var(wcs_allow) = 0) do
{
wcs_getlanguage "wcs_lng" "wcs_lng_notallowed"
es_format wcs_text "#lightgreen%1 : #green%2" server_var(wcs_racename) server_var(wcs_lng)
es_tell event_var(userid) #multi server_var(wcs_text)
}
}
}
// check team limit
es_getplayerteam wcs_team event_var(userid)
es_keygetvalue wcs_limit "WCSraces" server_var(wcs_raceid) "teamlimit"
es_xset wcs_limited "0"
if (server_var(wcs_cfg_enableraceteamlimit) != "1") then es_xset wcs_limit "0"
if (server_var(wcs_limit) != "0") do
{
es_keygetvalue wcs_tmp1 "WCSraces" server_var(wcs_raceid) "2"
es_keygetvalue wcs_tmp2 "WCSraces" server_var(wcs_raceid) "3"
if (server_var(wcs_team) = "1") then es_xif (server_var(wcs_tmp1) > server_var(wcs_tmp2)) then es_xcopy wcs_tmp1 wcs_tmp2
if (server_var(wcs_team) = "1") then es_xif (server_var(wcs_tmp1) >= server_var(wcs_limit)) then es_xset wcs_allow "0"
if (server_var(wcs_team) = "2") then es_xif (server_var(wcs_tmp1) >= server_var(wcs_limit)) then es_xset wcs_allow "0"
if (server_var(wcs_team) = "3") then es_xif (server_var(wcs_tmp2) >= server_var(wcs_limit)) then es_xset wcs_allow "0"
}
if (server_var(wcs_allow) = 1) do
{
ifx true(wcs_cfg_changeracenextround) do
{
wcs_getlanguage wcs_lng wcs_lng_changeracenextround
es_tell event_var(userid) #multi server_var(wcs_lng)
es_keysetvalue WCSuserdata event_var(userid) forcechangerace 1
es_keysetvalue WCSuserdata event_var(userid) forcechangeraceid server_var(wcs_raceid)
}
es_xelse do
{
if (event_var(es_userdead) = 0) then est_Slay event_var(userid)
// save the old race !
es wcs_saveplayer event_var(userid)
es_keysetvalue "WCSuserdata" event_var(userid) "race" server_var(wcs_raceid)
es wcs_playercheck server_var(wcs_raceid)
es wcs_getplayer event_var(userid)
es_xset wcs_text 0
wcs_getlanguage "wcs_lng" "wcs_lng_changedrace"
es_format wcs_text "#lightgreen%1: #green%2" server_var(wcs_lng) server_var(wcs_racename)
es_tell event_var(userid) #multi server_var(wcs_text)
// refresh skills
es_keysetvalue "WCSuserdata" event_var(userid) "skillcheck" "1"
// unrestrict all (required for predator)
es est_UnrestrictAll event_var(userid)
// reset the limited flag
es_keysetvalue "WCSuserdata" event_var(userid) "limitedrace" "0"
}
}
}
es_xelse do
{
es_math wcs_total_level - server_var(wcs_maxlevel)
wcs_getlanguage "wcs_lng" "wcs_lng_overmaxlevel"
es_format wcs_text server_var(wcs_lng) server_var(wcs_racename) server_var(wcs_total_level)
es_tell event_var(userid) #multi server_var(wcs_text)
}
}
es_xelse do
{
es_math wcs_requiredlevel - server_var(wcs_total_level)
wcs_getlanguage "wcs_lng" "wcs_lng_notreqlevel"
es_format wcs_text server_var(wcs_lng) server_var(wcs_racename) server_var(wcs_requiredlevel)
es_tell event_var(userid) #multi server_var(wcs_text)
}
}
}
}
// set page to 0 if race selected
if (event_var(commandstring) != "9") then es_xif (event_var(commandstring) != "8") then es_xkeysetvalue WCSuserdata event_var(userid) menu 0
wcs_debuglog wcs_race_handle end
}
// <<<<<<<<<<<<<<<<< END RACE MENU <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
block wcs_calcracestats
{
es_xforeachkey wcs_key in WCSraces "es_keysetvalue WCSraces server_var(wcs_key) rcounter 0"
es_xforeachkey wcs_key in WCSuserdata "es_keygetvalue wcs_raceid WCSuserdata server_var(wcs_key) race;es_keygetvalue wcs_tmp WCSraces server_var(wcs_raceid) rcounter;es_xmath wcs_tmp + 1;es_keysetvalue WCSraces server_var(wcs_raceid) server_var(wcs_tmp)"
}






Brazil
Logged

Australia




