• Страница 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
Поиск:
Загрузка страницы, займет меньше минуты...
Загрузка...

Статистика Форума
Последнии темы Читаемые темы Лучшие пользователи Новые пользователи
Система телефонов поломалась
Не в себе
фильм скалайн
Трансформеры 3
форсаж 6
Ищу [FS]Для админок на сервер
нужны координаты карты для отметки зон...
Помогите найти мод
pawno урок автоматические ворота
обращение к скриптерам.
Вопросы по скриптингу
Ваши ошибки при компиляции GM/FS

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

(1081)

Считаем до 1000

(274)

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

(260)

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

(80)

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

(71)

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

(64)

Баннеробмен

(64)

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

(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)

system32xzxz

(Четверг 09:25:24)

torbin169

(Суббота 23:09:29)

kuchuk_00

(Суббота 17:10:14)

artem_boyko_3

(Суббота 15:57:37)

greggelbak

(Среда 18:29:37)

vladisvlavs

(Среда 13:51:57)

add02102002

(Понедельник 22:37:15)

Диман221

(Понедельник 18:12:45)

almas051004

(Воскресенье 11:05:32)

megasuccessms

(Суббота 14:15:36)

nawe

(Пятница 22:25:23)

swoysb

(Пятница 14:55:29)

Вверх
13:53:48
ОбновитьСмайлыУправление мини-чатом
ЧАТ-PAWNO
2010-2024

vkontakte :samp-pawno.ru: