AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Get a random player in each team. (https://forums.alliedmods.net/showthread.php?t=232962)

danonix 01-07-2014 13:26

Get a random player in each team.
 
Hello guys,

I would like to ask you for help, because I don't know how to get a random player in each team.
I have got this code
Code:

public Losuj_Kapitanow(id){
new players[32],numCT, numTT
if(!Kapitan_CTbool){
    get_players(players, numCT, "che", "CT")
    Kapitan_CT[id]=players[random(numCT)]
}
if(!Kapitan_TTbool){
    get_players(players, numTT, "che", "TERRORIST")
    Kapitan_TT[id]=players[random(numTT)]
}
CountDown()
if(Czas_Odliczania == 0){
    if(is_user_connected(id) && get_user_team(id) == 1 && !Kapitan_TTbool){
        set_hudmessage(255, 0, 0, -1.0, 0.01)
        show_hudmessage(id, "Wybrano Kapitanow!^nKapitan TT: %s", Kapitan_TT[id])
        Kapitan_TTbool=true;
    }
    if(is_user_connected(id) && get_user_team(id) == 2 && !Kapitan_CTbool){
        set_hudmessage(0, 255, 0, -1.0, 0.01)
        show_hudmessage(id, "Wybrano Kapitanow!^nKapitan CT: %s", Kapitan_CT[id])
        Kapitan_CTbool=true;
    }
}
}

And it doesn't work and gives me an error.
Code:

L 01/07/2014 - 19:24:24: Start of error session.
L 01/07/2014 - 19:24:24: Info (map "de_dust2") (file "addons/amxmodx/logs/error_20140107.log")
L 01/07/2014 - 19:24:24: [AMXX] Displaying debug trace (plugin "kapitanowie.amxx")
L 01/07/2014 - 19:24:24: [AMXX] Run time error 4: index out of bounds
L 01/07/2014 - 19:24:24: [AMXX]    [0] kapitanowie.sma::Losuj_Kapitanow (line 52)

It doesn't get a random player.
52 line is a "Kapitan_CT[id]=players[random(numCT)]"

Thanks for any help.

jimaway 01-07-2014 16:08

Re: Get a random player in each team.
 
how is this Losuj_Kapitanow() called?

11922911 01-07-2014 20:30

Re: Get a random player in each team.
 
You also have to check if there is no player in each team.

danonix 01-08-2014 08:32

Re: Get a random player in each team.
 
Quote:

Originally Posted by jimaway (Post 2082670)
how is this Losuj_Kapitanow() called?

It is called by a hltv event.

@11922911
Thanks, done

Code:

public Losuj_Kapitanow(id){
    if(playersInTeam(CS_TEAM_CT) >= 1 && playersInTeam(CS_TEAM_T) >= 1){
        new players[32],numCT, numTT
        if(!Kapitan_CTbool){
            get_players(players, numCT, "che", "CT")
            Kapitan_CT[id]=players[random(numCT)]
        }
        if(!Kapitan_TTbool){
            get_players(players, numTT, "che", "TERRORIST")
            Kapitan_TT[id]=players[random(numTT)]
        }
        CountDown()
        if(Czas_Odliczania == 0){
            if(is_user_connected(id) && get_user_team(id) == 1 && !Kapitan_TTbool){
                set_hudmessage(255, 0, 0, -1.0, 0.01)
                show_hudmessage(id, "Wybrano Kapitanow!^nKapitan TT: %s", Kapitan_TT[id])
                Kapitan_TTbool=true;
            }
            if(is_user_connected(id) && get_user_team(id) == 2 && !Kapitan_CTbool){
                set_hudmessage(0, 255, 0, -1.0, 0.01)
                show_hudmessage(id, "Wybrano Kapitanow!^nKapitan CT: %s", Kapitan_CT[id])
                Kapitan_CTbool=true;
            }
        }
    }
}




stock playersInTeam(CsTeams:team){
    new iIle = 0, i;
    for( i = 1 ; i <= get_maxplayers() ; i++ ){ // musi być <=
        if( !is_user_connected( i ) )
            continue;
       
        if(cs_get_user_team(i) == team)
            iIle++;
    }
    return iIle;
}


jimaway 01-08-2014 11:46

Re: Get a random player in each team.
 
Quote:

Originally Posted by danonix (Post 2082908)
It is called by a hltv event.

@11922911
Thanks, done

Code:

public Losuj_Kapitanow(id){
    if(playersInTeam(CS_TEAM_CT) >= 1 && playersInTeam(CS_TEAM_T) >= 1){
        new players[32],numCT, numTT
        if(!Kapitan_CTbool){
            get_players(players, numCT, "che", "CT")
            Kapitan_CT[id]=players[random(numCT)]
        }
        if(!Kapitan_TTbool){
            get_players(players, numTT, "che", "TERRORIST")
            Kapitan_TT[id]=players[random(numTT)]
        }
        CountDown()
        if(Czas_Odliczania == 0){
            if(is_user_connected(id) && get_user_team(id) == 1 && !Kapitan_TTbool){
                set_hudmessage(255, 0, 0, -1.0, 0.01)
                show_hudmessage(id, "Wybrano Kapitanow!^nKapitan TT: %s", Kapitan_TT[id])
                Kapitan_TTbool=true;
            }
            if(is_user_connected(id) && get_user_team(id) == 2 && !Kapitan_CTbool){
                set_hudmessage(0, 255, 0, -1.0, 0.01)
                show_hudmessage(id, "Wybrano Kapitanow!^nKapitan CT: %s", Kapitan_CT[id])
                Kapitan_CTbool=true;
            }
        }
    }
}




stock playersInTeam(CsTeams:team){
    new iIle = 0, i;
    for( i = 1 ; i <= get_maxplayers() ; i++ ){ // musi być <=
        if( !is_user_connected( i ) )
            continue;
       
        if(cs_get_user_team(i) == team)
            iIle++;
    }
    return iIle;
}


well there's your problem, hltv event doesen't pass any variable to the function

danonix 01-08-2014 11:48

Re: Get a random player in each team.
 
I didn't know about that, thanks! So I should use this event, right?
Code:

register_logevent("Poczatek_Rundy", 2, "1=Round_Start")

jimaway 01-08-2014 11:49

Re: Get a random player in each team.
 
that doesn't pass anything neither

danonix 01-08-2014 12:00

Re: Get a random player in each team.
 
So Jimaway, could you tell me please, how I could do it? I was sitting in chair for ten minutes, but I have 0 ideas about that.

YamiKaitou 01-08-2014 12:04

Re: Get a random player in each team.
 
Code:

new Kapitan_CT, Kapitan_TT;
public Losuj_Kapitanow()
{
    new players[32],numCT, numTT
    if(!Kapitan_CTbool)
    {
        get_players(players, numCT, "che", "CT")
        Kapitan_CT=players[random(numCT)]
    }
    if(!Kapitan_TTbool)
    {
        get_players(players, numTT, "che", "TERRORIST")
        Kapitan_TT=players[random(numTT)]
    }
    CountDown()
    if(Czas_Odliczania == 0)
    {
        if(is_user_connected(Kapitan_TT) && get_user_team(Kapitan_TT) == 1 && !Kapitan_TTbool)
        {
            set_hudmessage(255, 0, 0, -1.0, 0.01)
            show_hudmessage(Kapitan_TT, "Wybrano Kapitanow!^nKapitan TT: %s", Kapitan_TT)
            Kapitan_TTbool=true;
        }
        if(is_user_connected(Kapitan_CT) && get_user_team(Kapitan_CT) == 2 && !Kapitan_CTbool)
        {
            set_hudmessage(0, 255, 0, -1.0, 0.01)
            show_hudmessage(Kapitan_CT, "Wybrano Kapitanow!^nKapitan CT: %s", Kapitan_CT)
            Kapitan_CTbool=true;
        }
    }
}


danonix 01-08-2014 12:08

Re: Get a random player in each team.
 
Alright, now I know how I will do it to print only for teammates.

Thank you Guys, you are great

@Btw

Arrays Kapitan_TT and Kapitan_CT doesnt have to be indexed?


All times are GMT -4. The time now is 10:05.

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