[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
[Античит]Anti-AirBrk
vertДата: Среда, 28.11.2012, 19:54 | Сообщение # 1
PAWN
Группа: Пользователь
Сообщений: 422
Статус: Offline
Античит против использования AirBrk в собейте и паралельно лже-телепорты.
>>>ОПИСАНИЕ<<<
Данный скрипт узнает если игрок использует чит AirBrk(собейт) либо любой подобный ему. Так же узнает если игрок читом телепортировался. Действует античит следующим образом: Если есть онлайн RCON - админ, то придет сообщение админу с именем игрока. А если нет админа онлайн, то игрока кикнет.
Code
// Действующий античит против 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;
}  

Автор:Dima-kun
 
vesselovДата: Пятница, 31.05.2013, 23:03 | Сообщение # 2
Прохожий
Группа: Пользователь
Сообщений: 1
Статус: Offline
не выводит сообщение типа вы были кикнуты по подозрению....
 
[Re]Ak[T0R]Дата: Суббота, 01.06.2013, 08:43 | Сообщение # 3
I love Anime ^,,^
Группа: Проверенный
Сообщений: 5
Статус: Offline
Цитата (vesselov)
не выводит сообщение типа вы были кикнуты по подозрению....
Это не в коде дело, походу что то разработчики сампа сделали - и теперь перед киком/баном нельзя вывести текст.
 
vertДата: Суббота, 01.06.2013, 10:33 | Сообщение # 4
PAWN
Группа: Пользователь
Сообщений: 422
Статус: Offline
Цитата ([Re)
Ak[T0R]]Это не в коде дело, походу что то разработчики сампа сделали - и теперь перед киком/баном нельзя вывести текст.
Да, это баг 0.3x RC 1-2 все след версий сампа все исправят.


Skype: avg.kazax
VK: vk.com/ukazax
 
Steep_NkДата: Пятница, 04.10.2013, 16:20 | Сообщение # 5
Прохожий
Группа: Пользователь
Сообщений: 37
Статус: Offline
forward KickPublic(playerid);
public KickPublic(playerid) Kick(playerid);

stock KickWithMessage(playerid, color, message[])
{
SendClientMessage(playerid, color, message);
SetTimerEx("KickPublic", 1000, 0, "d", playerid);
}




Сообщение отредактировал Steep_Nk - Пятница, 04.10.2013, 16:21
 
nizomДата: Понедельник, 24.03.2014, 10:25 | Сообщение # 6
Прохожий
Группа: Пользователь
Сообщений: 1
Статус: Offline
куда поставить эти коды???
 
vertДата: Понедельник, 24.03.2014, 11:21 | Сообщение # 7
PAWN
Группа: Пользователь
Сообщений: 422
Статус: Offline
Цитата nizom ()
куда поставить эти коды???
Вставь этот код в скрипт и скомпилируй.


Skype: avg.kazax
VK: vk.com/ukazax
 
Pasha-SytnikДата: Четверг, 18.06.2015, 15:54 | Сообщение # 8
Прохожий
Группа: Пользователь
Сообщений: 1
Статус: Offline
Не понел подскажи ище раз куда это вставить biggrin
 
sammanymakersДата: Суббота, 20.06.2015, 12:44 | Сообщение # 9
Прохожий
Группа: Журналист Pro
Сообщений: 4
Статус: Offline
vert
Цитата Pasha-Sytnik ()
Не понел подскажи ище раз куда это вставить biggrin
Вставь этот код в скрипт и скомпилируй. mail
 
  • Страница 1 из 1
  • 1
Поиск: