Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Anti-GM - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Scr ][ All ]
Anti-GM
Оценка: -----

#1
Пользователь офлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Занялся системой защиты и перепробовав кучу вариантов, пришлось написать свой. Сделана самая простая проверка. Проверяет со второго попадания. Также тут не хватает проверки на AFK.

new
	hack[MAX_PLAYERS char],
	stat_ON[MAX_PLAYERS char],
	tike[MAX_PLAYERS],
	Float:agm__health[MAX_PLAYERS][2];


public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
	if (hittype == BULLET_HIT_TYPE_PLAYER && hitid != INVALID_PLAYER_ID)
	{
        	hack{hitid}++;
        
        	switch (hack{hitid})
        	{
            		case 1: GetPlayerHealth(hitid, agm__health[hitid][0]);
            		case 2: GetPlayerHealth(hitid, agm__health[hitid][1]);
        	}
        
        	if (agm__health[hitid][0] == agm__health[hitid][1])
		{
			if (tike[hitid] > GetTickCount())
		        	return 1;
		        
		    	stat_ON{playerid}++;
		    
		    	tike[hitid] = GetTickCount()+3000;

		        if (stat_ON{hitid} > 10)
				return Kick(hitid);
		}
		else
			stat_ON{hitid} = 0;
			
		if (hack{hitid} == 2)
			hack{hitid} = 0;
	}
	return 1;
}





Тест [Показать]


Можно сделать в секундном таймере проверку здоровья и записывать в ac_health[playerid], и так же само сделать в OnPlayerGiveDamage, но в переменную health. В том же паблике проверять условие:

if (ac_health[damagedid] - health != amount)
    Kick(damagedid);

Сообщение отредактировал m1n1vv: 06 Сентябрь 2016 - 19:34

1

Сказали спасибо 1:

#2
Пользователь офлайн   Romzes 

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
1. Почему здесь не учитывается броня? Если у игрока есть бронежилет и он включен GM получается ваш античит не сработает?
2. Если я не ошибаюсь, OnPlayerGiveDamage с некоторыми GM вообще не вызывается.
0

#3
Пользователь офлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Просмотр сообщенияRomzes (31 Август 2016 - 16:57) писал:

1. Почему здесь не учитывается броня? Если у игрока есть бронежилет и он включен GM получается ваш античит не сработает?
2. Если я не ошибаюсь, OnPlayerGiveDamage с некоторыми GM вообще не вызывается.

У меня стоит запрет на броню на сервере. И тут не составит труда сделать на бронь.
Я тестировал на нескольких GM. Система показывала подозрение на читы. С OnPlayerTakeDamage не перепутал?

Сообщение отредактировал m1n1vv: 31 Август 2016 - 17:59

0

#4
Пользователь офлайн   Nexius 

  • Местный
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Блокировать вызов с гм'ом можно только OnPlayerTakeDamage. Этим пабликом, наоборот, можно спуфить (ложно отправлять), тогда будет кикать кого только можно. Жаль, такое уже не раз было на практике.

Советую сделать через OnPlayerWeaponShot. Ловить будет только от пуль, но надёжнее.
0

#5
Пользователь офлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Просмотр сообщенияNexius (31 Август 2016 - 19:08) писал:

Блокировать вызов с гм'ом можно только OnPlayerTakeDamage. Этим пабликом, наоборот, можно спуфить (ложно отправлять), тогда будет кикать кого только можно. Жаль, такое уже не раз было на практике.

Советую сделать через OnPlayerWeaponShot. Ловить будет только от пуль, но надёжнее.

А какой паблик позволяет через собейт вроде убить всех игроков?
0

#6
Пользователь офлайн   Nexius 

  • Местный
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Именно OnPlayerGiveDamage. Хотя в теории можно предположить такое и с WeaponShot, но на практике вызывали фейково пока только первый.

А, хотя OnPlayerWeaponShot вызывают сайлент аимы, но там они и реальный урон наносят.

Сообщение отредактировал Nexius: 01 Сентябрь 2016 - 00:39

0

#7
Пользователь офлайн   Sound 

  • Эксперт
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
И подобный анти-чит был на одном из серверов, на котором я долго играл. Там всё было легче, но читеры жадно забавлялись, сохраняя последний отправленный пакет и фейкого его отправляли, убивая последнего игрока, которому нанесли урон
0

#8
Пользователь офлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Сделал через OnPlayerWeaponShot.

Сообщение отредактировал m1n1vv: 02 Сентябрь 2016 - 04:17

0

#9
Пользователь офлайн   Nexius 

  • Местный
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
По мелочи: в эту проверку
if(hittype == BULLET_HIT_TYPE_PLAYER)

лучше ещё "&& hitid != INVALID_PLAYER_ID" добавить.

И есть подозрения, что будут ложные, если стрелять в игрока из скорострельного оружия, т.е. MP5, Tec-9 или UZI.
0

#10
Пользователь офлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Просмотр сообщенияNexius (02 Сентябрь 2016 - 13:27) писал:

По мелочи: в эту проверку
if(hittype == BULLET_HIT_TYPE_PLAYER)

лучше ещё "&& hitid != INVALID_PLAYER_ID" добавить.

И есть подозрения, что будут ложные, если стрелять в игрока из скорострельного оружия, т.е. MP5, Tec-9 или UZI.

Да. Еще будет ложным в момент смерти. Сейчас по другому делаю.
0

Поделиться темой:


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей