[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
[Античит]Anti-AirBrk
GameR_SaHekДата: Вторник, 11.06.2013, 14:42 | Сообщение # 1
Группа: Пользователи
Сообщений: 22
Репутация: 32767
Античит против использования AirBrk в собейте и паралельно лже-телепорты. 
>>>ОПИСАНИЕ<<< 
Данный скрипт узнает если игрок использует чит AirBrk(собейт) либо любой подобный ему. Так же узнает если игрок читом телепортировался. Действует античит следующим образом: Если есть онлайн RCON - админ, то придет сообщение админу с именем игрока. А если нет админа онлайн, то игрока кикнет. 

Код
// Действующий античит против 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;  
}



  • Страница 1 из 1
  • 1
Поиск: