Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Empty Server Отредактировать

Статус пользователя X*CaHeK*X
сообщение 11.5.2014, 13:37
Сообщение #1
Стаж: 17 лет

Сообщений: 705
Благодарностей: 225
Полезность: 561

Я в коде не бум-бум, потому прошу помощи у знатоков. Мне хочется, чтобы плагин игнорировал не только ботов и хлтв, но и игроков находящихся в наблюдателях. Т.к у меня много игроков находятся в афк и их перекидывает в наблюдатели, а map manager не понимает этого и меняет карту на рандомную, т.к никто не выбрал какую-либо карту и может поставиться какая-нибудь хрень, а этот плагин я использую для того, чтобы менять карту обратно на популярную, но тут мы опять возвращаемся к проблеме с не игнорированием афк (в спекторах) игроков и из-за этого не сменой карты на нужную...

Код:

#include <amxmodx>
#include <amxmisc>

new filepath[251],curtime=0,staytime=0,curplayers=0,currounds=0

new amx_idletime, amx_smartmap, amx_nmap1

public plugin_init()
{
register_plugin("Empty Server","1.42","twistedeuphoria")
register_cvar("amx_staytime","600")
amx_nmap1 = register_cvar("amx_nmap1","de_dust2")
amx_idletime = register_cvar("amx_idletime","5")
amx_smartmap = register_cvar("amx_smartmap","0")
register_logevent("newround",2,"1=Round_Start")
staytime = get_cvar_num("amx_staytime")
set_task(1.0,"timer",0,"curtime",0,"b",1)
new directory[201]
get_datadir(directory,200)
formatex(filepath,250,"%s/emptyserver.txt",directory)
if(!file_exists(filepath))
{
new writestr[201]
formatex(writestr,200,"Map - Rounds Played - Total Players")
write_file(filepath,writestr)
}
}

public newround()
{
currounds++
new players[32], playernum
get_players(players,playernum,"c")
curplayers += playernum
}

public plugin_end()
{
new retstr[201],p,a,bool:found = false
for(p=1;read_file(filepath,p,retstr,200,a) != 0;p++)
{
new smap[51],srounds[51],splayers[51],curmap[51]
parse(retstr,smap,50,srounds,50,splayers,50)
get_mapname(curmap,50)
if(equali(smap,curmap))
{
new rounds = str_to_num(srounds)
new players = str_to_num(splayers)
rounds += currounds
players += curplayers
num_to_str(rounds,srounds,50)
num_to_str(players,splayers,50)
format(retstr,200,"%s %s %s",smap,srounds,splayers)
write_file(filepath,retstr,p)
found = true
}
}
if(found == false)
{
new players[51],map[51],rounds[51],writestr[201]
get_mapname(map,50)
num_to_str(curplayers,players,50)
num_to_str(currounds,rounds,50)
format(writestr,200,"%s %s %s",map,rounds,players)
write_file(filepath,writestr)
}
}


public timer()
{
if(get_playersnum() == 0)
{
curtime ++
if(curtime >= staytime)
change_maps()
}
else
{
new players,i,noncounted
players = get_playersnum()
for(i=1;i<=get_maxplayers();i++)
{
if((get_user_time(i,1) >= (get_pcvar_num(amx_idletime) * 216000)) || is_user_bot(i) || is_user_hltv(i))
{
noncounted++
}
}
if(players == noncounted)
{
curtime++
if(curtime >= staytime)
change_maps()
}
else
curtime = 0
}
return curtime
}

public change_maps()
{
new maps[51],curmap[51]
get_mapname(curmap,50)
if(get_pcvar_num(amx_smartmap) == 1)
{
new Float:curpercent = 0.0
new retstr[201],p,a
for(new i = 0;i<5;i++)
{
for(p=0;read_file(filepath,p,retstr,200,a) != 0;p++)
{
new sroundstr[51],splayerstr[51],smap[51],roundnum,playernum
parse(retstr,smap,50,sroundstr,50,splayerstr,50)
if(!equali(smap,curmap) && !equali(smap,maps[0]) && !equali(smap,maps[1]) && !equali(smap,maps[2]) && !equali(smap,maps[3]) && !equali(smap,maps[4]))
{
roundnum = str_to_num(sroundstr)
playernum = str_to_num(splayerstr)
new Float:curperc = floatdiv(float(roundnum),float(playernum))
if(curperc > curpercent)
{
curpercent = curperc
copy(maps[i],50,smap)
}
}
}
curpercent = 0.0
}
}
else
{
get_pcvar_string(amx_nmap1,maps,31)
}
if(strlen(maps) == 0)
get_pcvar_string(amx_nmap1,maps,31)

if(!equali(curmap, maps))
server_cmd("changelevel %s",maps)
return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя csnet
сообщение 11.5.2014, 13:49
Сообщение #2
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

#define PFLAG_OBSERVER ( 1<<5 )
const m_afPhysicsFlags = 193;



код невнимательно смотрел
если считает в цикле то


Код:


for(i=1;i<=get_maxplayers();i++)
{
if(is_user_bot(i) || (get_pdata_int(iPlayer, m_afPhysicsFlags) & PFLAG_OBSERVER) || is_user_hltv(i)) continue
if(get_user_time(i,1) >= (get_pcvar_num(amx_idletime) * 216000))
{



Отредактировал: csnet, - 11.5.2014, 13:53


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя X*CaHeK*X
сообщение 11.5.2014, 14:29
Сообщение #3
Стаж: 17 лет

Сообщений: 705
Благодарностей: 225
Полезность: 561

Цитата(csnet @ 11.5.2014, 17:49) *
#define PFLAG_OBSERVER ( 1<<5 )
const m_afPhysicsFlags = 193;



код невнимательно смотрел
если считает в цикле то


Код:


for(i=1;i<=get_maxplayers();i++)
{
if(is_user_bot(i) || (get_pdata_int(iPlayer, m_afPhysicsFlags) & PFLAG_OBSERVER) || is_user_hltv(i)) continue
if(get_user_time(i,1) >= (get_pcvar_num(amx_idletime) * 216000))
{


Миллион ошибок при компиле...
Пожалуйста напишите уже готовый код, который останется только заменить, не получается самому расставить в коде
#define PFLAG_OBSERVER ( 1<<5 )
const m_afPhysicsFlags = 193;
Чтобы не было ошибок при компиле

Отредактировал: X*CaHeK*X, - 11.5.2014, 14:34
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: