
Стаж: 14 лет
Сообщений: 359
Благодарностей: 14
Полезность: < 0
|
Привет всем, у меня на сервере стоит плагин, который показывает кто какую гранату кинул: [HE] \ [FB] \ [SG]Нашел плагин, который показывает, кто ослепил вас, называется Team Flash ControlСам плагин не хотелось бы ставить, да и это не совсем красиво, когда в чате появляется сплошником много информации. Возникла идея соединить два плагина, можно как-нибудь дописать первый плагин, который показывает кто какую кинул гранату, после [FB] еще строчка, типо: "Вас ослепило!" Чтобы просто не было лишней строки от еще одного плагина. Код:
#include <amxmodx>
#define PLUGIN_NAME "Descriptive 'Fire in the hole!' RU" #define PLUGIN_VERSION "0.1" #define PLUGIN_AUTHOR "VEN"
enum grenade { GRENADE_HE, GRENADE_FLASH, GRENADE_SMOKE }
// EDITABLE: grenade description new const g_grenade_description[_:grenade][] = { " [HE]", " [FB]", " [SG]" }
enum color { COLOR_NORMAL, COLOR_RED, COLOR_BLUE, COLOR_GRAY, COLOR_GREEN }
// EDITABLE: grenade description text color new const g_grenade_desccolor[_:grenade] = { COLOR_RED, COLOR_BLUE, COLOR_GRAY }
new const g_grenade_weaponid[_:grenade] = { CSW_HEGRENADE, CSW_FLASHBANG, CSW_SMOKEGRENADE }
#define COLORCODE_NORMAL 0x01 #define COLORCODE_TEAM 0x03 #define COLORCODE_LOCATION 0x04
new const g_color_code[_:color] = { COLORCODE_NORMAL, COLORCODE_TEAM, COLORCODE_TEAM, COLORCODE_TEAM, COLORCODE_LOCATION }
new const g_color_teamname[_:color][] = { "", "TERRORIST", "CT", "SPECTATOR", "" }
#define RADIOTEXT_MSGARG_NUMBER 5
enum radiotext_msgarg { RADIOTEXT_MSGARG_PRINTDEST = 1, RADIOTEXT_MSGARG_CALLERID, RADIOTEXT_MSGARG_TEXTTYPE, RADIOTEXT_MSGARG_CALLERNAME, RADIOTEXT_MSGARG_RADIOTYPE, }
new const g_required_radiotype[] = "#Fire_in_the_hole" new const g_radiotext_template[] = "%s (РАДИО): Осторожна, граната!"
new g_msgid_saytext new g_msgid_teaminfo
public plugin_init() { register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_message(get_user_msgid("TextMsg"), "message_text")
g_msgid_saytext = get_user_msgid("SayText") g_msgid_teaminfo = get_user_msgid("TeamInfo") }
public message_text(msgid, dest, id) { if (get_msg_args() != RADIOTEXT_MSGARG_NUMBER || get_msg_argtype(RADIOTEXT_MSGARG_RADIOTYPE) != ARG_STRING) return PLUGIN_CONTINUE
static arg[32] get_msg_arg_string(RADIOTEXT_MSGARG_RADIOTYPE, arg, sizeof arg - 1) if (!equal(arg, g_required_radiotype)) return PLUGIN_CONTINUE
get_msg_arg_string(RADIOTEXT_MSGARG_CALLERID, arg, sizeof arg - 1) new caller = str_to_num(arg) if (!is_user_alive(caller)) return PLUGIN_CONTINUE
new clip, ammo, weapon weapon = get_user_weapon(caller, clip, ammo) for (new i; i < sizeof g_grenade_weaponid; ++i) { if (g_grenade_weaponid[i] == weapon) { static text[192] new pos = 0 text[pos++] = g_color_code[COLOR_NORMAL]
get_msg_arg_string(RADIOTEXT_MSGARG_CALLERNAME, arg, sizeof arg - 1) pos += formatex(text[pos], sizeof text - pos - 1, g_radiotext_template, arg) copy(text[++pos], sizeof text - pos - 1, g_grenade_description[i])
new desccolor = g_grenade_desccolor[i] if ((text[--pos] = g_color_code[desccolor]) == COLORCODE_TEAM) { static teamname[12] get_user_team(id, teamname, sizeof teamname - 1)
if (!equal(teamname, g_color_teamname[desccolor])) { msg_teaminfo(id, g_color_teamname[desccolor]) msg_saytext(id, text) msg_teaminfo(id, teamname)
return PLUGIN_HANDLED } }
msg_saytext(id, text)
return PLUGIN_HANDLED } }
return PLUGIN_CONTINUE }
msg_teaminfo(id, teamname[]) { message_begin(MSG_ONE, g_msgid_teaminfo, _, id) write_byte(id) write_string(teamname) message_end() }
msg_saytext(id, text[]) { message_begin(MSG_ONE, g_msgid_saytext, _, id) write_byte(id) write_string(text) message_end() }
Код:
/* * Team Flash Snitch * * Author: Tender * email: tender@paike.org * web: www.paike.org * irc: #paike @ quakenet * * Description: * When teamflashed, this plugin announces who flashed you. The teamflasher * hears a "I'm blind" an gets a message of who he flashed. * It is also displayed for admins if someone is fully teamflashed. * Tested on Counter-Strike and Condition Zero servers. * This does NOT work for 100%... but almost :-) * * Cvars: * tfs_adminchat, default 1 * 0 - admins will not be aware * 1 - admins gets an adminchat of who flashed who * * tfs_sound: Teamflasher hears "I'm blind!", default 1 * 0 - Sound Off * 1 - Sound On * * * Changelog: * 1.1 - fixed bug: more than one player can get a message from the same teamflash event * new cvar: tfs_adminchat (2007-11-04) * 1.0 - sound on/off cvar: tfs_sound 1/0 (2006-04-14) * 0.3 - fixed bug: dead spectators will nog get message about teamflash (2006-03-16) * 0.2 - changed flash owner code, a timer is added, "[Team Flash Snitch]" in green text (2006-03-12) * 0.1 - initial release (2006-01-25) * * Credits: * Johnny got hes gun, his plugin "Blind" helped me writing this. * www.paike.org for testing this plugin on paike servers. * * STR@TEG for translation into Russian */
#include <amxmodx> #include <fakemeta>
#define TEMPENTITY "23" #define BLINDED_FULLY 255 #define BLINDED_PARTLY 200
new const TFSVERSION[] = "1.1" new Float:FLASH_TIMER = 1.52 // Time from throwing a FB to the bang (1.52 seconds?) new g_flasher = 0 // id of the flasher
public plugin_init() { register_plugin("Team Flash Snitch",TFSVERSION,"Tender")
register_cvar("tfs_sound", "1") register_cvar("tfs_adminchat", "1")
register_event("ScreenFade", "event_blinded", "be", "4=255", "5=255", "6=255", "7>199") register_event(TEMPENTITY, "event_flashsmokepuff", "a", "1=5", "6=25", "7=6") register_forward(FM_SetModel, "forward_setmodel") }
public plugin_precache() { precache_sound ("radio/bot/im_blind.wav") return PLUGIN_CONTINUE }
public event_blinded(const ID) { new alpha = read_data(7) if(alpha != BLINDED_FULLY && alpha != BLINDED_PARTLY || !is_user_alive(ID)) return PLUGIN_CONTINUE if(get_user_team(ID) == get_user_team(g_flasher) && ID != g_flasher) { new message1[128], message2[128] new flasher[32], name[32] get_user_name(g_flasher, flasher, 31) get_user_name(ID, name, 31) format(message1, 127, "^x04[Team Flash Control]^x01 Вас ослепил %s", flasher) format(message2, 127, "^x04[Team Flash Control]^x01 Вы %sослепили игрока по команде (%s)", alpha == BLINDED_FULLY ? "полностью " : "", name) colored_msg(ID, message1) colored_msg(g_flasher, message2) if(get_cvar_num("tfs_sound")>0) client_cmd(g_flasher, "spk sound/radio/bot/im_blind.wav") if(alpha == BLINDED_FULLY && get_cvar_num("tfs_adminchat")) server_cmd("amx_chat %s ослепил игрока по команде (%s)", flasher, name) } return PLUGIN_CONTINUE }
public colored_msg(id, msg[]) { message_begin(MSG_ONE, get_user_msgid("SayText"), {0,0,0}, id) write_byte(id) write_string(msg) message_end() }
public event_flashsmokepuff() { set_task(0.05,"reset_flasher") return PLUGIN_CONTINUE }
public reset_flasher() { g_flasher = 0 }
public get_flasher(id) { g_flasher = (id - 524627) }
public forward_setmodel(const ENTITY, model[]) { if(!equal(model, "models/w_flashbang.mdl")) return FMRES_IGNORED
new owner = pev(ENTITY, pev_owner) if (owner == 0) return FMRES_IGNORED
set_task(FLASH_TIMER, "get_flasher", 524627+owner)
return FMRES_IGNORED }
Кто что скажет, есть какие-нибудь идеи?  )
Отредактировал: ncux0Zz, - 20.1.2015, 8:41
|