Анти превышение заданной скорости
:: Pawno скриптинг :: Pawno School :: Анти-читы
Страница 1 из 1
Анти превышение заданной скорости
Преступим.
Если у вас есть повторяющейся таймер на 1 секунду, то следующий код надо вставить туда, если нет то в паблик OnGameModeInit()
Тут я тоже придумал 2 варианта.
Содержание паблика:
1 Вариант.
2 Вариант.
Думаю содержимое паблика всем будет понятно. Все функции очень известны и очень просты в применении.
Тут есть нестандартная функция, получения скорости машины.
- Код:
#define MAX_SPEED 100// Максимально допустимая скорсть (ещё можно создать переменной для изменения в процессе игры)
new Warnings[MAX_PLAYERS];//Глобальная переменная, отвечающая за предупреждения
Если у вас есть повторяющейся таймер на 1 секунду, то следующий код надо вставить туда, если нет то в паблик OnGameModeInit()
- Код:
SetTimer("UpdatePlayersSpeed",1000,true);//Создадим таймер на 1 секунду, работающий с повторением
Тут я тоже придумал 2 варианта.
Содержание паблика:
1 Вариант.
- Код:
forward UpdatePlayersSpeed();
public UpdatePlayersSpeed()
{
new Float:X,Float:Y,Float:Z,str[128];
for(new i; i < GetMaxPlayers(); i++)
{
if(!IsPlayerConnected(i)) continue;
if(IsPlayerInAnyVehicle(i) && GetVehicleSpeed(i) > MAX_SPEED)
{
if(Warnings[i] > 3)
{
RemovePlayerFromVehicle(i);
Warnings[i] = 0;
SendClientMessage(i,0xF60000AA,"Вы набрали больше {FFFFFF}трех {F60000}предупреждений! Будеть добры покинуть машину!");
}
else
{
Warnings[i]++;
format(str,sizeof(str),"Превышение скорости зафиксировано ({FFFFFF}%.1f km/h{F60000}). Ваша скорость сброшана!",GetVehicleSpeed(i));
SendClientMessage(i,0xF60000AA,str);
format(str,sizeof(str),"~r~Warning ~w~%d",Warnings[i]);
GameTextForPlayer(i,str,1500,1);
GetPlayerPos(i,X,Y,Z);
SetVehiclePos(GetPlayerVehicleID(i),X,Y,Z);
}
}
}
return 1;
}
2 Вариант.
- Код:
forward UpdatePlayersSpeed();
public UpdatePlayersSpeed()
{
new Float:X,Float:Y,Float:Z,str[128];
for(new i; i < GetMaxPlayers(); i++)
{
if(!IsPlayerConnected(i)) continue;
if(IsPlayerInAnyVehicle(i) && GetVehicleSpeed(i) > MAX_SPEED)
{
if(Warnings[i] > 3)
{
RemovePlayerFromVehicle(i);
Warnings[i] = 0;
SendClientMessage(i,0xF60000AA,"Вы набрали больше {FFFFFF}трех {F60000}предупреждений! Будеть добры покинуть машину!");
}
else
{
Warnings[i]++;
format(str,sizeof(str),"Превышение скорости зафиксировано ({FFFFFF}%.1f km/h{F60000}). Ваша скорость сброшана!",GetVehicleSpeed(i));
SendClientMessage(i,0xF60000AA,str);
format(str,sizeof(str),"~r~Warning ~w~%d",Warnings[i]);
GameTextForPlayer(i,str,1500,1);
GetVehicleVelocity(GetPlayerVehicleID(i),X,Y,Z);
SetVehicleVelocity(GetPlayerVehicleID(i),X*0.1,Y*0.1,Z);//Снижаем скорость плавнее чем в 1 варианте.
}
}
}
return 1;
}
Думаю содержимое паблика всем будет понятно. Все функции очень известны и очень просты в применении.
Тут есть нестандартная функция, получения скорости машины.
- Код:
forward Float:GetVehicleSpeed(playerid);
stock Float:GetVehicleSpeed(playerid)
{
new Float:Pos[3];
GetVehicleVelocity(GetPlayerVehicleID(playerid),Pos[0],Pos[1],Pos[2]);
return floatsqroot(Pos[0] * Pos[0] + Pos[1] * Pos[1] + Pos[2] * Pos[2]) * 140.0;
}
Ulkiorra- Сообщения : 30
Репутация : 1
Дата регистрации : 2012-08-10
:: Pawno скриптинг :: Pawno School :: Анти-читы
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения