Raised This Month: $32 Target: $400
 8% 

Help Add flags instead of random player selection


Post New Thread Reply   
 
Thread Tools Display Modes
hufuishu
Junior Member
Join Date: Aug 2016
Old 03-25-2017 , 12:55   Re: Help Add flags instead of random player selection
Reply With Quote #11

Quote:
Originally Posted by clavificial View Post
Hi

I've modified the code.
If 2 or more admins are online, 2 random admins will become captains
Otherwise, if 1 admin or less is online, 2 random players will become captains.


PHP Code:
#include <amxmodx> 
#include <amxmisc> 
#include <cstrike> 

#define TASK_MENUCLOSE 9001 
#define TASK_PLAYERSLIST 9002 

#define MinPlayers 10 

new const Prefix[] = "[Captain]"

new 
RandomPlayer1
new 
RandomPlayer2

new 
bool:CaptainSort

public 
plugin_init() 

    
register_plugin("Captain Sorting""1.0""kramesa"); 
    
    
register_clcmd("say /capsort""StartCaptain"); 
    
    
register_clcmd("chooseteam""Block"); 
    
register_clcmd("jointeam""Block"); 


public 
StartCaptain(id

    
//Check wheter user is admin or not
    
if(is_user_admin(id)) 
    { 
        
//If captain is already running
        
if(CaptainSort == true
        { 
            
client_print(idprint_chat"%s Captain Sort already running."Prefix); 
            return 
PLUGIN_HANDLED
        } 
        
        
//Start the captain
        
Captain(); 
        return 
PLUGIN_HANDLED
    } 
    
client_print(idprint_chat"%s Only admins have access to this command."Prefix); 
    return 
PLUGIN_HANDLED


public 
Block(id

    if(
CaptainSort == true
    { 
        
client_print(idprint_chat"%s Captain Sort is running."Prefix); 
        return 
PLUGIN_HANDLED
    } 
    return 
PLUGIN_CONTINUE


public 
client_putinserver(id)  

    if(!
is_user_connected(RandomPlayer1) && CaptainSort && get_user_flags(id) & ADMIN_KICK
    { 
        
RandomPlayer1 id
        
        new 
First_Captain[35]; 
        
get_user_name(RandomPlayer1First_Captaincharsmax(First_Captain)); 
        
        
client_print(0print_chat"%s The new Captain of CTs is: %s"PrefixFirst_Captain); 
        
set_cvar_num("sv_restartround"1); 
    } 
    if(!
is_user_connected(RandomPlayer2) && CaptainSort && get_user_flags(id) & ADMIN_KICK
    { 
        
RandomPlayer2 id
        
        new 
Second_Captain[35]; 
        
get_user_name(RandomPlayer2Second_Captaincharsmax(Second_Captain)); 
        
        
client_print(0print_chat"%s The new Captain of Ts is: %s"PrefixSecond_Captain); 
        
set_cvar_num("sv_restartround"1
    } 


public 
Num_Admins_Online() {
    new 
iPlayers[32], iNum
    
get_players(iPlayersiNum"ch"); 
    new 
numAdmins
    
for(new 0iNum;i++) {
        new 
id iPlayers[i]
        if(
get_user_flags(id) & ADMIN_KICK) {
            
numAdmins++
        }
    }
    return 
numAdmins
}

//adminOnly? 1 = only admins can be captains, 0 = all players can be captains
public RandomCaptain(adminOnly) {
    
//I think this is wrong... iPlayers[iNum] will never return an actual player.
    //On a closer look this is just a more pretentious way of saying "if (true)"
    
new iPlayers[32], iNum
    
get_players(iPlayersiNum"ch");

    
RandomPlayer1 iPlayers[random(iNum)]; 
    
    while(
adminOnly == && !(get_user_flags(RandomPlayer1) & ADMIN_KICK)) {    
        
RandomPlayer1 iPlayers[random(iNum)]; 
    }
    
    
RandomPlayer2 RandomPlayer1    
    
    
//Making sure not getting same captain for both teams
    
while(RandomPlayer1 == RandomPlayer2 || (adminOnly == && !(get_user_flags(RandomPlayer2) & ADMIN_KICK)))
    { 
        
RandomPlayer2 iPlayers[random(iNum)]; 
    } 
}

public 
Captain() 

    new 
iPlayers[32], iNum
    
get_players(iPlayersiNum"ch"); 
    
    
//Run only if enough players are connected
    
if(iNum MinPlayers
    { 
        
client_print(0print_chat"%s Need have more %d players to start Captain Sort."Prefix, (iNum MinPlayers)); 
        return 
PLUGIN_HANDLED
    } 
    
    
//Sort players to spectators
    
for(new iiNumi++) 
    { 
        
user_silentkill(iPlayers[i]); 
        
cs_set_user_team(iPlayers[i], 3); 
    } 
    
    
//NEW CODE HERE
    
if(Num_Admins_Online() >= 2) {
        
RandomCaptain(1)
    } else {
        
RandomCaptain(0)
    }
    
//--------------
    
    //Set captains to respective teams
    
cs_set_user_team(RandomPlayer1CS_TEAM_CT); 
    
cs_set_user_team(RandomPlayer2CS_TEAM_T); 
    
    new 
First_Captain[35], Second_Captain[35]; 
    
    
get_user_name(RandomPlayer1First_Captaincharsmax(First_Captain)); 
    
get_user_name(RandomPlayer2Second_Captaincharsmax(Second_Captain)); 
    
    
client_print(0print_chat"%s The Captain's are: %s (TRs) and %s (CTs)."PrefixFirst_CaptainSecond_Captain); 
    
client_print(0print_chat"%s If no player is selected in 10 seconds, a player will be chosen random."Prefix); 
    
    
set_cvar_num("sv_restartround"1
    
    new 
First random(2
    
    
set_task(1.5"captain_menu"First RandomPlayer1 RandomPlayer2); 
    
set_task(0.2"PlayersList"TASK_PLAYERSLIST__"b"); 
    
    
CaptainSort true 
    
return PLUGIN_CONTINUE 


public 
captain_menu(id

    new 
menu menu_create("Select a Player:""captainmenu_handler"
    
    
set_task(11.5"menu_task"id TASK_MENUCLOSE); 
    
    new 
players[32], pnumtempid
    new 
szName[32], szTempid[10]; 
    
    
get_players(playerspnum"ch"
    
    if(
pnum == 0
    { 
        
remove_task(id+TASK_MENUCLOSE
        
remove_task(TASK_PLAYERSLIST
        
CaptainSort false 
        
        client_print
(0print_chat"%s Closing Captain Sort. Missing players."Prefix); 
        return 
PLUGIN_HANDLED
    } 
    for(new 
ii<pnumi++) 
    { 
        
tempid players[i]; 
        
        if(
cs_get_user_team(tempid) != CS_TEAM_SPECTATOR) continue; 
        
        
get_user_name(tempidszNamecharsmax(szName)); 
        
num_to_str(tempidszTempidcharsmax(szTempid)); 
        
        
menu_additem(menuszNameszTempid,0); 
    } 
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER); 
    
    
menu_display(idmenu0); 
    return 
PLUGIN_HANDLED


public 
captainmenu_handler(id,menu,item

    if(
item == MENU_EXIT
    { 
        
menu_display(id,menu,0
        return 
PLUGIN_HANDLED
    } 
    new 
data[6], szName[64]; 
    new 
accesscallback
    
menu_item_getinfo(menuitemaccessdatacharsmax(data), szNamecharsmax(szName), callback); 
    
    new 
tempid str_to_num(data
    
    new 
name[35], namec[35]; 
    
get_user_name(tempidnamecharsmax(name)); 
    
get_user_name(idnameccharsmax(namec)); 
    
    
cs_set_user_team(tempidcs_get_user_team(id)); 
    
client_print(0print_chat"%s %s choose the player %s"Prefixnamecname); 
    
    
set_cvar_num("sv_restart",1
    
    
remove_task(id+TASK_MENUCLOSE
    
    new 
iPlayers[32],pnum 
    get_players
(iPlayers,pnum,"ch"
    
    if(
is_user_connected(RandomPlayer1) && is_user_connected(RandomPlayer2)) 
    { 
        
set_task(1.5,"captain_menu",id == RandomPlayer1 RandomPlayer2 RandomPlayer1
    } 
    else 
    { 
        
set_task(5.0,"CheckCaptainJoin",id == RandomPlayer1 RandomPlayer1 RandomPlayer2
    } 
    
menu_destroy(menu
    return 
PLUGIN_HANDLED 


public 
menu_task(id

    
id -= TASK_MENUCLOSE 
    
    
new players[32], pnum
    
get_players(playerspnum"ch"); 
    
    new 
randomnum random(pnum
    new 
bool:has_spec 
    
    
for(new ipnumi++) 
    { 
        if(
cs_get_user_team(players[i]) == CS_TEAM_SPECTATOR
        { 
            
has_spec true 
        

    } 
    if(!
has_spec
    { 
        
remove_task(TASK_PLAYERSLIST); 
        
CaptainSort false
        return; 
    } 
    while(
cs_get_user_team(players[randomnum]) != CS_TEAM_SPECTATOR
    { 
        
randomnum random(pnum
    } 
    if(
is_user_connected(id)) 
    { 
        
set_cvar_num("sv_restart",1
        
cs_set_user_team(players[randomnum],cs_get_user_team(id)) 
        
        
set_task(1.5"captain_menu"id == RandomPlayer1 RandomPlayer2 RandomPlayer1); 
    } 
    else 
    { 
        
set_task(5.0"CheckCaptainJoin"id == RandomPlayer1 RandomPlayer2 RandomPlayer1); 
        
        
client_print(0print_chat"%s Awaiting the arrival of a new Captain."Prefix); 
    } 
    
show_menu(id0"^n"1); 


public 
CheckCaptainJoin(NextCaptainMenu

    if(
is_user_connected(RandomPlayer1) && is_user_connected(RandomPlayer2)) 
    { 
        
set_task(1.5"captain_menu"NextCaptainMenu
    } 
    else 
    { 
        
set_task(5.0"CheckCaptainJoin"NextCaptainMenu
    } 


public 
PlayersList() 

    new 
iPlayers[32], iNum
    
get_players(iPlayersiNum"ch"); 
    
    new 
posTRposCTposSPEC
    new 
HudTextTR[512], HudTextCT[512], HudTextSPEC[512]; 
    new 
szName[38], name[38]; 
    
    for(new 
iiNumi++) 
    { 
        
get_user_name(iPlayers[i], szNamecharsmax(szName)); 
        
        if(
iPlayers[i] == RandomPlayer1 || iPlayers[i] == RandomPlayer2
        { 
            
formatex(namecharsmax(name), "%s (C)"szName); 
        } 
        else  
        { 
            
name szName
        } 
        if(
cs_get_user_team(iPlayers[i]) == CS_TEAM_T
        { 
            
posTR += formatex(HudTextTR[posTR], 511-posTR,"%s^n"name); 
        } 
        else if(
cs_get_user_team(iPlayers[i]) == CS_TEAM_CT
        { 
            
posCT += formatex(HudTextCT[posCT], 511-posCT"%s^n"name); 
        } 
        else 
        { 
            
posSPEC += formatex(HudTextSPEC[posSPEC], 511-posSPEC"%s^n"name); 
        } 
    } 
    for(new 
iiNumi++) 
    { 
        
set_hudmessage(255000.700.1600.01.10.00.01); 
        
show_hudmessage(iPlayers[i], "Terrorists:"); 
        
        
set_hudmessage(2552552550.700.1900.01.10.00.02); 
        
show_hudmessage(iPlayers[i], HudTextTR); 
        
        
set_hudmessage(002550.700.5100.01.10.00.03); 
        
show_hudmessage(iPlayers[i], "Counter-Terrorist:"); 
        
        
set_hudmessage(2552552550.700.5400.01.10.00.04); 
        
show_hudmessage(iPlayers[i], HudTextCT); 
    } 

Clavificial has done a fabulous job...modified captsort to make admins only captain...can be used...
hufuishu is offline
Old 03-25-2017, 13:08
hufuishu
This message has been deleted by hufuishu.
B@IL
Junior Member
Join Date: Mar 2017
Location: India
Old 03-25-2017 , 14:04   Re: Help Add flags instead of random player selection
Reply With Quote #12

Try this Alyona..

PHP Code:
#include <amxmodx> 
#include <amxmisc> 
#include <cstrike> 

#define TASK_MENUCLOSE 9001 
#define TASK_PLAYERSLIST 9002 

#define MinPlayers 10 

new const Prefix[] = "[Captain]"

new 
bool:CaptainSort 

new aCaptainCT[33],aCaptainT[33
new 
RandomPlayer1,RandomPlayer2 

public plugin_init() 

    
register_plugin("Captain Sorting""1.0""kramesa"); 
     
    
register_concmd("amx_captains","CaptainCmd",ADMIN_BAN,"<tcaptain> <ctcaptain"
     
    
register_clcmd("chooseteam""Block"); 
    
register_clcmd("jointeam""Block"); 


public 
Block(id

    if(
CaptainSort
    { 
        
client_print(idprint_chat"%s Captain Sort is running."Prefix); 
        return 
PLUGIN_HANDLED
    } 
    return 
PLUGIN_CONTINUE


public 
client_putinserver(id)  

    if(
aCaptainCT[id]) 
    { 
        
client_print(0print_chat"%s The captain of CTs has left. Admin, select another one."Prefix); 
        
set_cvar_num("sv_restartround"1); 
    } 
    if(
aCaptainT[id]) 
    { 
        
client_print(0print_chat"%s The captain of Ts has left. Admin, select another one."Prefix); 
        
set_cvar_num("sv_restartround"1); 
    } 


public 
CaptainCmd(id,level,cid

    if(!
cmd_access(id,level,cid,3)) 
        return 
PLUGIN_HANDLED 

    
if(CaptainSort
    { 
        
client_print(idprint_chat"%s Captain Sort already running."Prefix); 
        return 
PLUGIN_HANDLED
    } 
    new 
szCaptainT[32],szCaptainCT[32
    
read_argv(1,szCaptainT,31
    
read_argv(2,szCaptainCT,31

    new 
CaptainT cmd_target(id,szCaptainT,_
    new 
CaptainCT cmd_target(id,szCaptainCT,_

    new 
iPlayers[32], iNum,Player 
    get_players
(iPlayersiNum"ch"
     
    if(
iNum MinPlayers
    { 
        
client_print(0print_chat"%s Need have more %d players to start Captain Sort."Prefix, (iNum MinPlayers)) 
        return 
PLUGIN_HANDLED 
    

    for(new 
iiNumi++) 
    { 
        
Player iPlayers[i
        
user_silentkill(Player
        
cs_set_user_team(PlayerCS_TEAM_SPECTATOR
    } 
    
cs_set_user_team(CaptainCTCS_TEAM_CT
    
cs_set_user_team(CaptainTCS_TEAM_T
     
    
aCaptainCT[CaptainCT] = true 
    aCaptainT
[CaptainT] = true 
     
    RandomPlayer1 
CaptainT 
    RandomPlayer2 
CaptainCT 
     
    
new First_Captain[35], Second_Captain[35
     
    
get_user_name(CaptainTFirst_Captaincharsmax(First_Captain)); 
    
get_user_name(CaptainCTSecond_Captaincharsmax(Second_Captain)); 
     
    
client_print(0print_chat"%s The Captain's are: %s (TRs) and %s (CTs)."PrefixFirst_CaptainSecond_Captain); 
    
client_print(0print_chat"%s If no player is selected in 10 seconds, a player will be chosen random."Prefix); 
     
    
set_cvar_num("sv_restartround"1

    new 
First random(2)
    
    
set_task(1.5"captain_menu"First RandomPlayer1 RandomPlayer2);
    
set_task(0.2"PlayersList"TASK_PLAYERSLIST__"b");
     
    
CaptainSort true 
    
return PLUGIN_CONTINUE 


public 
captain_menu(id

    new 
menu menu_create("Select a Player:""captainmenu_handler"
     
    
set_task(11.5"menu_task"id TASK_MENUCLOSE); 
     
    new 
players[32], pnumtempid
    new 
szName[32], szTempid[10]; 
     
    
get_players(playerspnum"ch"
     
    if(
pnum == 0
    { 
        
remove_task(id+TASK_MENUCLOSE
        
remove_task(TASK_PLAYERSLIST
        
CaptainSort false 
         
        client_print
(0print_chat"%s Closing Captain Sort. Missing players."Prefix); 
        return 
PLUGIN_HANDLED
    } 
    for(new 
ii<pnumi++) 
    { 
        
tempid players[i]; 
         
        if(
cs_get_user_team(tempid) != CS_TEAM_SPECTATOR) continue; 
         
        
get_user_name(tempidszNamecharsmax(szName)); 
        
num_to_str(tempidszTempidcharsmax(szTempid)); 
         
        
menu_additem(menuszNameszTempid,0); 
    } 
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER); 
     
    
menu_display(idmenu0); 
    return 
PLUGIN_HANDLED


public 
captainmenu_handler(id,menu,item

    if(
item == MENU_EXIT
    { 
        
menu_display(id,menu,0
        return 
PLUGIN_HANDLED
    } 
    new 
data[6], szName[64]; 
    new 
accesscallback
    
menu_item_getinfo(menuitemaccessdatacharsmax(data), szNamecharsmax(szName), callback); 
     
    new 
tempid str_to_num(data
     
    new 
name[35], namec[35]; 
    
get_user_name(tempidnamecharsmax(name)); 
    
get_user_name(idnameccharsmax(namec)); 
     
    
cs_set_user_team(tempidcs_get_user_team(id)); 
    
client_print(0print_chat"%s %s choose the player %s"Prefixnamecname); 
     
    
set_cvar_num("sv_restart",1
     
    
remove_task(id+TASK_MENUCLOSE
     
    new 
iPlayers[32],pnum 
    get_players
(iPlayers,pnum,"h"
     
    if(
is_user_connected(RandomPlayer1) && is_user_connected(RandomPlayer2)) 
    { 
        
set_task(1.5,"captain_menu",id == RandomPlayer1 RandomPlayer2 RandomPlayer1
    } 
    else 
    { 
        
set_task(5.0,"CheckCaptainJoin",id == RandomPlayer1 RandomPlayer1 RandomPlayer2
    } 
    
menu_destroy(menu
    return 
PLUGIN_HANDLED 


public 
menu_task(id

    
id -= TASK_MENUCLOSE 
     
    
new players[32], pnum
    
get_players(playerspnum"ch"); 
     
    new 
randomnum random(pnum
    new 
bool:has_spec 
     
    
for(new ipnumi++) 
    { 
        if(
cs_get_user_team(players[i]) == CS_TEAM_SPECTATOR
        { 
            
has_spec true 
        

    } 
    if(!
has_spec
    { 
        
remove_task(TASK_PLAYERSLIST); 
        
CaptainSort false
        return; 
    } 
    while(
cs_get_user_team(players[randomnum]) != CS_TEAM_SPECTATOR
    { 
        
randomnum random(pnum
    } 
    if(
is_user_connected(id)) 
    { 
        
set_cvar_num("sv_restart",1
        
cs_set_user_team(players[randomnum],cs_get_user_team(id)) 
         
        
set_task(1.5"captain_menu"id == RandomPlayer1 RandomPlayer2 RandomPlayer1); 
    } 
    else 
    { 
        
set_task(5.0"CheckCaptainJoin"id == RandomPlayer1 RandomPlayer2 RandomPlayer1); 
         
        
client_print(0print_chat"%s Awaiting the arrival of a new Captain."Prefix); 
    } 
    
show_menu(id0"^n"1); 


public 
CheckCaptainJoin(NextCaptainMenu

    if(
is_user_connected(RandomPlayer1) && is_user_connected(RandomPlayer2)) 
    { 
        
set_task(1.5"captain_menu"NextCaptainMenu
    } 
    else 
    { 
        
set_task(5.0"CheckCaptainJoin"NextCaptainMenu
    } 


public 
PlayersList() 

    new 
iPlayers[32], iNum
    
get_players(iPlayersiNum"ch"); 
     
    new 
posTRposCTposSPEC
    new 
HudTextTR[512], HudTextCT[512], HudTextSPEC[512]; 
    new 
szName[38], name[38]; 
     
    for(new 
iiNumi++) 
    { 
        
get_user_name(iPlayers[i], szNamecharsmax(szName)); 
         
        if(
iPlayers[i] == RandomPlayer1 || iPlayers[i] == RandomPlayer2
        { 
            
formatex(namecharsmax(name), "%s (C)"szName); 
        } 
        else 
        { 
            
name szName
        } 
        if(
cs_get_user_team(iPlayers[i]) == CS_TEAM_T
        { 
            
posTR += formatex(HudTextTR[posTR], 511-posTR,"%s^n"name); 
        } 
        else if(
cs_get_user_team(iPlayers[i]) == CS_TEAM_CT
        { 
            
posCT += formatex(HudTextCT[posCT], 511-posCT"%s^n"name); 
        } 
        else 
        { 
            
posSPEC += formatex(HudTextSPEC[posSPEC], 511-posSPEC"%s^n"name); 
        } 
    } 
    for(new 
iiNumi++) 
    { 
        
set_hudmessage(255000.700.1600.01.10.00.01); 
        
show_hudmessage(iPlayers[i], "Terrorists:"); 
         
        
set_hudmessage(2552552550.700.1900.01.10.00.02); 
        
show_hudmessage(iPlayers[i], HudTextTR); 
         
        
set_hudmessage(002550.700.5100.01.10.00.03); 
        
show_hudmessage(iPlayers[i], "Counter-Terrorist:"); 
         
        
set_hudmessage(2552552550.700.5400.01.10.00.04); 
        
show_hudmessage(iPlayers[i], HudTextCT); 
    } 

B@IL is offline
deepaklost
Member
Join Date: Jan 2011
Old 03-28-2017 , 08:13   Re: Help Add flags instead of random player selection
Reply With Quote #13

Quote:
Originally Posted by B@IL View Post
Try this Alyona..

PHP Code:
#include <amxmodx> 
#include <amxmisc> 
#include <cstrike> 

#define TASK_MENUCLOSE 9001 
#define TASK_PLAYERSLIST 9002 

#define MinPlayers 10 

new const Prefix[] = "[Captain]"

new 
bool:CaptainSort 

new aCaptainCT[33],aCaptainT[33
new 
RandomPlayer1,RandomPlayer2 

public plugin_init() 

    
register_plugin("Captain Sorting""1.0""kramesa"); 
     
    
register_concmd("amx_captains","CaptainCmd",ADMIN_BAN,"<tcaptain> <ctcaptain"
     
    
register_clcmd("chooseteam""Block"); 
    
register_clcmd("jointeam""Block"); 


public 
Block(id

    if(
CaptainSort
    { 
        
client_print(idprint_chat"%s Captain Sort is running."Prefix); 
        return 
PLUGIN_HANDLED
    } 
    return 
PLUGIN_CONTINUE


public 
client_putinserver(id)  

    if(
aCaptainCT[id]) 
    { 
        
client_print(0print_chat"%s The captain of CTs has left. Admin, select another one."Prefix); 
        
set_cvar_num("sv_restartround"1); 
    } 
    if(
aCaptainT[id]) 
    { 
        
client_print(0print_chat"%s The captain of Ts has left. Admin, select another one."Prefix); 
        
set_cvar_num("sv_restartround"1); 
    } 


public 
CaptainCmd(id,level,cid

    if(!
cmd_access(id,level,cid,3)) 
        return 
PLUGIN_HANDLED 

    
if(CaptainSort
    { 
        
client_print(idprint_chat"%s Captain Sort already running."Prefix); 
        return 
PLUGIN_HANDLED
    } 
    new 
szCaptainT[32],szCaptainCT[32
    
read_argv(1,szCaptainT,31
    
read_argv(2,szCaptainCT,31

    new 
CaptainT cmd_target(id,szCaptainT,_
    new 
CaptainCT cmd_target(id,szCaptainCT,_

    new 
iPlayers[32], iNum,Player 
    get_players
(iPlayersiNum"ch"
     
    if(
iNum MinPlayers
    { 
        
client_print(0print_chat"%s Need have more %d players to start Captain Sort."Prefix, (iNum MinPlayers)) 
        return 
PLUGIN_HANDLED 
    

    for(new 
iiNumi++) 
    { 
        
Player iPlayers[i
        
user_silentkill(Player
        
cs_set_user_team(PlayerCS_TEAM_SPECTATOR
    } 
    
cs_set_user_team(CaptainCTCS_TEAM_CT
    
cs_set_user_team(CaptainTCS_TEAM_T
     
    
aCaptainCT[CaptainCT] = true 
    aCaptainT
[CaptainT] = true 
     
    RandomPlayer1 
CaptainT 
    RandomPlayer2 
CaptainCT 
     
    
new First_Captain[35], Second_Captain[35
     
    
get_user_name(CaptainTFirst_Captaincharsmax(First_Captain)); 
    
get_user_name(CaptainCTSecond_Captaincharsmax(Second_Captain)); 
     
    
client_print(0print_chat"%s The Captain's are: %s (TRs) and %s (CTs)."PrefixFirst_CaptainSecond_Captain); 
    
client_print(0print_chat"%s If no player is selected in 10 seconds, a player will be chosen random."Prefix); 
     
    
set_cvar_num("sv_restartround"1

    new 
First random(2)
    
    
set_task(1.5"captain_menu"First RandomPlayer1 RandomPlayer2);
    
set_task(0.2"PlayersList"TASK_PLAYERSLIST__"b");
     
    
CaptainSort true 
    
return PLUGIN_CONTINUE 


public 
captain_menu(id

    new 
menu menu_create("Select a Player:""captainmenu_handler"
     
    
set_task(11.5"menu_task"id TASK_MENUCLOSE); 
     
    new 
players[32], pnumtempid
    new 
szName[32], szTempid[10]; 
     
    
get_players(playerspnum"ch"
     
    if(
pnum == 0
    { 
        
remove_task(id+TASK_MENUCLOSE
        
remove_task(TASK_PLAYERSLIST
        
CaptainSort false 
         
        client_print
(0print_chat"%s Closing Captain Sort. Missing players."Prefix); 
        return 
PLUGIN_HANDLED
    } 
    for(new 
ii<pnumi++) 
    { 
        
tempid players[i]; 
         
        if(
cs_get_user_team(tempid) != CS_TEAM_SPECTATOR) continue; 
         
        
get_user_name(tempidszNamecharsmax(szName)); 
        
num_to_str(tempidszTempidcharsmax(szTempid)); 
         
        
menu_additem(menuszNameszTempid,0); 
    } 
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER); 
     
    
menu_display(idmenu0); 
    return 
PLUGIN_HANDLED


public 
captainmenu_handler(id,menu,item

    if(
item == MENU_EXIT
    { 
        
menu_display(id,menu,0
        return 
PLUGIN_HANDLED
    } 
    new 
data[6], szName[64]; 
    new 
accesscallback
    
menu_item_getinfo(menuitemaccessdatacharsmax(data), szNamecharsmax(szName), callback); 
     
    new 
tempid str_to_num(data
     
    new 
name[35], namec[35]; 
    
get_user_name(tempidnamecharsmax(name)); 
    
get_user_name(idnameccharsmax(namec)); 
     
    
cs_set_user_team(tempidcs_get_user_team(id)); 
    
client_print(0print_chat"%s %s choose the player %s"Prefixnamecname); 
     
    
set_cvar_num("sv_restart",1
     
    
remove_task(id+TASK_MENUCLOSE
     
    new 
iPlayers[32],pnum 
    get_players
(iPlayers,pnum,"h"
     
    if(
is_user_connected(RandomPlayer1) && is_user_connected(RandomPlayer2)) 
    { 
        
set_task(1.5,"captain_menu",id == RandomPlayer1 RandomPlayer2 RandomPlayer1
    } 
    else 
    { 
        
set_task(5.0,"CheckCaptainJoin",id == RandomPlayer1 RandomPlayer1 RandomPlayer2
    } 
    
menu_destroy(menu
    return 
PLUGIN_HANDLED 


public 
menu_task(id

    
id -= TASK_MENUCLOSE 
     
    
new players[32], pnum
    
get_players(playerspnum"ch"); 
     
    new 
randomnum random(pnum
    new 
bool:has_spec 
     
    
for(new ipnumi++) 
    { 
        if(
cs_get_user_team(players[i]) == CS_TEAM_SPECTATOR
        { 
            
has_spec true 
        

    } 
    if(!
has_spec
    { 
        
remove_task(TASK_PLAYERSLIST); 
        
CaptainSort false
        return; 
    } 
    while(
cs_get_user_team(players[randomnum]) != CS_TEAM_SPECTATOR
    { 
        
randomnum random(pnum
    } 
    if(
is_user_connected(id)) 
    { 
        
set_cvar_num("sv_restart",1
        
cs_set_user_team(players[randomnum],cs_get_user_team(id)) 
         
        
set_task(1.5"captain_menu"id == RandomPlayer1 RandomPlayer2 RandomPlayer1); 
    } 
    else 
    { 
        
set_task(5.0"CheckCaptainJoin"id == RandomPlayer1 RandomPlayer2 RandomPlayer1); 
         
        
client_print(0print_chat"%s Awaiting the arrival of a new Captain."Prefix); 
    } 
    
show_menu(id0"^n"1); 


public 
CheckCaptainJoin(NextCaptainMenu

    if(
is_user_connected(RandomPlayer1) && is_user_connected(RandomPlayer2)) 
    { 
        
set_task(1.5"captain_menu"NextCaptainMenu
    } 
    else 
    { 
        
set_task(5.0"CheckCaptainJoin"NextCaptainMenu
    } 


public 
PlayersList() 

    new 
iPlayers[32], iNum
    
get_players(iPlayersiNum"ch"); 
     
    new 
posTRposCTposSPEC
    new 
HudTextTR[512], HudTextCT[512], HudTextSPEC[512]; 
    new 
szName[38], name[38]; 
     
    for(new 
iiNumi++) 
    { 
        
get_user_name(iPlayers[i], szNamecharsmax(szName)); 
         
        if(
iPlayers[i] == RandomPlayer1 || iPlayers[i] == RandomPlayer2
        { 
            
formatex(namecharsmax(name), "%s (C)"szName); 
        } 
        else 
        { 
            
name szName
        } 
        if(
cs_get_user_team(iPlayers[i]) == CS_TEAM_T
        { 
            
posTR += formatex(HudTextTR[posTR], 511-posTR,"%s^n"name); 
        } 
        else if(
cs_get_user_team(iPlayers[i]) == CS_TEAM_CT
        { 
            
posCT += formatex(HudTextCT[posCT], 511-posCT"%s^n"name); 
        } 
        else 
        { 
            
posSPEC += formatex(HudTextSPEC[posSPEC], 511-posSPEC"%s^n"name); 
        } 
    } 
    for(new 
iiNumi++) 
    { 
        
set_hudmessage(255000.700.1600.01.10.00.01); 
        
show_hudmessage(iPlayers[i], "Terrorists:"); 
         
        
set_hudmessage(2552552550.700.1900.01.10.00.02); 
        
show_hudmessage(iPlayers[i], HudTextTR); 
         
        
set_hudmessage(002550.700.5100.01.10.00.03); 
        
show_hudmessage(iPlayers[i], "Counter-Terrorist:"); 
         
        
set_hudmessage(2552552550.700.5400.01.10.00.04); 
        
show_hudmessage(iPlayers[i], HudTextCT); 
    } 

Players alive or not is not checked ... multiple restarts are still present ...

Last edited by deepaklost; 03-28-2017 at 08:14.
deepaklost is offline
B@IL
Junior Member
Join Date: Mar 2017
Location: India
Old 03-29-2017 , 05:19   Re: Help Add flags instead of random player selection
Reply With Quote #14

Quote:
Originally Posted by deepaklost View Post
Players alive or not is not checked ... multiple restarts are still present ...
PHP Code:
#include <amxmodx>  
#include <amxmisc>  
#include <cstrike>  

#define TASK_MENUCLOSE 9001  
#define TASK_PLAYERSLIST 9002  

#define MinPlayers 10  

new const Prefix[] = "[Captain]";  

new 
bool:CaptainSort  

new aCaptainCT[33],aCaptainT[33]  
new 
RandomPlayer1,RandomPlayer2  

public plugin_init()  
{  
    
register_plugin("Captain Sorting""1.0""kramesa");  
      
    
register_concmd("amx_captains","CaptainCmd",ADMIN_BAN,"<tcaptain> <ctcaptain")  
      
    
register_clcmd("chooseteam""Block");  
    
register_clcmd("jointeam""Block");  
}  

public 
Block(id)  
{  
    if(
CaptainSort)  
    {  
        
client_print(idprint_chat"%s Captain Sort is running."Prefix);  
        return 
PLUGIN_HANDLED;  
    }  
    return 
PLUGIN_CONTINUE;  
}  

public 
client_putinserver(id)   
{  
    if(
aCaptainCT[id])  
    {  
        
client_print(0print_chat"%s The captain of CTs has left. Admin, select another one."Prefix);  
    }  
    if(
aCaptainT[id])  
    {  
        
client_print(0print_chat"%s The captain of Ts has left. Admin, select another one."Prefix);    
    }  
}  

public 
CaptainCmd(id,level,cid)  
{  
    if(!
cmd_access(id,level,cid,3))  
        return 
PLUGIN_HANDLED  

    
if(CaptainSort)  
    {  
        
client_print(idprint_chat"%s Captain Sort already running."Prefix);  
        return 
PLUGIN_HANDLED;  
    }  
    new 
szCaptainT[32],szCaptainCT[32]  
    
read_argv(1,szCaptainT,31)  
    
read_argv(2,szCaptainCT,31)  

    new 
CaptainT cmd_target(id,szCaptainT,_)  
    new 
CaptainCT cmd_target(id,szCaptainCT,_)  

    new 
iPlayers[32], iNum,Player  
    get_players
(iPlayersiNum"ch")  
      
    if(
iNum MinPlayers)  
    {  
        
client_print(0print_chat"%s Need have more %d players to start Captain Sort."Prefix, (iNum MinPlayers))  
        return 
PLUGIN_HANDLED  
    
}  
    for(new 
iiNumi++)  
    {  
        
Player iPlayers[i]  
        
user_silentkill(Player)  
        
cs_set_user_team(PlayerCS_TEAM_SPECTATOR)  
    }  
    
cs_set_user_team(CaptainCTCS_TEAM_CT)  
    
cs_set_user_team(CaptainTCS_TEAM_T)  
      
    
aCaptainCT[CaptainCT] = true  
    aCaptainT
[CaptainT] = true  
      
    RandomPlayer1 
CaptainT  
    RandomPlayer2 
CaptainCT  
      
    
new First_Captain[35], Second_Captain[35]  
      
    
get_user_name(CaptainTFirst_Captaincharsmax(First_Captain));  
    
get_user_name(CaptainCTSecond_Captaincharsmax(Second_Captain));  
      
    
client_print(0print_chat"%s The Captain's are: %s (TRs) and %s (CTs)."PrefixFirst_CaptainSecond_Captain);  
    
client_print(0print_chat"%s If no player is selected in 10 seconds, a player will be chosen random."Prefix);  

    new 
First random(2
     
    
set_task(1.5"captain_menu"First RandomPlayer1 RandomPlayer2); 
    
set_task(0.2"PlayersList"TASK_PLAYERSLIST__"b"); 
      
    
CaptainSort true  
    
return PLUGIN_CONTINUE  
}  

public 
captain_menu(id)  
{  
    new 
menu menu_create("Select a Player:""captainmenu_handler")  
      
    
set_task(11.5"menu_task"id TASK_MENUCLOSE);  
      
    new 
players[32], pnumtempid;  
    new 
szName[32], szTempid[10];  
      
    
get_players(playerspnum"ch")  
      
    if(
pnum == 0)  
    {  
        
remove_task(id+TASK_MENUCLOSE)  
        
remove_task(TASK_PLAYERSLIST)  
        
CaptainSort false  
          
        client_print
(0print_chat"%s Closing Captain Sort. Missing players."Prefix);  
        return 
PLUGIN_HANDLED;  
    }  
    for(new 
ii<pnumi++)  
    {  
        
tempid players[i];  
          
        if(
cs_get_user_team(tempid) != CS_TEAM_SPECTATOR) continue;  
          
        
get_user_name(tempidszNamecharsmax(szName));  
        
num_to_str(tempidszTempidcharsmax(szTempid));  
          
        
menu_additem(menuszNameszTempid,0);  
    }  
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER);  
      
    
menu_display(idmenu0);  
    return 
PLUGIN_HANDLED;  
}  

public 
captainmenu_handler(id,menu,item)  
{  
    if(
item == MENU_EXIT)  
    {  
        
menu_display(id,menu,0)  
        return 
PLUGIN_HANDLED;  
    }  
    new 
data[6], szName[64];  
    new 
accesscallback;  
    
menu_item_getinfo(menuitemaccessdatacharsmax(data), szNamecharsmax(szName), callback);  
      
    new 
tempid str_to_num(data)  
      
    new 
name[35], namec[35];  
    
get_user_name(tempidnamecharsmax(name));  
    
get_user_name(idnameccharsmax(namec));  
      
    
cs_set_user_team(tempidcs_get_user_team(id));  
    
client_print(0print_chat"%s %s choose the player %s"Prefixnamecname);  
      
    
remove_task(id+TASK_MENUCLOSE)  
      
    new 
iPlayers[32],pnum  
    get_players
(iPlayers,pnum,"h")  
      
    if(
is_user_connected(RandomPlayer1) && is_user_connected(RandomPlayer2))  
    {  
        
set_task(1.5,"captain_menu",id == RandomPlayer1 RandomPlayer2 RandomPlayer1)  
    }  
    else  
    {  
        
set_task(5.0,"CheckCaptainJoin",id == RandomPlayer1 RandomPlayer1 RandomPlayer2)  
    }  
    
menu_destroy(menu)  
    return 
PLUGIN_HANDLED  
}  

public 
menu_task(id)  
{  
    
id -= TASK_MENUCLOSE  
      
    
new players[32], pnum;  
    
get_players(playerspnum"ch");  
      
    new 
randomnum random(pnum)  
    new 
bool:has_spec  
      
    
for(new ipnumi++)  
    {  
        if(
cs_get_user_team(players[i]) == CS_TEAM_SPECTATOR)  
        {  
            
has_spec true  
        
}  
    }  
    if(!
has_spec)  
    {  
        
remove_task(TASK_PLAYERSLIST);  
        
CaptainSort false;  
        return;  
    }  
    while(
cs_get_user_team(players[randomnum]) != CS_TEAM_SPECTATOR)  
    {  
        
randomnum random(pnum)  
    }  
    if(
is_user_connected(id))  
    {  
        
set_cvar_num("sv_restart",1)  
        
cs_set_user_team(players[randomnum],cs_get_user_team(id))  
          
        
set_task(1.5"captain_menu"id == RandomPlayer1 RandomPlayer2 RandomPlayer1);  
    }  
    else  
    {  
        
set_task(5.0"CheckCaptainJoin"id == RandomPlayer1 RandomPlayer2 RandomPlayer1);  
          
        
client_print(0print_chat"%s Awaiting the arrival of a new Captain."Prefix);  
    }  
    
show_menu(id0"^n"1);  
}  

public 
CheckCaptainJoin(NextCaptainMenu)  
{  
    if(
is_user_connected(RandomPlayer1) && is_user_connected(RandomPlayer2))  
    {  
        
set_task(1.5"captain_menu"NextCaptainMenu)  
    }  
    else  
    {  
        
set_task(5.0"CheckCaptainJoin"NextCaptainMenu)  
    }  
}  

public 
PlayersList()  
{  
    new 
iPlayers[32], iNum;  
    
get_players(iPlayersiNum"ch");  
      
    new 
posTRposCTposSPEC;  
    new 
HudTextTR[512], HudTextCT[512], HudTextSPEC[512];  
    new 
szName[38], name[38];  
      
    for(new 
iiNumi++)  
    {  
        
get_user_name(iPlayers[i], szNamecharsmax(szName));  
          
        if(
iPlayers[i] == RandomPlayer1 || iPlayers[i] == RandomPlayer2)  
        {  
            
formatex(namecharsmax(name), "%s (C)"szName);  
        }  
        else  
        {  
            
name szName;  
        }  
        if(
cs_get_user_team(iPlayers[i]) == CS_TEAM_T)  
        {  
            
posTR += formatex(HudTextTR[posTR], 511-posTR,"%s^n"name);  
        }  
        else if(
cs_get_user_team(iPlayers[i]) == CS_TEAM_CT)  
        {  
            
posCT += formatex(HudTextCT[posCT], 511-posCT"%s^n"name);  
        }  
        else  
        {  
            
posSPEC += formatex(HudTextSPEC[posSPEC], 511-posSPEC"%s^n"name);  
        }  
    }  
    for(new 
iiNumi++)  
    {  
        
set_hudmessage(255000.700.1600.01.10.00.01);  
        
show_hudmessage(iPlayers[i], "Terrorists:");  
          
        
set_hudmessage(2552552550.700.1900.01.10.00.02);  
        
show_hudmessage(iPlayers[i], HudTextTR);  
          
        
set_hudmessage(002550.700.5100.01.10.00.03);  
        
show_hudmessage(iPlayers[i], "Counter-Terrorist:");  
          
        
set_hudmessage(2552552550.700.5400.01.10.00.04);  
        
show_hudmessage(iPlayers[i], HudTextCT);  
    }  

multiple restarts solved..
B@IL is offline
Reply


Thread Tools
Display Modes

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 01:10.


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