Скачал Ваш плагин, добавил строчки, но файл не компилится:
Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#define keysmenu (1<<0)|(1<<1)
new g_iTimer[33], g_total_vote[2], g_Voted[33]
new g_iSayText, g_maxplayers, g_SyncMsg, g_msgScrenFade
new g_Round, g_Time, g_MapExt
new bool:g_voterr_full = false
new bool:g_voterr_id[33]
new pCvarRound, pCvarVoteTime, pCvarStartTime, pCvarExtRound, pCvarMinPlayers, pCvarRatio
public clcmd_rtv(id)
{
ChatColor(id, "^4[СЕРВЕР] ^1У нас играют только на карте ^3de_dust2^1.")
}
public plugin_init()
{
register_plugin("Restart Vote", "1.0", "ill");
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_event("TextMsg", "event_restart", "a", "2&#Game_C", "2&#Game_w")
register_clcmd("say /rr", "clcmd_rr")
register_clcmd("say rtv", "clcmd_rtv")
register_clcmd("say /rtv", "clcmd_rtv")
register_clcmd("say_team rtv", "clcmd_rtv")
register_clcmd("say_team /rtv", "clcmd_rtv")
register_menu("menu_vote", keysmenu, "menu_handler_vote")
pCvarRound = register_cvar("vr_round", "40") // через сколько раундов будет первого голосование
pCvarVoteTime = register_cvar("vr_vote_time", "10") // время (сек) сколько будет длится голосование
pCvarStartTime = register_cvar("vr_start_time", "6") // время (сек) через сколько начнется голосование
pCvarExtRound = register_cvar("vr_ext_round", "10") // кол-во раундов на продление
pCvarMinPlayers = register_cvar("vr_rr_minplayers", "2") // мин кол-во игроков при котором доступно /rr
pCvarRatio = register_cvar("vr_rr_ratio", "50") // процент игроков для досрочного голосования
g_iSayText = get_user_msgid("SayText")
g_maxplayers = get_maxplayers()
g_SyncMsg = CreateHudSyncObj()
g_msgScrenFade = get_user_msgid("ScreenFade")
}
public clcmd_rr(id)
{
if(g_voterr_full)
{
ChatColor(id, "^4[VOTE] ^1Набраны все голоса. Голосование начнется в новом раунде")
return PLUGIN_HANDLED
}
if(fnGetPlaying() < get_pcvar_num(pCvarMinPlayers))
{
ChatColor(id, "^4[VOTE] ^1На сервере должно быть не менее^3 %d ^1человек", get_pcvar_num(pCvarMinPlayers))
return PLUGIN_HANDLED
}
if(g_voterr_id[id])
{
ChatColor(id, "^4[VOTE] ^1Вы уже проголосвали")
return PLUGIN_HANDLED
}
new name[32]; get_user_name(id, name, charsmax(name))
g_voterr_id[id] = true
ChatColor(0, "^4[VOTE]^3 %s ^1проголосовал за досрочное голосование. Поддержи -^4 /rr", name)
new players[32], num, voted
get_players(players, num, "ch")
for(new i = 0; i < num; ++i)
if(g_voterr_id[players[i]])
voted++
if(num && (floatround(get_pcvar_float(pCvarRatio) * 100.0 ) > (voted * 100 / num)))
{
ChatColor(0, "^4[VOTE]^3 %d ^1игроков из^3 %d ^1необходимых проголосовало за досрочное голосование", voted, floatround(get_pcvar_float(pCvarRatio) * num + 0.49))
return PLUGIN_CONTINUE
}
g_voterr_full = true
ChatColor(0, "^4[VOTE] ^1Набраны все голоса. Голосование начнется в новом раунде")
return PLUGIN_CONTINUE
}
public client_connect(id)
{
g_Voted[id] = false
g_voterr_id[id] = false
}
public client_disconnect(id)
{
g_Voted[id] = false
g_voterr_id[id] = false
}
public event_restart()
{
g_Round = 0
g_MapExt = false
g_voterr_full = false
}
public event_round_start()
{
g_Round++
if(g_voterr_full || g_Round == get_pcvar_num(pCvarRound) || (g_MapExt && g_Round == get_pcvar_num(pCvarExtRound)))
{
g_Time = get_pcvar_num(pCvarStartTime)
new fade[2]
fade[0] = 2; set_task ( 1.0, "cmd_screen_fade", 0, fade, 2 )
fade[0] = 1; set_task ( 2.0, "cmd_screen_fade", 0, fade, 2 )
VoteTimer()
}
}
public VoteTimer()
{
if(g_Time <= 0)
{
client_cmd(0, "spk Gman/Gman_Choose%d", random_num(1, 2))
StartVote()
return
}
set_hudmessage(200, 100, 0, -1.0, 0.1, 0, 1.0, 1.1, 0.0, 0.0, -1)
ShowSyncHudMsg(0, g_SyncMsg, "Голосование за рестарт через %d сек", g_Time)
if(g_Time <= 5)
{
new speak[5][] = { "one", "two", "three", "four", "five" }
client_cmd(0 ,"spk ^"fvox/%s^"", speak[g_Time - 1])
}
g_Time--
set_task(1.0, "VoteTimer")
}
public StartVote()
{
new votetime = get_pcvar_num(pCvarVoteTime)
set_task(float(votetime+1), "chack_result")
for (new id = 1; id <= g_maxplayers; id++)
{
if(!is_user_connected(id))
continue
g_iTimer[id] = votetime
set_task(1.0, "show_menu_vote", id, _, _, "a", g_iTimer[id] + 1)
set_task(1.0, "show_hud_result", id+777, _, _, "a", votetime)
}
}
public show_hud_result(taskid)
{
new id = taskid - 777
if(!is_user_connected(id))
return
if(!g_Voted[id])
return
set_hudmessage(255, 255, 255, -1.0, 0.1, 0, 1.0, 1.1, 0.0, 0.0, -1)
ShowSyncHudMsg(id, g_SyncMsg, "Голосование за рестарт:^n^nЗа [%d]^nПротив [%d]", g_total_vote[0], g_total_vote[1])
}
public show_menu_vote(id)
{
if(!is_user_connected(id))
return
static menu[512], iLen
new keys = MENU_KEY_1|MENU_KEY_2
iLen = 0
g_iTimer[id]--
iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\yСделать рестарт?^n^n")
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \wДа^n")
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \wНет, продлить на %d раундов^n", get_pcvar_num(pCvarExtRound))
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "^n\wУ вас есть \r%d \wсек чтобы подумать", g_iTimer[id])
if(g_iTimer[id] <= 0)
clear_menu(id)
else
show_menu(id, keys, menu, -1, "menu_vote")
}
public menu_handler_vote(id, key)
{
if(!is_user_connected(id))
return
g_Voted[id] = true
clear_menu(id)
g_total_vote[key]++
new name[32]
get_user_name(id, name, charsmax(name))
switch(key)
{
case 0: ChatColor(0, "^4[VOTE] ^1Игрок ^4%s ^1проголосовал^3 ЗА ^1рестарт", name)
case 1: ChatColor(0, "^4[VOTE] ^1Игрок ^4%s ^1проголосовал^3 ПРОТИВ ^1рестарта", name)
}
}
public chack_result()
{
new fade[2]
fade[0] = 0; set_task ( 1.0, "cmd_screen_fade", 0, fade, 2 )
if(!g_total_vote[0] && !g_total_vote[1])
{
ChatColor(0, "^4[VOTE] ^1Голосование не состоялось!")
return
}
if(g_total_vote[0] > g_total_vote[1])
{
ChatColor(0, "^4[VOTE] ^1Голосование завершено. ^4Рестарт!")
server_cmd("restart")
}
else
{
ChatColor(0, "^4[VOTE] ^1Голосование завершено. ^4Игра продолжается!")
g_Round = 0
g_MapExt = true
g_voterr_full = false
}
g_total_vote[0] = 0
g_total_vote[1] = 0
for (new id = 1; id <= g_maxplayers; id++)
{
g_Voted[id] = false
g_voterr_id[id] = false
}
}
clear_menu(id)
{
show_menu(id, 0, "^n", 1)
remove_task(id)
}
fnGetPlaying()
{
static iPlaying, id
iPlaying = 0
for (id = 1; id <= g_maxplayers; id++)
{
if (is_user_connected(id))
{
if (cs_get_user_team(id) == CS_TEAM_CT || cs_get_user_team(id) == CS_TEAM_T)
iPlaying++
}
}
return iPlaying;
}
public cmd_screen_fade ( fade[] )
{
new time, hold, flags
switch (fade[0])
{
case 1:
{
time = 1
hold = 1
flags = 4
}
case 2:
{
time = 4096
hold = 1024
flags = 1
for (new id = 1; id <= g_maxplayers; id++)
if(is_user_connected(id))
set_pev(id, pev_flags, pev(id, pev_flags) | FL_FROZEN)
}
default:
{
time = 4096
hold = 1024
flags = 2
for (new id = 1; id <= g_maxplayers; id++)
if(is_user_connected(id))
if(pev(id, pev_flags) & FL_FROZEN)
set_pev(id, pev_flags, pev(id, pev_flags) & ~FL_FROZEN)
}
}
message_begin ( MSG_ALL, g_msgScrenFade, {0,0,0}, 0 )
write_short ( time )
write_short ( hold )
write_short ( flags )
write_byte ( 0 )
write_byte ( 0 )
write_byte ( 0 )
write_byte ( 255 )
message_end()
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, "!t", "^3")
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, g_iSayText, _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
Отредактировал: Bloo, - 4.2.2015, 14:25