- Регистрация
- 26 Июн 2017
- Сообщения
- 390
- Симпатии
- 53
- Пол
- Мужской
Добрый день ув. форумчане!
Помогите довести до ума код, проблем несколько:
1) ни как не срабатывает скринфейд
2) иной раз сразу на второе предупреждение проходит, иной раз наоборот только первое выдаёт, иной раз выдаёт предупреждение, если просто зарезать не подстрелив перед этим
3) пришлось костылить с разминкой потому, как во время разминки на гг не нужно наказывать и там в принципе ножи, но в любом случае выдаёт предупреждение
Помогите довести до ума код, проблем несколько:
1) ни как не срабатывает скринфейд
2) иной раз сразу на второе предупреждение проходит, иной раз наоборот только первое выдаёт, иной раз выдаёт предупреждение, если просто зарезать не подстрелив перед этим
3) пришлось костылить с разминкой потому, как во время разминки на гг не нужно наказывать и там в принципе ножи, но в любом случае выдаёт предупреждение
PHP:
#include <amxmodx>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#define PLUGIN "Knf Weapon"
#define VERSION "1.0"
#define AUTHOR "BeasT"
#define bit_add(%0,%1) (%1 |= (1<<%0))
#define bit_sub(%0,%1) (%1 &= ~(1<<%0))
#define bit_valid(%0,%1) (%1 & (1<<%0))
#define MAX_WARNS 1
new g_iValidPlayersBitsum
new gg_warmup_timer_setting
new g_StatusPl[33], g_StatusKill[33], g_Status[33], g_WarmUP
new Float:fNum
public plugin_init()
{
register_event("DeathMsg", "EventDeathMsg", "a", "4=knife")
RegisterHam(Ham_TakeDamage, "player", "UserTakeDamage")
gg_warmup_timer_setting = register_cvar("gg_warmup_timer_setting","")
register_event("TextMsg","event_round_restart","a","2=#Game_Commencing","2=#Game_will_restart_in");
}
public enable_screenfade(Killer)
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, Killer)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(155)
write_byte(0)
write_byte(0)
message_end()
}
public disable_screenfade(Killer)
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, Killer)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(0)
write_byte(0)
write_byte(0)
message_end()
}
public event_round_restart()
{
new warmup_value = get_pcvar_num(gg_warmup_timer_setting)
new Float:fNum2
fNum2 = get_gametime()
fNum = get_gametime()
new num_integer = floatround((fNum2 - fNum),floatround_round)
if(num_integer > warmup_value)
{
g_WarmUP = true
}
}
public UserTakeDamage (Victim, Weapon, Attacker)
{
if(!g_WarmUP)return PLUGIN_HANDLED
if(g_Status[Attacker] < 1)
{
g_Status[Attacker]++
}
else
if (get_user_weapon(Attacker) != CSW_KNIFE && g_Status[Attacker] > 0)
{
g_StatusPl[Attacker] = Victim
g_StatusPl[Victim] = Victim
}
return PLUGIN_CONTINUE
}
public client_putinserver(id)
{
bit_add(id, g_iValidPlayersBitsum);
}
public client_disconnect(id)
{
bit_sub(id, g_iValidPlayersBitsum);
}
public EventDeathMsg()
{
new Killer = read_data(1), Victim = read_data(2);
if(bit_valid(Killer, g_iValidPlayersBitsum) && bit_valid(Victim, g_iValidPlayersBitsum))
{
if(g_StatusPl[Killer] == g_StatusPl[Victim])
{
if(g_StatusKill[Killer] < MAX_WARNS)
{
ChatColor(0, "^4Подстрелив-зарезал - 1 предупреждение")
g_StatusKill[Killer]++
new Count, i, player, Players[32]
get_players(Players, Count, "h")
for (i=0; i<Count; i++)
{
player = Players[i]
if(g_StatusPl[player] == g_StatusPl[player])
{
g_StatusPl[player] = random_num(61275, 72175)
}
}
}
else
if(g_StatusKill[Killer] >= MAX_WARNS)
{
new szFunc[84], szName[33]
get_user_name(Killer, szName, charsmax(szName))
formatex(szFunc, charsmax(szFunc), "amx_gungame_level %s -1", szName)
server_cmd(szFunc)
enable_screenfade(Killer)
set_task(1.0, "disable_screenfade", Killer)
ChatColor(0, "^4Вы многократно убили подстрелив-зарезав , так нельзя")
new Count, i, player, Players[32]
get_players(Players, Count, "h")
for (i=0; i<Count; i++)
{
player = Players[i]
if(g_StatusPl[player] == g_StatusPl[player])
{
g_StatusPl[player] = random_num(61275, 72175)
}
}
}
new frags = get_user_frags(Killer)
set_user_frags(Killer, frags - 1)
}
}
return PLUGIN_CONTINUE
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!team", "^3")
replace_all(msg, 190, "!team2", "^0")
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}