Помощ за Anti Reconnect plugin

Въпроси и проблеми свързани с AMXModX.
Аватар
southdivision
Извън линия
Потребител
Потребител
Мнения: 279
Регистриран на: 14 Окт 2016, 23:17
Местоположение: София
Се отблагодари: 8 пъти
Получена благодарност: 5 пъти
Обратна връзка:

Помощ за Anti Reconnect plugin

Мнение от southdivision » 28 Мар 2017, 20:22

Код за потвърждение: Избери целия код

/* AMX Mod X
*   Anti Reconnect Plugin 3.0
*   
*   Версии антиреконнекта:
	3.0 - два режима работы: отсчёт времени после попытки зайти или отсчёт времени после использования команды reconnect
		задаётся командой amx_reconnect_static <0|1> 0 - каждый раз заного отсчитывать время, запрещающее заходить.
		1 - отсчитывать время только после выхода с сервера
		amx_reconnect_stime - кол-во секунд, на протяжении которых сохраняется счёт для пользователя по ip юзера.
	    - перед киком проверка производится так же на ip пользователя... если зашёдший имеет другой ip - он не кикается.
      2.0 - исправлен баг с уведомлением о том, что надо подождать, прежде чем войти на сервер
   	    - добавлена команда amx_reconnect_ss <1|0> - запоминать счёт игрока или нет (работает при amx_reconnect_can 1)
      1.01 - кикает всех, кто заходит раньше установленного времени после того как вышел (т.е. использует реконнект)
           - поддерживаемые команды:
             amx_reconnect_can <1|0> - можно или нет реконнектиться
             amx_reconnect_time <sec> - время в секундах, которое нужно ждать после ухода с сервера, чтобы сного на него зайти

*/

#include <amxmodx>
#include <cstrike>
#include <fun>

new PLUGIN[]="Anti reconnect"
new AUTHOR[]="JohnJ"
new VERSION[]="3.0"

new RTIME[]="amx_reconnect_time"
new RCAN[]="amx_reconnect_can"
new SCORESAVE[]="amx_reconnect_ss"
new RSTATIC[]="amx_reconnect_static"
new RSTIME[]="amx_reconnect_stime"

new t_disconnect[33] = {0, ...}
new t_scoresave[33] = {0, ...}
new ips[33][24]
new sfrags[33] = {0, ...}
new sdeaths[33] = {0, ...}
new useretry[33] = {0, ...}

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_cvar(RTIME, "7")
	register_cvar(RCAN, "1")
	register_cvar(SCORESAVE, "1")
	register_cvar(RSTATIC, "1")
	register_cvar(RSTIME, "7")
	register_event("TeamInfo","outspec","a") 	// восстанавливает счёт игроку в соответствии с настройками как только тот зайдёт за команду
}

public client_connect(id)
{

if(get_user_flags(id) & ADMIN_IMMUNITY)
{
return PLUGIN_HANDLED
}

	new maxexit = get_cvar_num(RTIME)
	new maxstata = get_cvar_num(RSTIME)
	new canreconnect = get_cvar_num(RCAN)
	new ssave = get_cvar_num(SCORESAVE)
	new ip[24]
	get_user_ip(id,ip,23,0)

	if ((maxexit>0) && (canreconnect==0) && (equali(ip,ips[id])))
	{
		new Float:nexTime = get_gametime()
		
		if (t_disconnect[id] > nexTime)
		{
		 new stat = get_cvar_num(RSTATIC)
		 new timewait
		 if (stat==0)
		 {
 		  t_disconnect[id] = floatround(nexTime) + maxexit
		  t_scoresave[id] = floatround(nexTime) + maxstata
		  timewait=maxexit
		 }
		 else
		 {
		  timewait=t_disconnect[id]-floatround(nexTime)
		 }
 	  	 server_cmd("kick #%d You can join into server for about %d sec. ! ", get_user_userid(id), timewait) 
		 return PLUGIN_CONTINUE
		}
	}
	if (ssave==1)
	{
		new Float:nexTime = get_gametime()

		if (t_scoresave[id] <= nexTime)
		{
		 sdeaths[id]=0
		 sfrags[id]=0
		 useretry[id]=0
		}
		return PLUGIN_CONTINUE
	}

	return PLUGIN_CONTINUE
}

public outspec()
{
 new id=read_data(1)
 if ((useretry[id]==1) && (is_user_connected(id)))
 {
  cs_set_user_deaths(id,sdeaths[id])
  set_user_frags(id,sfrags[id])
  useretry[id]=0
  sdeaths[id]=0
  sfrags[id]=0
 }
 return PLUGIN_CONTINUE
}

public client_disconnect(id)
{
	new maxexit = get_cvar_num(RTIME)
	new maxstata = get_cvar_num(RSTIME)
	new ssave = get_cvar_num(SCORESAVE)

	new Float:theTime = get_gametime()
	t_disconnect[id] = floatround(theTime) + maxexit
	t_scoresave[id] = floatround(theTime) + maxstata
	get_user_ip(id,ips[id],23,0)
	
 	if (ssave==1)
	{
	 sdeaths[id] = get_user_deaths(id)
	 sfrags[id] = get_user_frags(id)
	 useretry[id]=1
	}
	return PLUGIN_CONTINUE
}
Здравейте, възможно ли е да ми обясните какво означават въпросните cvar-ове и за какво се използвт и,ако е възможно да се отстрани проблема който прави така,че да киква админите със имунитет въпреки,че съм добавил проверката която да не прави този "номер"

Аватар
TheRedShoko
Извън линия
Модератор
Модератор
Мнения: 1016
Регистриран на: 06 Окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 5 пъти
Получена благодарност: 84 пъти

Re: Помощ за Anti Reconnect plugin

Мнение от TheRedShoko » 28 Мар 2017, 21:13

Проблемът с кикването се дължи на това, че в client_connect играчите все още нямат права. Промени client_connect -> client_putinserver и не би трябвало да имаш проблеми с кикването.
amx_reconnect_ss - дали да запазва статуса на играч при reconnect
amx_reconnect_can - включва/изключва функционалността на кик при reconnect - при 0 ще киква, а при 1 няма.
amx_reconnect_time - мисля, че е ясно.
amx_reconnect_static - дали времето на кикване да бъде статично. Тоест ддали при всеки нов connect, когато все още не му е свършило времето от последния, да се рестартира. Например даваш retry, киква те и трябва да чакаш 15 секунди, ако се reconnect след 5 секунди, ако cvar-a е настроен на 0, времето ще се нулира и ще трябва да чакаш още 15. Ако е настроен на нещо, различно от 0, ще трябва да изчакаш още 10 секунди.
amx_reconnect_stime - колко време след излизане от сървъра да пази score, ако е направено да го запазва.

Кодът е зле написан, променливите са именувани ужасно. Гледах го в продължение на 15 минути и мисля, че това правят. Възможно е за някои от тях да съм сгрешил.

Аватар
southdivision
Извън линия
Потребител
Потребител
Мнения: 279
Регистриран на: 14 Окт 2016, 23:17
Местоположение: София
Се отблагодари: 8 пъти
Получена благодарност: 5 пъти
Обратна връзка:

Re: Помощ за Anti Reconnect plugin

Мнение от southdivision » 28 Мар 2017, 21:55

client_putinserver като го направя дори не киква обикновен играч при retry

Аватар
TheRedShoko
Извън линия
Модератор
Модератор
Мнения: 1016
Регистриран на: 06 Окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 5 пъти
Получена благодарност: 84 пъти

Re: Помощ за Anti Reconnect plugin

Мнение от TheRedShoko » 28 Мар 2017, 22:32

Пробвай с client_authorized.

Аватар
SmirnoffBG
Извън линия
Потребител
Потребител
Мнения: 267
Регистриран на: 27 Ное 2016, 19:43
Местоположение: nz
Се отблагодари: 77 пъти
Получена благодарност: 38 пъти
Обратна връзка:

Re: Помощ за Anti Reconnect plugin

Мнение от SmirnoffBG » 30 Мар 2017, 00:00

Човек, този плъгин не просто е зле написан той е и мн зле измислен или с др думи ако един човек дисконектне влезе нов и първия реконектне той ще отиде на друго ID и плъгина изобщо няма да може да го засече.
Ето ти линк към професионално направен плъгин от Exolent:
https://forums.alliedmods.net/attachmen ... 1335815108

Кварове няма, но има define:
#define MAX_TIMES 3 - Kолко пъти може да се конектва преди да бъде баннат за 15 секунди

#define MAX_SECONDS 20.0 - Колко секунди да следи даденото Steam_ID
El-Super Respawn = 87.121.54.85:27016
BG Trewa Respawn = 91.92.137.205:27015

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Поддръжка / Помощ”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 5 госта