/* 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 <!-- s;) --><img src=\"{SMILIES_PATH}/icon_e_wink.gif\" alt=\";)\" title=\"kacsintás\" /><!-- s;) -->
*
*
* 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 <!-- s;) --><img src=\"{SMILIES_PATH}/icon_e_wink.gif\" alt=\";)\" title=\"kacsintás\" /><!-- s;) --> 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 = 0
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_num, team2_num, score_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,"..::!!AWP csak 4V4 tol!!::...", team1_num, team2_num, min_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,"..::!!AWP csak 4V4 tol!!::...", score_dif, winspread_awp)
return PLUGIN_HANDLED
}
}
if (awp_count[team] >= get_pcvar_num(pv_max_awps))
{
engclient_cmd(id,"menuselect","10")
client_print(id,print_center,"Too many people on your team have AWP's (%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_num, team2_num, score_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,"..::!!AWP csak 4V4 tol!!::...", team1_num, team2_num, min_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,"..::!!AWP csak 4V4 tol!!::...", score_dif, winspread_auto)
return PLUGIN_HANDLED
}
}
if (auto_count[team] >= get_pcvar_num(pv_max_autos))
{
engclient_cmd(id,"menuselect","10")
client_print(id,print_center,"Too many people on your team have AUTO's (%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_num, team2_num, score_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,"..::!!AWP csak 4V4 tol!!::...", team1_num, team2_num, min_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,"You are on the winning team and cannot use AWP's (ScDif:%d, WsAWP:%d).", score_dif, winspread_awp)
return PLUGIN_HANDLED
}
}
if (awp_count[team] >= get_pcvar_num(pv_max_awps))
{
client_print(id,print_center,"Too many people on your team have AWP's (%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_num, team2_num, score_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,"..::!!AWP csak 4V4 tol!!::...", team1_num, team2_num, min_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,"You are on the winning team and cannot use AUTO's (ScDif:%d, WsAuto:%d).", score_dif, winspread_auto)
return PLUGIN_HANDLED
}
}
if (auto_count[team] >= get_pcvar_num(pv_max_autos))
{
client_print(id,print_center,"Too many people on your team have AUTO's (%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(id, pev_weapons)
new bool:awp_exists = false
new bool:auto1_exists = false
new bool:auto2_exists = false
if (wpflags & (1 << CSW_AWP))
awp_exists = true
if (wpflags & (1 << CSW_SG550))
auto1_exists = true
if (wpflags & (1 << 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_num, team2_num, score_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,"..::!!AWP csak 4V4 tol!!::....", team1_num, team2_num, min_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,"You are on the winning team and cannot use AWP's (ScDif:%d, WsAWP:%d).", score_dif, winspread_awp)
set_task(0.5, "drop_awp", id)
return
}
}
if (awp_count[team] >= get_pcvar_num(pv_max_awps))
{
client_print(id,print_center,"Too many people on your team have AWP's (%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 team, wpflags
if (is_user_alive(id))
{
wpflags = pev(id, pev_weapons)
if (wpflags & (1 << 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_num, team2_num, score_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,"..::!!AWP csak 4V4 tol!!::....", team1_num, team2_num, min_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,"You are on the winning team and cannot use AUTO's (ScDif:%d, WsAuto:%d).", score_dif, winspread_auto)
set_task(0.5, "drop_g3sg1", id)
return
}
}
if (auto_count[team] >= get_pcvar_num(pv_max_autos))
{
client_print(id,print_center,"Too many people on your team have AUTO's (%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 team, wpflags
if (is_user_alive(id))
{
wpflags = pev(id, pev_weapons)
if (wpflags & (1 << 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_num, team2_num, score_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,"..::!!AWP csak 4V4 tol!!::...", team1_num, team2_num, min_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,"You are on the winning team and cannot use AUTO's (ScDif:%d, WsAuto:%d).", score_dif, winspread_auto)
set_task(0.5, "drop_sg550", id)
return
}
}
if (auto_count[team] >= get_pcvar_num(pv_max_autos))
{
client_print(id,print_center,"Too many people on your team have AUTO's (%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 team, wpflags
if (is_user_alive(id))
{
wpflags = pev(id, pev_weapons)
if (wpflags & (1 << 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_disconnect(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 wpflags, score_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,"You are on the winning team and cannot use AWP's (ScDif:%d, WsAWP:%d).", score_dif, winspread_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,"You are on the winning team and cannot use AUTO's (ScDif:%d, WsAuto:%d).", score_dif, winspread_auto)
wpflags = pev(id, pev_weapons)
if (wpflags & (1 << CSW_SG550))
{
engclient_cmd(id, "drop", "weapon_sg550")
plist2[id] = 0
if (auto_count[team] > 0)
auto_count[team]--
}
if (wpflags & (1 << 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==1 && key==5) || (team==2 && key==4))
menu_auto(id, key)
if ((team==1 && key==4) || (team==2 && key==5))
menu_awp(id, key)
return PLUGIN_CONTINUE
}
public check_rebuy(id)
{
if (get_pcvar_num(pv_checkrebuy) != 1) return PLUGIN_CONTINUE
client_print(id,print_center,"Sorry Rebuy command is blocked on this server")
return PLUGIN_HANDLED
}
public total_snipers()
{
new players[32], numPlayerCount, idxPlayer, id, wpflags
// 1 = T; 2 = CT
awp_count[1] = 0
auto_count[1] = 0
get_players(players, numPlayerCount,"he","TERRORIST")
for(idxPlayer = 0; idxPlayer < numPlayerCount; idxPlayer++)
{
id = players[idxPlayer]
if (!is_user_alive(id)) continue
if (!pev_valid(id)) continue
wpflags = pev(id, pev_weapons)
plist[id] = 0
plist2[id] = 0
if (wpflags & (1 << CSW_AWP))
{
plist[id] = 1
awp_count[1]++
}
if ((wpflags & (1 << CSW_SG550)) || (wpflags & (1 << CSW_G3SG1)))
{
plist2[id] = 1
auto_count[1]++
}
}
awp_count[2] = 0
auto_count[2] = 0
get_players(players, numPlayerCount,"he","CT")
for(idxPlayer = 0; idxPlayer < numPlayerCount; idxPlayer++)
{
id = players[idxPlayer]
if (!is_user_alive(id)) continue
if (!pev_valid(id)) continue
plist[id] = 0
plist2[id] = 0
if (wpflags & (1 << CSW_AWP))
{
plist[id] = 1
awp_count[2]++
}
if ((wpflags & (1 << CSW_SG550)) || (wpflags & (1 << CSW_G3SG1)))
{
plist2[id] = 1
auto_count[2]++
}
}
}
public round_start()
{
total_snipers()
}
public hook_touch(ptr, ptd)
{
static ptrClass[32]
static ptdClass[32]
static ptrModel[128]
static team
static min_players
static team1_num, team2_num, score_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 < 1 || ptr < 1 )
return PLUGIN_CONTINUE
if ( (!pev_valid(ptr)) || (!pev_valid(ptd)) )
return PLUGIN_CONTINUE
if (!is_user_connected(ptd))
return PLUGIN_CONTINUE
pev(ptr, pev_classname, ptrClass, 31)
pev(ptr, pev_model, ptrModel, 127)
pev(ptd, pev_classname, ptdClass, 31)
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(ptd, pev_weapons)
if ((equal(ptrModel, "models/w_awp.mdl")) && (get_pcvar_num(pv_awplimit) == 1))
{
if (!(wpflags & (1 << CSW_AWP)))
{
if ((team1_num < min_players) || (team2_num < min_players))
{
client_print(ptd,print_center,"..::!!AWP csak 4V4 tol!!::...", team1_num, team2_num, min_players)
return FMRES_SUPERCEDE
}
if (awp_count[team] >= get_pcvar_num(pv_max_awps))
{
client_print(ptd,print_center,"Too many people on your team have AWP's (%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,"You are on the winning team and cannot use AWP's (ScDif:%d, WsAWP:%d).", score_dif, winspread_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 & (1 << CSW_SG550)) && !(wpflags & (1 << CSW_SG550)))
{
if ((team1_num < min_players) || (team2_num < min_players))
{
client_print(ptd,print_center,"..::!!AWP csak 4V4 tol!!::...", team1_num, team2_num, min_players)
return FMRES_SUPERCEDE
}
if (auto_count[team] >= get_pcvar_num(pv_max_autos))
{
client_print(ptd,print_center,"Too many people on your team have AUTO's (%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,"You are on the winning team and cannot use AUTO's (ScDif:%d, WsAuto:%d).", score_dif, winspread_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","4")
pv_max_autos = register_cvar("max_autos","4")
pv_minplayers = register_cvar("min_players","3")
pv_winspread_awp = register_cvar("winspread_awp","0")
pv_winspread_auto = register_cvar("winspread_auto","0")
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()
}