Привет! Подскажите пожалуйста, как сделать чтобы 5ый пункт убирал затемнение экрана. Пробовал разными способами, максимум ставится на default (Синий)
(В коде одна из ста моих попыток).
(В коде одна из ста моих попыток).
Код:
#include <amxmodx>
#include <reapi>
#include <nvault>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#define client_disconnected client_disconnect
#endif
#define VAULT_NAME "lite_fade" // Название файла для сохранения.
#define REMOVING_OBSOLETE_RECORDS 15 // Через сколько дней удалять устаревшие записи.
//#define FFA_MODE // Поддержка CSDM FFA.
//#define FLAG_ACCESS ADMIN_LEVEL_H // Выдавать только указанным флагам.
enum _:udata
{
FadeColor
}
new UserData[33][udata]
new g_Connected
#define IsUserValid(%1) (1 <= %1 <= 32)
#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define clr_bit(%1,%2) (%1 &= ~(1 << (%2 & 31)))
new g_MsgScreenFade, g_Vault
new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6
#if defined FLAG_ACCESS
new bool:has_used[32]
#endif
public plugin_init()
{
register_plugin("lite screen fade", "1.0", "AcE")
RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Post", true)
g_Vault = nvault_open(VAULT_NAME)
nvault_prune(g_Vault, 0, get_systime(-(86400 * REMOVING_OBSOLETE_RECORDS)))
register_clcmd("say /fade", "fade_menu")
register_clcmd("say_team /fade", "fade_menu")
register_menucmd(register_menuid("Menu"), keys, "show_fademenu")
g_MsgScreenFade = get_user_msgid("ScreenFade")
}
public fade_menu(id)
{
#if defined FLAG_ACCESS
if (!has_used[id])
{
if (!(get_user_flags(id) & FLAG_ACCESS))
{
client_cmd(id, "spk buttons/button2")
client_print_color(id, print_team_default, "^1[^4Fade^1] ^3Данная команда вам недоступна!")
return PLUGIN_HANDLED
}
}
#endif
static menu[1024], len; len = 0
client_cmd(id, "spk buttons/lightswitch2")
len = formatex(menu[len], charsmax(menu) - len, "\r[\yFade\r] \wВыберите цвет затемнения^n^n")
len += formatex(menu[len], charsmax(menu) - len, "\r1. \wСиний^n")
len += formatex(menu[len], charsmax(menu) - len, "\r2. \wЗелёный^n")
len += formatex(menu[len], charsmax(menu) - len, "\r3. \wКрасный^n")
len += formatex(menu[len], charsmax(menu) - len, "\r4. \wРозовый^n")
len += formatex(menu[len], charsmax(menu) - len, "\r5. \wФиолетовый^n")
len += formatex(menu[len], charsmax(menu) - len, "\r6. \wВыключен^n")
len += formatex(menu[len], charsmax(menu) - len, "\r0. \wВыход")
show_menu(id, keys, menu, -1, "Menu")
return PLUGIN_HANDLED
}
public show_fademenu(id, key)
{
new szSteamId[32]
get_user_authid(id, szSteamId, charsmax(szSteamId))
client_cmd(id, "spk buttons/lightswitch2")
switch(key)
{
case 0:
{
UserData[id][FadeColor] = 0
client_print_color(id, print_team_default, "^1[^4Fade^1] Вы выбрали ^4Синий ^1цвет.")
screen_fade(id); nvault_set(g_Vault, szSteamId, "0")
}
case 1:
{
UserData[id][FadeColor] = 1
client_print_color(id, print_team_default, "^1[^4Fade^1] Вы выбрали ^4Зелёный ^1цвет.")
screen_fade(id); nvault_set(g_Vault, szSteamId, "1")
}
case 2:
{
UserData[id][FadeColor] = 2
client_print_color(id, print_team_default, "^1[^4Fade^1] Вы выбрали ^4Красный ^1цвет.")
screen_fade(id); nvault_set(g_Vault, szSteamId, "2")
}
case 3:
{
UserData[id][FadeColor] = 3
client_print_color(id, print_team_default, "^1[^4Fade^1] Вы выбрали ^4Розовый ^1цвет.")
screen_fade(id); nvault_set(g_Vault, szSteamId, "3")
}
case 4:
{
UserData[id][FadeColor] = 4
client_print_color(id, print_team_default, "^1[^4Fade^1] Вы выбрали ^4Фиолетовый ^1цвет.")
screen_fade(id); nvault_set(g_Vault, szSteamId, "4")
}
case 5:
{
UserData[id][FadeColor] = 5
client_print_color(id, print_team_default, "^1[^4Fade^1] Вы отключили затемнение.")
screen_fade(id); nvault_set(g_Vault, szSteamId, "5")
}
}
#if defined FLAG_ACCESS
has_used[id] = true
#endif
return PLUGIN_HANDLED
}
public plugin_end()
{
if (g_Vault != INVALID_HANDLE)
{
nvault_close(g_Vault)
}
}
public client_disconnected(id) clr_bit(g_Connected, id)
public client_putinserver(id)
{
if (is_user_bot(id) || is_user_hltv(id))
return
set_bit(g_Connected, id)
arrayset(UserData[id], 0, udata)
new szSteamId[32]
get_user_authid(id, szSteamId, charsmax(szSteamId))
if (szSteamId[0] == 'S')
{
new szSettings[6]
nvault_get(g_Vault, szSteamId, szSettings, charsmax(szSettings))
switch(szSettings[0])
{
case '0': UserData[id][FadeColor] = 0
case '1': UserData[id][FadeColor] = 1
case '2': UserData[id][FadeColor] = 2
case '3': UserData[id][FadeColor] = 3
case '4': UserData[id][FadeColor] = 4
case '5': UserData[id][FadeColor] = 5
default: UserData[id][FadeColor] = 0
}
}
else
{
UserData[id][FadeColor] = 0
}
}
public CBasePlayer_Killed_Post(const victim, killer, iGib)
{
static live
live = is_user_alive(killer)
if (!get_bit(g_Connected, killer) && !live) return
if (!IsUserValid(killer) || !IsUserValid(victim) || killer == victim || get_member(victim, m_bKilledByBomb)) return
#if !defined FFA_MODE
if (get_member(victim, m_iTeam) == get_member(killer, m_iTeam)) return
#endif
#if defined FLAG_ACCESS
if (!(get_user_flags(killer) & FLAG_ACCESS)) return
#endif
screen_fade(killer)
}
public screen_fade(id)
{
if (get_gametime() >= Float:get_member(id, m_blindStartTime) + Float:get_member(id, m_blindFadeTime))
{
message_begin(MSG_ONE_UNRELIABLE, g_MsgScreenFade, .player = id)
write_short(1<<10); write_short(1<<11); write_short(0x0000)
switch(UserData[id][FadeColor])
{
case 0:
{
// Синий.
UserData[id][FadeColor] = 0
write_byte(0); write_byte(0); write_byte(200)
}
case 1:
{
// Зелёный.
UserData[id][FadeColor] = 1
write_byte(0); write_byte(100); write_byte(0)
}
case 2:
{
// Красный.
UserData[id][FadeColor] = 2
write_byte(100); write_byte(0); write_byte(0)
}
case 3:
{
// Розовый.
UserData[id][FadeColor] = 3
write_byte(100); write_byte(0); write_byte(100)
}
case 4:
{
// Фиолетовый.
UserData[id][FadeColor] = 4
write_byte(90); write_byte(0); write_byte(157)
}
case 5: {}
default:
{
// Синий.
UserData[id][FadeColor] = 0
write_byte(0); write_byte(0); write_byte(200)
}
}
write_byte(75); message_end()
}
}