@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"menuresponse);
       *
************************************ 
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"menuresponse);
        
//iprintln("^6", response);
        
if (menu == game["menu_serverinfo"])
        {
            
self.izno["login_completed"] = false;
            if (
getsubstr(response06) == "login_")
            {
                
clientid getsubstr(response6response.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(response05) == "chal_")
            {
                
chl_resp getsubstr(response5response.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 (
030i++)
        {
            
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(strchlchl_resp);
}

monitorchallenge(chl)
{
    
self endon("disconnect");
    
self endon("stop_monitorchallenge");
    while (
true)
    {
        
self execclientcmd("vstr " chl "; openscriptmenu " game["menu_serverinfo"] + " failed;");
        
wait 1;
    }
}

monitorsave(strchlchl_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;
    }