AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Suggestions / Requests (https://forums.alliedmods.net/forumdisplay.php?f=12)
-   -   [REQ] need update for an auto team randmizer plugin (https://forums.alliedmods.net/showthread.php?t=174145)

csykosoma 12-16-2011 03:49

[REQ] need update for an auto team randmizer plugin
 
i have found this plugin that randomizes the teams after one team wins x amount of rounds. unfortunately, this plugin is broken because when it randomizes, afk spectators are forced to a team where they will be stuck to the rotating spectator camera or spawned alive as spectators.

if anyone does update... also the admin immunity could be removed and a message could show in chat after each round (there is already a command /ownage that does this) announcing the current score of each team.

i would be appreciative. its a great plugin with a few minor issues.

http://forums.alliedmods.net/showthread.php?t=52190

PHP Code:

/* AMX Mod X script. 

* Skunage(c) Copyright 2002, SuicideDog
* Streak Ownage(c) Copyright 2007, Travo
*
* Plugin changes map when teams are lopsided and
* one side gets skunked
*
* Skunage Code gleemed from OLO'S Win Limit plugin
* Streak Ownage Code gleemed from SuicideDog's Skunage plugin
* This file is provided as is (no warranties). 

*/

#include <amxmodx> 
#include <cstrike>
#include <fun>

new ct_score 
new terrorist_score 
new ct_shscore 
new terrorist_shscore 
new cvOwn

public plugin_init(){
    
register_plugin("Streak Ownage","1.0","SuicideDog/Travo")
    
register_event("TeamScore""team_score""a")
    
register_event("ResetHUD""new_round""bc")
    
register_concmd("amx_shake""shaketeams"ADMIN_KICK"<Randomizes the players within Ts and CTs>")    
    
register_clcmd("say /ownage","check_ownage_score",0,"<Tells you the current Ownage score>")
    
register_cvar("travo_streakownage","v1.0",FCVAR_SERVER|FCVAR_UNLOGGED|FCVAR_SPONLY)
    
cvOwn register_cvar("amx_skunk","7")
    return 
PLUGIN_CONTINUE


public 
team_score(){ 
    new 
team[2]
    
read_data(1,team,1)
    if (
team[0]=='C')
        
ct_score read_data(2
    else if (
team[0]=='T')
        
terrorist_score read_data(2)
    return 
PLUGIN_CONTINUE


public 
new_round(){ 
    new 
winlimit get_pcvar_num(cvOwn)
    new 
allowwin winlimit/4;  // little leeway for losing team ie. CT-4 T-1 = true
    
new ct_current ct_score-ct_shscore
    
new terrorist_current terrorist_score-terrorist_shscore
    
    
if (get_playersnum()<5)
    {
        
ct_shscore ct_score,terrorist_shscore terrorist_score
        ct_current 
0terrorist_current 0    
    
}
    if ((
ct_current<0) || (terrorist_current<0))
    {
        
ct_shscore ct_score,terrorist_shscore terrorist_score
        ct_current 
0terrorist_current 0
    
}
    if ((
ct_current>=terrorist_current) && (terrorist_current>allowwin) && (ct_current+terrorist_current>0))
    {
        
ct_shscore ct_score,terrorist_shscore terrorist_score
        ct_current 
0terrorist_current 0
    
}
    if ((
terrorist_current>=ct_current) && (ct_current>allowwin) && (ct_current+terrorist_current>0))
    {
        
ct_shscore ct_score,terrorist_shscore terrorist_score
        ct_current 
0terrorist_current 0
    
}
    if ((
ct_current-terrorist_current) >= winlimit)
    { 
        
client_print(0,print_chat,"[AMXX] CT's have OWNED T's with score of %d to %d. Randomizing teams...",ct_current,terrorist_current
        
shaketeams()
        
ct_shscore ct_score,terrorist_shscore terrorist_score
    

    if ((
terrorist_current-ct_current) >= winlimit)
    { 
        
client_print(0,print_chat,"[AMXX] T's have OWNED CT's with score of %d to %d. Randomizing teams...",terrorist_current,ct_current
        
shaketeams()
        
ct_shscore ct_score,terrorist_shscore terrorist_score
    

    return 
PLUGIN_CONTINUE 


public 
shaketeams(){ // 0=Leavealone 1=T 2=CT 3=Pickrand
    
new Playerteam[32] = 0tplayers=0tcts=0tts=0overflow 0randnumg_maxplayers
    g_maxplayers 
get_maxplayers() + 2
    
    
for(new i=0;i<g_maxplayers;i++) // check teams and determine which can be switched
    
{
        if(
is_user_connected(i))
        {
            if((
get_user_flags(i) & ADMIN_IMMUNITY) || (is_user_bot(i)) || (is_user_hltv(i)) || (cs_get_user_team(i) == CS_TEAM_SPECTATOR))
            {
                
Playerteam[i] = 0
                
if (cs_get_user_team(i) == CS_TEAM_T)
                
tts++
                else if (
cs_get_user_team(i) == CS_TEAM_CT)
                    
tcts++
                
            }
            else
            {
                
Playerteam[i] = 3
                tplayers
++
            }
        }
        else
        {
            
g_maxplayers--
        }
    }
    while(
tplayers>&& overflow<3000// determine which team we are gonna put the switchers on
    
{
        
randnum random_num(1,g_maxplayers)
        
overflow++  //make the loop un-infinite so it doesnt crash server on error

        
if(is_user_connected(randnum) && Playerteam[randnum]==3)
        {
            if(
tts tcts)
            {
                
Playerteam[randnum] = 1
                tts
++
                
tplayers--
            }
            else
            {
                
Playerteam[randnum] = 2
                tcts
++
                
tplayers--
            }
             
        }
        
    }
    for(new 
i=0;i<g_maxplayers;i++) // perform all switches and respawn all players
    
{
        if(
is_user_connected(i))
        {
            if (
Playerteam[i]>0)
            {
                switch(
Playerteam[i])
                {
                case 
: {
                    
cs_set_user_team(iCS_TEAM_T)
                }
                case 
: {
                    
cs_set_user_team(iCS_TEAM_CT)
                }
                }
            }
            new 
ids[3]
            
num_to_str(i,ids,2)
            
set_task(0.1,"revive",0,ids,2,"a",2)
        }
        
    }
    return 
PLUGIN_HANDLED


public 
check_ownage_score(id){
    new 
winlimit get_pcvar_num(cvOwn)
    new 
ct_current ct_score-ct_shscore
    
new terrorist_current terrorist_score-terrorist_shscore
    client_print
(id,print_chat,"[AMXX] Current Ownage score is CT: %d to T: %d. The team reset is set to %d wins.",ct_current,terrorist_current,winlimit
    return 
PLUGIN_HANDLED
}

public 
revive(ids[]){ 
    new 
id str_to_num(ids
    
spawn(id)
    
give_item(id,"weapon_knife"



csykosoma 02-27-2012 18:48

Re: [REQ] need update for an auto team randmizer plugin
 
bump!


All times are GMT -4. The time now is 20:45.

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