Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Настройка анти-чита Nex-Ac (Не получается ввести запреты, и ещё кое-что..)

Статус
В этой теме нельзя размещать новые ответы.

tookieWookie

Ученик
Здравствуйте.

В общем, вчера пытался поставить анти-чит nex-ac, но нечего не вышло. Точнее, поставить я его поставил, он работает, всё хорошо.

Проблема в том, что кикает при выходе из интерьера, кикает админов, кикает при телепорта по метке на карте (от админа), id's читеров не заносятся в ППЧ(само собой). И ещё много каких мелких бед было, но благо, хватило ума настроить.

Задал вопрос создателю анти-чита: Как поставить проверку на админку, как сделать так, чтобы выводило id's читеров в ППЧ вместо кика, он мне ответил следующее:

1. Изменение наказания можно сделать через OnCheatDetected, предварительно его объявив в моде (см. раздел "Функции" в описании)
2. Кстати, если нужно просто отключить некоторые античиты для админов, можно воспользоваться EnableAntiCheatForPlayer

PHP:
EnableAntiCheatForPlayer(playerid, acid, enable)
 Используйте для включения/отключения одного из античитов для конкретного игрока
 playerid - ID игрока, которому необходимо включить/отключить античит
 acid - ID античита
 enable - 1 для включения/0 для выключения
PHP:
public OnCheatDetected(playerid, ip_address[], type, code)
 Вызывается, когда сработал один из античитов
 playerid - ID нарушителя
 ip_address[] - IP-адрес нарушителя
 type - тип нарушения (при 0 возвращает ID, при 1 - IP)
 code - Код (ID) античита

Вся суть проблемы: Я не могу настроить анти-чит, адаптировать его под свой мод так сказать что-ли..

PHP:
enum chInfo
{
	chID1
}
new Float:CheatInfo[15][chInfo];
new Cheat1;
new Text:CheatText[15];
PHP:
new Float:DrawPos = 25.000000;
	Cheat1 = 0;
	for(new i; i < 15; i++)
	{
		if(i > 0) DrawPos += 30.0;
		CheatText[i] = TextDrawCreate(DrawPos, 428.000000, "-1");
		TextDrawColor(CheatText[i], 0xEF8100FF);
		TextDrawFont(CheatText[i], 1);
		TextDrawSetOutline(CheatText[i], 1);
		TextDrawLetterSize(CheatText[i], 0.3500, 1.270);
	}
PHP:
for(new i; i < 15; i++)
	{
	    if(CheatInfo[i][chID1] == playerid)
		{
			TextDrawSetString(CheatText[i], "-1");
			Cheat1 ++;
			if(Cheat1 > 14) Cheat1 = 0;
		}
 	}
PHP:
stock AddCheater(playerid)
{
	new str[15];
    for(new i; i < 15; i++)
	{
	   if(CheatInfo[i][chID1] == playerid) return 0;
	}
	CheatInfo[Cheat1][chID1] = playerid;
	format(str, sizeof(str), "%d", playerid);
	TextDrawSetString(CheatText[Cheat1], str);
	Cheat1 ++;
	if(Cheat1 > 14) Cheat1 = 0;
	return 1;
}


Я вас очень прошу, помогите мне с кодом, знаний не хватает, а очень нужно :(

***Если вдруг нужно, дефолтные анти-читы, то-есть вшитые в мод.
PHP:
/* Античиты */
new bool:StartGMTest[MAX_PLAYERS];
new bool:slotUsed[MAX_PLAYERS char];
new bool:ac_1[MAX_PLAYERS char];
new WeaponTime[MAX_PLAYERS];
new RapidFire[MAX_PLAYERS];
new playersIP[MAX_PLAYERS][64];
new PlayerBrake[MAX_PLAYERS];
new Float:AC_Air_Player[MAX_PLAYERS][3];
new AC_Air_Time[MAX_PLAYERS];
new Float:AC_Air_Car[MAX_PLAYERS][3];
new Float:AC_Velocity_Air_Car[MAX_PLAYERS][3];
new AC_Air_Time_Car[MAX_PLAYERS];
new Float:AC_Speed_Car[MAX_PLAYERS];
new Float:AC_Speed_Car_1[MAX_PLAYERS];
new Float:AC_Speed_Car_C[MAX_PLAYERS][3];
new Float:VehiclePos[MAX_VEHICLES][3];
new AC_GunCheattime[MAX_PLAYERS];
new PlayerEnterTime[MAX_PLAYERS];
/* Античиты Конец */
PHP:
stock CheatKick(playerid,errorcode)
{
	if(playerid == INVALID_PLAYER_ID) return 1;
	new string[128];
	if(PI[playerid][pAdmin] != ADM_NONE)
	{
	    format(string, sizeof(string), "[A] Античит попытался Вас кикнуть {F04245}(ac-code %d)", errorcode);
		SendClientMessage(playerid, COLOR_GREY, string);
		return 1;
	}
	if(errorcode != 0)
	{
	    format(string, sizeof(string), "Обнаружено использование чит-программ {F04245}(ac-code %d)", errorcode);
		SendClientMessage(playerid, COLOR_ORANGE, string);
		Kick(playerid);
	}
	else Kick(playerid);
	return 1;
}
PHP:
// AIRBRAKE
            new carid = GetPlayerVehicleID(i);
            if(IsPlayerInVehicle(i, carid) && GetPlayerState(i) == PLAYER_STATE_DRIVER)
            {
                new Float:X, Float:Y, Float:Z, Float:distveh = floatround(GetVehicleDistanceFromPoint(carid, VehiclePos[carid][0], VehiclePos[carid][1], VehiclePos[carid][2]));
                GetVehiclePos(carid, X, Y, Z);
                if(distveh > 100 && GetPVarInt(i, "AntiBreik") == 0 && PI[i][pAFK] < 3 && PI[i][pAdmin] == ADM_NONE && !IsAPlane(GetPlayerVehicleID(i)))
				{
					PlayerBrake[i]++;
					if(PlayerBrake[i] > 4) AddCheater(i);
				}
				else if(PlayerBrake[i] > 0) PlayerBrake[i]--;
                if(GetVehicleSpeed(carid) > 15)
                {
                    VehiclePos[carid][0] = X;
                    VehiclePos[carid][1] = Y;
                    VehiclePos[carid][2] = Z;
                }
            }
            else
            {
                new Float:X, Float:Y, Float:Z, Float:distpl = floatround(GetPlayerDistanceFromPoint(i, PI[i][pPos][0], PI[i][pPos][1], PI[i][pPos][2]));
                GetPlayerPos(i, X, Y, Z);
                if(distpl > 60 && GetPVarInt(i, "AntiBreik") == 0 && PI[i][pAFK] < 3 && PI[i][pAdmin] == ADM_NONE)
				{
					PlayerBrake[i]++;
					if(PlayerBrake[i] > 6) AddCheater(i);
				}
				else if(PlayerBrake[i] > 0) PlayerBrake[i]--;
                if(GetPlayerSpeed(i) > 0)
				{
					PI[i][pPos][0] = X;
					PI[i][pPos][1] = Y;
					PI[i][pPos][2] = Z;
				}
            }
			
			// SPEEDHACK
            if(!IsPlayerNPC(i) && GetPVarInt(i,"AC_Protection") == 1)
	        {
                if(IsPlayerInAnyVehicle(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER && !IsAPlane(GetPlayerVehicleID(i)))
		        {
                    GetVehicleVelocity(GetPlayerVehicleID(i), AC_Speed_Car_C[i][0], AC_Speed_Car_C[i][1], AC_Speed_Car_C[i][2]);
                    AC_Speed_Car[i] = floatround(floatsqroot(AC_Speed_Car_C[i][0] * AC_Speed_Car_C[i][0] + AC_Speed_Car_C[i][1] * AC_Speed_Car_C[i][1] + AC_Speed_Car_C[i][2] * AC_Speed_Car_C[i][2]) * 200.0);
                    if((AC_Speed_Car[i] - AC_Speed_Car_1[i])>100)
			        {
                        if(GetPlayerState(i) != PLAYER_STATE_SPECTATING && PI[i][pAFK] < 3 && PI[i][pAdmin] == ADM_NONE)
				        {
		                    AddCheater(i);
                        }
                    }
                    else AC_Speed_Car_1[i] = AC_Speed_Car[i];
                }
            }
            
            PI[i][pAFK]++;
			if(PI[i][pAFK] >= 3)
			{
				new temp[64];
				format(temp, sizeof(temp), "Игрок на паузе: %s", Converts(PI[i][pAFK]));
				SetPlayerChatBubble(i, temp, COLOR_YELLOW, 10.0, 1600);
			}
			if(PI[i][pAFK] == 1200 && !PI[i][pAdmin])
			{
				SendClientMessage(i, COLOR_RED, "Вы были кикнуты т.к были долгое время в АФК");
				SKick(i, 1828);
			}
			
			if(PI[i][Spectating][1] != INVALID_PLAYER_ID)
			{
				new str[300];
				new Float:values[3];
				GetPlayerHealth(PI[i][Spectating][0], values[0]);
				GetPlayerArmour(PI[i][Spectating][0], values[1]);
				GetVehicleHealth(GetPlayerVehicleID(PI[i][Spectating][0]), values[2]);
				format(str, sizeof(str), "%s~n~ID: %d~n~Ping: %d~n~HP: %.1f~n~Armour: %.1f~n~Speed: %d~n~CarHP: %.1f~n~Ammo: %i:%i~n~Warns: %d~n~Cash: %d",
				GetName(PI[i][Spectating][0]), PI[i][Spectating][0], GetPlayerPing(PI[i][Spectating][0]),
				values[0], values[1], SpeedVehicle(PI[i][Spectating][0]) / 2, values[2],
				GetPlayerWeapon(PI[i][Spectating][0]), GetPlayerAmmo(PI[i][Spectating][0]),
				PI[PI[i][Spectating][0]][pWarn], PI[PI[i][Spectating][0]][pCash]);
				PlayerTextDrawSetString(PI[i][Spectating][1], PI[PI[i][Spectating][1]][SpecTxt], str);
			}

Я бы даже заплатил..
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу