Поиск Спектаторс кик

Сообщения
321
Реакции
73
Помог
11 раз(а)
Всем привет. Может у кого есть плагин, чтобы при определенном онлайне он кикал кто сидит в спектрах, и чтобы не кикал людей с определенным файлом? Или это на заказ можно сделать?
 
Сообщения
321
Реакции
73
Помог
11 раз(а)
wopox1337, тогда наверное лучше его на заказ попросить?
 
Сообщения
164
Реакции
13
Помог
2 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Вот держи ..он не только кикает из спектров но и кикает афк.. ненадо ничего заказывать .. оставь деньги на раскрутку
 

Вложения

  • 23.4 KB Просмотры: 29
Сообщения
142
Реакции
23
Помог
1 раз(а)
csparena, скинь нормальный pbk.tx а то там непонятно что
[ru]
KICK_JOIN_WARNING = У Вас есть %s, чтобы присоединиться к команде, или Вас кикнут
KICK_JOIN_REASON = Отказ присоединиться к команде в течении %s.
KICK_JOIN_ANNOUNCE = %s был кикнут за невыбор команды в течении %s.
KICK_SPEC_WARNING = У вас %s что бы присоеденится к команде! Иначе вы будете кикнуты за слишком длинное время нахождения в спектаторах.
KICK_SPEC_REASON = Спектатор дольше чем %s.
KICK_SPEC_ANNOUNCE = %s был кикнут за слишком долгое время. больше %s.
KICK_SPEC_AREYOUTHERE = Вы тут? Играть собираетесь?
KICK_AFK_WARNING = У Вас есть %s, чтобы начать играть. Иначе Вы будете кикнуты за AFK
KICK_AFK_REASON = AFK больше чем %s.
KICK_AFK_ANNOUNCE = %s был кикнут за AFK. Время больше чем %s.
 
Сообщения
164
Реакции
13
Помог
2 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
KICK_JOIN_WARNING = У Вас есть %s, чтобы присоединиться к команде, или Вас кикнут
KICK_JOIN_REASON = Отказ присоединиться к команде в течении %s.
KICK_JOIN_ANNOUNCE = %s был кикнут за невыбор команды в течении %s.
KICK_SPEC_WARNING = У вас %s что бы присоеденится к команде! Иначе вы будете кикнуты за слишком длинное время нахождения в спектаторах.
KICK_SPEC_REASON = Спектатор дольше чем %s.
KICK_SPEC_ANNOUNCE = %s был кикнут за слишком долгое время. больше %s.
KICK_SPEC_AREYOUTHERE = Вы тут? Играть собираетесь?
KICK_AFK_WARNING = У Вас есть %s, чтобы начать играть. Иначе Вы будете кикнуты за AFK
KICK_AFK_REASON = AFK больше чем %s.
KICK_AFK_ANNOUNCE = %s был кикнут за AFK. Время больше чем %s.[/SRC]

держи,a если будут проблема.. вот качай отсюда

http://make-amxserv.ru/cs/plugins/13622-pbk-play-or-be-kicked-v15243.html
 
Сообщения
160
Реакции
170
Помог
1 раз(а)
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>

#define TIME_VALID_ADD 15.0 // Длительность защиты игрока от плагина, когда он только зашёл на сервер.
#define TIME_AFK_CHECK 20.0 // Интервал между проверками игроков, чем меньше значение, тем больше нагрузка на сервер.
#define MAX_AFK_WARNING 2 // Количество предупреждений после которых последует наказание.
#define TIME_SPECT_CHECK 120.0 // Интервал между проверками зрителей, чем меньше значение, тем больше нагрузка на сервер.
#define MIN_PLAYERS_CHECK 17 // Минимальное количество игроков, когда включается функция проверки зрителей.

#pragma semicolon 1

#define MAX_PLAYERS 32
#define MSG_SAY_TEXT 76
#define MSG_SEND_AUDIO 100

#define TASK_AFK_CHECK 139734
#define TASK_VALID_ADD 759846
#define TASK_SPECT_CHECK 645986
#define TASK_SPECT_REMOVE 295466

#define BIT_VALID(%1,%2) ((%1) & (1 << ((%2) - 1)))
#define BIT_ADD(%1,%2) ((%1) |= (1 << ((%2) - 1)))
#define BIT_SUB(%1,%2) ((%1) &= ~(1 << ((%2) - 1)))
#define BIT_NOT_VALID(%1,%2) (~(%1) & (1 << ((%2) - 1)))

#define _BIT_VALID(%1,%2) ((%1) & (1 << (%2)))
#define _BIT_ADD(%1,%2) ((%1) |= (1 << (%2)))
#define _BIT_SUB(%1,%2) ((%1) &= ~(1 << (%2)))
#define _BIT_NOT_VALID(%1,%2) (~(%1) & (1 << (%2)))

new Float:g_fOldOrigin[MAX_PLAYERS + 1][3], Float:g_fOldAngles[MAX_PLAYERS + 1][3];
new g_iBitClientValid, g_iWarning[MAX_PLAYERS + 1];
new g_iMaxPlayers;

public plugin_init()
{
register_plugin("Afk Control", "0.1 Final", "Freedo.m");
RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1);
RegisterHam(Ham_Killed, "player", "Ham_PlayerKilled_Post", 1);
register_menucmd(register_menuid("Afk Menu"), 1, "Handle_AfkMenu");
g_iMaxPlayers = get_maxplayers();
set_task(TIME_SPECT_CHECK, "SpectatorCheck", TASK_SPECT_CHECK, _, _, "b");
}

public client_putinserver(id)
{
if(is_user_bot(id) || is_user_hltv(id)) return;
set_task(TIME_VALID_ADD, "ClientValidAdd", id+TASK_VALID_ADD);
}

public client_disconnect(id)
{
if(task_exists(id+TASK_AFK_CHECK)) remove_task(id+TASK_AFK_CHECK);
if(task_exists(id+TASK_VALID_ADD)) remove_task(id+TASK_VALID_ADD);
if(task_exists(id)) remove_task(id);
BIT_SUB(g_iBitClientValid, id);
}

public ClientValidAdd(id)
{
id -= TASK_VALID_ADD;
BIT_ADD(g_iBitClientValid, id);
}

public Ham_PlayerSpawn_Post(id)
{
if(!is_user_alive(id)) return;
g_iWarning[id] = 0;
if(task_exists(id+TASK_AFK_CHECK)) remove_task(id+TASK_AFK_CHECK);
set_task(1.0, "SpawnCheck", id+TASK_AFK_CHECK);
set_task(TIME_AFK_CHECK, "AfkCheck", id+TASK_AFK_CHECK, _, _, "b");
}

public Ham_PlayerKilled_Post(id) remove_task(id+TASK_AFK_CHECK);

public SpawnCheck(id)
{
id -= TASK_AFK_CHECK;
pev(id, pev_origin, g_fOldOrigin[id]);
pev(id, pev_angles, g_fOldAngles[id]);
}

public AfkCheck(id)
{
id -= TASK_AFK_CHECK;
new Float:fNewOrigin[3], Float:fNewAngles[3];
pev(id, pev_origin, fNewOrigin);
pev(id, pev_angles, fNewAngles);
if(xs_vec_equal(g_fOldOrigin[id], fNewOrigin) && xs_vec_equal(g_fOldAngles[id], fNewAngles))
{
if(++g_iWarning[id] >= MAX_AFK_WARNING)
{
user_kill(id, 1);
engclient_cmd(id, "jointeam", "6");
SendAudio(id, "events/friend_died.wav");
}
else SendAudio(id, "events/tutor_msg.wav");
PrintMsg(id, "!g|AFK|!y Вы не проявляете активность, предупреждения: !g%i/%i", g_iWarning[id], MAX_AFK_WARNING);
if(user_has_weapon(id, CSW_C4)) engclient_cmd(id, "drop", "weapon_c4");
}
else
{
if(g_iWarning[id]) g_iWarning[id] = 0;
xs_vec_copy(fNewOrigin, g_fOldOrigin[id]);
xs_vec_copy(fNewAngles, g_fOldAngles[id]);
}
}

public SpectatorCheck()
{
if(get_playersnum() < MIN_PLAYERS_CHECK) return;
new id;
for(new i; i < g_iMaxPlayers; i++)
{
if(_BIT_VALID(g_iBitClientValid, i))
{
id = (i + 1);
switch(_:cs_get_user_team(id))
{
case 0: AfkPunishment(id);
case 3:
{
Show_AfkMenu(id);
SendAudio(id, "events/tutor_msg.wav");
set_task(10.0, "AfkPunishment", id);
}
}
}
}
}

public Show_AfkMenu(id)
{
new szMenu[256], iLen = formatex(szMenu, charsmax(szMenu), "\y[AFK-spectr] Вы наблюдаете за игрой?^nЕсли Вы не АФК нажмите 1.^nУ Вас 10 сек. для ответа.^n^n");
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y1. \wДа! Я не АФК!");
return show_menu(id, 1, szMenu, 10, "Afk Menu");
}
public Handle_AfkMenu(id)
{
remove_task(id);
return PLUGIN_HANDLED;
}

public AfkPunishment(id)
{
server_cmd("kick #%d Вы были кикнуты из-за нахождения в зрителях.", get_user_userid(id));
}

stock bool:xs_vec_equal(const Float:vec1[], const Float:vec2[])
{
return (vec1[0] == vec2[0]) && (vec1[1] == vec2[1]) && (vec1[2] == vec2[2]);
}

stock xs_vec_copy(const Float:vecIn[], Float:vecOut[])
{
vecOut[0] = vecIn[0];
vecOut[1] = vecIn[1];
vecOut[2] = vecIn[2];
}

stock SendAudio(id, szDirSound[])
{
message_begin(MSG_ONE_UNRELIABLE, MSG_SEND_AUDIO, _, id);
write_byte(id);
write_string(szDirSound);
write_short(100);
message_end();
}

stock PrintMsg(const id, const szMessage[], any:...)
{
if(!is_user_connected(id)) return;
new szMsg[190];
vformat(szMsg, charsmax(szMsg), szMessage, 3);
while(replace(szMsg, charsmax(szMsg), "!y", "^1")) {}
while(replace(szMsg, charsmax(szMsg), "!t", "^3")) {}
while(replace(szMsg, charsmax(szMsg), "!g", "^4")) {}
message_begin(MSG_ONE_UNRELIABLE, MSG_SAY_TEXT, _, id);
write_byte(id);
write_string(szMsg);
message_end();
}
 
Последнее редактирование:
Сообщения
321
Реакции
73
Помог
11 раз(а)
Последнее редактирование модератором:
Сообщения
164
Реакции
13
Помог
2 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
исходника нет.. ставьте так.. все ок.. уже уже 3 года стоит ..идет 4 год
слава богy все ок
 
Сообщения
321
Реакции
73
Помог
11 раз(а)
csparena, в той ссылке которую ты скинул, есть исходник
 
Сообщения
164
Реакции
13
Помог
2 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Angerfist, ну прекрасно .. скачай ..
и фантомчик тоже будет рад
Pokemoshka, afk control кикает игроков со спектров при полном онлайне
 
Последнее редактирование модератором:
Сообщения
2,288
Реакции
1,739
Помог
31 раз(а)
csparena, А это на что написано?для красоты?
Код:
#define MIN_PLAYERS_CHECK 30     // Минимальное количество игроков, когда включается функция проверки зрителей.
 
Сообщения
164
Реакции
13
Помог
2 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Pokemoshka, ставь увидишь потом что будет
 
Сообщения
321
Реакции
73
Помог
11 раз(а)
Всем спасибо за помощь, поставил плагин который скинул mr_CHikAZ,
Тему можно закрыть
 
Сообщения
39
Реакции
2
Angerfist, The plugin that put mr_CHikAZ, up to me has trouble, try it too.

#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif
#define ACCESS_LEVEL_IMMUNITY ADMIN_KICK
#define TIME_AFK_CHECK 15.0
#define MAX_AFK_WARNING 3
#define TIME_SPECT_CHECK 60.0
#define MAX_SPECT_CHECK_PL 2
#define MIN_PLAYERS_CHECK 30
#define BOMB_TRANSFER
#define TASK_AFK_CHECK 139734
#define BIT_VALID(%1,%2) (%1 & (1 << (%2 & 31)))
#define BIT_ADD(%1,%2) %1 |= (1 << (%2 & 31))
#define BIT_SUB(%1,%2) %1 &= ~(1 << (%2 & 31))
new Float:g_fOldOrigin[33][3], Float:g_fOldAngles[33][3];
new g_iBitClientValid, g_iWarning[33];
new g_iMaxPlayers;
new g_count[33];
new name[32];
public plugin_init()
{
register_plugin("Afk Control", "0.4.1", "Freedo.m | neygomon");
RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1);
RegisterHam(Ham_Killed, "player", "Ham_PlayerKilled_Post", 1);
g_iMaxPlayers = get_maxplayers();
set_task(TIME_SPECT_CHECK, "SpectatorCheck", .flags = "b");
}
public client_putinserver(id)
{
if(is_user_bot(id) || is_user_hltv(id)) return;
BIT_ADD(g_iBitClientValid, id);
g_count[id] = 0;
}
public client_disconnect(id)
{
if(task_exists(id+TASK_AFK_CHECK)) remove_task(id+TASK_AFK_CHECK);
BIT_SUB(g_iBitClientValid, id);
}
public Ham_PlayerSpawn_Post(id)
{
if(!is_user_alive(id)) return;
g_iWarning[id] = 0;
pev(id, pev_origin, g_fOldOrigin[id]);
pev(id, pev_angles, g_fOldAngles[id]);
if(task_exists(id+TASK_AFK_CHECK)) remove_task(id+TASK_AFK_CHECK);
set_task(TIME_AFK_CHECK, "AfkCheck", id+TASK_AFK_CHECK, _, _, "b");
}
public Ham_PlayerKilled_Post(id) remove_task(id+TASK_AFK_CHECK);
public AfkCheck(id)
{
id -= TASK_AFK_CHECK;
new Float:fNewOrigin[3], Float:fNewAngles[3];
pev(id, pev_origin, fNewOrigin);
pev(id, pev_angles, fNewAngles);
if(xs_vec_equal(g_fOldOrigin[id], fNewOrigin) && xs_vec_equal(g_fOldAngles[id], fNewAngles))
{
get_user_name(id, name, charsmax(name));
if(++g_iWarning[id] >= MAX_AFK_WARNING)
{
user_kill(id, 1);
engclient_cmd(id, "jointeam", "6");
client_cmd(id, "spk events/friend_died");
ColorChat(0, RED, "^3[OPP] ^1Jucatorul^3 %s^1 a fost mutat la spectatori pentru ca este AFK.", name);
}
else client_cmd(id, "spk events/tutor_msg");
ColorChat(id, RED, "^3[OPP] ^1Nu prezinti activitate! Avertizare: ^4%i^1/^4%i", g_iWarning[id], MAX_AFK_WARNING);
if(user_has_weapon(id, CSW_C4))
{
engclient_cmd(id, "drop", "weapon_c4");
ColorChat(0, RED, "^3[OPP] ^1Jucatorul^3 %s^1 este AFK, bomba a fost transferata.", name);
#if defined BOMB_TRANSFER
for(new i = 1; i <= g_iMaxPlayers; i++)
{
if(i != id && is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T)
{
new iWeaponC4 = engfunc(EngFunc_FindEntityByString, -1, "classname", "weapon_c4");
if(pev_valid(iWeaponC4))
{
new iOwner = pev(iWeaponC4, pev_owner);
if(iOwner > g_iMaxPlayers)
{
set_pev(iOwner, pev_flags, pev(iOwner, pev_flags) | FL_ONGROUND);
dllfunc(DLLFunc_Touch, iOwner, i);
}
}
break;
}
}
#endif
}
}
else
{
if(g_iWarning[id]) g_iWarning[id] = 0;
xs_vec_copy(fNewOrigin, g_fOldOrigin[id]);
xs_vec_copy(fNewAngles, g_fOldAngles[id]);
}
}
public SpectatorCheck()
{
if(get_playersnum() < MIN_PLAYERS_CHECK) return;
static i;
for(i=1; i <= g_iMaxPlayers; i++)
{
if(BIT_VALID(g_iBitClientValid, i))
{
if(!(get_user_flags(i) & ACCESS_LEVEL_IMMUNITY))
{
switch(_:cs_get_user_team(i))
{
case 0, 3: if(++g_count >= MAX_SPECT_CHECK_PL) AfkPunishment(i);
}
}
}
}
}
public AfkPunishment(i)
{
get_user_name(i, name, charsmax(name));
ColorChat(0, RED, "^3[OPP] ^1Jucatorul^3 %s ^1a primit kick pentru ca este AFK.", name);
server_cmd("kick #%d ^"Ai primit kick, motiv: AFK^"", get_user_userid(i));
}
stock bool:xs_vec_equal(const Float:vec1[], const Float:vec2[])
return (vec1[0] == vec2[0]) && (vec1[1] == vec2[1]) && (vec1[2] == vec2[2]);
stock xs_vec_copy(const Float:vecIn[], Float:vecOut[])
{
vecOut[0] = vecIn[0];
vecOut[1] = vecIn[1];
vecOut[2] = vecIn[2];
}
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу