Как сделать спидометр павно

Как сделать спидометр павно

В основном, после освоения азов систем регистраций, перед новичком(который только-только начинает писать СВОИ моды), стоит задача сделать функциональный, рабочий спидометр. Чаще всего возникает вопрос «как же сделать его»? Так вот, я заметил, большинство тем содержат в себе либо текстдравы(рисунок) либо функцию, но я почти не замечал где же обучение, за что отвечает та или иная строчка. Естественно расписывать очень подробно, всегда не легко, в любом случае я постараюсь уместить всю полезную информацию в один урок.

И так, для начала, необходимо будет придумать стиль спидометра, его дизайн. Если вы раньше не знали, то спидометры и прочую красивую ерунду, рисуют пользуясь текстдравами. Так вот очень удобно «рисовать» спидометры и т.д в IpleoMax Textdraw Editor, у него понятный интерфейс, также вам не придется по долгу возится с позициями и размерами текстдравов, поищите тему на форуме!

Нарисовав спидометр, нам необходимо создать текстдравы, я выбрал весьма простой дизай для своего спидометра:
Как сделать спидометр павно

Приступим же к скриптовому исполнению задуманного!

Для начала для нарисованных текстдравов, необходимо создать переменные:

Переменные созданы, теперь создадим функции для создания самих текстдравов!

в OnGameModeInit закинем:

Теперь нам надо сделать так, чтобы игрок который сел в машину на место водителя, видел спидометр
За изменение позиции игрока относительно штата, отвечает паблик OnPlayerStateChange, закинем код туда:

if(newstate == PLAYER_STATE_DRIVER)
<
if(!noeng(GetPlayerVehicleID(playerid)))
<
new v = GetPlayerVehicleID(playerid);
VehicleInfo[v][vFuel] = 50.0;
GetPlayerPos(playerid, VehicleInfo[v][vPosx],VehicleInfo[v][vPosy],VehicleInfo[v][vPosz]);
TextDrawShowForPlayer(playerid, SBox);
TextDrawShowForPlayer(playerid, SBox1);
PlayerTextDrawShow(playerid, CarSpeed[playerid]);
PlayerTextDrawShow(playerid, CarFuel[playerid]);
PlayerTextDrawShow(playerid, CarMilliage[playerid]);
PlayerTextDrawShow(playerid, CarLights[playerid]);
PlayerTextDrawShow(playerid, CarEngine[playerid]);
SpeedTimer[playerid] = SetTimerEx(«UpdateSpeed»,200,1,»d»,playerid);
return 1;
>
>
if(oldstate == PLAYER_STATE_DRIVER)
<
TextDrawHideForPlayer(playerid, SBox);
TextDrawHideForPlayer(playerid, SBox1);
PlayerTextDrawHide(playerid, CarSpeed[playerid]);
PlayerTextDrawHide(playerid, CarFuel[playerid]);
PlayerTextDrawHide(playerid, CarMilliage[playerid]);
PlayerTextDrawHide(playerid, CarLights[playerid]);
PlayerTextDrawHide(playerid, CarEngine[playerid]);
KillTimer(SpeedTimer[playerid]);
return 1;
>

Источник

SamPawno

Спидометр

Описание: Готовые решения скриптов, filterScript
Модератор: SJplayer

#1 LILUS » 6 ноября 2014, 21:06

Как сделать спидометр павно

new Text : Speed [ MAX_PLAYERS ][ 3 ];

public OnPlayerUpdate ( playerid )
<
if( GetPlayerState ( playerid ) == 2 )
<
SetSpeedDel ( playerid );
SetSpeedPok ( playerid );
>
return 1 ;
>

stock SetSpeedDel ( playerid )
<
switch( SpeedVehicle ( playerid ))
<
case 0..9 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

I» );
case 10..14 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

II» );
case 15..19 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

III» );
case 20..24 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIII» );
case 25..29 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIII» );
case 30..34 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIII» );
case 35..39 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIII» );
case 40..44 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIII» );
case 45..49 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIII» );
case 50..59 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIII» );
case 60..64 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIII» );
case 65..69 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIII» );
case 70..79 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIII» );
case 80..89 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIIII» );
case 90..99 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIIIII» );
case 100..109 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIIIIII» );
case 110..119 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIIIIIII» );
case 120..129 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIIIIIIII» );
case 130..139 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIIIIIIIII» );
case 140..149 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIIIIIIIIII» );
case 150..164 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIIIIIIIIIII» );
case 165..174 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIIIIIIIIIIII» );
case 175..189 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIIIIIIIIIIIII» );
case 190..199 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIIIIIIIIIIIIII» );
case 200..209 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIIIIIIIIIIIIIII» );
case 210..219 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIIIIIIIIIIIIIIII» );
case 220..229 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIIIIIIIIIIIIIIIII» );
case 230..239 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIIIIIIIIIIIIIIIIII» );
case 240..249 : TextDrawSetString ( Speed [ playerid ][ 0 ], «

IIIIIIIIIIIIIIIIIIIIIIIIIIIII» );
default: TextDrawSetString ( Speed [ playerid ][ 0 ], «

Источник

Как сделать спидометр павно

Вообщем проблема со спидометром такова, когда тестировал его один то он работал, как залил на основу и начали коннектиться игроки то он начал пропадать вместе с логотипом сервера

В сток SetPlayerSpawn

И наконец-то в конец мода

Ну и естественно в public добавляем функционал
В OnPlayerStateChange

Как сделать спидометр павно

Как сделать спидометр павно

Как сделать спидометр павно

Как сделать спидометр павно

Как сделать спидометр павно

Как сделать спидометр павно

Как сделать спидометр павно

Как сделать спидометр павно

Дело в том что бывает такая ошибка в тексдравах, ты создаешь его, а он не присваивается к переменной, из за этого он равен 0, и при скрывании или показа могут воздействоваться и другие тексдравы с 0 id как происходит и у тебя. Самый эффективный способ это пред основными тексдравами создать еще один, ложный текстрав. У меня была такая проблемма с ней я боролся именно так, не знаю более эффективный способ.
Но перед этой процедурой попробуй сделать проверку на 0 тексдрав когда ты их показываешь просто for измини на это, возможно баг устранится

Если не помогло сделай так, найди то место где ты создаешь тексдравы спидометра Speed в самое начало все CreatePlayerTextDraw вставь ложный тексдрав

то же самое сделай и с Speedometr

Как сделать спидометр павно

Дело в том что бывает такая ошибка в тексдравах, ты создаешь его, а он не присваивается к переменной, из за этого он равен 0, и при скрывании или показа могут воздействоваться и другие тексдравы с 0 id как происходит и у тебя. Самый эффективный способ это пред основными тексдравами создать еще один, ложный текстрав. У меня была такая проблемма с ней я боролся именно так, не знаю более эффективный способ.
Но перед этой процедурой попробуй сделать проверку на 0 тексдрав когда ты их показываешь просто for измини на это, возможно баг устранится

Если не помогло сделай так, найди то место где ты создаешь тексдравы спидометра Speed в самое начало все CreatePlayerTextDraw вставь ложный тексдрав

то же самое сделай и с Speedometr

Сделал все как надо выдало Error и Warning на аргументы

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *