Raised This Month: $ Target: $400
 0% 

Detect if player is not IT


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
benamo6
Veteran Member
Join Date: Aug 2008
Location: NeverLand
Old 12-30-2009 , 20:50   Detect if player is not IT
Reply With Quote #1

I want to know how to detect if player is not "IT" in Tag Mod by GHW.
And when "IT" player become normal. In this mod there are 4 minimods, In one called "Regular" (One player is "IT" then tags another player who then becomes the new "IT") I need to detect the part of the code that makes "IT" player a normal player to change his speed to normal, because I added speed for "IT".

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

To detect if player is not "IT" I've tought in somthing like this, but it_player == 0 isn't working.

PHP Code:
public money_nonit(id)
{
    if(
is_user_alive(id) && it_player == 0)
    {
        
cs_set_user_money(idcs_get_user_money(id) + 1000)
    }

The original code:
PHP Code:
/*
*   _______     _      _  __          __
*  | _____/    | |    | | \ \   __   / /
*  | |         | |    | |  | | /  \ | |
*  | |         | |____| |  | |/ __ \| |
*  | |   ___   | ______ |  |   /  \   |
*  | |  |_  |  | |    | |  |  /    \  |
*  | |    | |  | |    | |  | |      | |
*  | |____| |  | |    | |  | |      | |
*  |_______/   |_|    |_|  \_/      \_/
*
*
*
*  Last Edited: 07-12-09
*
*  ============
*   Changelog:
*  ============
*
*  v2.3
*    -Bug Fixes
*
*  v2.2
*    -Added ML
*
*  v2.1
*    -Added rules
*
*  v2.0
*    -Rewrite
*
*  v1.1
*    -Made less laggy and more compadible (by taking out client_PreThink)
*
*  v1.0
*    -Initial Release
*
*/

#define VERSION    "2.3b"

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <fakemeta>

#define TAG_BASE_DISTANCE    150

#define TASK_SELECT_IT        1335
#define TASK_CREATE_BASE    1336
#define TASK_REDRAW_BASE    1337

enum MODE
{
    
OFF,
    
REGULAR,
    
FREEZE,
    
BASE,
    
TEAM
}

new 
MODE:game_mode
new it_player
new old_it
new immune_player
new maxplayers

new individual_msg_pcvar
new restart_pcvar
new activity_pcvar

new bool:frozen[33]
new 
bool:defrostable[33]
new 
bool:respawning[33]
new 
bool:tagged[33]
new 
bool:gottobase[33]

new 
Float:base_origin[3]
new 
base_origin_I[3]

new 
beamsprite

public plugin_init()
{
    
register_plugin("Tag Mod",VERSION,"GHW_Chronic")

    
register_concmd("amx_tag","cmd_start",ADMIN_SLAY," Starts a game of tag [Normal, Freeze, Base, Team]")
    
register_concmd("amx_tag_off","cmd_stop",ADMIN_SLAY," Stops a currently running game of tag")

    
register_forward(FM_Touch,"FM_Touch_Hook")
    
register_forward(FM_PlayerPreThink,"FM_Think_Hook")
    
register_event("ResetHUD","ResetHUD_Hook","b")

    
register_cvar("tag_mode","0")
    
individual_msg_pcvar register_cvar("tag_individual_msg","0")
    
restart_pcvar get_cvar_pointer("sv_restart")
    
activity_pcvar get_cvar_pointer("amx_show_activity")

    
maxplayers get_maxplayers()

    if(
get_cvar_num("tag_mode"))
    {
        switch(
get_cvar_num("tag_mode"))
        {
            case 
1:
            {
                
game_mode REGULAR
            
}
            case 
2:
            {
                
game_mode FREEZE
            
}
            case 
3:
            {
                
game_mode BASE
            
}
            case 
4:
            {
                
game_mode TEAM
            
}
        }

        
reset_game()

        new 
players[32], num
        get_players
(players,num,"h")
        for(new 
i=0;i<num;i++)
        {
            
set_pev(players[i],pev_takedamage,0.0)
            
frozen[players[i]] = false
        
}

        
select_it()
    }

    
register_dictionary("GHW_TagMod.txt")
}

public 
plugin_precache()
{
    
beamsprite precache_model("sprites/dot.spr")
}

public 
client_connect(id)
{
    
frozen[id] = false
    respawning
[id] = false
    tagged
[id] = false
    gottobase
[id] = false
}

public 
client_disconnect(id)
{
    if(
id==it_player)
    {
        
select_it()
    }
}

public 
cmd_start(id,level,cid)
{
    if(!
cmd_access(id,level,cid,1))
    {
        return 
PLUGIN_HANDLED
    
}

    
game_mode REGULAR

    
if(read_argc()>1)
    {
        new 
arg[32]
        
read_argv(1,arg,31)
        if(
equali(arg,"Freeze"))
        {
            
game_mode FREEZE
        
}
        else if(
equali(arg,"Base"))
        {
            
game_mode BASE
        
}
        else if(
equali(arg,"Team"))
        {
            
game_mode TEAM
        
}
    }

    new 
name[32]
    if(
get_pcvar_num(activity_pcvar)>1)
    {
        
format(name,31,"Admin")
    }
    else
    {
        
get_user_name(id,name,31)
    }

    new 
type[32]
    new 
rules[128]
    switch(
game_mode)
    {
        case 
REGULAR:
        {
            
format(type,31,"%L",0,"TAG_TYPE_REGULAR")
            
format(rules,127,"[AMXX] %L",0,"TAG_RULES_REGULAR")
        }
        case 
FREEZE:
        {
            
format(type,31,"%L",0,"TAG_TYPE_FREEZE")
            
format(rules,127,"[AMXX] %L",0,"TAG_RULES_FREEZE")
        }
        case 
BASE:
        {
            
format(type,31,"%L",0,"TAG_TYPE_BASE")
            
format(rules,127,"[AMXX] %L",0,"TAG_RULES_BASE")
        }
        case 
TEAM:
        {
            
format(type,31,"%L",0,"TAG_TYPE_TEAM")
            
format(rules,127,"[AMXX] %L",0,"TAG_RULES_TEAM")
        }
    }

    
reset_game()

    
set_pcvar_num(restart_pcvar,1)

    new 
players[32], num
    get_players
(players,num,"h")
    for(new 
i=0;i<num;i++)
    {
        
set_pev(players[i],pev_takedamage,0.0)
        
frozen[players[i]] = false
    
}

    
console_print(id,"[AMXX] %L",id,"TAG_GAME_STARTED_CON",type)
    
client_print(0,print_chat,"[AMXX] %L",0,"TAG_GAME_STARTED_CHAT",name,type)
    
client_print(0,print_chat,"%s",rules)

    
select_it()

    return 
PLUGIN_HANDLED
}

public 
Create_Base()
{
    if(
game_mode==BASE)
    {
        if(
it_player && is_user_alive(it_player))
        {
            
pev(it_player,pev_origin,base_origin)
            
FVecIVec(base_origin,base_origin_I)
            
set_task(2.0,"Redraw_Base")
            
set_task(30.0,"Redraw_Base",TASK_REDRAW_BASE,"",0,"b")
            
remove_task(TASK_CREATE_BASE)
        }
    }
    else
    {
        
remove_task(TASK_CREATE_BASE)
    }
}

public 
Redraw_Base()
{
    if(
game_mode!=BASE)
    {
        
remove_task(TASK_REDRAW_BASE)
    }

    
draw_sprite(100,100,100,-100)
    
draw_sprite(100,100,-100,100)
    
draw_sprite(100,-100,-100,-100)
    
draw_sprite(-100,100,-100,-100)
}

public 
draw_sprite(addx1,addy1,addx2,addy2)
{
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY
    
write_byte(0)        //TE_BEAMPOINTS
    
write_coord(base_origin_I[0] + addx1)
    
write_coord(base_origin_I[1] + addy1)
    
write_coord(base_origin_I[2])
    
write_coord(base_origin_I[0] + addx2)
    
write_coord(base_origin_I[1] + addy2)
    
write_coord(base_origin_I[2])
    
write_short(beamsprite)
    
write_byte(1)    // framestart
    
write_byte(1)    // framerate
    
write_byte(1200)    // life in 0.1's
    
write_byte(5)    // width
    
write_byte(0)    // noise
    
write_byte(random_num(0,255))
    
write_byte(random_num(0,255))
    
write_byte(random_num(0,255))
    
write_byte(200)    // brightness
    
write_byte(0)    // speed
    
message_end()
}

public 
reset_game()
{
    for(new 
i=1;i<=maxplayers;i++)
    {
        if(
is_user_connected(i))
        {
            
set_user_noclip(i)
            
_set_rendering(i)
        }
        
frozen[i] = false
        tagged
[i] = false
    
}
}

public 
reset_game2()
{
    for(new 
i=1;i<=maxplayers;i++)
    {
        
gottobase[i] = false
    
}
}

public 
select_it()
{
    if(
task_exists(TASK_SELECT_IT) && it_player && is_user_connected(it_player))
    {
        
remove_task(TASK_SELECT_IT)
    }
    else if(!
task_exists(TASK_SELECT_IT))
    {
        
old_it is_user_connected(it_player) ? it_player 0
        it_player 
0
        set_task
(5.0,"select_it",TASK_SELECT_IT,"",0,"b")
    }
    else
    {
        
select_it2()
    }
}

public 
select_it2()
{
    if(
it_player && is_user_connected(it_player))
        
_set_rendering(it_player)

    
it_player 0

    
new numplayers[32]
    
get_players(players,num,"h")

    if(
num)
    {
        new 
tries 100
        
new tempplayer
        
while(!it_player && tries--)
        {
            
tempplayer random_num(0,num 1)
            if(
tempplayer!=old_it && (game_mode!=BASE || !gottobase[players[tempplayer]]))
            {
                
it_player tempplayer
            
}
        }
        if(!
it_player)
            
it_player players[random_num(0,num 1)]

        if(
is_user_connected(it_player))
        {
            
_set_rendering(it_player,kRenderFxDistort,255,0,0,kRenderTransAdd,127)
    
            new 
name[32]
            
get_user_name(it_player,name,31)
            
client_print(0,print_chat,"[AMXX] %L",0,"TAG_IT_SELECTED",name)

            if(
it_player && game_mode==BASE)
            {
                
reset_game2()
                if(!
task_exists(TASK_CREATE_BASE))
                {
                    
set_task(10.0,"Create_Base",TASK_CREATE_BASE,"",0,"b")
                }
            }
        }
        else
        {
            
select_it2() /////////
            
it_player 0
        
}
    }
}

public 
ResetHUD_Hook(id)
{
    if(
game_mode && pev_valid(id) && pev(id,pev_takedamage))
        
set_pev(id,pev_takedamage,0.0)
}

public 
cmd_stop(id,level,cid)
{
    if(!
cmd_access(id,level,cid,1))
    {
        return 
PLUGIN_HANDLED
    
}

    if(
game_mode)
    {
        
game_mode OFF

        
new players[32], num
        get_players
(players,num,"h")
        for(new 
i=0;i<num;i++)
        {
            
_set_rendering(players[i])
            
set_pev(players[i],pev_takedamage,1.0)
            
set_user_noclip(players[i])
        }

        new 
name[32]
        if(
get_pcvar_num(activity_pcvar)>1)
        {
            
format(name,31,"Admin")
        }
        else
        {
            
get_user_name(id,name,31)
        }
        
console_print(id,"[AMXX] %L",id,"TAG_GAME_STOPPED_CON")
        
client_print(0,print_chat,"[AMXX] %L",0,"TAG_GAME_STOPPED_CHAT",name)
    }
    else
    {
        
console_print(id,"[AMXX] %L",id,"TAG_GAME_NOTRUNNING")
    }

    return 
PLUGIN_HANDLED
}

public 
respawn_player(id)
{
    if(
is_user_connected(id))
    {
        
//Make the engine think he is spawning
        
set_pev(id,pev_deadflag,DEAD_RESPAWNABLE)
        
set_pev(id,pev_iuser1,0)
        
dllfunc(DLLFunc_Think,id)

        
//Move his body so if corpse is created it is not in map
        
engfunc(EngFunc_SetOrigin,id,Float:{-4800.0,-4800.0,-4800.0})

        
//Actual Spawn
        
set_task(0.5,"spawnagain",id)
    }
}

public 
spawnagain(id)
{
    
//Make sure he didn't disconnect in the 0.5 seconds that have passed.
    
if(is_user_connected(id))
    {
        
//Spawn player
        
spawn(id)
        
dllfunc(DLLFunc_Spawn,id)

        
set_task(0.2,"spawned",id)
    }
}

public 
spawned(id)
{
    if(
is_user_connected(id))
    {
        if(
id==it_player)
        {
            
_set_rendering(id,kRenderFxDistort,255,0,0,kRenderTransAdd,127)
        }
        else if(
game_mode==BASE)
        {
            if(
tagged[id])
            {
                
_set_rendering(id,kRenderFxGlowShell,0,255,0,kRenderTransAlpha,70)
                
set_user_noclip(id,1)
            }
            else if(
gottobase[id])
            {
                
_set_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAdd,0)
                
engfunc(EngFunc_SetView,id,it_player)
            }
        }
        else if(
game_mode==FREEZE && frozen[id])
        {
            
_set_rendering(id,kRenderFxGlowShell,0,0,255,kRenderTransAlpha,70)
        }
    
        
set_pev(id,pev_takedamage,0.0)
        
respawning[id] = false
    
        
if(!it_player)
        {
            
select_it()
        }
    }
}

public 
FM_Think_Hook(ent)
{
    if(!
game_mode || ent maxplayers)
        return 
PLUGIN_CONTINUE

    
if(!respawning[ent] && !is_user_alive(ent) && get_user_team(ent))
    {
        
respawning[ent] = true
        respawn_player
(ent)
    }

    if(
frozen[ent])
    {
        
set_pev(ent,pev_velocity,Float:{0.0,0.0,-100.0})
    }

    if(
ent!=it_player && !tagged[ent] && !gottobase[ent] && is_user_alive(ent) && game_mode==BASE)
    {
        static 
Float:origin[3]
        
pev(ent,pev_origin,origin)
        if(
get_distance_f(origin,base_origin)<TAG_BASE_DISTANCE)
        {
            
gottobase[ent] = true
            frozen
[ent] = true
            set_user_noclip
(ent,1)
            
_set_rendering(ent,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,0)

            if(
get_pcvar_num(individual_msg_pcvar))
            {
                static 
name[32]
                
get_user_name(ent,name,31)
                
client_print(ent,print_chat,"[AMXX] %L",ent,"TAG_GOTTOBASE_CLIENT")
                
                if(
get_pcvar_num(individual_msg_pcvar))
                {
                    
client_print(0,print_chat,"[AMXX] %L",0,"TAG_GOTTOBASE_ALL",name)
                }

                if(
allout())
                {
                    
client_print(0,print_chat,"[AMXX] %L",0,"TAG_NEXTROUND")

                    
reset_game()
                    
select_it()
                    
reset_game2()
                }
            }
        }
    }

    return 
PLUGIN_CONTINUE
}

public 
FM_Touch_Hook(ent1,ent2)
{
    static 
name[32]
    if(
ent1 <= maxplayers && is_user_alive(ent1) && ent2 <= maxplayers && is_user_alive(ent1) && is_user_alive(ent2))
    {
        switch(
game_mode)
        {
            case 
REGULAR:
            {
                if(
ent1==it_player && ent2!=immune_player)
                {
                    if(
frozen[it_player])
                        
frozen[it_player] = false

                    immune_player 
it_player
                    set_task
(5.0,"unimmune")
                    
frozen[ent2] = true
                    set_task
(5.0,"unfreeze",ent2)
                    
it_player ent2

                    get_user_name
(ent2,name,31)
                    
client_print(0,print_chat,"[AMXX] %L",0,"TAG_TAGGED",name)

                    
_set_rendering(ent1)
                    
_set_rendering(ent2,kRenderFxDistort,0,0,0,kRenderTransAdd,127)
                }
            }
            case 
FREEZE:
            {
                if(
defrostable[ent1] && frozen[ent1] && ent2!=it_player && !frozen[ent2])
                {
                    
unfreeze(ent1)
                    
_set_rendering(ent1)

                    if(
get_pcvar_num(individual_msg_pcvar))
                    {
                        
get_user_name(ent1,name,31)
                        
client_print(0,print_chat,"[AMXX] %L",0,"TAG_UNFROZEN",name)
                    }
                }
                else if(
ent1==it_player && !frozen[ent2])
                {
                    
freeze(ent2)
                    
_set_rendering(ent2,kRenderFxGlowShell,0,0,255,kRenderTransAlpha,70)

                    if(
get_pcvar_num(individual_msg_pcvar))
                    {
                        
get_user_name(ent2,name,31)
                        
client_print(0,print_chat,"[AMXX] %L",0,"TAG_FROZEN",name)
                    }

                    
defrostable[ent2] = false
                    set_task
(1.0,"unfreezeable",ent2)

                    if(
allfrozen())
                    {
                        
set_pcvar_num(restart_pcvar,1)

                        
get_user_name(it_player,name,31)
                        
client_print(0,print_chat,"[AMXX] %L",0,"TAG_FROZEN_FINISHED",name)

                        
reset_game()
                        
select_it()
                    }
                }
            }
            case 
BASE:
            {
                if(
ent1==it_player && !tagged[ent2] && !gottobase[ent2])
                {
                    
tagged[ent2] = true;
                    
_set_rendering(ent2,kRenderFxGlowShell,0,255,0,kRenderTransAlpha,70)
                    
set_user_noclip(ent2,1)

                    if(
get_pcvar_num(individual_msg_pcvar))
                    {
                        
get_user_name(ent2,name,31)
                        
client_print(0,print_chat,"[AMXX] %L",0,"TAG_BASE_TAGGED",name)
                    }

                    if(
allout())
                    {
                        
client_print(0,print_chat,"[AMXX] %L",0,"TAG_NEXTROUND")

                        
reset_game()
                        
select_it()
                    }
                }
            }
            case 
TEAM:
            {
                if((
ent1==it_player || tagged[ent1]) && (!tagged[ent2] && ent2!=it_player))
                {
                    
client_print(ent2,print_chat,"[AMXX] %L",ent2,"TAG_TEAM_TAGGED")
                    
tagged[ent2] = true
                    _set_rendering
(ent2,kRenderFxDistort,0,0,0,kRenderTransAdd,127)
                    if(
alltagged())
                    {
                        
client_print(0,print_chat,"[AMXX] %L",0,"TAG_NEXTROUND")

                        
reset_game()
                        
select_it()
                    }
                }
            }
        }
    }
}

public 
allfrozen()
{
    new 
numplayers[32]
    
get_players(players,num,"ah")

    for(new 
i=0;i<num;i++)
    {
        if(
players[i]!=it_player && !frozen[players[i]])
            return 
0;
    }

    return 
1;
}

public 
allout()
{
    new 
numplayers[32]
    
get_players(players,num,"ah")

    for(new 
i=0;i<num;i++)
    {
        if(
players[i]!=it_player && !tagged[players[i]] && !gottobase[players[i]])
            return 
0;
    }

    return 
1;
}

public 
alltagged()
{
    new 
numplayers[32]
    
get_players(players,num,"ah")

    for(new 
i=0;i<num;i++)
    {
        if(
players[i]!=it_player && !tagged[players[i]])
            return 
0;
    }

    return 
1;
}

public 
unfreezeable(id)
{
    
defrostable[id] = true
}

public 
freeze(id)
{
    
frozen[id] = true
}

public 
unfreeze(id)
{
    
frozen[id] = false
}

public 
unimmune()
{
    
immune_player 0
}

// Taken from csdm_protection.sma by BAILOPAN.
stock _set_rendering(indexfx=kRenderFxNoner=255g=255b=255render=kRenderNormalamount=16)
{
    
set_pev(indexpev_renderfxfx);
    new 
Float:RenderColor[3];
    
RenderColor[0] = float(r);
    
RenderColor[1] = float(g);
    
RenderColor[2] = float(b);
    
set_pev(indexpev_rendercolorRenderColor);
    
set_pev(indexpev_rendermoderender);
    
set_pev(indexpev_renderamtfloat(amount));

    return 
1;

__________________
Please help me with this Thread
I am 70% addicted to Counterstrike. What about you?
Ill make any spanish translation of a plugin. Just ask for it
benamo6 is offline
Send a message via MSN to benamo6
 


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 04:12.


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