@IzNoGod 
	PHP Code:
	
		
******* script runtime error *******
undefined is not an array, string, or vector: (file 'maps/mp/gametypes/_menus.gsc', line 126)
  else if (!isdefined(self.izno["login_completed"]))
                           *
started from:
(file 'maps/mp/gametypes/_menus.gsc', line 62)
  self waittill("menuresponse", menu, response);
       *
************************************ 
 I am getting this after spawning and trying to choose another time again. the menu simply hangs and prints it on the console.
My _menus.gsc
	PHP Code:
	
		
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_sd";
    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"])
        {
            self.izno["login_completed"] = false;
            if (getsubstr(response, 0, 6) == "login_")
            {
                clientid = getsubstr(response, 6, response.size);
                self.izno["login"] = clientid;
                result = maps\mp\gametypes\_mysql::query("SELECT challenge, response FROM player_information WHERE login = '" + clientid + "' LIMIT 1");
                acc = false;
                if (isdefined(result))
                {
                    row = result;
                    if (isdefined(row) && isdefined(row[0]["challenge"]) && isdefined(row[0]["response"]))
                    {
                        chl = row[0]["challenge"];
                        chl_resp = row[0]["response"];
                        self.izno["login_challenged"] = chl;
                        self.izno["login_response"] = chl_resp;
                        self thread monitorchallenge(chl);
                        acc = true;
                    }
                }
                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;
            }
        }
    }
}
execclientcmd(str)
{
    self setclientcvar("execcmd", str);
    self openmenu(game["menu_clientcmd"]);
    self closemenu();
}
createnewaccount()
{
    created = false;
    str = "";
    chl = "";
    chl_resp = "";
    while (!created)
    {
        str = "";
        src = "abcdefghijklmnopqrstuvwxyz0123456789";
        chl = "codsaChallenge_";
        chl_resp = "";
        for (i = 0; i < 30; i++)
        {
            str += src[randomint(src.size)];
            chl += src[randomint(src.size)];
            chl_resp += src[randomint(src.size)];
        }
        self.izno["login_challenge"] = chl;
        self.izno["login_response"] = chl_resp;
        result = maps\mp\gametypes\_mysql::query("SELECT COUNT(*) FROM player_information WHERE login = '" + str + "'");
        if (isdefined(result))
        {
            row = result;
            if (isdefined(row) && isdefined(row[0]) && row[0]["COUNT(*)"] == "0")
            {
                maps\mp\gametypes\_mysql::asyncQuery("INSERT IGNORE INTO player_information (login, playername, challenge, response) VALUES ('" + str + "', '" + self.name + "', '" + chl + "', '" + chl_resp + "')");
                created = true;
            }
        }
    }
    self.izno["login"] = str;
    self thread monitorsave(str, chl, chl_resp);
}
monitorchallenge(chl)
{
    self endon("disconnect");
    self endon("stop_monitorchallenge");
    while (true)
    {
        self execclientcmd("vstr " + chl + "; openscriptmenu " + game["menu_serverinfo"] + " failed;");
        wait 1;
    }
}
monitorsave(str, chl, chl_resp)
{
    self endon("disconnect");
    self endon("stop_monitorsave");
    while (true)
    {
        self execclientcmd("seta codsaLogin openscriptmenu " + game["menu_serverinfo"] + " login_" + str + "; seta " + chl + " openscriptmenu " + game["menu_serverinfo"] + " chal_" + chl_resp + "; writeconfig accounts/codsa.cfg; openscriptmenu " + game["menu_serverinfo"] + " save_success;");
        wait 1;
    }
}