• Страница 1 из 1
  • 1
Модератор форума: admin  
Форум » Pawno » Анти-читы » pawno урок Анти превышение заданной скорости
pawno урок Анти превышение заданной скорости
adminДата: Пятница, 09.08.2013, 13:16:04 | Сообщение # 1

Группа: Администраторы
Сообщений: 3869
Преступим.
Код
#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;
}


zm-jail.ru

Разработка сайта samp-pawno.ru


 
СообщениеПреступим.
Код
#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;
}

Автор - admin
Дата добавления - 09.08.2013 в 13:16:04
nazar5632Дата: Вторник, 30.06.2015, 22:49:21 | Сообщение # 2

Группа: Пользователи
Сообщений: 1
а как сделать по команде, чтобы скорость стала 10км/ч?
 
Сообщениеа как сделать по команде, чтобы скорость стала 10км/ч?

Автор - nazar5632
Дата добавления - 30.06.2015 в 22:49:21
волф3Дата: Понедельник, 29.01.2018, 15:03:20 | Сообщение # 3

Группа: Пользователи
Сообщений: 4
А смысл выталкивать игрока из машины? Не все игроки могут так хорошо соблюдать скорость. Лучше выталкивание убрать и оставить только автоснижение скорости! Вот и тебе анти превышение!
 
СообщениеА смысл выталкивать игрока из машины? Не все игроки могут так хорошо соблюдать скорость. Лучше выталкивание убрать и оставить только автоснижение скорости! Вот и тебе анти превышение!

Автор - волф3
Дата добавления - 29.01.2018 в 15:03:20
Форум » Pawno » Анти-читы » pawno урок Анти превышение заданной скорости
  • Страница 1 из 1
  • 1
Поиск:
Загрузка страницы, займет меньше минуты...
Загрузка...

Статистика Форума
Последнии темы Читаемые темы Лучшие пользователи Новые пользователи
pawno урок автоматические ворота
обращение к скриптерам.
Услуги скриптинга и Так же MAP's
pawno(основым скриптинга для новичков)
Вопросы по скриптингу
Ваши ошибки при компиляции GM/FS
DistHost.Pro - это одна из начинающих компаний
[Продажа] Admin Panel System 1.3
Ищу команду разработчиков
Заказ шаблон
Вопрос
[Продажа] Battleground TDM

Вопросы по скриптингу

(1082)

Считаем до 1000

(274)

Ваши ошибки при компиляция gm

(260)

Набор в команду

(80)

Ваши ошибки при компиляции GM/FS

(72)

Баннеробмен

(64)

несколько команд на samp 0.3 c

(64)

вопроосы по скриптингу от 22.04.2013

(64)

Оценки сайта samp-pawno.ru

(55)

Заказ хостинга

(51)

Набор в команду(форум)

(45)

Урок №61 по созданию системы авто для GodFather

(45)

admin

(3869)

[east_side]_trane

(443)

TWiX

(316)

valych

(501)

drifter-dron

(477)

danik_rok

(317)

Dimka_71rus

(360)

Drifter96

(300)

MaNb9K

(220)

[MTA]MaPeR5518

(181)

Dima_Tkach

(107)

Nik_Ull

(184)

nikitos2004tukov

(Воскресенье 22:42:11)

Giovanni_Masini

(Воскресенье 09:08:42)

33pavlovkostya

(Пятница 09:23:23)

vporub

(Четверг 18:13:04)

nitrest03

(Вторник 22:40:39)

thebestdanceradio

(Вторник 18:57:33)

ovvf

(Понедельник 04:11:50)

gulajux

(Четверг 13:18:44)

serega7449

(Понедельник 18:56:35)

ezdackovmatvei

(Понедельник 15:51:17)

andreyzaytsev99

(Воскресенье 17:59:45)

rs-aka

(Воскресенье 14:06:37)

Вверх
12:56:39
ОбновитьСмайлыУправление мини-чатом
ЧАТ-PAWNO
2010-2018

vkontakte :samp-pawno.ru: