Есть так сказать "баги" бывают моменты что игрока просто в начале раунда убивает, хотя он не афк, таймер на 10с стоитPHP:#include <sdktools_functions> float fCP[MAXPLAYERS +1][3], fCI[MAXPLAYERS +1][3]; bool bStop; // Надо, иначе игроков может в один момент убить. Поэтому - запрещаем, а потом разрешаем и уже только потом снова проверяем. public Plugin myinfo = {name = "AntiAfkLite", author = "Drumanid", version = "1.0", url = "http://vk.com/drumanid"} public void OnPluginStart() { HookEvent("round_freeze_end", RoundFreezeEnd); } public void OnMapStart() { CreateTimer(15.0, CheckPlayers, _, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE); // меняйте под себя(время) } public Action RoundFreezeEnd(Event event, const char[] name, bool dbc) { bStop = false; for (int i = 1; i <= MaxClients; i++) { if(IsClientInGame(i) && IsPlayerAlive(i) && !IsFakeClient(i)) { GetClientAbsOrigin(i, fCP[i]); } } } public Action CheckPlayers(Handle timer) { if(bStop) { for (int i = 1; i <= MaxClients; i++) { if(IsClientInGame(i) && IsPlayerAlive(i) && !IsFakeClient(i)) { GetClientAbsOrigin(i, fCI[i]); if(fCP[i][0] == fCI[i][0] && fCP[i][1] == fCI[i][1]) { ForcePlayerSuicide(i); PrintToChat(i, " \x02Не стойте в афк и вы не будете убиты!"); //LogToFile("addons/sourcemod/logs/afklog.txt", "%N - был убит, т.к долго находился в афк", i); } } } } bStop = true; }
P.S в таком случае везде нужно создавать 'handle' для таймеров :ac:
По идеи так не должно быть, если только игрок не возродился со старыми координатами...Есть так сказать "баги" бывают моменты что игрока просто в начале раунда убивает, хотя он не афк, таймер на 10с стоит
Теперь плагин будет постоянно проверять игрока на бездействие, а не только с возрождения, но и после...
Оптимизирован ли он? - Нет.
Но сделан эстетично и эффективно.
Потому что не набрано нужное кол-во предупреждений.В наблюдения почему не кидает, а просто убивает и всё?
Зачем?
#define SHIELDTIMER 10.0
public void OnPluginStart() { HookEvent("round_start", RoundStart); }
public Action RoundStart(Handle event, const char[] name, bool dbc)
{
TakeDamage(0);
CreateTimer(SHIELDTIMER, TimerShieldOff, _, TIMER_FLAG_NO_MAPCHANGE);
}
public Action TimerShieldOff(Handle timer) { TakeDamage(2); }
void TakeDamage(int number)
{
for(int i = 1; i <= MaxClients; i++)
if(IsClientInGame(i) && IsPlayerAlive(i))
SetEntProp(i, Prop_Data, "m_takedamage", number);
}
Вы точно используете мой плагин? Такого быть не может, т.к игрок не сможет пройти проверку 'жив' игрок или нет если он 'мертв'.И чтобы не выкидывало из игры за бездействия когда сидишь в наблюдателях.
Если игрок афк, то это уже его проблемы теряет он очки или нет, останется такой афк стоять, а остальные игроки из за него конца раунда будут ждать.Я сидел в наблюдениях и меня выкинуло с сервера за бездействие. Плагин твой.
--- Добавлено позже ---
Я просил добавить это Eazy Spawn Protector 1.0.0 чтобы афэкашника нельзя было убить в начале раунда до тех пор пока его не кинет в наблюдение.
--- Добавлено позже ---
Это для того что бы игроки когда афк не сливали очки когда их убивают.
Можно сделать, но мне лень.иммунитет для админов можно прикрутить?
на флаг, и выбор от чего иммунитет, от кика, переноса и кила.
Уважаемый, я вам еще раз повторяю, что такого быть не может, ну никак.Когда фикс будет? Меня так и выкидывает с сервера когда в наблюдениях сижу.
Не будет.
Изменить значение квара в конфигурационном файле сложно? Чтобы не кикало, а переводило в спекторы.И ещё все жалуются что постоянно выскакивает на экране отсчёт времени, просто спрятался в углу и начинается отсчёт. Почему нельзя сделать как
AFK Manager (Version 4.1.7 Updated November 13th 2017) чтобы просто кидало в наблюдения, а отсчёт времени начинался через какое то время а не сразу.
Можно сделать, но мне лень.
Уважаемый, я вам еще раз повторяю, что такого быть не может, ну никак.
Запишите демку или видео или дайте сервер - зайду, посмотрю.
Не будет.
Изменить значение квара в конфигурационном файле сложно? Чтобы не кикало, а переводило в спекторы.
Что касается сообщения... Вы проверку в 10 секунд поставили или что? :ab:
Добавлены квары:
C-подобный:// RU: Флаг - иммунитет от всего | EN: Flag - immunity from everything // - // Default: "z" AA_FLAGALL "z" // RU: Флаг - иммунитет от изменения команды | EN: Flag - immunity from team change // - // Default: "p" AA_FLAGCHANGE "p" // RU: Флаг - иммунитет от кика | EN: Flag - immunity from kick // - // Default: "q" AA_FLAGKICK "q" // RU: Флаг - иммунитет от убийства | EN: Flag - immunity from murder // - // Default: "o" AA_FLAGKILL "o"
Теперь плагин будет...