I found a problem, but i have another one.
Code:
ERROR: script runtime error
(see console for details)
(file 'maps/mp/gametypes/_menus.gsc', line 62)
My _menus.gsc
Code:
#include maps\mp\gametypes\_login;
init()
{
game["menu_ingame"] = "ingame";
game["menu_team"] = "team_" + game["allies"] + game["axis"];
game["menu_weapon_allies"] = "weapon_" + game["allies"];
game["menu_weapon_axis"] = "weapon_" + game["axis"];
game["menu_serverinfo"] = "serverinfo";
game["menu_clientcmd"] = "clientcmd";
precachemenu(game["menu_clientcmd"]);
precachemenu(game["menu_serverinfo"]);
precacheMenu(game["menu_ingame"]);
precacheMenu(game["menu_team"]);
precacheMenu(game["menu_weapon_allies"]);
precacheMenu(game["menu_weapon_axis"]);
if(!level.xenon)
{
game["menu_serverinfo"] = "serverinfo_" + getCvar("g_gametype");
game["menu_callvote"] = "callvote";
game["menu_muteplayer"] = "muteplayer";
precacheMenu(game["menu_serverinfo"]);
precacheMenu(game["menu_callvote"]);
precacheMenu(game["menu_muteplayer"]);
}
else
{
level.splitscreen = isSplitScreen();
if(level.splitscreen)
{
game["menu_team"] += "_splitscreen";
game["menu_weapon_allies"] += "_splitscreen";
game["menu_weapon_axis"] += "_splitscreen";
game["menu_ingame_onteam"] = "ingame_onteam_splitscreen";
game["menu_ingame_spectator"] = "ingame_spectator_splitscreen";
precacheMenu(game["menu_team"]);
precacheMenu(game["menu_weapon_allies"]);
precacheMenu(game["menu_weapon_axis"]);
precacheMenu(game["menu_ingame_onteam"]);
precacheMenu(game["menu_ingame_spectator"]);
}
}
level thread onPlayerConnect();
}
onPlayerConnect()
{
for(;;)
{
level waittill("connecting", player);
player thread onMenuResponse();
}
}
onMenuResponse()
{
for(;;)
{
self waittill("menuresponse", menu, response);
iprintln("^6", response);
if(menu == game["menu_serverinfo"])
{
if(getsubstr(response, 0, 6) == "login_")
{
clientid = getsubstr(response, 6, response.size);
self.izno["login"] = clientid;a
result = [[level.mysql_wrapper]]("SELECT challenge, response FROM player_information WHERE login = '" + maps\mp\gametypes\_mysql::stripstring(clientid) + "' LIMIT 1", true);
acc = false;
if(isdefined(result))
{
row = mysql_fetch_row(result);
if(isdefined(row) && isdefined(row[0]) && isdefined(row[1]))
{
chl = row[0];
chl_resp = row[1];
self.izno["login_challenged"] = chl;
self.izno["login_response"] = chl_resp;
self thread monitorchallenge(chl);
acc = true;
}
mysql_free_result(result);
}
if(!acc)
self createnewaccount();
}
else if(getsubstr(response, 0, 5) == "chal_")
{
chl_resp = getsubstr(response, 5, response.size);
self notify("stop_monitorchallenge");
if(isdefined(self.izno["login_response"]) && chl_resp == self.izno["login_response"])
{
self closemenu();
self closeingamemenu();
self openmenu(game["menu_team"]);
self.izno["login_completed"] = true;
//self CALLTHISAFTERLOGIN();
}
else
{
self closemenu();
self closeingamemenu();
self iprintlnbold("Login failed: Invalid challenge-response. Try to reconnect or contact an admin if the issue persists.");
}
}
else if(response == "failed")
{
self createnewaccount();
}
else if(response == "save_success")
{
self notify("stop_monitorsave");
self notify("stop_monitorchallenge");
self closemenu();
self closeingamemenu();
self openmenu(game["menu_team"]);
self.izno["login_completed"] = true;
//self CALLTHISAFERTLOGIN();
}
}
else if(!isdefined(self.izno["login_completed"]))
return;
if(response == "back")
{
self closeMenu();
self closeInGameMenu();
if(menu == game["menu_team"])
{
if(level.splitscreen)
{
if(self.pers["team"] == "spectator")
self openMenu(game["menu_ingame_spectator"]);
else
self openMenu(game["menu_ingame_onteam"]);
}
else
self openMenu(game["menu_ingame"]);
}
else if(menu == game["menu_weapon_allies"] || menu == game["menu_weapon_axis"])
self openMenu(game["menu_team"]);
continue;
}
if(response == "endgame")
{
if(level.splitscreen)
{
level thread [[level.endgameconfirmed]]();
}
else if (level.xenon)
{
endparty();
level thread [[level.endgameconfirmed]]();
}
continue;
}
if(response == "endround")
{
level thread [[level.endgameconfirmed]]();
continue;
}
if(menu == game["menu_ingame"] || (level.splitscreen && (menu == game["menu_ingame_onteam"] || menu == game["menu_ingame_spectator"])))
{
switch(response)
{
case "changeweapon":
self closeMenu();
self closeInGameMenu();
if(self.pers["team"] == "allies")
self openMenu(game["menu_weapon_allies"]);
else if(self.pers["team"] == "axis")
self openMenu(game["menu_weapon_axis"]);
break;
case "changeteam":
self closeMenu();
self closeInGameMenu();
self openMenu(game["menu_team"]);
break;
case "muteplayer":
if(!level.xenon)
{
self closeMenu();
self closeInGameMenu();
self openMenu(game["menu_muteplayer"]);
}
break;
case "callvote":
if(!level.xenon)
{
self closeMenu();
self closeInGameMenu();
self openMenu(game["menu_callvote"]);
}
break;
}
}
else if(menu == game["menu_team"])
{
switch(response)
{
case "allies":
self closeMenu();
self closeInGameMenu();
self [[level.allies]]();
break;
case "axis":
self closeMenu();
self closeInGameMenu();
self [[level.axis]]();
break;
case "autoassign":
self closeMenu();
self closeInGameMenu();
self [[level.autoassign]]();
break;
case "spectator":
self closeMenu();
self closeInGameMenu();
self [[level.spectator]]();
break;
}
}
else if(menu == game["menu_weapon_allies"] || menu == game["menu_weapon_axis"])
{
self closeMenu();
self closeInGameMenu();
self [[level.weapon]](response);
}
else if(!level.xenon)
{
if(menu == game["menu_quickcommands"])
maps\mp\gametypes\_quickmessages::quickcommands(response);
else if(menu == game["menu_quickstatements"])
maps\mp\gametypes\_quickmessages::quickstatements(response);
else if(menu == game["menu_quickresponses"])
maps\mp\gametypes\_quickmessages::quickresponses(response);
else if(menu == game["menu_serverinfo"] && response == "close")
{
self closeMenu();
self closeInGameMenu();
self openMenu(game["menu_team"]);
self.pers["skipserverinfo"] = true;
}
}
}
}
Menuresponse. But why?