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

editing a plug-in limitawp


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
wakeme
New Member
Join Date: Nov 2020
Old 11-30-2020 , 02:36   editing a plug-in limitawp
Reply With Quote #1

Hello,
I need help with this plugin. I want the entire plugin not to apply to svip. I mean, everyone except SVIP svip will have awp and auto blocked.
I tried to do it by: if( !(get_user_flags(id) & ADMIN_LEVEL_A) ) but something don't work. I'm probably putting it in the wrong place. I would ask for possible editing sma, English isn't my first language, so I won't understand much from the translation. Thanks in advance

PHP Code:
/* AMX Mod X script. 

* Drop AWP with Team Limit and Win limit v1.6 (CS & CS:CZ) 
* By SuicideDog & MattOG/DaSoul & KWo
*
* Modded orignal from JustinHoMi 
*
*Up-To Version 0.5: SuicideDog & JustinHoMi
*******************************************
*
*
* VERSION: 1.0: MattOG
**********************
*
* Combined all 3 plugins (g3sg1/sg550/awp limit) into one.
* Added seperate commands to control Auto's and Awps. (different limits/rounds)
* Fixed bug with old-style menu's still being able to buy guns. (Credit to bAnTAi, I used his Y.A.S.C. plugin to help with the code).
*
* I didn't make it stop bots:
* 1. All bots come with built in weapon restrictions.
* 2. Bots tend not to be AWP whores  ;)
*
*
* VERSION 1.1: MattOG
*********************
* Changed Maxawps/autos and winspreads to cvars to enable on-the-fly changing, and to allow changes to be set in server/amxx/map configs.
*
*
* VERSION: 1.2: MattOG
**********************
*
* Minor bug fix where old style menu's couldn't buy at all. (Thanks to Olie for pointing it out).
*
*
* VERSION: 1.3: SuicideDog/DaSoul
**********************
*
* Added DaSoul's code to allow it to work with PTB correctly
*
* VERSION: 1.4: KWo
**********************
*
* Little bug fixes causing Run Time Errors etc...
* Blocking pickup limited weapon
* Bots are affected by this plugin, too but it doesn't prevent them from buying (they drop limited weapons after buying)
* Optimized usage of cvars by using pcvar functions.
*
**********************
*
* VERSION: 1.5: KWo
*
* Added support for team balancing (if someone has an awp or auto sniper and get switched alive to the opposite team)
*
**********************
*
* VERSION: 1.52: KWo
*
* Added min_players setting (cvar) to allow awps/autos if at least min_players amount in each team is reached
*
**********************
*
* VERSION: 1.53: KWo
*
* Fixed bug with not counting properly awps and autos when droping weapon by engine (i.e. while buying a new weapon)
* Fixed bug with displaying unnecessary message about awps/autos limitation 
* Fixed bug with player blocking from pickup awp/autos when only one of them was really limited by cvars
*
**********************
*
* VERSION: 1.60: KWo
*
* Many functions re-written to fix the stack error problem
*
**********************
* CVARS:
***********
*
* max_awps <xx> - Maximum Awps Allowed
* max_autos <xx> - Maximum Autos Allowed
* winspread_awp <xx> - When This Many Rounds Ahead, No Awps Allowed
* winspread_auto <xx> - When This Many Rounds Ahead, No Autos Allowed
* min_players <xx> - Below this amount of players in team, awp/auto are completly restricted (no matter of max_awps and max_autos)
* autolimit <1/0> - 1 = Restrict Auto, 0 = Don't
* awplimit <1/0> - 1 = Restrict Awp, 0 = Don't
* checkrebuy <1/0> - 1 = Prevent Rebuy Command, 0 = Don't
*
* TIPS:
*     To ALWAYS restrict to X number of awps/autos set winspread_awp/auto to 0 and max_awps/autos to however many awps/autos
*       To ONLY restrict after X number of rounds ahead, set max_awps/autos to 20 and winspread_awp/autos to however many rounds
*
* KNOWN BUG/ISSUES:
************
* Updating the CVARS in game will only take effect after the following round has finished.
* Bots can buy limitted weapon, but they drop it immediatelly after buying. They cannot pickup dropped limited weapons 
* (like human players), so it's not a big issue.
*
* TO DO:
********
* Dunno, you tell me  ;)  Possibly will look at that following round thing, though it isn't too much hassle so I may not bother. You Decide.
*
*/

#include <amxmodx> 
#include <fakemeta>

#pragma dynamic 8192

new const PLUGINNAME[] = "AWP/AUTO Limit (Team/Win)"
new const VERSION[] = "1.60"
new const AUTHOR[] = "SD/MG/DS/KWo"

new plist[33] = { 0, ... }   // 0 = no awp; 1 = carrying awp 
new plist2[33] = {0, ... }   // 0 = no auto; 1 = carrying auto
new awp_count[3]         // 1 = T; 2 = CT 
new auto_count[3]        // 1 = T; 2 = CT
new ctscore 
new tscore 0  
new gl_maxplayers

/* PCvars */
new pv_awplimit
new pv_max_awps
new pv_winspread_awp
new pv_autolimit
new pv_max_autos
new pv_winspread_auto
new pv_checkrebuy
new pv_minplayers

/* handles restricting the menu */
public menu_awp(id,key)
{

    if (
get_pcvar_num(pv_awplimit) != 1) return PLUGIN_CONTINUE
    
    
new team get_user_team(id)
    new 
winspread_awp get_pcvar_num(pv_winspread_awp)
    new 
min_players get_pcvar_num(pv_minplayers)
    new 
team1_numteam2_numscore_dif
    
new players[32]

    
get_players(players,team1_num,"e","TERRORIST")
    
get_players(players,team2_num,"e","CT")
    

    if((
team1_num min_players) || (team2_num min_players))
    {
        
engclient_cmd(id,"menuselect","10")
        
client_print(id,print_center,"Za malo osob w jednym zespole, aby kupic AWP (Ts:%d, CTs:%d)"team1_numteam2_nummin_players)
        return 
PLUGIN_HANDLED
    
}

    if (
winspread_awp)
    {
        if (
team == 2)
            
score_dif ctscore tscore
        
else if (team == 1)
            
score_dif tscore ctscore

        
if (score_dif >= winspread_awp)
        {    
            
engclient_cmd(id,"menuselect","10")
            
client_print(id,print_center,"Jestes w zwycieskiej druzynie i nie mozesz korzystac z AWP (ScDif:%d, WsAWP:%d)."score_difwinspread_awp)
            return 
PLUGIN_HANDLED
        
}
    }

    if (
awp_count[team] >= get_pcvar_num(pv_max_awps))
    {
        
engclient_cmd(id,"menuselect","10")
        
client_print(id,print_center,"Zbyt wiele osob w twoim zespole ma AWP (%d/%d)."awp_count[team], get_pcvar_num(pv_max_awps))
        return 
PLUGIN_HANDLED
    
}

    return 
PLUGIN_CONTINUE
}

/* handles restricting the menu */
public menu_auto(id,key)
{

    if (
get_pcvar_num(pv_autolimit) != 1) return PLUGIN_CONTINUE

    
new team get_user_team(id)
    new 
winspread_auto get_pcvar_num(pv_winspread_auto)
    new 
min_players get_pcvar_num(pv_minplayers)
    new 
team1_numteam2_numscore_dif
    
new players[32]

    
get_players(players,team1_num,"e","TERRORIST")
    
get_players(players,team2_num,"e","CT")

    if ((
team1_num min_players) || (team2_num min_players))
    {
        
engclient_cmd(id,"menuselect","10")
        
client_print(id,print_center,"Za malo osob w jednym zespole, aby kupic AUTO bronie (Ts:%d, CTs:%d)"team1_numteam2_nummin_players)
        return 
PLUGIN_HANDLED
    
}

    if (
winspread_auto)
    {
        if (
team == 2)
            
score_dif ctscore tscore
        
else if (team == 1)
            
score_dif tscore ctscore

        
if (score_dif >= winspread_auto)
        {
            
engclient_cmd(id,"menuselect","10")
            
client_print(id,print_center,"Jestes w zwycieskiej druzynie i nie mozesz korzystac z AUTO broni (ScDif:%d, WsAuto:%d)."score_difwinspread_auto)
            return 
PLUGIN_HANDLED
        
}
    }

    if (
auto_count[team] >= get_pcvar_num(pv_max_autos))
    {
        
engclient_cmd(id,"menuselect","10")
        
client_print(id,print_center,"Zbyt wiele osob w twoim zespole ma AUTO bronie (%d/%d)."auto_count[team], get_pcvar_num(pv_max_autos))
        return 
PLUGIN_HANDLED
    
}

    return 
PLUGIN_CONTINUE
}

/* handles if they script the AWP buy*/
public cmdawp(id)
{
    
    if (
get_pcvar_num(pv_awplimit) != 1) return PLUGIN_CONTINUE

    
new team get_user_team(id)

    if ((
team 1) || (team 2)) return PLUGIN_CONTINUE

    
new winspread_awp get_pcvar_num(pv_winspread_awp)
    new 
name[32]
    
get_user_name(id,name,31)
    new 
min_players get_pcvar_num(pv_minplayers)
    new 
team1_numteam2_numscore_dif
    
new players[32]

    
get_players(players,team1_num,"e","TERRORIST")
    
get_players(players,team2_num,"e","CT")

    if ((
team1_num min_players) || (team2_num min_players))
    {
        
client_print(id,print_center,"Za malo osob w jednym zespole, aby kupic AWP (Ts:%d, CTs:%d)"team1_numteam2_nummin_players)
        
        return 
PLUGIN_HANDLED
    
}

    if (
winspread_awp)
    {
        if (
team == 2)
            
score_dif ctscore tscore
        
else if (team == 1)
            
score_dif tscore ctscore

        
if (score_dif >= winspread_awp)
        {
            
client_print(id,print_center,"Jestes w zwycieskiej druzynie i nie mozesz korzystac z AWP (ScDif:%d, WsAWP:%d)."score_difwinspread_awp)
            
            return 
PLUGIN_HANDLED
        
}
    }

    if (
awp_count[team] >= get_pcvar_num(pv_max_awps))
    {
        
client_print(id,print_center,"Zbyt wiele osob w twoim zespole ma AWP (%d/%d)."awp_count[team], get_pcvar_num(pv_max_awps))
        
        return 
PLUGIN_HANDLED
    
}
    
    return 
PLUGIN_CONTINUE
}

/* handles if they script the AUTO buy*/ 
public cmdauto(id


    if (
get_pcvar_num(pv_autolimit) != 1) return PLUGIN_CONTINUE

    
new team get_user_team(id
    new 
winspread_auto get_pcvar_num(pv_winspread_auto)
    new 
min_players get_pcvar_num(pv_minplayers)
    new 
team1_numteam2_numscore_dif
    
new players[32]

    
get_players(players,team1_num,"e","TERRORIST")
    
get_players(players,team2_num,"e","CT")

    if ((
team1_num min_players) || (team2_num min_players))
    {
        
client_print(id,print_center,"Za malo osob w jednym zespole, aby kupic AUTO bronie (Ts:%d, CTs:%d)"team1_numteam2_nummin_players)
        
        return 
PLUGIN_HANDLED
    
}

    if (
winspread_auto)
    {
        if (
team == 2)
            
score_dif ctscore tscore
        
else if (team == 1)
            
score_dif tscore ctscore

        
if (score_dif >= winspread_auto)
        {
            
client_print(id,print_center,"Jestes w zwycieskiej druzynie i nie mozesz korzystac z AUTO broni (ScDif:%d, WsAuto:%d)."score_difwinspread_auto)
            
            return 
PLUGIN_HANDLED
        
}
    }

    if (
auto_count[team] >= get_pcvar_num(pv_max_autos))
    {
        
client_print(id,print_center,"Zbyt wiele osob w twoim zespole ma AUTO bronie (%d/%d)."auto_count[team], get_pcvar_num(pv_max_autos))
        
        return 
PLUGIN_HANDLED
    
}
    return 
PLUGIN_CONTINUE
}


/* handles when a player drops his weapon */ 
public handle_drop_weapon(id)
{

    if (!
is_user_connected(id)) 
    
    return 
PLUGIN_CONTINUE
    
    
new tmp1,tmp2 
    
new curweapon get_user_weapon(id,tmp1,tmp2)
    new 
team get_user_team(id)

/* handles when a player drops their awp */    
    
if (curweapon == CSW_AWP)
    {
        if ((
plist[id]==1) && (awp_count[team] > 0))
            
awp_count[team]--
        
plist[id] = 0            
        
return PLUGIN_CONTINUE
    
}
/* handles when a player drops his auto */ 
    
else if ((curweapon == CSW_SG550) || (curweapon == CSW_G3SG1))
    {
        if ((
plist2[id]==1) && (auto_count[team] > 0))
            
auto_count[team]--
        
plist2[id] = 0
        
return PLUGIN_CONTINUE
    
}
    
    return 
PLUGIN_CONTINUE


public 
handle_pickup_weapon(id)
{

    
    if (!
is_user_connected(id) || !pev_valid(id)) 
        return 
PLUGIN_CONTINUE

    
new team get_user_team(id)
    new 
wpflags pev(idpev_weapons)

    new 
bool:awp_exists false
    
new bool:auto1_exists false
    
new bool:auto2_exists false
    
    
if (wpflags & (<< CSW_AWP))
        
awp_exists true
    
if (wpflags & (<< CSW_SG550))
        
auto1_exists true
    
if (wpflags & (<< CSW_G3SG1))
        
auto2_exists true

    
if ((!awp_exists) && (plist[id] == 1))
    {
        
plist[id] = 0
        
if (awp_count[team] > 0)
            
awp_count[team]--
    }
    else if ((
awp_exists) && (plist[id] != 1))
    {
        
handle_pickup_awp(id)
    }

    if ((!
auto1_exists) && (!auto2_exists) && (plist2[id] == 1))
    {
        
plist2[id] = 0
        
if (auto_count[team] > 0)
            
auto_count[team]--
    }
    else if ((
auto1_exists) && (plist2[id] != 1))
    {
        
handle_pickup_sg550(id)
    }
    else if ((
auto2_exists) && (plist2[id] != 1))
    {
        
handle_pickup_g3sg1(id)
    }

    return 
PLUGIN_CONTINUE
}

/* handles when a player picks up an awp */ 
public handle_pickup_awp(id)

    
    new 
team get_user_team(id)
    new 
winspread_awp get_pcvar_num(pv_winspread_awp)
    new 
name[32]
    
get_user_name(id,name,31)
    new 
min_players get_pcvar_num(pv_minplayers)
    new 
team1_numteam2_numscore_dif
    
new players[32]

    
get_players(players,team1_num,"e","TERRORIST")
    
get_players(players,team2_num,"e","CT")

    if (
get_pcvar_num(pv_awplimit) == 1)
    {
        if ((
team1_num min_players) || (team2_num min_players))
        {
            
set_task(0.5"drop_awp"id)
            
client_print(id,print_center,"Za malo osob w jednym zespole, aby kupic AWP (Ts:%d, CTs:%d)"team1_numteam2_nummin_players)
            return
        }

        if (
winspread_awp)
        {
            if (
team == 2)
                
score_dif ctscore tscore
            
else if (team == 1)
                
score_dif tscore ctscore

            
if (score_dif >= winspread_awp)
            {
                
client_print(id,print_center,"Jestes w zwycieskiej druzynie i nie mozesz korzystac z AWP (ScDif:%d, WsAWP:%d)."score_difwinspread_awp)
                
set_task(0.5"drop_awp"id)
                return
            }
        }

        if (
awp_count[team] >= get_pcvar_num(pv_max_awps)) 
        {
            
client_print(id,print_center,"Zbyt wiele osob w twoim zespole ma AWP (%d/%d)."awp_count[team], get_pcvar_num(pv_max_awps))
            
set_task(0.5"drop_awp"id)
            return
        }
    }
    
    if (
plist[id] != 1)
    {
        
plist[id] = 1
        awp_count
[team]++
//        client_print(id,print_chat,"You have bought or picked-up an awp. There is %d awps in Your team.", awp_count[team])
//        log_message("The player %s bought or picked-up an awp. There is %d awps in his team %d.", name, awp_count[team], team)
    

}

public 
drop_awp(id)
{
    
    new 
teamwpflags
    
if (is_user_alive(id))
    {
        
wpflags pev(idpev_weapons)
        if (
wpflags & (<< CSW_AWP))
        {
            
engclient_cmd(id"drop""weapon_awp")

            if (
plist[id] == 1)
            {
                
team get_user_team(id)
                if (
awp_count[team] > 0)
                    
awp_count[team]--
                
plist[id] = 0
            
}
        }
    }
}

/* handles when a player picks up a g3sg1 */ 
public handle_pickup_g3sg1(id)
{

    new 
team get_user_team(id)
    new 
winspread_auto get_pcvar_num(pv_winspread_auto)
    new 
min_players get_pcvar_num(pv_minplayers)
    new 
team1_numteam2_numscore_dif
    
new players[32]

    
get_players(players,team1_num,"e","TERRORIST")
    
get_players(players,team2_num,"e","CT")

    if (
get_pcvar_num(pv_autolimit) == 1)
    {
        if ((
team1_num min_players) || (team2_num min_players))
        {
            
client_print(id,print_center,"Za malo osob w jednym zespole, aby kupic AUTO bronie (Ts:%d, CTs:%d)"team1_numteam2_nummin_players)
            
set_task(0.5"drop_g3sg1"id)
            return
        }

        if (
winspread_auto)
        {
            if (
team == 2)
                
score_dif ctscore tscore
            
else if (team == 1)
                
score_dif tscore ctscore

            
if (score_dif >= winspread_auto)
            {
                
client_print(id,print_center,"Jestes w zwycieskiej druzynie i nie mozesz korzystac z AUTO broni (ScDif:%d, WsAuto:%d)."score_difwinspread_auto)
                
set_task(0.5"drop_g3sg1"id)
                return
            }
        }

        if (
auto_count[team] >= get_pcvar_num(pv_max_autos))
        {
            
client_print(id,print_center,"Zbyt wiele osob w twoim zespole ma AUTO bronie (%d/%d)."auto_count[team], get_pcvar_num(pv_max_autos))
            
set_task(0.5"drop_g3sg1"id)
            return
        }
    }
    
    if (
plist2[id] != 1)
    {
        
plist2[id] = 1
        auto_count
[team]++
    }
}

public 
drop_g3sg1(id)
{
    new 
teamwpflags
    
if (is_user_alive(id))
    {
        
wpflags pev(idpev_weapons)
        if (
wpflags & (<< CSW_G3SG1))
        {
            
engclient_cmd(id"drop""weapon_g3sg1")

            if (
plist2[id] == 1)
            {
                
team get_user_team(id)
                if (
auto_count[team] > 0)
                    
auto_count[team]--
                
plist2[id] = 0
            
}
        }
    }
}

/* handles when a player picks up a sg550 */ 
public handle_pickup_sg550(id)
{
    new 
team get_user_team(id)
    new 
winspread_auto get_pcvar_num(pv_winspread_auto)
    new 
min_players get_pcvar_num(pv_minplayers)
    new 
team1_numteam2_numscore_dif
    
new players[32]

    
get_players(players,team1_num,"e","TERRORIST")
    
get_players(players,team2_num,"e","CT")

    if (
get_pcvar_num(pv_autolimit) == 1)
    {
        if ((
team1_num min_players) || (team2_num min_players))
        {
            
client_print(id,print_center,"Za malo osob w jednym zespole, aby kupic AUTO bronie (Ts:%d, CTs:%d)"team1_numteam2_nummin_players)
            
set_task(0.5"drop_sg550"id)
            return
        }

        if (
winspread_auto)
        {
            if (
team == 2)
                
score_dif ctscore tscore
            
else if (team == 1)
                
score_dif tscore ctscore

            
if (score_dif >= winspread_auto)
            {
                
client_print(id,print_center,"Jestes w zwycieskiej druzynie i nie mozesz korzystac z AUTO broni (ScDif:%d, WsAuto:%d)."score_difwinspread_auto)
                
set_task(0.5"drop_sg550"id)
                return
            }
        }


        if (
auto_count[team] >= get_pcvar_num(pv_max_autos))
        {
            
client_print(id,print_center,"Zbyt wiele osob w twoim zespole ma AUTO bronie (%d/%d)."auto_count[team], get_pcvar_num(pv_max_autos))
            
set_task(0.5"drop_sg550"id)
            return
        }
    }
    
    if (
plist2[id] != 1)
    {
        
plist2[id] = 1
        auto_count
[team]++
    }
}

public 
drop_sg550(id)
{
    new 
teamwpflags
    
if (is_user_alive(id))
    {
        
wpflags pev(idpev_weapons)
        if (
wpflags & (<< CSW_SG550))
        {
            
engclient_cmd(id"drop""weapon_sg550")

            if (
plist2[id] == 1)
            {
                
team get_user_team(id)
                if (
auto_count[team] > 0)
                    
auto_count[team]--
                
plist2[id] = 0
            
}
        }
    }
}

/* removes awp and auto when player dies */ 
public handle_death() 
{
    if ((
get_pcvar_num(pv_awplimit) != 1) && (get_pcvar_num(pv_autolimit) != 1))
        return 
PLUGIN_CONTINUE
  
    
new idx read_data(2)
    if ((
idx 1) || (idx gl_maxplayers))
        return 
PLUGIN_CONTINUE

    
if (plist[idx] == 1)
    {
        new 
team get_user_team(idx)
        if (
awp_count[team] > 0)
            
awp_count[team]--
        
plist[idx] = 0
    
}

    if (
plist2[idx] == 1)
    {
        new 
team get_user_team(idx)
        if (
auto_count[team] > 0)
            
auto_count[team]--
        
plist2[idx] = 0
    
}

    return 
PLUGIN_CONTINUE
}

/* clear vars when player connects */ 
public client_connect(id)
{
    if ((
id 0) && (id <= gl_maxplayers))
    {
        
plist[id] = 0
        plist2
[id] = 0
    
}
    return 
PLUGIN_CONTINUE
}

/* clear vars when player disconnects */ 
public client_disconnected(id)
{
    new 
team
    
if ((id 0) && (id <= gl_maxplayers))
    {
        if (
plist[id] == 1)
        {
            
team get_user_team(id)
            if (
awp_count[team] > 0)
                
awp_count[team]--
        }
        if (
plist2[id] == 1)
        {
            
team get_user_team(id)
            if (
auto_count[team] > 0)
                
auto_count[team]--
        }    
        
plist[id] = 0
        plist2
[id] = 0
    
}
    return 
PLUGIN_CONTINUE
}

public 
team_score()

    
    if ((
get_pcvar_num(pv_awplimit) != 1) && (get_pcvar_num(pv_autolimit) != 1))
        return 
PLUGIN_CONTINUE

    
new team[32]
    
read_data(1,team,32)

    if (
equal(team,"CT"))
    { 
        
ctscore read_data(2)
    }
    else if (
equal(team,"TERRORIST"))
    {
        
tscore read_data(2)
    }
    return 
PLUGIN_CONTINUE


public 
check_winning_team(id


    if ((
get_pcvar_num(pv_awplimit) != 1) && (get_pcvar_num(pv_autolimit) != 1)) return PLUGIN_CONTINUE
    
if ((id 1) || (id gl_maxplayers)) return PLUGIN_CONTINUE
    
if (!is_user_alive(id)) return PLUGIN_CONTINUE

    
new team get_user_team(id)
    new 
winspread_awp get_pcvar_num(pv_winspread_awp)
    new 
winspread_auto get_pcvar_num(pv_winspread_auto)
    new 
wpflagsscore_dif

    
if (plist[id] == 1
    {        
        if (
winspread_awp)
        {
            if (
team == 2)
                
score_dif ctscore tscore
            
else if (team == 1)
                
score_dif tscore ctscore

            
if (score_dif >= winspread_awp)
            {
                
client_print(id,print_center,"Jestes w zwycieskiej druzynie i nie mozesz korzystac z AWP (ScDif:%d, WsAWP:%d)."score_difwinspread_awp)

                
engclient_cmd(id"drop""weapon_awp")
                
plist[id] = 0
                
if (awp_count[team] > 0)
                    
awp_count[team]--
            }
        }
    }
    if (
plist2[id] == 1
    {
        if (
winspread_auto)
        {
            if (
team == 2)
                
score_dif ctscore tscore
            
else if (team == 1)
                
score_dif tscore ctscore

            
if (score_dif >= winspread_auto)
            {
                
client_print(id,print_center,"Jestes w zwycieskiej druzynie i nie mozesz korzystac z AUTO broni (ScDif:%d, WsAuto:%d)."score_difwinspread_auto)
                
wpflags pev(idpev_weapons)
                if (
wpflags & (<< CSW_SG550))
                {
                    
engclient_cmd(id"drop""weapon_sg550")
                    
plist2[id] = 0
                    
if (auto_count[team] > 0)
                        
auto_count[team]--
                }
                if (
wpflags & (<< CSW_G3SG1))
                {
                    
engclient_cmd(id"drop""weapon_g3sg1")
                    
plist2[id] = 0
                    
if (auto_count[team] > 0)
                        
auto_count[team]--
                }
            }
        }
    }
    return 
PLUGIN_CONTINUE
}

/*
* 1 = T's: AWP Key 4, AUTOSNIPER Key 5
* 2 = CT's: AWP Key 5, AUTOSNIPER Key 4
*/
public via_me(id,key)
{
    new 
team get_user_team(id)

    if ((
team==&& key==5) || (team==&& key==4))
        
menu_auto(idkey)
    if ((
team==&& key==4) || (team==&& key==5))
        
menu_awp(idkey)

    return 
PLUGIN_CONTINUE
}

public 
check_rebuy(id)
{
    if (
get_pcvar_num(pv_checkrebuy) != 1) return PLUGIN_CONTINUE
    client_print
(id,print_center,"Komenda rebuy jest zablokowana na tym serwerze!")

    return 
PLUGIN_HANDLED
}

public 
total_snipers()
{
    new 
players[32], numPlayerCountidxPlayeridwpflags

    
// 1 = T; 2 = CT 
    
awp_count[1] = 0
    auto_count
[1] = 0

    get_players
(playersnumPlayerCount,"he","TERRORIST")
    for(
idxPlayer 0idxPlayer numPlayerCountidxPlayer++)
    {
        
id players[idxPlayer]

        if (!
is_user_alive(id)) continue
        if (!
pev_valid(id)) continue
        
        
wpflags pev(idpev_weapons)
        
        
plist[id] = 0
        plist2
[id] = 0
        
        
if (wpflags & (<< CSW_AWP))
        {
            
plist[id] = 1
            awp_count
[1]++
        }
        if ((
wpflags & (<< CSW_SG550)) || (wpflags & (<< CSW_G3SG1)))
        {
            
plist2[id] = 1
            auto_count
[1]++
        } 
    } 

    
awp_count[2] = 0
    auto_count
[2] = 0
    
    get_players
(playersnumPlayerCount,"he","CT")
    for(
idxPlayer 0idxPlayer numPlayerCountidxPlayer++)
    {
        
id players[idxPlayer]

        if (!
is_user_alive(id)) continue
        if (!
pev_valid(id)) continue

        
plist[id] = 0
        plist2
[id] = 0
        
        
if (wpflags & (<< CSW_AWP))
        {
            
plist[id] = 1
            awp_count
[2]++
        }
        if ((
wpflags & (<< CSW_SG550)) || (wpflags & (<< CSW_G3SG1)))
        {
            
plist2[id] = 1
            auto_count
[2]++
        } 
    } 
}

public 
round_start()
{
    
total_snipers()  
}

public 
hook_touch(ptrptd)
{
    
    static 
ptrClass[32]
    static 
ptdClass[32]
    static 
ptrModel[128]
    static 
team
    
static min_players
    
static team1_numteam2_numscore_dif
    
static players[32]
    static 
winspread_awp
    
static winspread_auto
    
static wpflags

    
if ((get_pcvar_num(pv_awplimit) != 1) && (get_pcvar_num(pv_autolimit) != 1))
        return 
PLUGIN_CONTINUE

    
if (ptd gl_maxplayers || ptd || ptr )
        return 
PLUGIN_CONTINUE
        
    
if ( (!pev_valid(ptr)) || (!pev_valid(ptd)) )
        return 
PLUGIN_CONTINUE

    
if (!is_user_connected(ptd))
        return 
PLUGIN_CONTINUE

    pev
(ptrpev_classnameptrClass31)
    
pev(ptrpev_modelptrModel127)
    
pev(ptdpev_classnameptdClass31)
    
    if ((!
equal(ptrClass"weaponbox")) && (!equal(ptrClass"armoury_entity"))
        && (!
equal(ptrClass"csdmw_",6)))
        return 
PLUGIN_CONTINUE

    
if (equal(ptdClass"player"))
    {
        
team get_user_team(ptd)
        
min_players get_pcvar_num(pv_minplayers)
        
get_players(players,team1_num,"e","TERRORIST")
        
get_players(players,team2_num,"e","CT")
        
wpflags pev(ptdpev_weapons)

        if ((
equal(ptrModel"models/w_awp.mdl")) && (get_pcvar_num(pv_awplimit) == 1))
        {            
            if (!(
wpflags & (<< CSW_AWP)))
            {
                if ((
team1_num min_players) || (team2_num min_players))
                {
                    
client_print(ptd,print_center,"Za malo osob w jednym zespole, aby kupic AWP (Ts:%d, CTs:%d)."team1_numteam2_nummin_players)
                    return 
FMRES_SUPERCEDE
                
}

                if (
awp_count[team] >= get_pcvar_num(pv_max_awps))
                {
                    
client_print(ptd,print_center,"Zbyt wiele osob w twoim zespole ma AWP (%d/%d)."awp_count[team], get_pcvar_num(pv_max_awps))
                    return 
FMRES_SUPERCEDE
                
}

                
winspread_awp get_pcvar_num(pv_winspread_awp)
                if (
winspread_awp)
                {
                    
score_dif 0
                    
if (team == 2)
                        
score_dif ctscore tscore
                    
else if (team == 1)
                        
score_dif tscore ctscore

                    
if (score_dif >= winspread_awp)
                    {
                        
client_print(ptd,print_center,"Jestes w zwycieskiej druzynie i nie mozesz korzystac z AWP (ScDif:%d, WsAWP:%d)."score_difwinspread_awp)
                        return 
FMRES_SUPERCEDE
                    
}
                }
            }
            return 
PLUGIN_CONTINUE
        
}
        
        if (((
equal(ptrModel"models/w_g3sg1.mdl")) || (equal(ptrModel"models/w_sg550.mdl")))
            && (
get_pcvar_num(pv_autolimit) == 1))
        {
            if (!(
wpflags & (<< CSW_SG550)) && !(wpflags & (<< CSW_SG550)))
            {
                if ((
team1_num min_players) || (team2_num min_players))
                {
                    
client_print(ptd,print_center,"Za malo osob w jednym zespole, aby kupic AWP (Ts:%d, CTs:%d)."team1_numteam2_nummin_players)
                    return 
FMRES_SUPERCEDE
                
}

                if (
auto_count[team] >= get_pcvar_num(pv_max_autos))
                {
                    
client_print(ptd,print_center,"Zbyt wiele osob w twoim zespole ma AUTO bronie (%d/%d)."auto_count[team], get_pcvar_num(pv_max_autos))
                    return 
FMRES_SUPERCEDE
                
}

                
winspread_auto get_pcvar_num(pv_winspread_auto)
                if (
winspread_auto)
                {
                    
score_dif 0
                    
if (team == 2)
                        
score_dif ctscore tscore
                    
else if (team == 1)
                        
score_dif tscore ctscore

                    
if (score_dif >= winspread_auto)
                    {
                        
client_print(ptd,print_center,"Jestes w zwycieskiej druzynie i nie mozesz korzystac z AUTO broni (ScDif:%d, WsAuto:%d)."score_difwinspread_auto)
                        return 
FMRES_SUPERCEDE
                    
}
                }
            }
            return 
PLUGIN_CONTINUE
        
}
    }    
    return 
PLUGIN_CONTINUE
}

public 
team_assign() 
{
    new 
id read_data(1)
    if ((
id 1) || (id gl_maxplayers))
        return 
PLUGIN_CONTINUE
    
if (!is_user_connected(id) || !is_user_alive(id) || (!plist[id] && !plist2[id]))
        return 
PLUGIN_CONTINUE

    total_snipers
()

    return 
PLUGIN_CONTINUE
}

public 
plugin_init()
{
    
register_plugin(PLUGINNAME,VERSION,AUTHOR)
    
register_menucmd(-31,(1<<4),"via_me" )                                    //  T: AWP, CT: Sig SG-550 Sniper       - VGUI
    
register_menucmd(-31,(1<<5),"via_me" )                                    // CT: AWP, T:  H&K G3SG-1 Sniper Rifle - VGUI
    
register_menucmd(register_menuid("BuyRifle",1),(1<<4),"via_me" )          //  T: AWP, CT: Sig SG-550 Sniper       - STANDARD
    
register_menucmd(register_menuid("BuyRifle",1),(1<<5),"via_me" )          // CT: AWP, T:  H&K G3SG-1 Sniper Rifle - STANDARD
    
register_clcmd("drop","handle_drop_weapon")

    
register_clcmd("awp","cmdawp"
    
register_clcmd("magnum","cmdawp")
    
register_clcmd("g3sg1","cmdauto")
    
register_clcmd("d3au1","cmdauto")
    
register_clcmd("sg550","cmdauto")
    
register_clcmd("krieg550","cmdauto")
    
register_clcmd("rebuy","check_rebuy")

    
pv_awplimit register_cvar("awplimit","1")
    
pv_autolimit register_cvar("autolimit","1")
    
pv_checkrebuy register_cvar("checkrebuy","1")
    
pv_max_awps register_cvar("max_awps","2")
    
pv_max_autos register_cvar("max_autos","1")
    
pv_minplayers register_cvar("min_players","5")
    
pv_winspread_awp register_cvar("winspread_awp","3")
    
pv_winspread_auto register_cvar("winspread_auto","2")

    
register_event("TeamScore""team_score""a")
    
register_event("TeamInfo","team_assign","a")
    
register_event("WeapPickup","handle_pickup_weapon","b")
    
register_event("DeathMsg","handle_death","a"

    
register_event("ResetHUD","check_winning_team","be"

    
register_logevent("round_start"2"1=Round_Start")
    
register_forward(FM_Touch"hook_touch")
    
gl_maxplayers get_maxplayers()


Last edited by wakeme; 11-30-2020 at 02:39.
wakeme is offline
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 23:16.


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