Giter VIP home page Giter VIP logo

protection's Introduction

Open-GTO

GitHub version Build Status Join the chat at https://gitter.im/Open-GTO/Open-GTO

Open-GTO – свободный, некоммерческий проект, направленный на создание по-настоящему весёлого игрового режима в экосистеме SA-MP. Проект является продолжением разработки популярного в своё время игрового режима GTO (Grand Theft Online), версии v0.6.0.

"Ночные" сборки

Периодически собираются сборки игрового режима в полной комплектации (сервер, плагины). Скачать их можно здесь (чтобы определить последнюю сборку сортируйте их по дате).

Самостоятельная сборка и запуск

Загрузка всех исходных кодов:

git clone https://github.com/Open-GTO/Open-GTO.git

(или вы можете использовать GitHub Desktop)

Для установки всех зависимостей и сборки необходимо установить sampctl и выполнить:

sampctl package ensure
sampctl package build
sampctl server ensure

Для запуска сервера необходимо ввести команду sampctl s run, предварительно настроив samp.json.

protection's People

Contributors

cantbekarma avatar medzvel avatar nexiustailer avatar ziggi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

protection's Issues

Прибавление пинга к временной разнице между выстрелами в rapidfire.inc

Стало интересно, зачем прибавляется пинг в проверке на рапид. Ведь насколько известно, на шотрейт может влиять как минимум фпс и как максимум единоразовый лаг или что-то вроде того (потеря пакетов, перегруженность сервера ещё как варианты).
Пинг в этом плане представляет собой просто отставание, с которым все данные чуть запаздывают, но приходят ведь всё равно они довольно стабильно.
Убирать оттуда пинг я не призываю, а лишь хочу поинтересоваться, какой за этим стоит практический смысл?

P.s. И да, раз идёт проверка только в OnPlayerWeaponShot, то и массив с рейтами на всё оружие не нужен, достаточно хранить данные только для огнестрельного оружия.

undefined symbol "IsBulletWeapon"

protection/badshot.inc(27) : error 017: undefined symbol "IsBulletWeapon"
Возможно стоит поменять if(!IsBulletWeapon(weaponid)) на if(!Protection_IsBulletWeapon(weaponid))

[SUGGESTION]: Add an option to toggle off countermeasures.

By default, countermeasures are taking to "undo" the cheats that players do. Such as, for example, player health. If it detects that you're cheating and triggers a warning to OnPlayerGetProtectionWarning then it will set the player's health BACK to what it SHOULD be. That's fine and all, but it'd be pretty neat if we can toggle that off.

Why? Well. It'd be extremely helpful when testing (especially with new detections). That way, I can freely have basically all of the detections enabled without worrying about breaking my script (since it'll just print warnings and NOT do anything to the player).

I noticed a bug with Teleport in the past and immediately had to take it off of my live server because it'd set the player's position back to what the script knows is the last valid point they were set to (via SetPlayerPos).

For Example:
Protection_SetParamInt(PROTECTION_TELEPORT, PROTECTION_COUNTERMEASURE, 0);

By default, countermeasures should be enabled though. Leave it up to the scripter if he wants to disable it.

Античит на оружие некорректно устанавливает реальное оружие

if (gPlayerWeapons[playerid][slot][e_ID] != weaponid) {
// set right weapon
GivePlayerWeapon(playerid, gPlayerWeapons[playerid][slot][e_ID], 0);
// report
Protection_GivePlayerWarning(playerid, PROTECTION_WEAPON, "weaponid %d != %d", gPlayerWeapons[playerid][slot][e_ID], weaponid);
}

Как видно из названия и кода выше, это не работает, к примеру, если игрок не имел оружия в одном из слотов и вдруг в нём какое-то начитерил (банально взять стандартный собейт и выбрать вкладку "Weapons" для проверки). И это также не будет правильно работать (и наоборот вместе с тем даёт обход на легальный чит патронов), если я, имея оружие с меньшим количеством патронов начитерю в этот слот аналогичное оружие с большим количеством патронов. Как вариант, нужно также обнулять и патроны от предыдущего начитерённого и учитывать все возможные случаи, подобные тем что выше.

Более подробное описание зависимостей

При попытке установки защиты возникала необходимость подключать зависимости в виде foreach и getspawninfo, и если с первым проблем нет, то второе пришлось поискать в репозиториях GTO.
Рекомендую в readme добавить информацию об их надобности, а также ссылки, где можно их скачать.

OnPlayerInteriorChange isn't properly hooked.

This:

#if defined Interior_OnPlayerInteriorChange
	return Interior_OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
#else

Should be:

#if defined PInterio_OnPlayerInteriorChange
	return PInterio_OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
#else

As it's defined here:

#if defined _ALS_OnPlayerInteriorChange
	#undef OnPlayerInteriorChange
#else
	#define _ALS_OnPlayerInteriorChange
#endif

#define OnPlayerInteriorChange PInterio_OnPlayerInteriorChange
#if defined PInterio_OnPlayerInteriorChange
	forward PInterio_OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
#endif

Pawn.Raknet

Я заметил, что это один из немногих античитов на данный момент, который активно разрабатывается, потому хотел бы предложить (пока только идею) переписать его под Pawn.Raknet. Мне кажется конкретно этот античит с его идеей ресинхронизации вместо киков как наказаний по умолчанию очень хорошо бы дополнял Pawn.Raknet своими возможностями перезаписи пакетов, а именно: в то время как античит за большинство попыток читерства устанавливает игроку старые "правильные" данные, Pawn.Raknet мог бы перезаписывать пакет для других игроков с этими самыми реальными данными, отчего другие бы не видели попыток читерства этого игрока вообще. А любые нопы (игнорирование функций, которые пытается установить сервер игроку) вместе с тем полностью бы ломали игру самому читеру в первую очередь, т.к. тот бы получал рассинхрон.

Detection Descriptions.

While most are seemingly obvious, I believe every detection (protection/x.inc) should have a description (brief, even) of what exactly the cheat is and how it's countered by default. This is useful so that scripters know exactly what each detection does without looking through the whole code and/or figuring it out by name because cheats can be/get very specific at times. This will especially be beneficial when detecting more complicated cheats.

For example:

(protections/armour.inc):

Cheat Description: When a player sets his armor without the server's approval (SetPlayerArmor).
Default Countermeasure: Sets the player's armor to the correct amount.

(protections/teleport.inc):

Cheat Description: When a player teleports somewhere (on foot or within a vehicle) without the server's approval.
Default Countermeasure: Sets the player that's on foot or inside of a vehicle back to the last position the server authorized.

PTeleport_Streamer_UpdateEx

stock PTeleport_Streamer_UpdateEx(playerid, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1, type = -1, compensatedtime = -1, freezeplayer = 1)
{
if (compensatedtime != -1) {
new bool:is_enabled = Protection_GetParamInt(PROTECTION_TELEPORT, PROTECTION_ENABLED) != 0;
if (is_enabled) {
GetPlayerPos(playerid, gPrevPos[playerid][0], gPrevPos[playerid][1], gPrevPos[playerid][2]);
gOldPos[playerid][0] = x;
gOldPos[playerid][1] = y;
gOldPos[playerid][2] = z;
}
}
return Streamer_UpdateEx(playerid, x, y, z, worldid, interiorid, type, compensatedtime, freezeplayer);
}
#if defined _ALS_Streamer_UpdateEx
#undef Streamer_UpdateEx
#else
#define _ALS_Streamer_UpdateEx
#endif
#define Streamer_UpdateEx PTeleport_Streamer_UpdateEx

Есть вопрос: зачем учитывать эту функцию, если фактически она никуда не телепортирует игрока?

Также в любом случае её можно поместить под проверку:

#if defined PROTECTION_USE_STREAMER
//...
#endif

Чтобы вызывая её без стримера ошибки не летели на этот include.

И да, в новой защите "camera mode" небольшая опечатка вот тут:

#if !defined _protection_included
	#error "Please include protection before camera **mode**"
#endif

Краш сервера после обнаружения чита.

//test.amx
#include <a_samp>
#include <lib\crashdetect>

#include <lib\foreach>
#include <getspawninfo>
#include "protection"

main() {}

public OnGameModeInit()
{
	// enable all protections
	Protection_SetParamInt(PROTECTION_ALL, PROTECTION_ENABLED, 1);
	// redefine name
	Protection_SetParamString(PROTECTION_TELEPORT, PROTECTION_NAME, "Òåëåïîðò");
	return 1;
}

public OnPlayerGetProtectionWarning(playerid, Protection:protection, bool:warn_reached, message[])
{
	new
		string[144],
		protection_name[32];

	Protection_GetParamString(protection, PROTECTION_NAME, protection_name);

	format(string, sizeof(string), "* Player: %d | Warn reached: %d | Name: %s | Message: %s", playerid, _:warn_reached, protection_name, message);
	SendClientMessageToAll(-1, string);
	return true;
}

server_log.txt

----------
Loaded log file: "server_log.txt".
----------

SA-MP Dedicated Server
----------------------
v0.3.7-R2, (C)2005-2015 SA-MP Team

[14:55:55] filterscripts = ""  (string)
[14:55:55] 
[14:55:55] Server Plugins
[14:55:55] --------------
[14:55:55]  Loading plugin: crashdetect
[14:55:55]   CrashDetect v4.18.1 is OK.
[14:55:55]   Loaded.
[14:55:55]  Loaded 1 plugins.

[14:55:55] 
[14:55:55] Filterscripts
[14:55:55] ---------------
[14:55:55]   Loaded 0 filterscripts.

[14:55:55] Number of vehicle models: 0
[14:55:58] [connection] 127.0.0.1:53476 requests connection cookie.
[14:55:59] [connection] incoming connection: 127.0.0.1:53476 id: 0
[14:55:59] [join] Test has joined the server (0:127.0.0.1)
[14:56:10] [debug] Server crashed while executing test.amx
[14:56:10] [debug] AMX backtrace:
[14:56:10] [debug] #0 native format () from samp-server.exe
[14:56:10] [debug] #1 0000969c in Protection_GivePlayerWarning (playerid=0, Protection:protection=1, fstring[]=@00020bb4 "%.2f and %.2f > %.2f", ... <3 arguments>) at C:\Users\lJohh\Desktop\Corso v2\pawno\include\protection.inc:466
[14:56:10] [debug] #2 00001d0c in public Protection_Teleport (playerid=0) at C:\Users\lJohh\Desktop\Corso v2\pawno\include\protection/teleport.inc:71
[14:56:10] [debug] #3 native CallRemoteFunction () from samp-server.exe
[14:56:10] [debug] #4 000093f8 in public Protection_Timer () at C:\Users\lJohh\Desktop\Corso v2\pawno\include\protection.inc:411
[14:56:11] [debug] Native backtrace:
[14:56:11] [debug] #0 0046d55c in ?? () from samp-server.exe
[14:56:11] [debug] #1 0046f992 in ?? () from samp-server.exe
[14:56:11] [debug] #2 5435d60a in ?? () from plugins\crashdetect.DLL
[14:56:11] [debug] #3 54364078 in ?? () from plugins\crashdetect.DLL
[14:56:11] [debug] #4 5435a767 in ?? () from plugins\crashdetect.DLL
[14:56:11] [debug] #5 5435d65a in ?? () from plugins\crashdetect.DLL
[14:56:11] [debug] #6 00474367 in ?? () from samp-server.exe
[14:56:11] [debug] #7 004010b6 in ?? () from samp-server.exe
[14:56:11] [debug] #8 5435d60a in ?? () from plugins\crashdetect.DLL
[14:56:11] [debug] #9 54364078 in ?? () from plugins\crashdetect.DLL
[14:56:11] [debug] #10 5435a767 in ?? () from plugins\crashdetect.DLL
[14:56:11] [debug] #11 5435d65a in ?? () from plugins\crashdetect.DLL
[14:56:11] [debug] #12 00482a68 in ?? () from samp-server.exe
[14:56:11] [debug] #13 004912ba in ?? () from samp-server.exe
[14:56:11] [debug] Registers:
[14:56:11] [debug] EAX: eaa75210 EBX: 00000000 ECX: 02a6a020 EDX: e8000000
[14:56:11] [debug] ESI: 01d2ae38 EDI: 00000004 EBP: 00000000 ESP: 0014fe18
[14:56:11] [debug] EIP: 004912ba EFLAGS: 00010282
[14:56:11] [debug] Stack:
[14:56:11] [debug] ESP+00000000: 00000008 754bc540 754bc4f0 00000000
[14:56:11] [debug] ESP+00000020: 0014ff80 0031b000 0000401c 00010101
[14:56:11] [debug] ESP+00000040: 01999a98 656d6167 65646f6d 00003531
[14:56:11] [debug] ESP+00000060: 0014fe68 0014ff70 0014ff70 0049d208
[14:56:11] [debug] ESP+00000080: 004ab4a0 0014ff70 004ab0e1 ffffffff
[14:56:11] [debug] ESP+000000a0: 00000094 00000006 00000002 000023f0
[14:56:11] [debug] ESP+000000c0: 00000000 00000000 00000000 00000000
[14:56:11] [debug] ESP+000000e0: 00000000 00000000 00000000 00000000
[14:56:11] [debug] ESP+00000100: 00000000 00000000 00000000 00000000
[14:56:11] [debug] ESP+00000120: 00000000 00000000 00000000 00000000
[14:56:11] [debug] ESP+00000140: 00000000 00000000 c0000005 00000000
[14:56:11] [debug] ESP+00000160: 004ba530 00000000 0014ff94 754a9ba4
[14:56:11] [debug] ESP+00000180: 76f1ac9b 0031b000 d2e8f4ff 00000000
[14:56:11] [debug] ESP+000001a0: 00000000 00000000 d2e8f4ff 0014ffa0
[14:56:11] [debug] ESP+000001c0: 00000000 0014ffec 76f1ac6f ffffffff
[14:56:11] [debug] ESP+000001e0: 0031b000 00000000 78746341 00000020
[14:56:11] [debug] ESP+00000200: 00000020 00000000 00000014 00000001
[14:56:11] [debug] ESP+00000220: 00000000 00000000 00000000 00000000
[14:56:11] [debug] ESP+00000240: 00000044 000002e0 00000254 00000000
[14:56:11] [debug] ESP+00000260: 00000336 00000000 2d59495b 000008b8
[14:56:11] [debug] ESP+00000280: 32ceeacd 00000be8 00000042 00000c2c
[14:56:11] [debug] ESP+000002a0: 0000005e 00000fbc 00000356 00000000
[14:56:11] [debug] ESP+000002c0: 00000392 00000010 00000009 000000ec
[14:56:11] [debug] ESP+000002e0: 00000001 00000002 00001738 000004b4
[14:56:11] [debug] ESP+00000300: 00000001 00000004 00002a78 00000314
[14:56:11] [debug] ESP+00000320: 00000002 00000006 00002e24 000000cc
[14:56:11] [debug] ESP+00000340: 00000001 00000009 00002fe0 00000028
[14:56:11] [debug] ESP+00000360: 00000001 64487353 0000002c 00000001
[14:56:11] [debug] ESP+00000380: 00000001 00001584 0000002c 0000005e
[14:56:11] [debug] ESP+000003a0: 00000000 00000000 00000000 00000000
[14:56:11] [debug] ESP+000003c0: 00000038 00000000 003a0043 0057005c
[14:56:11] [debug] ESP+000003e0: 006e0069 00780053 005c0073 00000000
[14:56:11] [debug] Loaded modules:
[14:56:11] [debug] 00400000 - 00519000 samp-server.exe
[14:56:11] [debug] 76eb0000 - 7703d000 ntdll.dll
[14:56:11] [debug] 75490000 - 75525000 KERNEL32.DLL
[14:56:11] [debug] 73a50000 - 73c15000 KERNELBASE.dll
[14:56:11] [debug] 759d0000 - 76d18000 SHELL32.dll
[14:56:11] [debug] 755c0000 - 7567d000 msvcrt.dll
[14:56:11] [debug] 745c0000 - 745f9000 cfgmgr32.dll
[14:56:11] [debug] 746b0000 - 747c8000 ucrtbase.dll
[14:56:11] [debug] 75530000 - 755bc000 shcore.dll
[14:56:11] [debug] 75110000 - 751d7000 RPCRT4.dll
[14:56:11] [debug] 75770000 - 759a8000 combase.dll
[14:56:11] [debug] 74490000 - 744e7000 bcryptPrimitives.dll
[14:56:11] [debug] 73da0000 - 74324000 windows.storage.dll
[14:56:11] [debug] 756f0000 - 75767000 advapi32.dll
[14:56:11] [debug] 74990000 - 749d1000 sechost.dll
[14:56:11] [debug] 750c0000 - 75105000 shlwapi.dll
[14:56:11] [debug] 749e0000 - 74a01000 GDI32.dll
[14:56:11] [debug] 74330000 - 7448d000 gdi32full.dll
[14:56:11] [debug] 74540000 - 745b9000 msvcp_win.dll
[14:56:11] [debug] 747d0000 - 74900000 USER32.dll
[14:56:11] [debug] 74690000 - 746aa000 win32u.dll
[14:56:11] [debug] 739e0000 - 739ee000 kernel.appcore.dll
[14:56:11] [debug] 739f0000 - 73a35000 powrprof.dll
[14:56:11] [debug] 73a40000 - 73a50000 profapi.dll
[14:56:11] [debug] 6d9b0000 - 6d9b8000 WSOCK32.dll
[14:56:11] [debug] 75680000 - 756e7000 WS2_32.dll
[14:56:11] [debug] 722d0000 - 722f4000 WINMM.dll
[14:56:11] [debug] 72280000 - 722a3000 WINMMBASE.dll
[14:56:11] [debug] 74900000 - 74926000 IMM32.DLL
[14:56:11] [debug] 54340000 - 54390000 crashdetect.DLL
[14:56:11] [debug] 53090000 - 530f9000 MSVCP100.dll
[14:56:11] [debug] 52900000 - 529bf000 MSVCR100.dll
[14:56:11] [debug] 73390000 - 733e0000 mswsock.dll
[14:56:11] [debug] 72360000 - 72371000 napinsp.dll
[14:56:11] [debug] 6f6f0000 - 6f706000 pnrpnsp.dll
[14:56:11] [debug] 70fa0000 - 70fb3000 NLAapi.dll
[14:56:11] [debug] 721b0000 - 721bb000 winrnr.dll
[14:56:11] [debug] 731d0000 - 7324f000 DNSAPI.dll
[14:56:11] [debug] 74a10000 - 74a17000 NSI.dll
[14:56:11] [debug] 731a0000 - 731cf000 IPHLPAPI.DLL
[14:56:11] [debug] 6fc40000 - 6fc8a000 fwpuclnt.dll
[14:56:11] [debug] 73630000 - 7364a000 bcrypt.dll
[14:56:12] [debug] 69d20000 - 69d28000 rasadhlp.dll

crashinfo.txt

--------------------------

SA-MP Server: 0.3.7-R2



Exception At Address: 0x004912BA Module: (samp-server.exe)



Registers:

EAX: 0xEAA75210	EBX: 0x00000000	ECX: 0x02A6A020	EDX: 0xE8000000

ESI: 0x01D2AE38	EDI: 0x00000004	EBP: 0x00000000	ESP: 0x0014FE18

EFLAGS: 0x00010282



Stack:

+0000: 0x00000008   0x754BC540   0x754BC4F0   0x00000000

+0010: 0x3C0BEC07   0x0048D4DB   0x00000000   0x000023F0

+0020: 0x0014FF80   0x0031B000   0x0000401C   0x00010101

+0030: 0x0000000A   0x00001E61   0x000001C0   0x000011D4

+0040: 0x01999A98   0x656D6167   0x65646F6D   0x00003531

+0050: 0x004C4020   0x004C401C   0x0031B000   0x004AB4A0

+0060: 0x0014FE68   0x0014FF70   0x0014FF70   0x0049D208

+0070: 0x004BA2F8   0xFFFFFFFF   0x0049B4A1   0x0049B4B1

+0080: 0x004AB4A0   0x0014FF70   0x004AB0E1   0xFFFFFFFF

+0090: 0x0049CCA6   0x00000001   0x01991278   0x019912B8

+00A0: 0x00000094   0x00000006   0x00000002   0x000023F0

+00B0: 0x00000002   0x00000000   0x00000000   0x00000000

+00C0: 0x00000000   0x00000000   0x00000000   0x00000000

+00D0: 0x00000000   0x00000000   0x00000000   0x00000000

+00E0: 0x00000000   0x00000000   0x00000000   0x00000000

+00F0: 0x00000000   0x00000000   0x00000000   0x00000000

+0100: 0x00000000   0x00000000   0x00000000   0x00000000

+0110: 0x00000000   0x00000000   0x00000000   0x00000000

+0120: 0x00000000   0x00000000   0x00000000   0x00000000

+0130: 0x0049CB52   0x0049CB3A   0x0049CB3A   0x0031B000



--------------------------



Loaded Modules:

samp-server.exe	A: 0x00400000 - 0x00519000	(C:\Users\lJohh\Desktop\Corso v2\samp-server.exe)

ntdll.dll	A: 0x76EB0000 - 0x7703D000	(C:\Windows\SYSTEM32\ntdll.dll)

KERNEL32.DLL	A: 0x75490000 - 0x75525000	(C:\Windows\System32\KERNEL32.DLL)

KERNELBASE.dll	A: 0x73A50000 - 0x73C15000	(C:\Windows\System32\KERNELBASE.dll)

SHELL32.dll	A: 0x759D0000 - 0x76D18000	(C:\Windows\System32\SHELL32.dll)

msvcrt.dll	A: 0x755C0000 - 0x7567D000	(C:\Windows\System32\msvcrt.dll)

cfgmgr32.dll	A: 0x745C0000 - 0x745F9000	(C:\Windows\System32\cfgmgr32.dll)

ucrtbase.dll	A: 0x746B0000 - 0x747C8000	(C:\Windows\System32\ucrtbase.dll)

shcore.dll	A: 0x75530000 - 0x755BC000	(C:\Windows\System32\shcore.dll)

RPCRT4.dll	A: 0x75110000 - 0x751D7000	(C:\Windows\System32\RPCRT4.dll)

combase.dll	A: 0x75770000 - 0x759A8000	(C:\Windows\System32\combase.dll)

bcryptPrimitives.dll	A: 0x74490000 - 0x744E7000	(C:\Windows\System32\bcryptPrimitives.dll)

windows.storage.dll	A: 0x73DA0000 - 0x74324000	(C:\Windows\System32\windows.storage.dll)

advapi32.dll	A: 0x756F0000 - 0x75767000	(C:\Windows\System32\advapi32.dll)

sechost.dll	A: 0x74990000 - 0x749D1000	(C:\Windows\System32\sechost.dll)

shlwapi.dll	A: 0x750C0000 - 0x75105000	(C:\Windows\System32\shlwapi.dll)

GDI32.dll	A: 0x749E0000 - 0x74A01000	(C:\Windows\System32\GDI32.dll)

gdi32full.dll	A: 0x74330000 - 0x7448D000	(C:\Windows\System32\gdi32full.dll)

msvcp_win.dll	A: 0x74540000 - 0x745B9000	(C:\Windows\System32\msvcp_win.dll)

USER32.dll	A: 0x747D0000 - 0x74900000	(C:\Windows\System32\USER32.dll)

win32u.dll	A: 0x74690000 - 0x746AA000	(C:\Windows\System32\win32u.dll)

kernel.appcore.dll	A: 0x739E0000 - 0x739EE000	(C:\Windows\System32\kernel.appcore.dll)

powrprof.dll	A: 0x739F0000 - 0x73A35000	(C:\Windows\System32\powrprof.dll)

profapi.dll	A: 0x73A40000 - 0x73A50000	(C:\Windows\System32\profapi.dll)

WSOCK32.dll	A: 0x6D9B0000 - 0x6D9B8000	(C:\Windows\SYSTEM32\WSOCK32.dll)

WS2_32.dll	A: 0x75680000 - 0x756E7000	(C:\Windows\System32\WS2_32.dll)

WINMM.dll	A: 0x722D0000 - 0x722F4000	(C:\Windows\SYSTEM32\WINMM.dll)

WINMMBASE.dll	A: 0x72280000 - 0x722A3000	(C:\Windows\SYSTEM32\WINMMBASE.dll)

IMM32.DLL	A: 0x74900000 - 0x74926000	(C:\Windows\System32\IMM32.DLL)

MSVCP100.dll	A: 0x53090000 - 0x530F9000	(C:\Windows\SYSTEM32\MSVCP100.dll)

MSVCR100.dll	A: 0x52900000 - 0x529BF000	(C:\Windows\SYSTEM32\MSVCR100.dll)

mswsock.dll	A: 0x73390000 - 0x733E0000	(C:\Windows\system32\mswsock.dll)

napinsp.dll	A: 0x72360000 - 0x72371000	(C:\Windows\system32\napinsp.dll)

pnrpnsp.dll	A: 0x6F6F0000 - 0x6F706000	(C:\Windows\system32\pnrpnsp.dll)

NLAapi.dll	A: 0x70FA0000 - 0x70FB3000	(C:\Windows\system32\NLAapi.dll)

winrnr.dll	A: 0x721B0000 - 0x721BB000	(C:\Windows\System32\winrnr.dll)

DNSAPI.dll	A: 0x731D0000 - 0x7324F000	(C:\Windows\SYSTEM32\DNSAPI.dll)

NSI.dll	A: 0x74A10000 - 0x74A17000	(C:\Windows\System32\NSI.dll)

IPHLPAPI.DLL	A: 0x731A0000 - 0x731CF000	(C:\Windows\SYSTEM32\IPHLPAPI.DLL)

bcrypt.dll	A: 0x73630000 - 0x7364A000	(C:\Windows\SYSTEM32\bcrypt.dll)

rasadhlp.dll	A: 0x69D20000 - 0x69D28000	(C:\Windows\System32\rasadhlp.dll)

Проверка на высоту при выходе из самолёта/вертолёта

В античите на оружие есть проверка на высоту, когда игрок выходит из летательного средства, чтобы дать ему парашют. Так вот, при попытке сделать это над карьером в лв (либо в месте, где уровень земли ниже, чем -20 - -30 метров) на высоте примерно в 45 - 50 метров - парашют выдастся, проверка сработает ложно.
Нужно либо уменьшить это значение, либо убрать вообще, т.к. расчёт высоты, очевидно, идёт в зависимости от уровня земли до игрока, а не просто через фиксированное значение.

Кстати, почему бы не выложить эту защиту на форумы? :)
Некоторые античиты здесь реализованы довольно оригинально

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.