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

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

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

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

отредактировать плагин!

, afk_kicker
Статус пользователя AliMeT
сообщение 4.6.2010, 20:29
Сообщение #1
Стаж: 18 лет

Сообщений: 330
Благодарностей: 77
Полезность: 204

afk_kicker.sma
/*
*
* Author: Cheesy Peteza
* Date: 18-Mar-2004
*
*
* Description: A generic AFK Kicker that should work with nearly all Half-Life mods.
* Tested with Natural-Selection v3.0 beta 3, Counter-Strike 1.6 and Day of Defeat.
*
* Cvars:
* mp_afktime 90 Time a player is allowed to be AFK in seconds before they are kicked. (minimum 30 sec)
* They time is only accumulated while they are alive.
* mp_afkminplayers 8 Minimum number of players required to be on the server before the plugin starts kicking.
*
*
* Requirements: AMXModX
*
*
*/

#include <amxmodx>

#define MIN_AFK_TIME 30 // I use this incase stupid admins accidentally set mp_afktime to something silly.
#define WARNING_TIME 15 // Start warning the user this many seconds before they are about to be kicked.
#define CHECK_FREQ 5 // This is also the warning message frequency.

new g_oldangles[33][3]
new g_afktime[33]
new bool:g_spawned[33] = {true, ...}
new bool:g_AfkInSpect[33]

public plugin_init() {
register_plugin("AFK Kicker","1.0b","Cheesy Peteza")
register_cvar("afk_version", "1.0b", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY)

register_cvar("mp_afktime", "120")
register_cvar("mp_afktime_spec", "999999")
register_cvar("mp_afkminplayers", "1") // Only kick AFKs when there is atleast this many players on the server
set_task(float(CHECK_FREQ),"checkPlayers",_,_,_,"b")
register_event("ResetHUD", "playerSpawned", "be")
}

public checkPlayers()
{
for (new i = 1; i <= get_maxplayers(); i++)
{
if (is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i) && g_spawned[i])
{
if ( g_AfkInSpect[i] ) // Если это АФК который был перемещён в спектры
{
if(is_user_alive(i)) // Вышел из спектра значит не афк
g_afktime[i] = 0
else // Всё ещё сидит афк в спектрах
{
g_afktime[i] += CHECK_FREQ
check_afktime(i)
}
continue
}
if ( !is_user_alive(i) )
continue

new newangle[3]
get_user_origin(i, newangle)
// Стоит там же где и стоял
if(newangle[0] == g_oldangles[i][0] && newangle[1] == g_oldangles[i][1] && newangle[2] == g_oldangles[i][2])
{
g_afktime[i] += CHECK_FREQ
check_afktime(i)
}
else
{
g_oldangles[i][0] = newangle[0]
g_oldangles[i][1] = newangle[1]
g_oldangles[i][2] = newangle[2]
g_afktime[i] = 0
}
}
}
return PLUGIN_HANDLED
}

check_afktime(id)
{
if (get_playersnum() >= get_cvar_num("mp_afkminplayers"))
{
new maxafktime = get_cvar_num(g_AfkInSpect[id]?"mp_afktime_spec":"mp_afktime")
if (maxafktime < MIN_AFK_TIME)
{
log_amx("cvar mp_afktime %i is too low. Minimum value is %i.", maxafktime, MIN_AFK_TIME)
maxafktime = MIN_AFK_TIME
set_cvar_num("mp_afktime", MIN_AFK_TIME)
}
if ( maxafktime-WARNING_TIME <= g_afktime[id] < maxafktime)
{
new timeleft = maxafktime - g_afktime[id]
set_hudmessage ( 0, 0, 255, -1.0, -1.0, 1, 6.0, CHECK_FREQ.0, 0.5, 1.0, 2 )
if(g_AfkInSpect[id])
show_hudmessage ( id, "[AFK Kicker] У вас есть %i секунд, чтобы выйти из спектров^nа иначе будите выкинуты за АФК", timeleft)
else
show_hudmessage ( id, "[AFK Kicker] У вас есть %i секунд, чтобы начать двигаться^nа иначе будите выкинуты за АФК", timeleft)
//client_print(id, print_chat, "[AFK Kicker] You have %i seconds to move or you will be kicked for being AFK", timeleft)
}
else if (g_afktime[id] > maxafktime)
{
if ( g_AfkInSpect[id] )
{
new name[32]
get_user_name(id, name, 31)
client_print(0, print_chat, "[AFK Kicker] %s был кикнут за АФК более %i секунд", name, maxafktime+get_cvar_num("mp_afktime"))
log_amx("%s был кикнут за АФК более %i секунд", name, maxafktime+get_cvar_num("mp_afktime"))
server_cmd("kick #%d ^"Вы выкинуты за АФК более %i секунд^"", get_user_userid(id), maxafktime+get_cvar_num("mp_afktime"))
}
else
{
g_spawned[id] = g_AfkInSpect[id] = true
client_cmd(id, "kill;jointeam 6" ) // Отправляем игрока в спектры
g_afktime[id] = 0
}
}
}
}

public client_disconnect(id)
{
g_AfkInSpect[id] = false
g_afktime[id] = 0
remove_task(id)
}

public client_putinserver(id)
g_afktime[id] = 0

public playerSpawned(id)
{
g_spawned[id] = false
set_task(0.75, "delayedSpawn", id) // Give the player time to drop to the floor when spawning
}

public delayedSpawn(id)
{
get_user_origin(id, g_oldangles[id])
g_spawned[id] = true
}


Помогите переделать плагин, а именно чтобы он не кикал из спектаторов.
Зарание спасибо ^^
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя AliMeT
сообщение 5.6.2010, 0:19
Сообщение #2
Стаж: 18 лет

Сообщений: 330
Благодарностей: 77
Полезность: 204

up тема
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Ramul
сообщение 5.6.2010, 10:49
Сообщение #3
Стаж: 16 лет

Сообщений: 72
Благодарностей: 14
Полезность: 152

попробуй поставить mp_afkminplayers", "" равным или больше чем кол-во слотов.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Drotik
сообщение 5.6.2010, 13:47
Сообщение #4
Стаж: 18 лет

Сообщений: 1319
Благодарностей: 780
Полезность: 0

Меценат Меценат

Помогите сделать что бы когда перекидывало в спектаторы
запрашивало у игрока
Готовы Продолжать Играть?!
1. Да
2. Нет

если Да то делает retry клиенту
если Нет то просто дальше висит вопрос пока не нажмет Да

Нужна такая функция для Халф-Лайф Десматч, потому наверное возвращение назад в игру само проще будет сделать методом посыланья клиенту команды retry

Отредактировал: Drotik, - 5.6.2010, 13:48
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Makzz
сообщение 5.6.2010, 14:59
Сообщение #5


Стаж: 18 лет

Сообщений: 2198
Благодарностей: 1365
Полезность: 1080

Какой знакомый код плагина... где ты его взял?


ps.gif
Как бы этот код и так работает:
Код
if ( g_AfkInSpect[i] ) // Если это АФК который был перемещён в спектры
{
if(is_user_alive(i)) // Вышел из спектра значит не афк
g_afktime[i] = 0
else // Всё ещё сидит афк в спектрах
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AliMeT
сообщение 6.6.2010, 2:05
Сообщение #6
Стаж: 18 лет

Сообщений: 330
Благодарностей: 77
Полезность: 204

Makzz,
код взял тут вроде ты его выкладывал)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Makzz
сообщение 6.6.2010, 14:47
Сообщение #7


Стаж: 18 лет

Сообщений: 2198
Благодарностей: 1365
Полезность: 1080

Цитата(AliMeT)
Помогите переделать плагин, а именно чтобы он не кикал из спектаторов.

Блин не заметил "НЕ", но тогда смысл тебе чтолибо редактировать, если он и был переписан чтобы кикал из спектров, или тебя интересует только лишь то что он помещает в спектры?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AliMeT
сообщение 19.6.2010, 11:41
Сообщение #8
Стаж: 18 лет

Сообщений: 330
Благодарностей: 77
Полезность: 204

Makzz,
да мне надо чтобы он только перемещал в спекты и не кикал их от туда.

P.S забыл про этот плагин :D
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AliMeT
сообщение 19.6.2010, 14:24
Сообщение #9
Стаж: 18 лет

Сообщений: 330
Благодарностей: 77
Полезность: 204

up тема
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: