не это ли?
Код:
No player Map 1.2
Карта, за которую идет голосование
Default: "de_dust2_2x2"
npm_map <карта>
Кол-во игроков, при котором вызывается голосование
Default: "4"
npm_players <целое число>
Через сколько секунд после ухода/коннета игрока появится голосование
Default: "30.0"
npm_wait <число с точкой>
На сколько продлится данная карта
Default: "10"
npm_extendmap_step <целое число>
*/
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
new npm_map, npm_players, npm_wait, npm_extendmap_step
new vote_yes, vote_no
new bool:npm_on = true
#define PLUGIN "No Players Map"
#define VERSION "1.2"
#define AUTHOR "SKAJIbnEJIb"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
npm_map = register_cvar("npm_map", "de_dust2_2x2")
npm_players = register_cvar("npm_players", "4")
npm_wait = register_cvar("npm_wait","30.0")
npm_extendmap_step = register_cvar("npm_extendmap_step", "10")
npm_task()
}
public client_authorized() {
npm_task()
}
public client_disconnect() {
npm_task()
}
public npm_task() {
new Map[32], cv_Map[32]
get_mapname(Map, 31)
get_pcvar_string(npm_map, cv_Map, 31)
if(get_playersnum() <= get_pcvar_num(npm_players) && npm_on && (!equal(Map, cv_Map)) && !task_exists(331) ) {
set_task(get_pcvar_float(npm_wait), "npm", 331)
}
}
public npm() {
new iPlayers[32], iNum, iPlayer
get_players(iPlayers, iNum, "ch")
if(iNum <= 1 ) {
npm_changelevel()
return PLUGIN_HANDLED
}
for(new i = 0; i < iNum; i++) {
iPlayer = iPlayers[i]
npm_menu(iPlayer)
}
return PLUGIN_HANDLED
}
public npm_menu(id) {
new cv_Map[32], MenuTitle[64], arg[2]
get_pcvar_string(npm_map, cv_Map, 31)
format(MenuTitle, 63, "Сменить карту на \r%s?", cv_Map)
new menu = menu_create(MenuTitle, "npm_menu_handler")
menu_additem(menu,"\wДа","1")
menu_additem(menu,"\wНЕТ","2")
menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
menu_display(id, menu, 0)
if(!task_exists(332)) {
arg[0] = menu
set_task(get_cvar_float("amx_vote_time"), "npm_result", 332, arg, 1)
}
return PLUGIN_HANDLED
}
public npm_menu_handler(id, menu, item) {
if(item==MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[6],iName[64],access, callback, Name[32]
menu_item_getinfo(menu,item,access,data,5,iName,63,callback)
get_user_name(id, Name, 31)
new key = str_to_num(data)
switch(key) {
case 1:{
vote_yes++
ColorChat(0, BLUE, "^04%s ^01проголосовал ^03За", Name)
}
case 2:{
vote_no++
ColorChat(0, RED, "^04%s ^01проголосовал ^03Против", Name)
}
}
return PLUGIN_HANDLED
}
public npm_result(arg[]) {
menu_destroy(arg[0])
new Map[32], cv_Map[32]
get_mapname(Map, 31)
get_pcvar_string(npm_map, cv_Map, 31)
if(vote_yes >= vote_no) {
ColorChat(0, NORMAL, "Голосование завершено. Следующая карта ^04%s", cv_Map)
set_task(5.0, "npm_changelevel")
}
else {
ColorChat(0, RED, "^01Голосование завершено. Карта продлена на ^03%d^01 минут", get_pcvar_num(npm_extendmap_step))
vote_yes = 0
vote_no = 0
npm_on = false
set_task((get_pcvar_float(npm_extendmap_step)*60), "npm_extend")
}
}
public npm_changelevel() {
new cv_Map[32]
get_pcvar_string(npm_map, cv_Map, 31)
server_cmd("changelevel %s", cv_Map)
}
public npm_extend() {
npm_on = true
}