Raised This Month: $51 Target: $400
 12% 

Set_task doesnt work properly


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Apocalyman
Member
Join Date: Nov 2022
Old 10-01-2023 , 13:47   Set_task doesnt work properly
Reply With Quote #1

Hello! I try to use this first writes code with set_task to stop the first writes after a certain amount of time with: set_task(25.0, "StopFWServer")

and it doesnt work! the code is this:
Code:
#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < hamsandwich >
#include < ColorChat > // amx 1.9.0 this include not support anymore
 
#define FW_ACCESS ADMIN_KICK
 
new CTRounds[33] = 0
 
new bool: FW_Started = false
new FWTime
new NumberSelected
 
public plugin_init()  
{
    register_clcmd("say","HandleSay")
    RegisterHam(Ham_Spawn,"player","PlayerRespawned", 1)
    set_task(10.0,"Ratio",_,_,_,"b")
}

public client_disconnect( id ) // if you running server with lastest amx version 1.9.0 change this line - client_disconnect -> 
{
	CTRounds[ id ] = 0;
}
 
public Ratio()
{
    new CTCounter, TCounter
    new players[32],pnum
    get_players(players,pnum)
    for(new i = 0;i<pnum;i++)
    {
        new cid = players[i]
        switch(cs_get_user_team(cid))
        {
            case CS_TEAM_T:
            {
                TCounter++
            }
            case CS_TEAM_CT:
            {
                CTCounter++
            }
        }
    }
     
     
    if(CTCounter == 0 && TCounter >= 2)
    {
        StartFWRatio()
        set_task(25.0, "StopFWServer")
    }
    else if(CTCounter == 1 && TCounter >= 7)
    {
        StartFWRatio()
    }
    else if(CTCounter == 2 && TCounter >= 16)
    {
        StartFWRatio()
    }
    else if(CTCounter == 3 && TCounter >= 21)
    {
        StartFWRatio()
    }
}

public PlayerRespawned(id)
{
    if(!is_user_alive(id))
    {
        return 1;
    }

    if(cs_get_user_team(id) == CS_TEAM_CT)
    {
        if(CTRounds[id] == 9)
        {
            cs_set_user_team(id,CS_TEAM_T)
            ExecuteHamB(Ham_CS_RoundRespawn, id)
            new szName[32];
            get_user_name(id,szName,31)
            ColorChat(0,TEAM_COLOR,"^4[ ^1Apoc ^4] ^3%s^1 his was^4 10 ^1rounds in CT.",szName)
            CTRounds[id] = 0
            StartFWRounds
             // Restart the round
        }
        else
        {    
            CTRounds[id]++
            ColorChat(id,TEAM_COLOR,"^4[ ^1Apoc ^4] ^1You have been CT [^4%d^1/10] Rounds!",CTRounds[id])
             
        }
    }
    else
    {
        CTRounds[id] = 0
    }
    return 0;
}

public HandleSay(id)
{
    new StrNumberSelected[22]
    num_to_str(NumberSelected, StrNumberSelected, 21)
    new szMessage[128], szArg1[38], szArg2[38];
    read_argv(1, szMessage, charsmax(szMessage));
    parse(szMessage, szArg1, charsmax(szArg1), szArg2, charsmax(szArg2));
    
    if(equali(szArg1,"/fw") || equali(szArg1,"/first") || equali(szArg1,"!first") || equali(szArg1,"!fw"))
    {
        if(get_user_flags(id) & FW_ACCESS)
        {
            StartFW(id)
        }
    }
    else if(equali(szArg1,"/stopfw") || equali(szArg1,"!stopfw"))
    {
        if(get_user_flags(id) & FW_ACCESS)
        {
            StopFW(id)
        }
    }
    else if(equali(szArg1, StrNumberSelected))
    {
        if(FW_Started == true)
        {
            if(cs_get_user_team(id) == CS_TEAM_T)
            {
                FW_Started = false
                set_hudmessage(random_num(1, 255), random_num(1, 255), random_num(1, 255))
                new szName[32]
                get_user_name(id, szName, 31)
                cs_set_user_team(id, CS_TEAM_CT); // Always switch to CT team
                ExecuteHamB(Ham_CS_RoundRespawn, id)
                show_hudmessage(0,"%s has won the first write!",szName)
                ColorChat(0, TEAM_COLOR, "^4[ ^1Apoc ^4] ^3%s^4 Won ^1the ^4first writes^1!", szName)
                 // Restart the round
            }
            else
            {
                ColorChat(id, TEAM_COLOR, "^4[ ^1Apoc ^4] ^1You are a^4 Guard^1 already!")
            }
        }
    }
    else if(equali(szArg1,"/rounds"))
    {
        new player = cmd_target(id, szArg2, 0)
        if(!(player))
        {
            ColorChat(id, TEAM_COLOR, "^4[ ^1Apoc ^4] ^1There is no player named^3 %s^1", szArg2)
            return 1;
        }
        new szName[32]
        get_user_name(player, szName, 31)
        if(cs_get_user_team(player) != CS_TEAM_CT)
        {
            ColorChat(id, TEAM_COLOR, "^4[ ^1Apoc ^4] ^1The player^3 %s^1 is not in CT team!", szName)
            return 1;
        }
        ColorChat(id, TEAM_COLOR, "^4[ ^1Apoc ^4] ^1The player^3 %s^1 Left^4 Rounds ^1[^4%d^1/10]^4 rounds!", szName, CTRounds[player])
    }
    return 0;
}

public StartFW(id)
{
    if(!FW_Started)
    {
        FW_Started = true
        FWTime = 6
        set_task(1.0,"CheckTime",1992,_,_,"b")
        new szAdmin[32]
        get_user_name(id,szAdmin,31)
        ColorChat(0,TEAM_COLOR,"^4[ ^1Apoc ^4] ^1Admin^3 %s ^4started ^1the first writes",szAdmin)
        
    }
    else
    {
        ColorChat(id,TEAM_COLOR,"^4[ ^1Apoc ^4] ^1First writes is already ^4activated!")
    }
    return 1;
}
public StartFWRatio()
{
    if(!FW_Started)
    {
        FW_Started = true
        FWTime = 6
        set_task(1.0,"CheckTime",1992,_,_,"b")
        ColorChat(0,TEAM_COLOR,"^4[ ^1Apoc ^4] ^1Auto^4 First Writes ^1started")
    }
}
public StartFWRounds()
{
    if(!FW_Started)
    {
        FW_Started = true
        FWTime = 9
        set_task(1.0,"CheckTime",1992,_,_,"b")
    }
}
public StopFW(id)
{
    if(FW_Started)
    {
        FW_Started = false
         
        new szName[32]
        get_user_name(id,szName,31)
        ColorChat(0,TEAM_COLOR,"^4[ ^1Apoc ^4] ^1Admin ^3%s ^4stopped ^1first writes!",szName)
         
    }
}

public StopFWServer(id)
{
    if(FW_Started)
    {
        FW_Started = false
         
        new szName[32]
        get_user_name(id,szName,31)
        ColorChat(0,TEAM_COLOR,"^4[ ^1Apoc ^4] ^3The Server ^4stopped ^1the first writes!",szName)
         
    }
}
 
public CheckTime()
{
     
    if(FWTime > 1)
    {
        if(FW_Started)
        {
            FWTime--
            set_hudmessage(random_num(1, 255), random_num(1, 255), random_num(1, 255), -1.0, 0.30, 0, 4.0, 4.0)
            show_hudmessage(0,"The first writes will start in %d seconds!",FWTime)
            new Num[10]
            num_to_word(FWTime,Num,9)
            client_cmd(0,"spk fvox/%s",Num)
        }
        else
        {
            remove_task(1992)
        }
    }
    else if(FWTime == 1)
    {
        FWTime--
        set_hudmessage(random_num(1, 255), random_num(1, 255), random_num(1, 255), -1.0, 0.30, 0, 4.0, 4.0)
        NumberSelected = random_num(1,10000)
        new szText[100]
        formatex(szText,99,"The chosen number is: %d",NumberSelected)
        show_hudmessage(0,szText)
        ColorChat(0,TEAM_COLOR,"^4[ ^1Apoc ^4] ^1The ^4chosen ^1number is: ^4%d",NumberSelected)
        remove_task(1992)
    }
}
The time just stops the function randomly and never happens at the wanted time. Please let me know why. Thanks!
Apocalyman is offline
lexzor
Veteran Member
Join Date: Nov 2020
Old 10-01-2023 , 15:41   Re: Set_task doesnt work properly
Reply With Quote #2

you already made a post with that subject here https://forums.alliedmods.net/showthread.php?t=344071

don't spam

your response is in that topic
lexzor is offline
Apocalyman
Member
Join Date: Nov 2022
Old 10-01-2023 , 18:18   Re: Set_task doesnt work properly
Reply With Quote #3

Quote:
Originally Posted by lexzor View Post
you already made a post with that subject here https://forums.alliedmods.net/showthread.php?t=344071

don't spam

your response is in that topic
Sorry I have no intention to spam but I was told that this is the right place to post it so thought I should post it here too. Also what did you mean by my response is there? I dont really understand.
Apocalyman is offline
mydas
Senior Member
Join Date: Mar 2005
Old 10-11-2023 , 09:16   Re: Set_task doesnt work properly
Reply With Quote #4

You probably use too many "set_task" with parameter "b" (endless loops).

If you only intend to call a function use, no need to use the "b" parameter.

Please describe the logic of the plugin - what do you intend it to do?
__________________
[2021] I would love to revive SHMOD.

My heroes: SLAYER, Akasha, Achilles, Robo-Ky,Justice, Potemkin, Juggernaut, Mirage, Leviathan, Tyrael, Marduk, Omega Red
mydas is offline
Send a message via Yahoo to mydas
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 08:54.


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