[Доработка] Anti Car Jack
#1

Финальная рабочая версия! Используйте на здоровье
Разработка/Модификации: stepmex, Raen

pawn Code:
#include <a_samp>

new key[MAX_PLAYERS];

public OnFilterScriptInit()
{
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

public OnPlayerConnect(playerid)
{
      key[playerid] = INVALID_VEHICLE_ID;
    return 1;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
      key[playerid] = vehicleid;
    return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(oldkeys != KEY_SECONDARY_ATTACK && newkeys == 0 && key[playerid] != INVALID_VEHICLE_ID && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)key[playerid] = INVALID_VEHICLE_ID;
    if(key[playerid] != GetPlayerVehicleID(playerid) && IsPlayerInAnyVehicle(playerid) && key[playerid] != INVALID_VEHICLE_ID)
      {
      new string[128];
      GetPlayerName(playerid,string,MAX_PLAYER_NAME);
      format(string, sizeof(string), "%s кикнут с сервера, причина: ТелепортХак",string);
      SendClientMessageToAll(0xAA3333AA, string);
      Kick(playerid);
      }
    return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if((newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER))
{
  if(key[playerid] != GetPlayerVehicleID(playerid))
  {
   new string[128];
   GetPlayerName(playerid,string,MAX_PLAYER_NAME);
   format(string, sizeof(string), "%s кикнут с сервера, причина: ТелепортХак",string);
   SendClientMessageToAll(0xAA3333AA, string);
   Kick(playerid);
  }
  return 1;
}
if((oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER) && key[playerid] != INVALID_VEHICLE_ID)key[playerid] = INVALID_VEHICLE_ID;
return 1;
}
Reply
#2

Это не Car Teleport а Car Jack
Reply
#3

Quote:
Originally Posted by Fro1sha
Это не Car Teleport а Car Jack
Хотя я и не согласен что это Car Jack , но суть не в этом... Почему он глючит и как это пофиксить
Reply
#4

pawn Code:
if(newstate == PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_DRIVER)
{
PlayerInVehicle[playerid] = 0;
}
Че за бред, ни когда это условие не выполнится


Не кикай игрока, а выгоняй из тачки RemovePlayerFromVehicle
Reply
#5

Quote:
Originally Posted by Fro1sha
pawn Code:
if(newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_DRIVER)
{
PlayerInVehicle[playerid] = 0;
}
Че за бред, ни когда это условие не выполнится


Не кикай игрока, а выгоняй из тачки RemovePlayerFromVehicle
Ты я смотрю вообще кода не понял... Что странного в проверке: if(newstate == PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_DRIVER) Плз если ты в скриптинге плохо разбираешься, то не пиши плз, дабы не разводить флуд.
Reply
#6

Quote:
Originally Posted by RAEN
Ты я смотрю вообще кода не понял... Что странного в проверке: if(newstate == PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_DRIVER) Плз если ты в скриптинге плохо разбираешься, то не пиши плз, дабы не разводить флуд.
то что новое состояние и старое никогда не могут быть одинаковыми!
Помойму ты в скриптинге меньше него разбираешься если задаешь такие вопросы!
Reply
#7

Quote:
Originally Posted by stepmex
Quote:
Originally Posted by RAEN
Ты я смотрю вообще кода не понял... Что странного в проверке: if(newstate == PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_DRIVER) Плз если ты в скриптинге плохо разбираешься, то не пиши плз, дабы не разводить флуд.
то что новое состояние и старое никогда не могут быть одинаковыми!
Помойму ты в скриптинге меньше него разбираешься если задаешь такие вопросы!
Все терь увидел, там должно стоять PLAYER_STATE_ONFOOT...это моя очепятка, извиняюсь (ща исправлю) Ну все равно он думает что это против воровста маашин код
Reply
#8

Quote:
Originally Posted by RAEN
там должно стоять PLAYER_STATE_ONFOOT...
в воде не будет работать, там новое состояние не ...ONFOOT, или если я здохну за рулем.
Reply
#9

Quote:
Originally Posted by stepmex
Quote:
Originally Posted by RAEN
там должно стоять PLAYER_STATE_ONFOOT...
в воде не будет работать, там новое состояние не ...ONFOOT, или если я здохну за рулем.
Эх если бы он глючил из за этого Жаль кстати что нет проверки н асостояние в воде.
Code:
Тогда просто:
if(oldstate == PLAYER_STATE_DRIVER)
{
PlayerInVehicle[playerid] = 0;
}
он глючит именно на действии
Code:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
PlayerInVehicle[playerid]=1;
return 1;
}
Может кто знает способ как можно сесть в машину (легальным путем и именно водителем) не задействуя OnPlayerEnterVehicle
Reply
#10

Code:
5 Player enters a vehicle as driver
6 Player enters a vehicle as passenger
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)