Ограничить покупку гранат [Решено]
-
Автор темы - Сообщений: 2
- Зарегистрирован: 25 ноя 2016, 07:55
- STEAM_ID:
Ограничить покупку гранат
Можно как нибудь ограничить покупку гранат на респе. Админы забрасывают кучей гранат на сервере dd2.
-
- Администраторы
- Сообщений: 120
- Зарегистрирован: 22 янв 2015, 15:31
- STEAM_ID:
- Благодарил (а): 32 раза
- Поблагодарили: 16 раза
- Контактная информация:
Re: Ограничить покупку гранат
Данный вопрос уже задавался.
Скоро будет установлен плагин который будет ограничивать игроков и администратор покупать
гранаты более одно раза за раунд.
Cvars:
mp_grencontrol "1" // включить / отключить плагин
mp_grencontrol_maxfb "2" // количество FB позволено за один раунд
mp_grencontrol_maxhe "2" // число НЕ позволено за один раунд
mp_grencontrol_maxsg "2" // количество SG позволено за один раунд
mp_grencontrol_warn "1" // количество предупреждений , прежде чем будет наказание
mp_grencontrol_damage "99" // Наказание в количестве (Хhp) повреждений после последнего предупреждений
Источник: https://forums.alliedmods.net/showthread.php?p=8009
Скоро будет установлен плагин который будет ограничивать игроков и администратор покупать
гранаты более одно раза за раунд.
Код: Выбрать все
/* - AMX Mod X Script --------------------------------------------- *
* Grenade Control
* (c) Copyright 2003 Willyumyum & Ryan
*
* Customizable Grenade spam control. Works with Old-style menus,
* VGUI menus, & Steam buy aliases. Fully compatible with 1.5 & 1.6.
*
* Current Version: 2.0
*
* CHANGELOG:
* v2.0"
* works with latest release of steam
* v1.1:
* added: grenade_control.cfg
* added: more descriptive messages for when
* mp_grencontrol_max** cvars are set to 0
* CVARS:
*
* mp_grencontrol - enable/disable plugin
* mp_grencontrol_maxfb - number of flashbangs allowed per round
* mp_grencontrol_maxhe - number of he grenades allowed per round
* mp_grencontrol_maxsg - number of smoke grenades allowed per round
* mp_grencontrol_warn - number of warnings before punishment
* mp_grencontrol_damage - health to remove on punishment (0 disables)
*
* -------------------------------------------------------------- */
#include <amxmodx>
#include <amxmisc>
/* ------------------------------------------- */
#define WARNFB 0
#define WARNHE 1
#define WARNSG 2
#define PICKUP_FB 11
#define PICKUP_HE 12
#define PICKUP_SG 13
#define MAX_FLASHBANGS 2
#define MAX_SMOKEGRENADES 1
#define MAX_HEGRENADES 1
new playerWarn[33][3]
new ammoHE[33], ammoFB[33], ammoSG[33]
new totalHE[33], totalFB[33], totalSG[33]
/* ------------------------------------------- */
public plugin_init() {
register_plugin("Grenade Control","1.1","Willyumyum & Ryan")
register_menucmd(register_menuid("BuyItem", -1),(1<<2),"fbBuy") // Buy FB (old style)
register_menucmd(register_menuid("BuyItem", -1),(1<<3),"heBuy") // Buy HE (old style)
register_menucmd(register_menuid("BuyItem", -1),(1<<4),"sgBuy") // Buy SG (old style)
register_menucmd(-34,(1<<2),"fbBuy") // Buy FB (VGUI)
register_menucmd(-34,(1<<3),"heBuy") // Buy HE (VGUI)
register_menucmd(-34,(1<<4),"sgBuy") // Buy SG (VGUI)
register_clcmd("flash", "fbBuy") // Buy FB (Steam)
register_clcmd("hegren", "heBuy") // Buy HE (Steam)
register_clcmd("sgren", "sgBuy") // Buy SG (Steam)
register_event("AmmoPickup", "check_pickup", "b")
register_event("ResetHUD", "event_newround", "b")
register_cvar("mp_grencontrol", "") // enable/disable plugin
register_cvar("mp_grencontrol_maxfb", "") // number of FB's allowed per round
register_cvar("mp_grencontrol_maxhe", "") // number of HE's allowed per round
register_cvar("mp_grencontrol_maxsg", "") // number of SG's allowed per round
register_cvar("mp_grencontrol_warn", "") // number of warnings before punishment
register_cvar("mp_grencontrol_damage","") // health to remove on punishment
/*
server_cmd("exec addons/amxx/configs/grenade_control.cfg")
*/
new szConfigFile[64];
get_configsdir( szConfigFile, 63 );
format( szConfigFile, 63, "%s/grenade_control.cfg", szConfigFile );
server_cmd( "exec %s", szConfigFile );
return PLUGIN_CONTINUE
}
Код: Выбрать все
public event_newround(id) {
if ( !get_cvar_num("mp_grencontrol") )
return PLUGIN_CONTINUE
// Reset Player info.
check_nades(id)
playerWarn[id][WARNFB] = 0
playerWarn[id][WARNHE] = 0
playerWarn[id][WARNSG] = 0
totalFB[id] = ammoFB[id]
totalHE[id] = ammoHE[id]
totalSG[id] = ammoSG[id]
return PLUGIN_CONTINUE
}
public check_pickup(id) {
if ( !get_cvar_num("mp_grencontrol") )
return PLUGIN_CONTINUE
new pickupType = read_data(1)
if ( pickupType == PICKUP_FB ) {
totalFB[id]++
ammoFB[id]++
}
if ( pickupType == PICKUP_HE ) {
totalHE[id]++
ammoHE[id]++
}
if ( pickupType == PICKUP_SG ) {
totalSG[id]++
ammoSG[id]++
}
return PLUGIN_CONTINUE
}
public check_nades(id) {
new clip, ammo
// Flashbangs
get_user_ammo(id,CSW_FLASHBANG,clip,ammo)
ammoFB[id] = ammo
// HE Grendades
get_user_ammo(id,CSW_HEGRENADE,clip,ammo)
ammoHE[id] = ammo
// Smoke Grenades
get_user_ammo(id,CSW_SMOKEGRENADE,clip,ammo)
ammoSG[id] = ammo
return PLUGIN_HANDLED
}
public message_warnspam(id,nadeType) {
switch ( nadeType ) {
case CSW_FLASHBANG: {
if ( !get_cvar_num("mp_grencontrol_maxfb") )
client_print(id, print_center, "* Server has disabled Flashbangs. *")
else
client_print(id, print_center, "* Only %d Flashbang(s) per round. *", get_cvar_num("mp_grencontrol_maxfb"))
}
case CSW_HEGRENADE: {
if ( !get_cvar_num("mp_grencontrol_maxhe") )
client_print(id, print_center, "* Server has disabled HE Grenades. *")
else
client_print(id, print_center, "* Only %d HE Grenade(s) per round. *", get_cvar_num("mp_grencontrol_maxhe"))
}
case CSW_SMOKEGRENADE: {
if ( !get_cvar_num("mp_grencontrol_maxsg") )
client_print(id, print_center, "* Server has disabled Smoke Grenades. *")
else
client_print(id, print_center, "* Only %d Smoke Grenade(s) per round. *", get_cvar_num("mp_grencontrol_maxsg"))
}
}
}
Код: Выбрать все
public restrict_buynade(id,nadeType) {
check_nades(id)
if ( nadeType == CSW_FLASHBANG && ammoFB[id] != MAX_FLASHBANGS ) {
if ( playerWarn[id][WARNFB] ) {
playerWarn[id][WARNFB]++
message_warnspam(id,CSW_FLASHBANG)
if ( playerWarn[id][WARNFB] > get_cvar_num("mp_grencontrol_warn") )
user_slap(id,get_cvar_num("mp_grencontrol_damage"))
else
user_slap(id,0)
return PLUGIN_HANDLED
}
if ( totalFB[id] >= get_cvar_num("mp_grencontrol_maxfb") ) {
playerWarn[id][WARNFB] = 1
message_warnspam(id,CSW_FLASHBANG)
return PLUGIN_HANDLED
}
}
else if ( nadeType == CSW_HEGRENADE && ammoHE[id] != MAX_HEGRENADES ) {
if ( playerWarn[id][WARNHE] ) {
playerWarn[id][WARNHE]++
message_warnspam(id,CSW_HEGRENADE)
if ( playerWarn[id][WARNHE] > get_cvar_num("mp_grencontrol_warn") )
user_slap(id,get_cvar_num("mp_grencontrol_damage"))
else
user_slap(id,0)
return PLUGIN_HANDLED
}
if ( totalHE[id] >= get_cvar_num("mp_grencontrol_maxhe") ) {
playerWarn[id][WARNHE] = 1
message_warnspam(id,CSW_HEGRENADE)
return PLUGIN_HANDLED
}
}
else if ( nadeType == CSW_SMOKEGRENADE && ammoSG[id] != MAX_SMOKEGRENADES ) {
if ( playerWarn[id][WARNSG] ) {
playerWarn[id][WARNSG]++
message_warnspam(id,CSW_SMOKEGRENADE)
if ( playerWarn[id][WARNSG] > get_cvar_num("mp_grencontrol_warn") )
user_slap(id,get_cvar_num("mp_grencontrol_damage"))
else
user_slap(id,0)
return PLUGIN_HANDLED
}
if ( totalSG[id] >= get_cvar_num("mp_grencontrol_maxsg") ) {
playerWarn[id][WARNSG] = 1
message_warnspam(id,CSW_SMOKEGRENADE)
return PLUGIN_HANDLED
}
}
return PLUGIN_CONTINUE
}
public fbBuy(id) {
if ( !get_cvar_num("mp_grencontrol") )
return PLUGIN_CONTINUE
if ( restrict_buynade(id,CSW_FLASHBANG) )
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public heBuy(id) {
if ( !get_cvar_num("mp_grencontrol") )
return PLUGIN_CONTINUE
if ( restrict_buynade(id,CSW_HEGRENADE) )
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public sgBuy(id) {
if ( !get_cvar_num("mp_grencontrol") )
return PLUGIN_CONTINUE
if ( restrict_buynade(id,CSW_SMOKEGRENADE) )
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
Cvars:
mp_grencontrol "1" // включить / отключить плагин
mp_grencontrol_maxfb "2" // количество FB позволено за один раунд
mp_grencontrol_maxhe "2" // число НЕ позволено за один раунд
mp_grencontrol_maxsg "2" // количество SG позволено за один раунд
mp_grencontrol_warn "1" // количество предупреждений , прежде чем будет наказание
mp_grencontrol_damage "99" // Наказание в количестве (Хhp) повреждений после последнего предупреждений
Источник: https://forums.alliedmods.net/showthread.php?p=8009
-
- Администраторы
- Сообщений: 120
- Зарегистрирован: 22 янв 2015, 15:31
- STEAM_ID:
- Благодарил (а): 32 раза
- Поблагодарили: 16 раза
- Контактная информация:
Re: Ограничить покупку гранат
Что то похожее. Данный плагин не тестировался.
Источник: http://c-s.net.ua/forum/topic65237s0.html
Код: Выбрать все
/* thanks:
Thank you for giving ConnorMcLeod plugin API catching purchase this item)
*/
#include <amxmodx>
#include <fakemeta>
#include <cstrike>
#pragma semicolon 1
#define PLUGIN_NAME "[ALL] Block buy Grenade"
#define PLUGIN_VERS "1.0"
#define PLUGIN_AUTH "NIXON"
#define cs_get_user_menu(%0) get_pdata_int(%0, 205, 0)
new g_BuyForward;
new g_BuyGrenadeNum[33][3];
public plugin_init() {
/* [INIT] */
register_plugin(PLUGIN_NAME, PLUGIN_VERS, PLUGIN_AUTH);
/* [EVENT] */
register_logevent("EventRoundStart", 2, "0=World triggered", "1=Round_Start");
/* [CLCMD] */
register_clcmd("menuselect", "ClCmd_MenuSelect");
/* [OTHER] */
g_BuyForward = CreateMultiForward("client_buy", ET_STOP, FP_CELL, FP_CELL);
}
public client_disconnect(id) {
g_BuyGrenadeNum[id][0] = 0;
g_BuyGrenadeNum[id][1] = 0;
g_BuyGrenadeNum[id][2] = 0;
}
public client_command(id) {
if(is_user_alive(id)) {
new iCommand[13];
if(read_argv(0, iCommand, charsmax(iCommand)) < 12) {
static Trie: iAliasID = Invalid_Trie;
if(iAliasID == Invalid_Trie) {
iAliasID = TrieCreate();
TrieSetCell(iAliasID, "hegren", CSW_HEGRENADE);
TrieSetCell(iAliasID, "sgren", CSW_SMOKEGRENADE);
TrieSetCell(iAliasID, "flash", CSW_FLASHBANG);
}
strtolower(iCommand);
new iID;
if(TrieGetCell(iAliasID, iCommand, iID))
CanBuyItem(id, iID);
}
}
return PLUGIN_CONTINUE;
}
public ClCmd_MenuSelect(id) {
if(!is_user_alive(id))
return PLUGIN_CONTINUE;
new iSlot[3];
if(read_argv(1, iSlot, charsmax(iSlot)) == 1) {
new sSlot = iSlot[0] - '0';
if(1 <= sSlot <= 8) {
new iMenu = cs_get_user_menu(id);
if(iMenu == 10)
return CanBuyItem(id, sSlot);
}
}
return PLUGIN_CONTINUE;
}
/* [EVNET] */
public EventRoundStart() {
for(new i = 1; i <= get_maxplayers(); i++) {
if(is_user_connected(i)) {
g_BuyGrenadeNum[i][0] = 0;
g_BuyGrenadeNum[i][1] = 0;
g_BuyGrenadeNum[i][2] = 0;
}
}
}
/* [STOCKS] */
stock CanBuyItem(id, iItem) {
new iReturn;
ExecuteForward(g_BuyForward, iReturn, id, iItem);
if(iReturn != PLUGIN_CONTINUE)
return PLUGIN_HANDLED;
switch(iItem) {
case 3: { /* FLASH */
if(g_BuyGrenadeNum[id][0] < 2)
g_BuyGrenadeNum[id][0]++;
else return PLUGIN_HANDLED;
}
case 4: { /* HE */
if(g_BuyGrenadeNum[id][1] < 1)
g_BuyGrenadeNum[id][1]++;
else return PLUGIN_HANDLED;
}
case 5: { /* SMOKE */
if(g_BuyGrenadeNum[id][2] < 1)
g_BuyGrenadeNum[id][2]++;
else return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}
Источник: http://c-s.net.ua/forum/topic65237s0.html
-
- Администраторы
- Сообщений: 120
- Зарегистрирован: 22 янв 2015, 15:31
- STEAM_ID:
- Благодарил (а): 32 раза
- Поблагодарили: 16 раза
- Контактная информация:
Re: Ограничить покупку гранат [Решено]
Про просьбе игроков на серверах №1, №2 был установлен плагин Grenade_control
Плагин запрещает покупать более (X) количество гранат за один раунд.
При попытке купить более 2 гранат любого типа игрок получи предупреждение, после повторной попытке
игрок получит наказание, затем игрок будет убит.
Плагин запрещает покупать более (X) количество гранат за один раунд.
При попытке купить более 2 гранат любого типа игрок получи предупреждение, после повторной попытке
игрок получит наказание, затем игрок будет убит.
Вернуться в «Proposal/Предложения»
Кто сейчас на форуме
Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 4 гостей