Пару вопросов по плагину

Сообщения
264
Реакции
79
Помог
1 раз(а)
Всем привет! (забегая вперёд скажу сразу, плагин работает, всё хорошо)
В связи с тем что, в новом обновлении: ReGame 269, добавили квар: mp_item_staytime :good2:
Решил отказаться от 2-вух плагинов: csdm_misc.amxx / csdm_map_cleaner.amxx / А также от модуля: hamsandwich

Сделал себе вот такой плагин!
Код:
#include <amxmodx>
#include <fakemeta>

#define PLUGIN "Block MsgId"
#define VERSION "1.4"
#define AUTHOR "REVO"

#define HIDE_ROUND_TIMER (1<<4)

new g_msgid_hideweapon

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

// Блокировка зоны закупки
register_message(get_user_msgid("StatusIcon"), "Msg_StatusIcon")

// Блокировка таймера HUD
g_msgid_hideweapon = get_user_msgid("HideWeapon")
register_message(g_msgid_hideweapon, "message_hide_weapon")
register_event("ResetHUD", "event_hud_reset", "b")
set_msg_block(get_user_msgid("RoundTime"), BLOCK_SET)

// Блокировка радио команд
register_clcmd("radio1", "cmd_block"); register_clcmd("radio2", "cmd_block")
register_clcmd("radio3", "cmd_block"); register_clcmd("coverme", "cmd_block")
register_clcmd("takepoint", "cmd_block"); register_clcmd("holdpos", "cmd_block")
register_clcmd("regroup", "cmd_block"); register_clcmd("followme", "cmd_block")
register_clcmd("takingfire", "cmd_block"); register_clcmd("go", "cmd_block")
register_clcmd("fallback", "cmd_block"); register_clcmd("sticktog", "cmd_block")
register_clcmd("getinpos", "cmd_block"); register_clcmd("stormfront", "cmd_block")
register_clcmd("report", "cmd_block"); register_clcmd("roger", "cmd_block")
register_clcmd("enemyspot", "cmd_block"); register_clcmd("needbackup", "cmd_block")
register_clcmd("sectorclear", "cmd_block"); register_clcmd("inposition", "cmd_block")
register_clcmd("reportingin", "cmd_block"); register_clcmd("getout", "cmd_block")
register_clcmd("negative", "cmd_block"); register_clcmd("enemydown", "cmd_block")

// Блокировка подсказок в игре
set_msg_block(get_user_msgid("HudTextArgs"), BLOCK_SET)

// Блокировка денег
set_msg_block(get_user_msgid("Money"), BLOCK_SET)
}

public cmd_block(id) return PLUGIN_HANDLED

public Msg_StatusIcon(msgid,msgdest,id)
{
static szMsg[8]
get_msg_arg_string(2, szMsg, 7)

if (equal(szMsg, "buyzone") && get_msg_arg_int(1))
{
set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1 << 0))
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}

public message_hide_weapon()
set_msg_arg_int(1, ARG_BYTE, get_msg_arg_int(1) | HIDE_ROUND_TIMER)

public event_hud_reset(id)
{
message_begin(MSG_ONE, g_msgid_hideweapon, _, id)
write_byte(HIDE_ROUND_TIMER)
message_end()
}
Вопрос к скриптерам! ..:blush2:
1: Что скажите по коду? Может есть что-то лишнее или быть может, есть реализация по лучше?
2: С бомбой еще не разобрался, в смысле как её убирать с помощью плагина, и вообще возможно это без модуля: hamsandwich
Конечно можно её выпилить и в самой карте, но хочется иметь это в плагине!
14 Ноя 2017
По поводу бомбы, нашел вот это. (правда есть инфа о том что, плагин создает эвен удаления бомбы, но когда нужно он его не удаляет)
Код:
new g_forwads

public plugin_init()
{
unregister_forward(FM_Spawn, g_forwads)
}
public plugin_natives()
{
g_forwads = register_forward(FM_Spawn, "ent_spawn")
}
public ent_spawn(ent)
{
if(!pev_valid(ent)) return FMRES_IGNORED

static classname[33]; pev(ent, pev_classname, classname, charsmax(classname))

if(equal(classname, "func_bomb_target") || equal(classname, "info_bomb_target"))
{
engfunc(EngFunc_RemoveEntity, ent)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
register_clcmd("radio1", "cmd_block"); register_clcmd("radio2", "cmd_block") register_clcmd("radio3", "cmd_block"); register_clcmd("coverme", "cmd_block") register_clcmd("takepoint", "cmd_block"); register_clcmd("holdpos", "cmd_block") register_clcmd("regroup", "cmd_block"); register_clcmd("followme", "cmd_block") register_clcmd("takingfire", "cmd_block"); register_clcmd("go", "cmd_block") register_clcmd("fallback", "cmd_block"); register_clcmd("sticktog", "cmd_block") register_clcmd("getinpos", "cmd_block"); register_clcmd("stormfront", "cmd_block") register_clcmd("report", "cmd_block"); register_clcmd("roger", "cmd_block") register_clcmd("enemyspot", "cmd_block"); register_clcmd("needbackup", "cmd_block") register_clcmd("sectorclear", "cmd_block"); register_clcmd("inposition", "cmd_block") register_clcmd("reportingin", "cmd_block"); register_clcmd("getout", "cmd_block") register_clcmd("negative", "cmd_block"); register_clcmd("enemydown", "cmd_block")
Код:
new const commands[][] = {
"radio1",
"radio2",
"radio3",
"coverme",
"takepoint",
"holdpos",
"regroup",
"followme",
"takingfire",
"go",
"fallback",
"sticktog",
"getinpos",
"stormfront"
"report",
"roger",
"enemyspot",
"needbackup",
"sectorclear",
"inposition",
"reportingin",
"getout",
"negative",
"enemydown"
};

// Блокировка радио команд
for (new i = 0; i < sizeof commands; i++) {
register_clcmd(commands, "cmd_block");
}

14 Ноя 2017
С бомбой еще не разобрался, в смысле как её убирать с помощью плагина
не проверял. но по идее должно сработать
Код:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

new HamHook:g_SpawnBombTargetHooks[2];

public plugin_precache() {
g_SpawnBombTargetHooks[0] = RegisterHam(Ham_Spawn, "info_bomb_target", "HookBombTargetSpawn", 1);
g_SpawnBombTargetHooks[1] = RegisterHam(Ham_Spawn, "func_bomb_target", "HookBombTargetSpawn", 1);
}

public plugin_init() {
DisableHamForward(g_SpawnBombTargetHooks[0]);
DisableHamForward(g_SpawnBombTargetHooks[1]);
}

public HookBombTargetSpawn(ent) {
engfunc(EngFunc_RemoveEntity, pEnt);
}
 
Сообщения
264
Реакции
79
Помог
1 раз(а)
fantom, Я больше в нём не нуждаюсь. hamsandwich :dntknw:
В принципе мне эта бомба, и не так критична, в карте её вырезал да и всё.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу