Код
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
new QUESION[180];
new ANSWER[180];
new NAME[32];
new bool:IsQuestion = false;
new bool:IsAnswer = false;
new WINNER = 0;
public plugin_init()
{
register_clcmd("say", "hook_say");
register_clcmd("givebonus", "give_bonus");
register_menucmd(register_menuid("give_bonus"), (1<<0|1<<1|1<<2|1<<5|1<<9), "handler_give_bonus");
}
public client_disconnected(id)
{
if(id == WINNER)
{
WINNER = 0;
if(task_exists(213321213))
remove_task(213321213);
ChatColor(0,"^4[В]^1 победитель вышел с сервера!");
}
}
public give_bonus(id)
{
if(~get_user_flags(id) & ADMIN_BAN)
return PLUGIN_HANDLED;
static pos, szMenu[512], keys;
keys = (1<<0)|(1<<1)|(1<<2)|(1<<5)|(1<<9);
pos = 0;
pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "\yМеню викторины^n");
if(WINNER == 0)
pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "\wПобедитель: \dещё нет^n");
else
pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "\wПобедитель: %s^n",NAME);
pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "%s1. Выдать награду 1^n", WINNER ? "\w" : "\d");
pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "%s2. Выдать награду 2^n", WINNER ? "\w" : "\d");
pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "%s3. Выдать награду 3^n", WINNER ? "\w" : "\d");
pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "\wВопрос: %s^n",IsQuestion ? QUESION : "\dНе задан");
pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "\wОтвет: %s^n",IsAnswer ? ANSWER : "\dНе задан");
pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "%s6. Завершить и вывести ответ на экран^n^n^n",IsAnswer ? "\w" : "\d");
pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "0. Выход");
return show_menu(id, keys, szMenu, -1, "give_bonus");
}
public handler_give_bonus(id, item)
{
switch(item)
{
case 0..2:
{
if(!WINNER)
return PLUGIN_HANDLED;
if(task_exists(213321213))
remove_task(213321213);
// Выдаём награду
set_dhudmessage(random(255), random(255), random(255), -1.0, 0.40, 0, 0.0, 6.0, 0.1, 2.6 );
show_dhudmessage(0, " Админ выдал награду");
log_to_file("VICTORY.txt", " Админ выдал награду");
ChatColor(0,"^4[В]^1 Админ выдал награду");
WINNER = 0;
format(NAME,179,"");
return PLUGIN_HANDLED;
}
case 5:
{
if(IsQuestion && IsAnswer)
{
if(task_exists(213321213))
remove_task(213321213);
set_dhudmessage(random(255), random(255), random(255), -1.0, 0.40, 0, 0.0, 5.0, 0.1, 1.6 );
show_dhudmessage(0, "Викторина завершена!^nОтвет: %s", ANSWER);
ChatColor(0,"^4[В]^1 завершена! Ответ: %s", ANSWER);
log_to_file("VICTORY.txt","Викторина завершена! Ответ: %s", ANSWER);
format(QUESION,179,"");
format(ANSWER,179,"");
IsAnswer = false;
IsQuestion = false;
WINNER = 0;
format(NAME,179,"");
return PLUGIN_HANDLED;
}
}
case 9: return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public hook_say(id)
{
new szSaid[180];
read_args(szSaid, 179);
remove_quotes(szSaid);
if(szSaid[0] == '!') // Записали ОТВЕТ
{
replace_all(szSaid,179,"!","");
replace_all(szSaid,179," ","");
if(~get_user_flags(id) & ADMIN_BAN)
return PLUGIN_CONTINUE;
if(WINNER)
{
ChatColor(id,"^4[В]^1 Сначала выдайте приз!");
return PLUGIN_HANDLED;
}
format(ANSWER,179,"");
ANSWER = szSaid;
strtolower(ANSWER);
IsAnswer = true;
ChatColor(id,"^4[В]^1 Ответ: %s", ANSWER);
log_to_file("VICTORY.txt","Ответ: %s", ANSWER);
return PLUGIN_HANDLED;
}
else if(szSaid[0] == '?') // Записали вопрос
{
replace_all(szSaid,179,"?","");
if(~get_user_flags(id) & ADMIN_BAN)
return PLUGIN_CONTINUE;
if(WINNER)
{
ChatColor(id,"^4[В]^1 Сначала выдайте приз!");
return PLUGIN_HANDLED;
}
if(!IsAnswer)
{
ChatColor(id,"^4[В]^1 Сначала укажите ответ!");
return PLUGIN_HANDLED;
}
format(QUESION,179,"");
QUESION = szSaid;
ChatColor(id,"^4[В]^1 Вопрос: %s", QUESION);
log_to_file("VICTORY.txt","Вопрос: %s", QUESION);
IsQuestion = true;
set_task(1.0, "taskHUD", 213321213, "", 0, "b");
return PLUGIN_HANDLED;
}
if(!IsQuestion || WINNER)
return PLUGIN_CONTINUE;
strtolower(szSaid);
if(strfind(szSaid, ANSWER) != -1)
{
if(task_exists(213321213))
{
WINNER = id;
format(QUESION,179,"");
format(NAME,179,"");
get_user_name(id, NAME, 31);
ChatColor(0,"^4[В]^1 %s ответил: %s", NAME, ANSWER);
log_to_file("VICTORY.txt","%s ответил: ^3%s^1", NAME, ANSWER);
IsQuestion = false;
IsAnswer = false;
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}
public taskHUD()
{
if(IsQuestion && !WINNER)
{
set_dhudmessage(random(255), random(255), random(255), -1.0, 0.20, 0, 0.0, 1.5, 0.1, 0.5 );
show_dhudmessage(0, "Викторина:^n%s", QUESION);
}
if(!IsQuestion && WINNER)
{
set_dhudmessage(random(255), random(255), random(255), -1.0, 0.20, 0, 0.0, 1.5, 0.1, 0.5 );
show_dhudmessage(0, "Ответ %s^nПобедитель %s", ANSWER, NAME);
}
}
stock ChatColor(const id, const szMessage[], any:...)
{
static pnum, players[32], szMsg[190], IdMsg;
vformat(szMsg, charsmax(szMsg), szMessage, 3);
if(!IdMsg) IdMsg = get_user_msgid("SayText");
if(id)
{
if(!is_user_connected(id)) return 1;
players[0] = id;
pnum = 1;
}
else get_players(players, pnum, "ch");
for(new i; i < pnum; i++)
{
message_begin(MSG_ONE, IdMsg, .player = players[i]);
write_byte(players[i]);
write_string(szMsg);
message_end();
}
return 1;
}