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

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

  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Nex-AC Античит система Оценка: ***** 6 Голосов

Опрос: Nex-AC (57 пользователей проголосовало)Visualizar Votos

В каком направлении стоит развивать Nex-AC?

  1. * Защита от атак и крашеров (22 голосов [17.32%])

    Процент голосов: 17.32%

  2. * Защита от игровых читов (39 голосов [30.71%])

    Процент голосов: 30.71%

  3. * Защита от багов, дающих преимущество в игре (+c, slide-bug) (16 голосов [12.60%])

    Процент голосов: 12.60%

  4. * Защита от спама, рекламы, бранных слов и т.п. (12 голосов [9.45%])

    Процент голосов: 9.45%

  5. * Второстепенные возможности (дополнительные команды для админов и т.п.) (10 голосов [7.87%])

    Процент голосов: 7.87%

  6. * Оптимизация и исправление багов, усовершенствование сделанного (28 голосов [22.05%])

    Процент голосов: 22.05%

Голосовать Гости не могут голосовать

#391
Пользователь офлайн   PopcornRuuza 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияNexius (11 февраля 2022 - 16:24) писал:

Ложные срабатывания на какие именно действия?


Добавлением чего? В каком конкретно месте?


У меня присутствует функция подгрузки и создания авто из базы данных. Когда игрок садиться в один из таких автомобилей, то сразу же его кикает анти-чит с кодом 4. Если в конец данной функции добавить SetVehicleToRespawn(vehicleid); то проблема сразу пропадает.
0

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

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияPopcornRuuza (12 февраля 2022 - 17:07) писал:

У меня присутствует функция подгрузки и создания авто из базы данных. Когда игрок садиться в один из таких автомобилей, то сразу же его кикает анти-чит с кодом 4. Если в конец данной функции добавить SetVehicleToRespawn(vehicleid); то проблема сразу пропадает.

А каким образом создаётся это авто из бд? По логам античита выше игрок просто не нажимал/не отправлял нажатие enter'а до момента посадки, поэтому я не очень понимаю, как это связано.

Сообщение отредактировал Nexius: 12 февраля 2022 - 17:41

0

#393
Пользователь офлайн   PopcornRuuza 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияNexius (12 февраля 2022 - 17:39) писал:

А каким образом создаётся это авто из бд? По логам античита выше игрок просто не нажимал/не отправлял нажатие enter'а до момента посадки, поэтому я не очень понимаю, как это связано.


При загрузке игрового мода загружаются авто, у которых нет владельца:
mysql_tquery(dbHandle, "SELECT * FROM "T_CARS" WHERE `Owner` = 'None'", "@LoadVehicles", "");


Когда заходит игрок, то подгружаются авто, которые принадлежат ему:

gQuery[0] = EOS;
format(gQuery, sizeof(gQuery), "SELECT * FROM "T_CARS" WHERE `Owner` = '%s'", gPlayerName[playerid]);
mysql_tquery(dbHandle, gQuery, "@LoadVehicles", "");


Вот сама функция загрузки LoadVehicles:
@LoadVehicles(name[]);
@LoadVehicles(name[])
{
    new rows, id, time = GetTickCount();
    cache_get_row_count(rows);
    if(!rows) return 1;
	for(new i; i < rows; i++)
	{
		id = Iter_Free(TOTALCAR);
		LoadVehiclesData(i, id);
		if(IsASellCar(id))
		{
			CreateCar[id] = J_AddStaticVehicleEx(
				CarInfo[id][cModel],
				CarInfo[id][cPosX],
				CarInfo[id][cPosY],
				CarInfo[id][cPosZ],
				CarInfo[id][cPosA],
				CarInfo[id][cColor][0],
				CarInfo[id][cColor][1],
				60000, 
				CarInfo[id][cInt], 
				CarInfo[id][cWorld], 
				CarInfo[id][cFuel], 
				CarInfo[id][cMileage], 
				CarInfo[id][cNumber]
				);
			static const fmt_str[] = ""BL"Транспорт продается\n\n"W"Модель: "S"%s (%d)\n"W"Номер: \t"S"%d\n"W"Цена: {33aa33}%d$\n\n{AFAFAF}Для покупки сядьте в автомобиль";
			new car_text[sizeof(fmt_str) + 20 + 4 + 4 + 11];
			format(car_text,sizeof(car_text),fmt_str,VehStats[CarInfo[id][cModel]-400][
vName], CarInfo[id][cModel], id, CarInfo[id][cPrice]);
			CarText[id] = CreateDynamic3DTextLabel(car_text,-1,0,0,0.5,5.0,INVALID_PLAYER_ID,CreateCar[id]);
		}
		else
		{
			CreateCar[id] = J_AddStaticVehicleEx(
				CarInfo[id][cModel],
				CarInfo[id][cPosX],
				CarInfo[id][cPosY],
				CarInfo[id][cPosZ],
				CarInfo[id][cPosA],
				CarInfo[id][cColor][0],
				CarInfo[id][cColor][1],
				60000, 
				CarInfo[id][cInt], 
				CarInfo[id][cWorld], 
				CarInfo[id][cFuel], 
				CarInfo[id][cMileage], 
				CarInfo[id][cNumber]
				);
		}
		SetVehicleParamsEx(CreateCar[id], false, false, false, CarInfo[id][cLock] ? (true) : (false), false, false, false);
		LoadVehicleTuning(CreateCar[id]);
	}
    printf("[Загружено транспорта]: (%i). Потрачено: (%i ms).", Iter_Count(TOTALCAR), GetTickCount() - time);
    return 1;
}


Вот функция создания автомобиля J_AddStaticVehicleEx:

stock J_AddStaticVehicleEx(modelid, Float: X, Float: Y, Float: Z, Float: A, Color1, Color2, SpawnDelay, Int, World, Fuel, Mileage, Plate, Type = 0)
{
	new vehicleid = AddStaticVehicleEx(modelid, X, Y, Z, A, Color1, Color2, SpawnDelay);
	if(vehicleid == INVALID_VEHICLE_ID) return 0;
	VehicleInfo[vehicleid][vX] = X;
	VehicleInfo[vehicleid][vY] = Z;
	VehicleInfo[vehicleid][vZ] = Y;
	VehicleInfo[vehicleid][vA] = A;
	VehicleInfo[vehicleid][vFuel] = Fuel;
	VehicleInfo[vehicleid][vHealth] = 1000.0;
	VehicleInfo[vehicleid][vMileage] = Mileage;
	VehicleInfo[vehicleid][vType] = Type;
	VehicleInfo[vehicleid][vPlayer] = INVALID_PLAYER_ID;
	SetVehicleVirtualWorld(vehicleid, World);
	LinkVehicleToInterior(vehicleid, Int);
	SetVehicleNumberPlate(vehicleid, Plate);
	switch(modelid)
	{
		case 430, 446, 452, 453, 454, 472, 473, 484, 493, 595: VehicleState[vehicleid] = VEHICLE_STATE_BOAT;
		case 417, 425, 447, 460, 469, 476, 487, 488, 497, 511, 512, 513, 519, 520, 548, 553,
		563, 577, 592, 593:  VehicleState[vehicleid] = VEHICLE_STATE_PLANE;
		case 581, 522, 461, 521, 523, 463, 468, 471, 586: VehicleState[vehicleid] = VEHICLE_STATE_BIKE;
		case 509, 481, 510: VehicleState[vehicleid] = VEHICLE_STATE_VELIK;
		case 462, 448: VehicleState[vehicleid] = VEHICLE_STATE_MOPED;
		case 538, 537: VehicleState[vehicleid] = VEHICLE_STATE_TRAIN;
		default: VehicleState[vehicleid] = VEHICLE_STATE_CAR;
	}
	Iter_Add(valid_vehicles, vehicleid);
	return vehicleid;
}


Если в LoadVehicles добавить SetVehicleToRespawn, то при входе в транспорт игрока не выкидывает анти-читом с сервера с Кодом: 4.

Примечание: Выяснил что если подгружается транспорт без владельца (При загрузке игрового мода), то при входе в такой транспорт анти-чит не ругается, а если транспорт принадлежит игроку, то выкидывает анти-читом с сервера с Кодом: 4. Но стоит в LoadVehicles добавить SetVehicleToRespawn, то все проблемы исчезают, но по-сути и без SetVehicleToRespawn всё должно работать.

P.S.: Не знаю как выразить ещё мысль, вроде бы всё объяснил.
0

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

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияPopcornRuuza (13 февраля 2022 - 00:16) писал:

SetVehicleParamsEx(CreateCar[id], false, false, false, CarInfo[id][cLock] ? (true) : (false), false, false, false);


Мне кажется с заблокированными дверьми связано. Если они у транспорта залочены, то энтер игрока на водительское место как раз игнорируется для античита (пока не заэнтерит уже открытую).
0

#395
Пользователь офлайн   PopcornRuuza 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияNexius (13 февраля 2022 - 03:16) писал:

Мне кажется с заблокированными дверьми связано. Если они у транспорта залочены, то энтер игрока на водительское место как раз игнорируется для античита (пока не заэнтерит уже открытую).


Да, но стоит проверка на закрытый транспорт, даже если его открыть, то всё равно идёт срабатывание.
0

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

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Новая версия v1.9.59

Изменения:
* Улучшена защита от невалидных приаттаченных объектов
* Улучшена защита от невалидного урона (теперь есть проверки и для актёров)
* Добавлена блокировка невалидных выстрелов, о которых ранее сообщали в лог встроенные проверки сервера (при подключении Pawn.RakNet)
* Улучшен античит на телепорт трейлеров (при подключении Pawn.RakNet)

Исправления:
* Исправлена проблема с SetVehicleParamsForPlayer, когда античит не учитывал статус закрытости дверей у транспорта
* Исправлены возможные runtime ошибки, когда OnPlayerSelectedMenuRow и OnPlayerExitedMenu могли обрабатывать не до конца подключившегося игрока
* Мелкие исправления и улучшения

Актуальный пример настройки паблика OnCheatDetected в моде:

forward OnCheatDetected(playerid, ip_address[], type, code);
public OnCheatDetected(playerid, ip_address[], type, code)
{
    if(type) BlockIpAddress(ip_address, 0);
    else
    {
        switch(code)
        {
            case 5, 6, 11, 14, 22, 32: return 1;
            case 40: SendClientMessage(playerid, -1, MAX_CONNECTS_MSG);
            case 41: SendClientMessage(playerid, -1, UNKNOWN_CLIENT_MSG);
            default:
            {
                new strtmp[sizeof KICK_MSG];
                format(strtmp, sizeof strtmp, KICK_MSG, code);
                SendClientMessage(playerid, -1, strtmp);
            }
        }
        AntiCheatKickWithDesync(playerid, code);
    }
    return 1;
}

1

#397
Пользователь офлайн   PopcornRuuza 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияNexius (16 марта 2022 - 21:00) писал:

* Исправлена проблема с SetVehicleParamsForPlayer, когда античит не учитывал статус закрытости дверей у транспорта

Полностью подтверждаю, проблема ушла.
0

#398
Пользователь офлайн   punkochel 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Может уже где-то есть информация, но я не нашел. Будет ли форк под open.mp?
0

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

  • ( ^_^ )
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияpunkochel (20 июня 2022 - 10:04) писал:

Может уже где-то есть информация, но я не нашел. Будет ли форк под open.mp?


Он должен из коробки работать.
1

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

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияpunkochel (20 июня 2022 - 10:04) писал:

Может уже где-то есть информация, но я не нашел. Будет ли форк под open.mp?

А зачем именно форк? Поддержку можно было бы завести (если бы было что поддерживать) в основной релиз. Но, как уже выше написали, там всё и так работает. Поддержку вручную надо завозить под omp только мемхак плагинам и, по желанию, скриптам с emit'ами, чтобы те работали с флагом компиляции -O2, т.к. omp это поддерживает. Остальное в каких-либо изменениях практически не нуждается.

Сообщение отредактировал Nexius: 20 июня 2022 - 13:00

0

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


  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

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


Яндекс.Метрика