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

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

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

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

> Правила раздела

Перед созданием новой темы убедитесь, не искал ли кто-нибудь подобный плагин до вас, для этого следует воспользоваться поиском.

Все вновь созданные темы, с названием типа "Помогите найти", "А что это за плагин", "Ищу плагин", "Нужен плагин", "Подскажите пожалуйста название плагина" - будут удалены.
При создании темы постарайтесь максимально понятно сформулировать её заголовок так, чтобы он соответствовал функциям плагина который Вы ищите. В том случае, если Вам не удается сформулировать мысль и правильно расписать всё в теме, воспользуйтесь графическим редактором, к примеру Paint, что бы примерно изобразить функции нужного Вам плагина.

Spectate Kicker

, немогу наити
Статус пользователя resobatata
сообщение 26.5.2013, 18:39
Сообщение #1


Стаж: 15 лет

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

помогите наити простой spectate kicker без всяких добавок только чтоб спектаторов кикал
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя stefkone
сообщение 26.5.2013, 18:40
Сообщение #2


Иконка группы

Стаж: 19 лет

Сообщений: 1711
Благодарностей: 1130
Полезность: 1068

Цитата(resobatata @ 26.5.2013, 19:39) *
помогите наити простой spectate kicker без всяких добавок только чтоб спектаторов кикал

Не легче запретить заходить за спектаров?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя resobatata
сообщение 26.5.2013, 18:45
Сообщение #3


Стаж: 15 лет

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

то есть игрок когда воидет в игру он не сможет выбрать команду и автоматически сервер выбирет за него ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя stefkone
сообщение 26.5.2013, 19:48
Сообщение #4


Иконка группы

Стаж: 19 лет

Сообщений: 1711
Благодарностей: 1130
Полезность: 1068

Цитата(resobatata @ 26.5.2013, 19:45) *
то есть игрок когда воидет в игру он не сможет выбрать команду и автоматически сервер выбирет за него ?

можно и так
Если не ошибаюсь есть такая команда в сервер кфг, запрет заходит за команду спекатаров
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ex3m777
сообщение 28.5.2013, 11:05
Сообщение #5


Стаж: 13 лет
Город: Москва

Сообщений: 2037
Благодарностей: 1135
Полезность: 968

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

Я бы посоветовал вот этот
Код:
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "<span class="posthilit">AntiAfk</span>"
#define AUTHOR "pic"
#define VERSION "1.3"

#define AFK_IMMUNITY ADMIN_RESERVATION // Иммунитет у тех, у кого ADMIN_RESERVATION (Можно поменять на свой)
#define MAXANG 15 // Погрешность угла обзора (При атаке afk, у него он может изменится)
#define MAXPOS 15 // Погрешность положения игрока на карте (При атаке afk, у него оно может изменится)
#define MAXFLY 1.3 // Время приземления на спавне (Можно поставить меньше, если нет карт 1hp, 35hp)
#define TASKID 142531
#define PUNISH_SPECTATOR 1
#define PUNISH_AFK_SPECTATOR 2
#define PUNISH_AFK_KICK 3


new Float:g_oldang[33][3], g_oldpos[33][3], g_afktime[33], bool:player_spawned[33]
new maxplayers, afkmaxplayers, afkbombdrop_time, warning_time, maxafk_time, afkbombtransfer, aimmunity, kick, check_frequency, bool:freezetime

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

check_frequency = register_cvar("afk_frequency", "1.0") // Время между проверками на простой в секундах
maxafk_time = register_cvar("afk_time", "25") // Максимальное время простоя
afkbombdrop_time = register_cvar("afk_bomb_drop_time", "15") // Время простоя, после которого у игрока отнимет бомбу
afkbombtransfer = register_cvar("afk_bomb_transfer", "1") // Передавать бомбу другому игроку, или просто выкинуть на землю
aimmunity = register_cvar("afk_immunity", "1") // Иммунитет от кика
kick = register_cvar("afk_kick", "0") // Кикать сразу простаивающего, не перенося в зрители
warning_time = register_cvar("afk_warning_time", "15") // Время простоя, при котором покажет таймер простаивающему игроку

maxplayers = get_maxplayers()
afkmaxplayers = maxplayers - get_cvar_num("amx_reservation")

RegisterHam(Ham_Spawn, "player", "player_spawn")
register_logevent("round_start_event", 2, "1=Round_Start")
if(!get_pcvar_num(afkbombdrop_time) || get_pcvar_num(afkbombdrop_time) >= get_pcvar_num(maxafk_time))
set_pcvar_num(afkbombdrop_time, get_pcvar_num(maxafk_time) - 1)
if(get_cvar_num("mp_freezetime") > 0)
register_event("HLTV", "event_new_round", "a", "1=0", "2=0")

set_task(get_pcvar_float(check_frequency), "checkPlayers", TASKID, _, _, "b")
}

public round_start_event()
freezetime = false

public event_new_round()
freezetime = true

public player_spawn(id)
{
if(task_exists(id))
remove_task(id)

player_spawned[id] = false
if(is_user_bot(id) || is_user_hltv(id))
return

set_task(MAXFLY, "playerSpawned", id)
}

public playerSpawned(id)
{
if(!is_user_connected(id) || !is_user_alive(id))
return

pev(id, pev_v_angle, g_oldang[id])
get_user_origin(id, g_oldpos[id])
player_spawned[id] = true

}

public checkPlayers()
{
static Float:newang[3]
static newpos[3]
static i, players[32], num, player
get_players(players, num, "ach")

if(freezetime || num < 2)
return

for(i=0; i<num; i++)
{
player = players[i]
if(is_user_connected(player) && player_spawned[player])
{
pev(player, pev_v_angle, newang)
get_user_origin(player, newpos)

if(abs(floatround(newang[0])-floatround(g_oldang[player][0]))>MAXANG
|| abs(floatround(newang[1])-floatround(g_oldang[player][1]))>MAXANG)
{
g_oldang[player][0] = newang[0]
g_oldang[player][1] = newang[1]
g_afktime[player] = 0
continue
}
if(abs(newpos[0]-g_oldpos[player][0])>MAXPOS
|| abs(newpos[1]-g_oldpos[player][1])>MAXPOS
|| newpos[2] != g_oldpos[player][2])
{
g_oldpos[player][0] = newpos[0]
g_oldpos[player][1] = newpos[1]
g_oldpos[player][2] = newpos[2]
g_afktime[player] = 0
continue
}
g_afktime[player] += get_pcvar_num(check_frequency)
check_afktime(player)
}
}
}

public check_afktime(id)
{
new afktimetmp = get_pcvar_num(maxafk_time), afktimeleft, kickorspect
static punishname[40]
afktimeleft = afktimetmp - g_afktime[id]

if(get_pcvar_num(afkbombdrop_time) == g_afktime[id])
transfer_bomb(id)

if (afktimeleft <= get_pcvar_num(warning_time))
{
if((get_pcvar_num(kick) || get_playersnum() >= afkmaxplayers ) && checkimmunity(id))
{
kickorspect = 1
punishname = "кикнуты"
}
else
{
kickorspect = 0
punishname = "перенесены в зрители"
}

if(afktimeleft > 0)
{
set_hudmessage(255, 0, 0, -1.0, -0.9, 0, get_pcvar_float(check_frequency), get_pcvar_float(check_frequency)-0.1, 0.0, 0.0, -1)
show_hudmessage(id, "Вы будете %s за простой, через %d сек.", punishname, afktimeleft)
}
}

if(is_user_connected(id) && g_afktime[id] >= afktimetmp)
{
if(kickorspect == 1)
punish_player(id, PUNISH_AFK_KICK)
else
{
punish_player(id, PUNISH_AFK_SPECTATOR)
player_spawned[id] = false
g_afktime[id] = 0
}
}
}

public transfer_bomb(id)
{
if(is_user_bot(id) || is_user_hltv(id))
return

if(!is_user_connected(id) || !is_user_alive(id) || !(pev(id, pev_weapons) & (1 << CSW_C4)))
return

new i, players[32], num, player
get_players(players, num, "ache", "TERRORIST")
if(num < 2)
return

if(get_pcvar_num(afkbombtransfer) == 0)
{
engclient_cmd(id, "drop", "weapon_c4")
return
}

new g_carrier[3], g_recipient[3], recipient, distance, mindistance = 999999
get_user_origin(id, g_carrier)
for (i = 0; i < num; i++)
{
player = players[i]
if(!is_user_connected(player) || player == id)
continue

get_user_origin(player, g_recipient)
distance = get_distance(g_carrier, g_recipient)
if(distance < mindistance)
{
mindistance = distance
recipient = player
}
}
if(!recipient)
return

engclient_cmd(id, "drop", "weapon_c4")
new c4 = engfunc(EngFunc_FindEntityByString, -1, "classname", "weapon_c4")
if(pev_valid(c4))
{
new backpack = pev(c4, pev_owner)
if(backpack > maxplayers)
{
set_pev(backpack, pev_flags, pev(backpack, pev_flags) | FL_ONGROUND)
dllfunc(DLLFunc_Touch, backpack, recipient)
}
}
}

public client_putinserver(id)
{
player_spawned[id] = false
g_afktime[id] = 0

if(task_exists(id + 100))
remove_task(id + 100)

if(is_user_bot(id) || is_user_hltv(id))
return

set_task(get_pcvar_float(maxafk_time),"check_unassigned", id + 100)

if(get_playersnum() < afkmaxplayers)
return

static i, players[32], num, player
get_players(players, num, "ch")

for(i=0; i<num; i++)
{
player = players[i]
if(is_user_connected(player) && id != player && cs_get_user_team(player) == CS_TEAM_SPECTATOR && checkimmunity(player))
{
punish_player(player, PUNISH_SPECTATOR)
break
}
}
}

public check_unassigned(id)
{
new player = id - 100
if(is_user_connected(player) && cs_get_user_team(player) == CS_TEAM_UNASSIGNED)
client_cmd(player, "jointeam 6")
}

public checkimmunity(id)
{
if(get_pcvar_num(aimmunity)==0)
return true
else
if(get_user_flags(id) & AFK_IMMUNITY)
return false

return true
}

public plugin_end()
remove_task(TASKID)

stock punish_player(id, punishtype)
{
if(!is_user_connected(id))
return

static name[32]
get_user_name(id, name, 31)

switch(punishtype)
{
case PUNISH_SPECTATOR:
{
client_print(0, print_chat, "%s был кикнут из зрителей, т.к. сервер почти заполнен", name)
server_cmd("kick #%d ^"Вы были кикнуты из зрителей, т.к. сервер почти заполнен^"", get_user_userid(id))
}
case PUNISH_AFK_KICK:
{
client_print(0, print_chat, "%s был кикнут за простой", name)
server_cmd("kick #%d ^"Вы были кикнуты за простой^"", get_user_userid(id))
}
case PUNISH_AFK_SPECTATOR:
{
client_print(0, print_chat, "%s был перенесен в зрители за простой", name)
if (is_user_alive(id))
{
user_kill(id, 1)
cs_set_user_deaths(id, (cs_get_user_deaths(id)-1))
}
cs_set_user_team(id, CS_TEAM_SPECTATOR)
}
}
}


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