Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Flash Control и оповещение гранат в чате

, Соединение плагинов
Статус пользователя ncux0Zz
сообщение 20.1.2015, 8:39
Сообщение #1


Стаж: 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
}


Кто что скажет, есть какие-нибудь идеи? derisive.gif )

Отредактировал: ncux0Zz, - 20.1.2015, 8:41
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: