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

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

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

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

[FS] Anti-AirBrk

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

Эльдар

Умник
Античит против использования AirBrk в собейте и паралельно лже-телепорты.
>>>ОПИСАНИЕ<<<
Данный скрипт узнает если игрок использует чит AirBrk(собейт) либо любой подобный ему. Так же узнает если игрок читом телепортировался. Действует античит следующим образом: Если есть онлайн RCON - админ, то придет сообщение админу с именем игрока. А если нет админа онлайн, то игрока кикнет.

>>>Установка<<<
1. Разархивировать архив.
2. Скопировать файлы в соответствующие директории.
3. В моде сразу после #include <a_samp> вставить #include <d_antiairbrk> (Без этого могут быть ложные срабатывания)
4. Скомпилировать мод.
5. В конфиг сервера в строчку filterscripts добавить antiairbrk
Автор:Dima-kun

PHP:
// Действующий античит против Sobeit:airbrk by Dima-kun build:2000
// Вы можете делать с этим скриптом все что хотите кроме:
// 1. Нельзя продавать его.
#include < a_samp >

forward onCheckAirBrk( playerid );
forward t_SetPlayerPos( playerid, Float:x, Float:y, Float:z );
enum pinfo
{
	Float: pPos_x,
	Float: pPos_y,
	Float: pPos_z,
	bool:pTeleport,
	airbrake,
	pCurrentCar,
	pInt
}new PlayerInfo[ MAX_PLAYERS ][ pinfo ];

public OnFilterScriptInit( )
{
	print( "[FS] Anti-AirBrk by Dima-kun is loaded" );
	return 1;
}
public OnPlayerConnect( playerid )
{
    SetTimerEx( "onCheckAirBrk", 1000, false, "i", playerid );
	return 1;
}
public OnPlayerSpawn( playerid )
{
    PlayerInfo[ playerid ][ pTeleport ] = true;
    PlayerInfo[ playerid ][ airbrake ] = 0;
	return 1;
}
public OnPlayerInteriorChange( playerid, newinteriorid, oldinteriorid )
{
	PlayerInfo[ playerid ][ pTeleport ] = true;
	PlayerInfo[ playerid ][ airbrake ] = 0;
 	printf( "%i,%i,%i, %b",playerid, newinteriorid, oldinteriorid, PlayerInfo[ playerid ][ pTeleport ] );
	return 1;
}
public OnPlayerStateChange( playerid, newstate, oldstate )
{
	if( newstate == PLAYER_STATE_DRIVER )PlayerInfo[ playerid ][ pCurrentCar ] = GetPlayerVehicleID( playerid );
	return 1;
}
public t_SetPlayerPos( playerid, Float:x, Float:y, Float:z )
{
	SetPlayerPos( playerid, x, y, z );
	PlayerInfo[ playerid ][ airbrake ] = 0;
	PlayerInfo[ playerid ][ pTeleport ] = true;
	return 1;
}
public onCheckAirBrk( playerid )
{
	if( IsPlayerConnected( playerid ) )
	{
		new string[ 128 ],
			speed = GetPlayerSpeed( playerid, true ),
			Float:currentPos[ 3 ],
			Float:distance,
			currentInt = GetPlayerInterior( playerid );
		GetPlayerPos( playerid, currentPos[ 0 ], currentPos[ 1 ], currentPos[ 2 ] );
		if(speed < 30)
		{
		    distance = floatround( GetPlayerDistanceFromPoint( playerid, PlayerInfo[ playerid ][ pPos_x ], PlayerInfo[ playerid ][ pPos_y ], PlayerInfo[ playerid ][ pPos_z] ) );
			if( distance > 100 && PlayerInfo[ playerid ][ pTeleport ] == false )
			{
			    if( PlayerInfo[ playerid ][ airbrake ] < 1 )PlayerInfo[ playerid ][ airbrake ]++;
			    else
			    {
			        PlayerInfo[ playerid ][ airbrake ] ++;
			        if( PlayerInfo[ playerid ][ airbrake ] > 2 )
			        {
						if( IsAdminsOnline() )
						{
							format(string,sizeof( string ), "[Античит]: %s использует собейт(Airbrk).", getName( playerid ) );
							SendMessageToAdmins( 0xff0000ff, string );
							print( string );
						}
						else
						{
							SendClientMessage( playerid, 0xff0000ff,"Вы были кикнуты за использование читов( AirBrk )" );
							format(string,sizeof( string ), "[Античит]: %s использовал собейт(Airbrk).", getName( playerid ) );
							print( string );
							Kick( playerid );
						}
					}
				}
			}
  		}
		PlayerInfo[ playerid ][ pPos_x ] = currentPos[ 0 ];
		PlayerInfo[ playerid ][ pPos_y ] = currentPos[ 1 ];
		PlayerInfo[ playerid ][ pPos_z ] = currentPos[ 2 ];
		PlayerInfo[ playerid ][ pInt ] = currentInt;
		PlayerInfo[ playerid ][ pTeleport ] = false;
		SetTimerEx( "onCheckAirBrk", 1000, false, "i", playerid );
	}
}
stock getName( const playerid )
{
	new pname[ MAX_PLAYER_NAME ];
	GetPlayerName( playerid, pname, sizeof( pname ) );
	return pname;
}
stock SendMessageToAdmins( const color, const string[] )
{
	for( new i = GetMaxPlayers(); i >= 0; i-- )
	    if( IsPlayerConnected( i ) && IsPlayerAdmin( i ) )SendClientMessage( i, color, string );
	return 1;
}
stock GetPlayerSpeed(const playerid, bool: check3d)
{
	new Float: coord[ 3 ];
	if( IsPlayerInAnyVehicle( playerid ) )
		GetVehicleVelocity( PlayerInfo[ playerid ][ pCurrentCar ], coord[ 0 ], coord[ 1 ], coord[ 2 ] );
	else
		GetPlayerVelocity( playerid, coord[ 0 ], coord[ 1 ], coord[ 2 ] );
	return floatround( floatsqroot( ( check3d ) ? ( coord[ 0 ]*coord[ 0 ] + coord[ 1 ]*coord[ 1 ]+coord[ 2 ]*coord[ 2 ]) : ( coord[ 0 ]*coord[ 0 ] + coord[ 1 ]*coord[ 1 ] ) )*100.0*1.6 );
}
stock IsAdminsOnline()
{
	for( new i = GetMaxPlayers(); i >= 0; i-- )
	    if( IsPlayerConnected( i ) && IsPlayerAdmin( i ) )return 1;
	return 0;
}
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу