Участник
Пользователь
- Сообщения
- 96
- Реакции
- 120
- Помог
- 1 раз(а)
Основная информация
Проблема: Баг с бомбой
Ошибка:
OC: linux
Amx Mod X: ReAMXX
Билд:
ReGamedll:
Список модулей:
Список плагинов:
Список метамодулей:
Комментарий:
Демки пока нету...
Подходит Тер на плент Б (даст2). Нажимает 5 (бомба), в 5 слоту показывает что там ничего нету и автоматом перебрасывает на 1 слот с авп.И так всегда, пока он не дропнул всю оружку с 1 слота, при этом дроп был авп и пачки одновременно.
Проблема: Баг с бомбой
Ошибка:
Дополнительная информацияДемки пока нету...
Подходит Тер на плент Б (даст2). Нажимает 5 (бомба), в 5 слоту показывает что там ничего нету и автоматом перебрасывает на 1 слот с авп.И так всегда, пока он не дропнул всю оружку с 1 слота, при этом дроп был авп и пачки одновременно.
OC: linux
Amx Mod X: ReAMXX
Билд:
Код:
ReHLDS version: 3.3.0.604
ReGamedll:
Код:
5.3.0.222-dev
Список модулей:
PHP:
name version author status
[ 1] ReAimDetector 0.2.0 ReHLDS Team работает
[ 2] Ham Sandwich 1.8.3-Re AMX Mod X Dev Team работает
[ 3] ReParachute 1.1 Beta the_hunter работает
[ 4] unknown unknown unknown не работает (aimespfix отключил)
[ 5] CStrike 1.8.3-Re AMX Mod X Dev Team работает
[ 6] Engine 1.8.3-Re AMX Mod X Dev Team работает
[ 7] nVault 1.8.3-Re AMX Mod X Dev Team работает
[ 8] MySQL 1.8.3-Re AMX Mod X Dev Team работает
[ 9] ReAPI 5.2.0.136- Asmodai & s1lent работает
[10] FakeMeta 1.8.3-Re AMX Mod X Dev Team работает
[11] CSX 1.8.3-Re AMX Mod X Dev Team работает
[12] Sockets 1.8.3-Re HLSW Dev Team работает
Список плагинов:
HTML:
[ 1] Admin Loader 2.9 Neygomon admin_loader.am работает
[ 2] FreshBans 1.3.7b kanagava fresh_bans_137b работает
[ 3] CSStatsX SQL 0.7.4 serfreeman1337 csstatsx_sql.am работает
[ 4] ReAimDetector API 0.2.0 ReHLDS Team reaimdetector.a работает
[ 5] Maps Menu 1.4.1 neugomon mapsmenu.amxx работает
[ 6] Map Manager 2.5.61 Mistrick mapmanager.amxx работает
[ 7] Map Manager: Sub Plugi 0.1 Mistrick mapmanager_subp работает
[ 8] [ReAPI]Admin Commands 1.5 F@nt0M admincmd_reapi. работает
[ 9] Lite Admin ESP 1.0 Safety1st admin_esp.amxx работает
[ 10] [ReAPI]Advanced Gag 1.9.0 Neygomon amx_gag_reapi.a работает
[ 11] [ReAPI]No Team Flash 0.0.2 Vaqtincha no_team_flash_r работает
[ 12] Server Menu 1.5.0 F@nt0M server_menu.amx работает
[ 13] [ReAPI]Adminfreelook 1.0 h1k3 adminfreelook_r работает
[ 14] [ReAPI]Round Balancer 1.1 Neygomon round_balancer_ работает
[ 15] [ReAPI]AFK Control 1.4.1 [Rnd Neygomon afk_control_rea работает
[ 16] Ping Control 1.31 Neygomon ping_control.am работает
[ 17] Advanced Damager 2.0.0 iPlague damager_iplague работает
[ 18] [ReAPI]Items Restrict 1.0 s1lent items_restrict_ работает
[ 19] Random Weapons WarmUP 2.4.1 neugomon warmup_reapi.am работает
[ 20] Custom Knife Model 0.1 Safety1st custom_knife.am работает
[ 21] [ReAPI]AWPoff 1.2 PAffAEJIkA :3 awp_off_reapi.a работает
[ 22] ScreenMaker 1.1 Neygomon screen_maker.am работает
[ 23] Pause Plugins 1.8.3-dev+ AMXX Dev Team pausecfg.amxx работает
[ 24] Rock to Ban 2.12ff Safety1st rock2ban.amxx работает
[ 25] DHUD_Adverts_Deads 1.3.1 pUzzlik dhud_message_de работает
[ 26] [ReAPI]Resetscore 1.0 Phantom resetscore_reap работает
[ 27] Hud_info 2.1 h1k3 hud_info.amxx работает
[ 28] [ReAPI]Killer ScreenFa 0.0.5 Vaqtincha killer_screenfa работает
[ 29] [ReAPI]Nice_killer_rea 0.2 F@nt0M nice_killer_rea работает
[ 30] Advanced Kill Assists 0.9 Spection next21_kill_ass работает
[ 31] Say /me and /hp 1.33 Neygomon sayme.amxx работает
[ 32] Stats Configuration 1.8.3-dev+ AMXX Dev Team statscfg.amxx работает
[ 33] [ReAPI]Block Advert 1.4 Neygomon block_advert_re работает
[ 34] Night VIP 0.1 F@nt0M night_vip.amxx работает
[ 35] [ReAPI]Admin Models 0.0.2 Vaqtincha admin_models_re работает
[ 36] Lite Translit 2.8 Neygomon lite_translit.a работает
[ 37] [ReVIP]System Core 2.5 full pUzzlik re_vip_core.amx работает
[ 38] [ReVIP]Menu 2.5 full pUzzlik re_vip_menu.amx работает
[ 39] [ReVIP]Connected Info 2.5 full pUzzlik re_vip_connect_ работает
[ 40] [ReVIP]Tab Info 2.5 full pUzzlik re_vip_tab_info работает
[ 41] [ReVIP]Add HP 2.5 full pUzzlik re_vip_hp_add.a работает
[ 42] Advanced Experience Sy 0.5.4 Vega serfreeman1337/s aes_main.amxx работает
[ 43] AES: CStrike Addon 0.5.4 Vega serfreeman1337/s aes_exp_cstrike работает
[ 44] AES: Informer 0.5.4 Vega serfreeman1337/s aes_informer.am работает
[ 45] AES: Admin Tools 0.5.4 Vega serfreeman1337/s aes_exp_editor. работает
[ 46] AES: Bonus System 0.5.4 Vega serfreeman1337/s aes_bonus_syste работает
[ 47] AES: Bonus CSTRIKE 0.5.4 Vega serfreeman1337/s aes_bonus_cstri работает
[ 48] AES: StatsX 0.5.4 Vega serfreeman1337/s aes_statsx_cstr работает
Список метамодулей:
PHP:
[ 1] AMX Mod X RUN - amxmodx_mm_i386. v1.8.3-R ini Start ANY
[ 2] Reunion RUN - reunion_mm_i386. v0.1.75 ini Start Never
[ 3] ReAuthCheck RUN - reauthcheck_mm_i v0.1.6 ini Start Never
[ 4] Rechecker RUN - rechecker_mm_i38 v2.5 ini Chlvl ANY
[ 5] ReSemiclip RUN - resemiclip_mm_i3 v2.3.9 ini Chlvl ANY
[ 6] ReSRDetector RUN - resrdetector_mm_ v0.1.0 ini Chlvl ANY
[ 7] WHBlocker RUN - whblocker_mm_i38 v1.5.692 ini Chlvl ANY
[ 8] VoiceTranscoder RUN - VoiceTranscoder. v2017RC3 ini ANY ANY
[ 9] ReAimDetector RUN - reaimdetector_am v0.2.0 pl1 ANY Never
[10] Ham Sandwich RUN - hamsandwich_amxx v1.8.3-R pl1 ANY ANY
[11] ReParachute RUN - parachute_amxx_i v1.1 Bet pl1 ANY ANY
[12] CStrike RUN - cstrike_amxx_i38 v1.8.3-R pl1 ANY ANY
[13] Engine RUN - engine_amxx_i386 v1.8.3-R pl1 ANY ANY
[14] MySQL RUN - mysql_amxx_i386. v1.8.3-R pl1 ANY ANY
[15] ReAPI RUN - reapi_amxx_i386. v5.2.0.1 pl1 ANY Never
[16] FakeMeta RUN - fakemeta_amxx_i3 v1.8.3-R pl1 ANY ANY
[17] CSX RUN - csx_amxx_i386.so v1.8.3-R pl1 ANY ANY
Комментарий:
Код:
#include < amxmodx >
#include < reapi >
#if AMXX_VERSION_NUM < 183
#include < colorchat >
#define MAX_PLAYERS 32
#endif
#define IsPlayer(%0) (0 < %0 < 33)
// ^4 - зелёный | ^3 - цвет тимы (КТ - синий | Т - красный | SPEC - серый) | ^1 - жёлтый
#define MSG_PREFIX "[^4WG^1]"
#define MSG_LOWONLINE "У вас отобрано^3 AWP.^1 Причина:^4 низкий онлайн."
#define MSG_LIMIT "У вас отобрано^3 AWP.^1 Причина:^4 превышен лимит."
//#define ALLPLAYERS
/*
Закоментируйте, чтобы для проверки на онлайн брались только люди(ботов и хлтв считать не будет).
Пример:
Допустим на сервере 5 ботов и 2 человека 1 хлтв.
Дефайн закоментирован: Посчитает, что на сервере 2 из Максимально возможных игроков.
Дефайн раскоментирован: Посчитает, что на сервере 8 игроков из Максимально возможных игроков (5 ботов + 2 человека + 1 хлтв).
Отбирать авп будет ТОЛЬКО У ЛЮДЕЙ в любом случае.
*/
#define FLAG (get_user_flags(id) & ADMIN_BAN) //Флаг для иммунитета от лимита
#define RETURN_MONEY //Возвращать деньги при отборе авп в конце раунда из-за низкого онлайна? (Закоментируйте, если не хотите, чтобы возвращало деньги)
#if defined RETURN_MONEY
#define MONEY_AWP 4750 //Сколько денег возвращать?
#endif
//#define PERCENT_PLAYERS
/*
Разкоменитруйте, если хотите чтобы лимит зависил от процента игроков [I am chetko ob'yasnyat']
Например: Онлайн = 10, Процент в кваре(awp_limit_max) = 20
10/100*20 = 2 авп на тиму (2 у терров и 2 у кт)
*/
enum ECVARS {
CVAR_ONLINE = 0,
CVAR_LIMIT_AWP_STATUS,
CVAR_LIMIT_MAX_AWP,
CVAR_LIMIT_IMMUN
};
enum {
AWP_NONE = 0,
AWP_BUY,
AWP_PICK_UP
};
new sAwp[TeamName: TEAM_SPECTATOR], gCount, gCvar[ECVARS], gAwp[MAX_PLAYERS + 1], TeamName: gTeam[MAX_PLAYERS + 1];
#if defined PERCENT_PLAYERS
new gLimit;
#endif
public plugin_init(){
register_plugin("[ReAPI]AWPoff", "1.2", "PAffAEJIkA :3");
new mapname[32];
get_mapname(mapname, charsmax(mapname));
new maps[][] = { "awp", "aim", "35hp" };
for(new i; i < sizeof maps; i++){
if(containi(mapname, maps) != -1){
pause("ad");
return;
}
}
RegisterHookChain(RG_CBasePlayer_AddPlayerItem, "AddItem");
RegisterHookChain(RG_CBasePlayer_HasRestrictItem, "RestrictItem");
RegisterHookChain(RG_CBasePlayer_RemovePlayerItem, "RemoveItem");
RegisterHookChain(RG_CBasePlayer_Spawn, "SpawnPlayer");
register_logevent("EventRoundEnd", 2, "1=Round_End");
register_logevent("EventRestartRound", 2, "1&Restart_Round_");
gCvar[CVAR_ONLINE] = register_cvar("awp_players_low", "8"); //Если онлайн ниже указнного в кваре, в конце раунда у всех отберет авп, и запретит ее. (Что бы отключить поставьте 0) [стандартно: при онлайне меньше 8]
gCvar[CVAR_LIMIT_AWP_STATUS] = register_cvar("awp_limit", "1"); //Включить|Выключить лимит авп [Стандартно: включен]
gCvar[CVAR_LIMIT_MAX_AWP] = register_cvar("awp_limit_max", "2"); //Сколько АВП разрешено при лимите [Стандартно по 2 авп на команду] | Если раскоментирован PERCENT_PLAYERS, то сюда вписывать нужный процент
gCvar[CVAR_LIMIT_IMMUN] = register_cvar("awp_limit_immun", "1"); //Включить|Выключить иммунитет от лимита(Людей с флагом не учитывает вообще) [Стандартно включен]
}
public client_disconnect(id) if(IsPlayer(id)) minus_awp(id);
public EventRestartRound(){
sAwp[TEAM_CT] = 0;
sAwp[TEAM_TERRORIST] = 0;
arrayset(gAwp, AWP_NONE, sizeof gAwp);
}
public EventRoundEnd(){
new players[32];
#if defined ALLPLAYERS
get_players(players, gCount);
#else
get_players(players, gCount, "ch");
#endif
#if defined PERCENT_PLAYERS
const MAX_PERCENT = 100;
gLimit = gCount * get_pcvar_num(gCvar[CVAR_LIMIT_MAX_AWP]) / MAX_PERCENT;
#endif
if(gCount >= get_pcvar_num(gCvar[CVAR_ONLINE]) || !sAwp[TEAM_CT] && !sAwp[TEAM_TERRORIST])
return PLUGIN_CONTINUE;
for(new i = 0, id; i < gCount; i ++){
id = players;
#if defined ALLPLAYERS
if(!is_user_valid(id))
continue;
#endif
if(gAwp[id] == AWP_NONE)
continue;
rg_remove_item(id, "weapon_awp");
#if defined RETURN_MONEY
if(gAwp[id] == AWP_BUY)
rg_add_account(id, MONEY_AWP);
#endif
client_print_color(id, false, "%s %s", MSG_PREFIX, MSG_LOWONLINE);
}
EventRestartRound();
return PLUGIN_CONTINUE;
}
public RestrictItem(id, ItemID:item, ItemRestType:type){
if(item != ITEM_AWP || !is_user_valid(id) || gAwp[id] != AWP_NONE || type != ITEM_TYPE_BUYING)
return HC_CONTINUE;
/* * * Первая "покупка" при нехватке денег проскакивает >< * * */
const COST_AWP = 4750;
new gMoney = get_member(id, m_iAccount);
if(gMoney < COST_AWP)
return HC_CONTINUE;
/* * * Можете удалить этот "чудофикс", если он вам не нравится * * */
gAwp[id] = AWP_BUY;
if(check_awp(id, false))
return HC_CONTINUE;
gAwp[id] = AWP_NONE;
SetHookChainReturn(ATYPE_INTEGER, true);
return HC_SUPERCEDE;
}
public AddItem(id, pItem){
if(get_member(pItem, m_iId) != WEAPON_AWP || gAwp[id] != AWP_NONE || !is_user_valid(id))
return HC_CONTINUE;
if(check_awp(id, false)){
gAwp[id] = AWP_PICK_UP;
return HC_CONTINUE;
}
SetHookChainReturn(ATYPE_INTEGER, false);
return HC_SUPERCEDE;
}
public SpawnPlayer(id){
if(!is_user_alive(id))
return HC_CONTINUE;
gTeam[id] = get_member(id, m_iTeam);
return HC_CONTINUE;
}
//Native's
public plugin_natives()
register_native("awpoff_check", "check_native", true);
public check_native(id)
return check_awp(id, true);
//Native's
bool: check_awp(id, check){
if(gCount < get_pcvar_num(gCvar[CVAR_ONLINE]))
client_print_color(id, false, "%s %s", MSG_PREFIX, MSG_LOWONLINE);
else if(get_pcvar_num(gCvar[CVAR_LIMIT_AWP_STATUS])){
if(get_pcvar_num(gCvar[CVAR_LIMIT_IMMUN]) && FLAG)
return true;
#if defined PERCENT_PLAYERS
if(sAwp[gTeam[id]] < gLimit)
#else
if(sAwp[gTeam[id]] < get_pcvar_num(gCvar[CVAR_LIMIT_MAX_AWP]))
#endif
{
if(!check)
sAwp[gTeam[id]] ++;
return true;
}else
client_print_color(id, false, "%s %s", MSG_PREFIX, MSG_LIMIT);
}else
return true;
return false;
}
public RemoveItem(id, pItem){
if(get_member(pItem, m_iId) == WEAPON_AWP)
minus_awp(id);
}
minus_awp(id){
if(!get_pcvar_num(gCvar[CVAR_LIMIT_AWP_STATUS]))
return;
if(!is_user_valid(id) || gAwp[id] == AWP_NONE)
return;
gAwp[id] = AWP_NONE;
if(get_pcvar_num(gCvar[CVAR_LIMIT_IMMUN]) && FLAG)
return;
sAwp[gTeam[id]] --;
}
bool: is_user_valid(id){
if(is_user_bot(id)) return false;
if(is_user_hltv(id)) return false;
return true;
}
Код:
#include <amxmodx>
#include <reapi>
// uncomment that you need to restrict these item's.
new const ItemID:g_rRestrictWeapons[] =
{
ITEM_SHIELDGUN,
// ITEM_P228,
// ITEM_GLOCK,
// ITEM_SCOUT,
// ITEM_HEGRENADE,
// ITEM_XM1014,
// ITEM_C4,
// ITEM_MAC10,
// ITEM_AUG,
// ITEM_SMOKEGRENADE,
// ITEM_ELITE,
// ITEM_FIVESEVEN,
// ITEM_UMP45,
ITEM_SG550,
// ITEM_GALIL,
// ITEM_FAMAS,
// ITEM_USP,
// ITEM_GLOCK18,
// ITEM_AWP,
// ITEM_MP5N,
// ITEM_M249,
// ITEM_M3,
// ITEM_M4A1,
// ITEM_TMP,
ITEM_G3SG1,
// ITEM_FLASHBANG,
// ITEM_DEAGLE,
// ITEM_SG552,
// ITEM_AK47,
// ITEM_KNIFE,
// ITEM_P90,
// don't touch it!!
ITEM_NONE
};
new const ItemID:g_rRestrictItems[] =
{
// ITEM_NVG,
// ITEM_DEFUSEKIT,
// ITEM_KEVLAR,
// ITEM_ASSAULT,
// ITEM_LONGJUMP,
// ITEM_HEALTHKIT,
// ITEM_ANTIDOTE,
// ITEM_SECURITY,
// ITEM_BATTERY,
// ITEM_SUIT,
// don't touch it!!
ITEM_NONE
};
enum SectionBits
{
SECTION_WEAPONS = 0,
SECTION_ITEMS
};
new g_bitsRestrict[SectionBits] = {};
public plugin_init()
{
register_plugin("[ReAPI]Items Restrict", "1.0", "s1lent");
if (g_rRestrictWeapons[0] == ITEM_NONE && g_rRestrictItems[0] == ITEM_NONE) {
set_fail_state("Arrays g_rRestrictWeapons and g_rRestrictItems are empty!");
return;
}
new i;
for (i = 0; g_rRestrictWeapons != ITEM_NONE; i++)
g_bitsRestrict[SECTION_WEAPONS] |= (1 << any:g_rRestrictWeapons);
for (i = 0; g_rRestrictItems != ITEM_NONE; i++)
g_bitsRestrict[SECTION_ITEMS] |= (1 << any:(g_rRestrictItems % ITEM_NVG));
RegisterHookChain(RG_CBasePlayer_HasRestrictItem, "CBasePlayer_HasRestrictItem");
}
public CBasePlayer_HasRestrictItem(const id, const ItemID:item, const ItemRestType:type)
{
if ((item < ITEM_NVG) ? g_bitsRestrict[SECTION_WEAPONS] & (1 << any:item) :
g_bitsRestrict[SECTION_ITEMS] & (1 << any:(item % ITEM_NVG)))
{
if (type == ITEM_TYPE_BUYING) {
client_print(id, print_center, "Это оружие запрещено");
}
// return 1, let's restrict up this item
SetHookChainReturn(ATYPE_INTEGER, 1);
return HC_SUPERCEDE;
}
return HC_CONTINUE;
}
Код:
#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <vip_system>
#pragma semicolon 1
enum _:cvars { FLAG_GIRL, FLAG_DEF, FLAG, VIPMENU, BLOCKBONUS };
new pCvar[cvars], g_Flags[cvars], g_iMenuRnd, g_iBonusRnd;
enum _:fwd { FWD_SPAWN, FWD_RESTART };
new g_fwdFunction[fwd];
new g_iRound;
new HookChain:HookSpawn;
public plugin_natives() {
register_library(VIP_SYSTEM_VERSION);
register_native("get_flag_access_girl", "native_flag_access_girl", 1);
register_native("get_flag_access_def", "native_flag_access_def", 1);
register_native("get_flag_access", "native_flag_access", 1);
register_native("get_round_num", "native_round_num", 1);
register_native("get_block_maps", "native_block_maps", 1);
register_native("core_is_bonus_spawn", "native_bonus_spawn", 1);
register_native("core_is_allow_use", "native_allow_use", 1);
}
public native_flag_access_girl(id){
if(is_user_connected(id) && get_user_flags(id) & g_Flags[FLAG_GIRL]) return true;
return false;
}
public native_flag_access_def(id){
if(is_user_connected(id) && get_user_flags(id) & g_Flags[FLAG_DEF]) return true;
return false;
}
public native_flag_access(id){
if(is_user_connected(id) && get_user_flags(id) & g_Flags[FLAG]) return true;
return false;
}
public native_round_num()
return g_iRound;
public native_block_maps() {
new szDisabledFile[64];
get_configsdir(szDisabledFile, charsmax(szDisabledFile));
formatex(szDisabledFile, charsmax(szDisabledFile), "%s/vip_disabled_maps.cfg", szDisabledFile);
if(file_exists(szDisabledFile)) {
new iLineNum, szData[64], iTextLen;
new szMapName[64]; rh_get_mapname(szMapName, charsmax(szMapName));
while(read_file(szDisabledFile, iLineNum, szData, charsmax(szData), iTextLen)) {
if(containi(szMapName, szData) != -1) return true;
iLineNum++;
}
}
return false;
}
public native_bonus_spawn(id) {
if(!is_user_alive(id)) return false;
if(get_block_maps()) return false;
if(!get_flag_access_girl(id) && !get_flag_access_def(id)) return false;
return true;
}
public native_allow_use(id) {
if(!is_user_alive(id)) {
client_print_color(id, -2, "%L %L", LANG_SERVER, "CHAT_TAG", LANG_SERVER, "VIP_ALIVE");
return false;
}
if(get_block_maps()) {
client_print_color(id, -2, "%L %L", LANG_SERVER, "CHAT_TAG", LANG_SERVER, "BLOCK_MAPS");
return false;
}
if(!get_flag_access_girl(id) && !get_flag_access_def(id)) {
client_print_color(id, -2, "%L %L", LANG_SERVER, "CHAT_TAG", LANG_SERVER, "ONLY_VIP_GIRL");
return false;
}
if(g_iMenuRnd > g_iRound) {
client_print_color(id, -2, "%L %L", LANG_SERVER, "CHAT_TAG", LANG_SERVER, "WARMUP_ROUND");
return false;
}
return true;
}
public plugin_init() {
register_plugin("[ReVIP]System Core", VIP_SYSTEM_VERSION, "pUzzlik");
register_dictionary("vip_system.txt");
// flag access girl. s
pCvar[FLAG_GIRL] = register_cvar("access_flag_girl", "s");
// flag access def. t
pCvar[FLAG_DEF] = register_cvar("access_flag_vip", "t");
// flag access (def. g)
pCvar[FLAG] = register_cvar("other_access_flag", "m");
// with round displayed vip menu
pCvar[VIPMENU] = register_cvar("display_menu_rnd", "2");
// with round enable forward spawn player
pCvar[BLOCKBONUS] = register_cvar("spawn_player_block", "2");
g_fwdFunction[FWD_RESTART] = CreateMultiForward("vip_core_restart_round", ET_IGNORE, FP_CELL);
g_fwdFunction[FWD_SPAWN] = CreateMultiForward("vip_core_player_spawn", ET_IGNORE, FP_CELL);
RegisterHookChain(RG_RoundEnd, "RoundEnd", true);
RegisterHookChain(RG_CSGameRules_RestartRound, "CSGameRules_RestartRound_Pre");
DisableHookChain(HookSpawn = RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", true));
new szFileCfg[64];
get_configsdir(szFileCfg, charsmax(szFileCfg));
formatex(szFileCfg, charsmax(szFileCfg), "%s/vip_system.cfg", szFileCfg);
if(file_exists(szFileCfg)) server_cmd("exec %s", szFileCfg);
}
public plugin_cfg() {
new sFlagGirl[10]; get_pcvar_string(pCvar[FLAG_GIRL], sFlagGirl, charsmax(sFlagGirl));
new sFlagDef[10]; get_pcvar_string(pCvar[FLAG_DEF], sFlagDef, charsmax(sFlagDef));
new sFlag[10]; get_pcvar_string(pCvar[FLAG], sFlag, charsmax(sFlag));
g_Flags[FLAG_GIRL] = read_flags(sFlagGirl);
g_Flags[FLAG_DEF] = read_flags(sFlagDef);
g_Flags[FLAG] = read_flags(sFlag);
g_iMenuRnd = get_pcvar_num(pCvar[VIPMENU]);
g_iBonusRnd = get_pcvar_num(pCvar[BLOCKBONUS]);
}
public RoundEnd(WinStatus:status, ScenarioEventEndRound:event) {
if(event == ROUND_GAME_COMMENCE || event == ROUND_GAME_RESTART) {
g_iRound = 0;
DisableHookChain(HookSpawn);
}
}
public CSGameRules_RestartRound_Pre() {
g_iRound++;
new Result;
ExecuteForward(g_fwdFunction[FWD_RESTART], Result, g_iRound);
if(g_iRound == g_iBonusRnd) EnableHookChain(HookSpawn);
}
public CBasePlayer_Spawn(const id) {
new Result;
ExecuteForward(g_fwdFunction[FWD_SPAWN], Result, id);
}
Код:
#include <amxmodx>
#include <reapi>
#include <vip_system>
#define ADMIN_LOADER // Compatible with Admin Loader from neugomon (https://www.neugomon.ru/threads/486/)
//#define GAMECMS_API // Выводить срок до конца админки с GAMECMS_API
#pragma semicolon 1
new const MenuKey = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<9);
enum _:cvars {
AUTO_MENU,
GIVE_ITEMS,
WEAPONSRND,
AWPRND,
SHOP,
SHOP_RND
};
new iPistol[MAX_CLIENTS+1], bool:g_bUsePistol, bool:g_bUseWeapon[MAX_CLIENTS+1];
static sItems[10];
new pCvar[cvars], pCvarCfg[cvars];
new g_iRound;
#if defined GAMECMS_API
native days_left_info (id, szDate[], iLen);
#endif
public plugin_init() {
register_plugin("[ReVIP]Menu", VIP_SYSTEM_VERSION, "pUzzlik");
register_dictionary("vip_system.txt");
// auto open vip menu 1 - on, 0 - off
pCvar[AUTO_MENU] = register_cvar("open_menu_spawn", "0");
/*
flags items
a - armor
d - defuse
f - flashbang
h - hegranade
p - pistol
s - smoke
*/
pCvar[GIVE_ITEMS] = register_cvar("give_items", "adfhp");
// which is available with a round primary weapons
pCvar[WEAPONSRND] = register_cvar("primary_weapons_rnd", "2");
// which is available with a round primary weapons
pCvar[AWPRND] = register_cvar("heavy_weapons_rnd", "4");
// if you want to use a custom shop, (1 - enable)
pCvar[SHOP] = register_cvar("use_custom_shop", "1");
// with round displayed shop menu
pCvar[SHOP_RND] = register_cvar("custom_shop_block_rnd", "2");
register_clcmd("vipmenu", "ShowMenu");
register_clcmd("say /vipmenu", "ShowMenu");
register_clcmd("say_team /vipmenu", "ShowMenu");
register_clcmd("say", "hook_say");
register_clcmd("say_team", "hook_say");
register_menucmd(register_menuid("Vip Menu"), MenuKey, "MenuHandler");
}
public plugin_cfg() {
get_pcvar_string(pCvar[GIVE_ITEMS],sItems,charsmax(sItems)); trim(sItems);
pCvarCfg[WEAPONSRND] = get_pcvar_num(pCvar[WEAPONSRND]);
pCvarCfg[AWPRND] = get_pcvar_num(pCvar[AWPRND]);
pCvarCfg[AUTO_MENU] = get_pcvar_num(pCvar[AUTO_MENU]);
pCvarCfg[SHOP] = get_pcvar_num(pCvar[SHOP]);
pCvarCfg[SHOP_RND] = get_pcvar_num(pCvar[SHOP_RND]);
}
public vip_core_restart_round(round) {
arrayset(g_bUseWeapon, false, sizeof(g_bUseWeapon));
g_iRound = round;
}
public vip_core_player_spawn(const id) {
if(core_is_bonus_spawn(id)) {
for(new i, str_len = strlen(sItems); i < str_len ; i++) {
switch(sItems){
case 'a': rg_set_user_armor(id, 100, ARMOR_VESTHELM);
case 'd': {
new TeamName:team = get_member(id, m_iTeam);
if(team == TEAM_CT) rg_give_defusekit (id, true);
}
case 'f': {
rg_give_item(id, "weapon_flashbang", GT_APPEND);
rg_give_item(id, "weapon_flashbang", GT_APPEND);
}
case 'h': rg_give_item(id, "weapon_hegrenade", GT_APPEND);
case 'p': {
switch(iPistol[id]) {
case 0: { rg_give_item(id, "weapon_deagle", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_DEAGLE, 35); }
case 1: { rg_give_item(id, "weapon_usp", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_USP, 100); }
case 2: { rg_give_item(id, "weapon_glock18", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_GLOCK18, 120); }
}
g_bUsePistol = true;
}
case 's': rg_give_item(id, "weapon_smokegrenade", GT_APPEND);
}
}
if(pCvarCfg[AUTO_MENU] && g_iRound >= pCvarCfg[WEAPONSRND]) ShowMenu(id);
}
}
public hook_say(id) {
static szMsg[32]; read_args(szMsg, charsmax(szMsg)); remove_quotes(szMsg);
static const szChoosedWP[][] = { "/ak47", "/m4a1", "/famas", "/awp" };
for(new a; a < sizeof szChoosedWP; a++) {
if(!strcmp(szMsg, szChoosedWP[a])) {
if(!core_is_allow_use(id)) break;
return MenuHandler(id, a);
}
}
return PLUGIN_CONTINUE;
}
public ShowMenu(id) {
if(!core_is_allow_use(id)) return PLUGIN_HANDLED;
new szMenu[512], key; key = MENU_KEY_0;
new iLen, szName[16]; get_entvar(id, var_netname, szName, charsmax(szName));
iLen = formatex(szMenu, charsmax(szMenu), "\r%L \w[\d%L\w]^n\w%L^n", LANG_SERVER, "MENU_NAME", LANG_SERVER, "NAME_SERVER", LANG_SERVER, "WELCOME", szName);
#if defined ADMIN_LOADER
new exp = admin_expired(id);
if(exp > 0) {
new sys = get_systime();
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L^n^n", LANG_SERVER, "VIP_EXPIRED", LANG_SERVER, ((exp - sys) / 86400 > 0) ? "VIP_DAYS" : "VIP_DAY", (exp - sys) / 86400);
} else if(exp == 0) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L^n^n", LANG_SERVER, "VIP_EXPIRED_PRMANENT");
#elseif defined GAMECMS_API
new szDate[11], exp = days_left_info(id, szDate, charsmax(szDate));
if(exp > 0) {
new sys = get_systime();
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L^n^n", LANG_SERVER, "VIP_EXPIRED", LANG_SERVER, ((exp - sys) / 86400 > 0) ? "VIP_DAYS" : "VIP_DAY", (exp - sys) / 86400);
} else if(exp == 0) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L^n^n", LANG_SERVER, "VIP_EXPIRED_PRMANENT");
#else
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
#endif
new szUseWpn[2]; formatex(szUseWpn, charsmax(szUseWpn), "%s", g_bUseWeapon[id] ? "d" : "w");
if(g_iRound < pCvarCfg[WEAPONSRND])
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \d%L \r%L^n\r2. \d%L \r%L^n\r3. \d%L \r%L^n", LANG_SERVER, "AK47", LANG_SERVER, "ROUND", pCvarCfg[WEAPONSRND], LANG_SERVER, "M4A1", LANG_SERVER, "ROUND", pCvarCfg[WEAPONSRND], LANG_SERVER, "FAMAS", LANG_SERVER, "ROUND", pCvarCfg[WEAPONSRND]);
else {
key |= MENU_KEY_1|MENU_KEY_2|MENU_KEY_3;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \%s%L^n\r2. \%s%L^n\r3. \%s%L^n", szUseWpn, LANG_SERVER, "AK47", szUseWpn, LANG_SERVER, "M4A1", szUseWpn, LANG_SERVER, "FAMAS");
}
if(g_iRound < pCvarCfg[AWPRND])
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \d%L \r%L^n^n", LANG_SERVER, "AWP", LANG_SERVER, "ROUND", pCvarCfg[AWPRND]);
else {
key |= MENU_KEY_4;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \%s%L^n^n", szUseWpn, LANG_SERVER, "AWP");
}
if(g_bUsePistol) {
key |= MENU_KEY_5;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. %L \r[\w%s\r]^n", LANG_SERVER, "PISTOL", iPistol[id] == 0 ? "Deagle" : iPistol[id] == 1 ? "USP" : "Glock");
}
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r0. %L", LANG_SERVER, "EXIT");
set_member(id, m_iMenu, Menu_OFF);
return show_menu(id, key, szMenu, -1, "Vip Menu");
}
public MenuHandler(id, key) {
if(key <= 3) {
/*** Защита от дурака ***/
if(g_iRound < pCvarCfg[WEAPONSRND]) return client_print_color(id, 0, "%L %L", LANG_SERVER, "CHAT_TAG", LANG_SERVER, "PISTOLS_ROUND");
/*** End ***/
if(g_bUseWeapon[id]) return client_print_color(id, 0, "%L %L", LANG_SERVER, "CHAT_TAG", LANG_SERVER, "ALREDY_WEAPON_RND");
g_bUseWeapon[id] = true;
static const szChoosedBP[] = { 90, 90, 90, 30 };
static const szChoosedWP[][] = { "weapon_ak47", "weapon_m4a1", "weapon_famas", "weapon_awp" };
return rg_give_items(id, szChoosedWP[key], szChoosedBP[key]);
}
else if (key == 4) GivePistol(id);
return PLUGIN_HANDLED;
}
public GivePistol(id) {
iPistol[id] >= 2 ? (iPistol[id] = 0) : iPistol[id]++;
ShowMenu(id);
return PLUGIN_HANDLED;
}
stock rg_give_items(id, currWeaponName[], ammoAmount) {
rg_drop_items_by_slot(id, PRIMARY_WEAPON_SLOT);
rg_give_item(id, currWeaponName, GT_APPEND);
rg_set_user_bpammo(id, rg_get_weapon_info(currWeaponName, WI_ID), ammoAmount);
engclient_cmd(id, currWeaponName);
return PLUGIN_HANDLED;
}
Код:
#include <amxmodx>
#include <vip_system>
#pragma semicolon 1
new Msg_ScoreAttrib;
public plugin_init() {
register_plugin("[ReVIP]Tab Info", VIP_SYSTEM_VERSION, "pUzzlik");
Msg_ScoreAttrib = get_user_msgid("ScoreAttrib");
}
public vip_core_player_spawn(const id) {
if(get_flag_access_def(id)) {
message_begin(MSG_BROADCAST, Msg_ScoreAttrib);
write_byte(id);
write_byte(4);
message_end();
}
}
Демки пока нету...
Подходит Тер на плент Б (даст2). Нажимает 5 (бомба), в 5 слоту показывает что там ничего нету и автоматом перебрасывает на 1 слот с авп.И так всегда, пока он не дропнул всю оружку с 1 слота, при этом дроп был авп и пачки одновременно.
В этой теме было размещено решение! Перейти к решению.
Вложения
-
2.4 KB Просмотры: 582
Последнее редактирование: