SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian

Reply
 
Thread Tools Display Modes
Old 03/08/2018, 08:18 PM   #1
Jasno
Little Clucker
 
Join Date: Nov 2017
Posts: 22
Reputation: 0
Default Pawn.Raknet и его не раскрытые возможности.

Всем привет!
Недавно захотел сделать антивх у себя на dayz сервере, всё это хотел делать через Pawn.Raknet, а точнее через OPacket:207. 207 - Синхра игрока.
И что я увидел? Я увидел то, что enum PR_OnFootSync не подходит к этому.
Я попробовал создать свой и первое значение которое у меня получилось добыть это ID игрока, которому мы отсылаем данные о себе.
Всё окей, но когда я попробовал пойти дальше, второе значение выводилось какое то странное, я перепробовал все PR_UINT8,PR_UINT16,PR_UINT32 и т.д., выводит непонятное второе значение и оно меняется при передвижении NPC, я решил проверить, может быть это lrkey, но значение не подходят ни к одной из кнопок.
Пошёл в инет, не нашёл никакой информации по OPacket и OutcomingPacket, вообще 0 инфы, даже в wiki Pawn.RakNet ни единого упоминания (кроме самой функции) нет, но как я узнал, именно через 207 OPacket возможно убрать показывание ника над головой даже через ВХ, собейты и др чит программы, а так же убрать полоску хп и армора, но для начала нужно прочитать значения и изменить их!
Если кто-то заинтересовался и хочет вместе со мной разобраться в этом, пишите!
Так же если кто-то знает как вывести всю информацию битов bs, так же пожалуйста скажите.
Ведь с помощью этой функции можно придумать ни один анти-чит.
Самое странное то, что в самом Include Pawn.RakNet нет вообще никаких enum и Read для OPacket.
Jasno is offline   Reply With Quote
Old 03/08/2018, 09:14 PM   #2
Romz
High-roller
 
Romz's Avatar
 
Join Date: Jun 2013
Location: Ukraine
Posts: 1,080
Reputation: 64
Default Re: Pawn.Raknet и его не раскрытые возможности.

207 это пакет ID_ONFOOT_SYNC, нельзя сделать с помощью него анти WH.

Quote:
Parameters: UINT8 Packet_ID, UINT16 lrKey, UINT16 udKey, UINT16 keys, float X, float Y, float Z, float quat_w, float quat_x, float quat_y, float quat_z, UINT8 health, UINT8 armour, 2_BITS additional_key, 6_BITS weapon_id, UINT8 special_action, float velocity_x, float velocity_y, float velocity_z, float surfing_offsets_x, float surfing_offsets_y, float surfing_offsets_z, UINT16 surfing_vehicle_id, INT16 animation_id, INT16 animation_flags
__________________
Romz is online now   Reply With Quote
Old 03/08/2018, 09:16 PM   #3
Jasno
Little Clucker
 
Join Date: Nov 2017
Posts: 22
Reputation: 0
Default Re: Pawn.Raknet и его не раскрытые возможности.

Это значение для IPacket.
Возможно всё, ставим проверку на стены в OPacket по иду, если за стеной высылаем координаты 0.0 0.0 -10.0
Чтобы игрок пропадал, вот и всё, нужно лишь прочитать 207 OPacket и перезаписать его.
Так то уже анти вх готов, просто у меня он на месте в АФК стоит, игрок может подойти и убить. Поэтому я пытаюсь прочитать 207 пакет, именно через OPacket.
Jasno is offline   Reply With Quote
Old 03/08/2018, 09:31 PM   #4
joker2020pro
Big Clucker
 
Join Date: Jan 2015
Posts: 110
Reputation: 17
Default Re: Pawn.Raknet и его не раскрытые возможности.

Структура исходящей синхры очень отличается от входящей. Точнее она не статическая, а записывается динамически (похоже в целях экономии трафика).

На 0.3e разбирался с этим и написал такую фн, но я не уверен, что она подойдет для 0.3.7:
Code:
void decodeHealthArmour(unsigned char byteHealthArmour, unsigned char& byteHealth, unsigned char& byteArmour)
{
	unsigned char byteArmTemp = 0;
	unsigned char byteHlTemp = 0;

	byteArmTemp = (byteHealthArmour & 0x0F);
	byteHlTemp = (byteHealthArmour >> 4);

	if (byteArmTemp == 0xF) {
		byteArmour = 100;
	}
	else if (byteArmTemp == 0) {
		byteArmour = 0;
	}
	else {
		byteArmour = byteArmTemp * 7;
	}

	if (byteHlTemp == 0xF) {
		byteHealth = 100;
	}
	else if (byteHlTemp == 0) {
		byteHealth = 0;
	}
	else {
		byteHealth = byteHlTemp * 7;
	}
}

void decodePlayerSync(BitStream* bsRead, stOnFootData* data)
{
	bool bLeftRightKeys = false;
	bool bUpDownKeys = false;
	unsigned char byteHealthArmour = 0;
	unsigned char byteCurrentWeapon = 0;
	unsigned char byteAdditionalKey = 0;
	unsigned char byteSpecialAction = 0;
	bool bSurfing = false;
	bool bAnimationID = false;

	bsRead->Read(bLeftRightKeys);
	if (bLeftRightKeys) {
		bsRead->Read(data->sLeftRightKeys);
	}
	else {
		data->sLeftRightKeys = 0;
	}

	bsRead->Read(bUpDownKeys);
	if (bUpDownKeys) {
		bsRead->Read(data->sUpDownKeys);
	}
	else {
		data->sUpDownKeys = 0;
	}

	bsRead->Read(data->sKeys);
	bsRead->Read(data->fPosition[0]);
	bsRead->Read(data->fPosition[1]);
	bsRead->Read(data->fPosition[2]);
	bsRead->ReadNormQuat(data->fQuaternion[0], data->fQuaternion[1], data->fQuaternion[2], data->fQuaternion[3]);
	bsRead->Read(byteHealthArmour);
	bsRead->ReadBits(&byteAdditionalKey, 2);
	bsRead->ReadBits(&byteCurrentWeapon, 6);
	bsRead->Read(byteSpecialAction);
	bsRead->ReadVector(data->fMoveSpeed[0], data->fMoveSpeed[1], data->fMoveSpeed[2]);
	
	decodeHealthArmour(byteHealthArmour, data->byteHealth, data->byteArmor);

	data->byteCurrentWeapon = byteCurrentWeapon;
	data->byteAdditionalKey = byteAdditionalKey;
	data->byteSpecialAction = byteSpecialAction;

	bsRead->Read(bSurfing);
	if (bSurfing) {
		bsRead->Read(data->sSurfingID);
		bsRead->Read(data->fSurfingOffsets[0]);
		bsRead->Read(data->fSurfingOffsets[1]);
		bsRead->Read(data->fSurfingOffsets[2]);
	}
	else {
		data->sSurfingID = 0xFFFF;
		data->fSurfingOffsets[0] = 0.0;
		data->fSurfingOffsets[1] = 0.0;
		data->fSurfingOffsets[2] = 0.0;
	}

	bsRead->Read(bAnimationID);
	if (bAnimationID) {
		bsRead->Read(data->sCurrentAnimationID);
		bsRead->Read(data->sCurrentAnimationFlags);
	}
	else {
		data->sCurrentAnimationID = 0;
		data->sCurrentAnimationFlags = 0;
	}
}
joker2020pro is offline   Reply With Quote
Old 03/08/2018, 09:39 PM   #5
Jasno
Little Clucker
 
Join Date: Nov 2017
Posts: 22
Reputation: 0
Default Re: Pawn.Raknet и его не раскрытые возможности.

Благодарю! Буду проверять.
Jasno is offline   Reply With Quote
Old 03/08/2018, 10:14 PM   #6
Jasno
Little Clucker
 
Join Date: Nov 2017
Posts: 22
Reputation: 0
Default Re: Pawn.Raknet и его не раскрытые возможности.

Нефига не вышло, жду ещё мыслей.
Jasno is offline   Reply With Quote
Old 09/08/2018, 12:06 PM   #7
Eims
Huge Clucker
 
Eims's Avatar
 
Join Date: May 2013
Location: Восточный Мордор
Posts: 452
Reputation: 12
Default Re: Pawn.Raknet и его не раскрытые возможности.

А не проще потратить те же самые усилия на написание своей клиентской "надстройки", добавив туда нужный функционал? Это всяко будет лучше, чем ради того, чтоб закрыть какой-то один чит (при том, скорее всего, лишь какой-то один его подвид), ты хочешь создать огромный трафик, делая кучу проверок десятки раз за секунду лишь для одного конкретного игрока. А с учётом пинга и прочих радостей SA-MP, ты рискуешь в конце узнать, что в реальных условиях твой античит работать не будет как надо, ибо будет на каждого третьего лагающего игрока выдавать ложные.
__________________
- How many IT Engineers does it take to fix a broken light bulb?
- None, the light bulb works fine in my office, I cannot replicate the issue.
Eims is offline   Reply With Quote
Old 14/08/2018, 06:35 AM   #8
Jasno
Little Clucker
 
Join Date: Nov 2017
Posts: 22
Reputation: 0
Default Re: Pawn.Raknet и его не раскрытые возможности.

Я хочу исправить все возможные ВХ, путём отключения синхронизации для игрока, который находится не в поле зрения. Таким образом мы полностью убираем любой вид ВХ.
Jasno is offline   Reply With Quote
Old 14/08/2018, 07:24 AM   #9
Eims
Huge Clucker
 
Eims's Avatar
 
Join Date: May 2013
Location: Восточный Мордор
Posts: 452
Reputation: 12
Default Re: Pawn.Raknet и его не раскрытые возможности.

А заодно и ломаем кучу скриптов самого SA-MP, ловя новые баги клиента. Если бы всё так было просто, уже давно бы это зафиксили. А твоя система мало того, что сломает клиентские скрипты, зависимые от синхры игроков, так ещё и будет работать с задержками, ибо всё будет вычисляться на сервере. Не думаю, что игрокам будет комфортно, когда игрок, выбегающий из-за угла, будет появляться не сразу, а через некоторое время
__________________
- How many IT Engineers does it take to fix a broken light bulb?
- None, the light bulb works fine in my office, I cannot replicate the issue.
Eims is offline   Reply With Quote
Old 14/08/2018, 09:05 AM   #10
Jasno
Little Clucker
 
Join Date: Nov 2017
Posts: 22
Reputation: 0
Default Re: Pawn.Raknet и его не раскрытые возможности.

что мы ломаем? Мы отключает не синхру игрока с сервером, а отключаем входящию синхру от других игроков OPacket, абсолютно ничего не ломаем, если вы не смыслите в этом, то не пишите ересть пожалуйста.
На счёт угла, можно поставить проверку на этот самый угол, например: что до выхода из-за угла останется 1-2 координат и тогда подключим синхру, чтобы небыло таких проблем.
Jasno is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Plugin] Pawn.RakNet YourShadow Plugin Development 205 28/12/2018 05:11 AM
[Tutorial] Pacotes - Pawn.RakNet Jelly23 Lanзamentos/Releases 33 23/06/2018 10:49 PM
Pawn.RakNet - SetPlayerNameForPlayer KoloradO Portuguкs/Portuguese 24 22/06/2018 11:24 PM
[Tutorial] Includes com Pawn.RakNet Jelly23 Lanзamentos/Releases 3 18/01/2018 02:00 AM
[Tutorial] RPC - Pawn.RakNet Jelly23 Tutorials 21 13/12/2017 10:51 PM


All times are GMT. The time now is 08:25 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.