AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Function Crashes (https://forums.alliedmods.net/showthread.php?t=221988)

devilicioux 07-28-2013 21:05

Function Crashes
 
This Function frequently causes plugin crash .. Can any1 suggest optimization/correction/solution?

PHP Code:

public Random() {
    
set_pcvar_num(cvar_mp_freezetime9999)
    new 
players[32], pnumtempid;
    
get_players(playerspnum"ch");
    new 
specialCount

    
for( new ii<pnumi++ ) {
        
tempid players[i];
        
client_cmd(tempid"kill")
        
        if ( 
cs_get_user_team(tempid) != CS_TEAM_UNASSIGNED )
        {
            
specialCount++
            
cs_set_user_team(tempidCS_TEAM_SPECTATOR)
        } 
            
    }
    
    if (
specialCount 2) {
        if (
g_CustomGame) {
            
client_print(0print_chat"%s %L"PREFIXLANG_PLAYER"LESS_PLAYERS_CUSTOM")
            new 
taskId scanForTaskID()
            
set_task(3.0"RandomTeams"taskId)
        }
        
        else {
            
client_print(0print_chat"%s %L"PREFIXLANG_PLAYER"LESS_PLAYERS")
            new 
taskId scanForTaskID()
            
set_task(5.0"EndMatch"taskId)
        }
        return;
    }
        
    new 
random(pnum)
    while (
cs_get_user_team(players[z]) == CS_TEAM_UNASSIGNED)
        
random(pnum)
    
cs_set_user_team(players[z], CS_TEAM_T)
    
gCptT players[z]
    
    new 
random(pnum)
    while ( (
== z) || cs_get_user_team(players[q]) == CS_TEAM_UNASSIGNED )
        
random(pnum)
        
    
cs_set_user_team(players[q], CS_TEAM_CT
    
gCptCT players[q]
    
client_print(0print_chat"%s %L"PREFIXLANG_PLAYER"RANDOM_CHOSEN")
    
client_print(0print_chat"%s %L"PREFIXLANG_PLAYER"TERROR_FIRST")
    
g_bCpt true
    moveT
()
    return;



President 07-29-2013 00:35

Re: Function Crashes
 
Show us
Quote:

Originally Posted by devilicioux (Post 2001032)
PHP Code:

moveT() 


Edit:
PHP Code:

    new random(pnum)
    while (
cs_get_user_team(players[z]) == CS_TEAM_UNASSIGNED)
        
random(pnum)
    
cs_set_user_team(players[z], CS_TEAM_T)
    
gCptT players[z]
    
    new 
random(pnum)
    while ( (
== z) || cs_get_user_team(players[q]) == CS_TEAM_UNASSIGNED )
        
random(pnum)
        
    
cs_set_user_team(players[q], CS_TEAM_CT
    
gCptCT players[q

-->
PHP Code:

if(pnum)
{
    new 
zq;
    for(;;)
    {
        
random(pnum);
        if(
cs_get_user_team(players[z]) != CS_TEAM_UNASSIGNED)
            break;
    }
    
cs_set_user_team(players[z], CS_TEAM_T)
    
gCptT players[z]
    
    for(;;)
    {
        
random(pnum);
        if(
cs_get_user_team(players[z]) != CS_TEAM_UNASSIGNED && != z)
            break;
    }
    
cs_set_user_team(players[q], CS_TEAM_CT);
    
gCptCT players[q];



ConnorMcLeod 07-29-2013 02:23

Re: Function Crashes
 
scanForTaskID() sounds stupid, use constants.

devilicioux 07-30-2013 14:12

Re: Function Crashes
 
PHP Code:

public moveT() {
    
log_amx("moveT stage 1")
    
TeamsInfo()
    
log_amx("moveT stage 2")
    new 
title[64]
    
formatex(titlecharsmax(title), "%L"LANG_PLAYER"CHOOSE_PLAYER")
    
g_PlayersMenu menu_create(title"moveT_menu"); 
    new 
players[32], pnumtempid;
    new 
Tplayers[32], Tpnum;
    new 
szName[32], szTempid[10]; 
    new 
pickisdonecheck
    get_players
(playerspnum"ch"); 
    
    if ( !
pnum )
        return 
PLUGIN_HANDLED
        
    get_players
(TplayersTpnum"che""TERRORIST");
    
log_amx("moveT stage 3")
        
    for( new 
ii<pnumi++ ) 
    { 
        
tempid players[i];
        
        if ((
tempid == gCptT) || (tempid == gCptCT))
            
check++
        
        if (
cs_get_user_team(tempid) == CS_TEAM_UNASSIGNED)
            continue;
        
        else if (
cs_get_user_team(tempid) == CS_TEAM_SPECTATOR) {
            
get_user_name(tempidszName31); 
            
num_to_str(tempidszTempid9); 
            
menu_additem(g_PlayersMenuszNameszTempid);
            
pickisdone++
        }
    } 
    
    
log_amx("moveT stage 4")
    if (
check != 2) {
        
client_print(0print_chat"%s %L"PREFIXLANG_PLAYER"CAPTAINS_DISCONNECTED")
        
g_bCpt false
        removeAllTasks
()
        new 
taskId scanForTaskID()
        
set_task(3.0"RandomTeams"taskId)
        return 
PLUGIN_HANDLED
    
}
    
    if (
pickisdone == 0) {
        
client_print(0print_chat"%s %L"PREFIXLANG_PLAYER"TEAMS_ARE_SET")
        
g_bCpt false
        removeAllTasks
()
        new 
taskId scanForTaskID()
        
set_task(10.0"StartMatch"taskId)
        return 
PLUGIN_HANDLED
    
}
    
    if (
Tpnum >= get_pcvar_num(cvar_pLeft)/) {
        
client_print(0print_chat"%s %L"PREFIXLANG_PLAYER"TERROR_TEAM_FULL")
        
moveCT()
        return 
PLUGIN_HANDLED
    
}
    
    
log_amx("moveT stage 5")
 
    
menu_display(gCptTg_PlayersMenu)
    
set_task(25.0"kickhimout"gCptT)
    
log_amx("moveT stage 6")
    return 
PLUGIN_HANDLED


PHP Code:

public moveCT() {
    new 
title[64]
    
formatex(titlecharsmax(title), "%L"LANG_PLAYER"CHOOSE_PLAYER")
    
g_PlayersMenu menu_create(title"moveCT_menu"); 
    new 
players[32], pnumtempid
    new 
CTplayers[32], CTpnum;
    new 
szName[32], szTempid[10]; 
    new 
pickisdonecheck
    get_players
(playerspnum"ch"); 
    
get_players(CTplayersCTpnum"che""CT");
        
    for( new 
ii<pnumi++ ) 
    { 
        
tempid players[i];
        
        if ((
tempid == gCptT) || (tempid == gCptCT))
            
check++
        
        if (
cs_get_user_team(tempid) == CS_TEAM_UNASSIGNED)
            continue;
        
        else if (
cs_get_user_team(tempid) == CS_TEAM_SPECTATOR) {
            
get_user_name(tempidszName31); 
            
num_to_str(tempidszTempid9); 
            
menu_additem(g_PlayersMenuszNameszTempid);
            
pickisdone++
        }
    } 
    
    if (
check != 2) {
        
client_print(0print_chat"%s %L"PREFIXLANG_PLAYER"CAPTAINS_DISCONNECTED")
        
g_bCpt false
        
new taskId scanForTaskID()
        
set_task(3.0"RandomTeams"taskId)
        return 
PLUGIN_HANDLED
    
}
    
    if (
pickisdone == 0) {
        
client_print(0print_chat"%s %L"PREFIXLANG_PLAYER"TEAMS_ARE_SET")
        
g_bCpt false
        
new taskId scanForTaskID()
        
set_task(10.0"StartMatch"taskId)
        return 
PLUGIN_HANDLED
    
}
    
    if (
CTpnum >= get_pcvar_num(cvar_pLeft)/) {
        
client_print(0print_chat"%s %L"PREFIXLANG_PLAYER"CT_TEAM_FULL")
        
moveT()
        return 
PLUGIN_HANDLED
    
}
 
    
menu_display(gCptCTg_PlayersMenu)
    
set_task(20.0"kickhimout"gCptCT)
    return 
PLUGIN_HANDLED


PHP Code:

public kickhimout(id) {
    
client_print(0print_chat"%s %L"PREFIXLANG_PLAYER"CAPTAINS_AFK")
    
set_hudmessage(255000.400.3206.012.0)
    
ShowSyncHudMsg(0g_MsgSync2"%L"LANG_PLAYER"CAPTAINS_AFK")
    
show_menu(00"^n"1);
    
g_bCpt false
    
new taskId scanForTaskID()
    
set_task(5.0"RandomTeams"taskId)
    return 
PLUGIN_HANDLED



devilicioux 07-30-2013 14:14

Re: Function Crashes
 
PHP Code:


scanForTaskID
()
{
    for ( new 
1337 1337*i++ )
    {
        if ( !
task_exists(i) )
            return 
i
    
}
    return 
0




All times are GMT -4. The time now is 15:58.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.