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

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

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

И так, для начала, необходимо будет придумать стиль спидометра, его дизайн. Если вы раньше не знали, то спидометры и прочую красивую ерунду, рисуют пользуясь текстдравами. Так вот очень удобно «рисовать» спидометры и т.д в 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 ], «

Источник

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

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

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

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

Модератор форума: Phoenixxx_Czar, Getbackthere, [CM]OlegEhtler
Форум » Pawno программирование SAMP » Уроки | FAQ » [Урок] Система спидометра [Samp-Rp Textdraw]

[Урок] Система спидометра [Samp-Rp Textdraw]

__NEW__Дата: Пятница, 29.07.2016, 00:28 | Сообщение # 1

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

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

Для начала ко всем new

Далее в OnGameModeInit

200?’200px’:»+(this.scrollHeight+5)+’px’);»> SpeedForServer[0] = TextDrawCreate(345.000, 381.000, «_»);
TextDrawLetterSize(SpeedForServer[0], 0.500, 4.600);
TextDrawTextSize(SpeedForServer[0], 513.000, 104.000);
TextDrawColor(SpeedForServer[0], 0);
TextDrawUseBox(SpeedForServer[0], 1);
TextDrawBoxColor(SpeedForServer[0], 0x00000066);
TextDrawSetShadow(SpeedForServer[0], 1);
TextDrawSetOutline(SpeedForServer[0], 1);
TextDrawBackgroundColor(SpeedForServer[0], 0);
TextDrawFont(SpeedForServer[0], 3);
TextDrawSetProportional(SpeedForServer[0], 1);

SpeedForServer[1] = TextDrawCreate(390.000, 396.000, «KM/H»);
TextDrawLetterSize(SpeedForServer[1], 0.300, 1.100);
TextDrawColor(SpeedForServer[1], 0x0C354EAA);
TextDrawUseBox(SpeedForServer[1], 0);
TextDrawBoxColor(SpeedForServer[1], 0x80808080);
TextDrawSetShadow(SpeedForServer[1], 1);
TextDrawSetOutline(SpeedForServer[1], 1);
TextDrawBackgroundColor(SpeedForServer[1], 0x00000066);
TextDrawFont(SpeedForServer[1], 2);
TextDrawSetProportional(SpeedForServer[1], 1);

SpeedForServer[2] = TextDrawCreate(475.000, 389.000, «FUEL»);
TextDrawLetterSize(SpeedForServer[2], 0.300, 1.100);
TextDrawColor(SpeedForServer[2], 0x7F0000AA);
TextDrawUseBox(SpeedForServer[1], 0);
TextDrawBoxColor(SpeedForServer[1], 0x80808080);
TextDrawSetShadow(SpeedForServer[2], 1);
TextDrawSetOutline(SpeedForServer[2], 1);
TextDrawBackgroundColor(SpeedForServer[2], 0x00000066);
TextDrawFont(SpeedForServer[2], 2);
TextDrawSetProportional(SpeedForServer[2], 1);

Далее в OnPlayerConnect

200?’200px’:»+(this.scrollHeight+5)+’px’);»> SpeedForPlayer[playerid][0] = CreatePlayerTextDraw(playerid, 358.000, 395.000, «_»);
PlayerTextDrawLetterSize(playerid, SpeedForPlayer[playerid][0], 0.600, 1.400);
PlayerTextDrawAlignment(playerid, SpeedForPlayer[playerid][0], 0);
PlayerTextDrawColor(playerid, SpeedForPlayer[playerid][0], 0x0D689FAA);
PlayerTextDrawUseBox(playerid, SpeedForPlayer[playerid][0], 0);
PlayerTextDrawBoxColor(playerid, SpeedForPlayer[playerid][0], 0x80808080);
PlayerTextDrawSetShadow(playerid, SpeedForPlayer[playerid][0], 1);
PlayerTextDrawSetOutline(playerid, SpeedForPlayer[playerid][0], 1);
PlayerTextDrawBackgroundColor(playerid, SpeedForPlayer[playerid][0], 0x00000066);
PlayerTextDrawFont(playerid, SpeedForPlayer[playerid][0], 0);
PlayerTextDrawSetProportional(playerid, SpeedForPlayer[playerid][0], 1);

SpeedForPlayer[playerid][1] = CreatePlayerTextDraw(playerid, 441.000, 391.000, «

50″);
PlayerTextDrawLetterSize(playerid, SpeedForPlayer[playerid][1], 0.600, 0.800);
PlayerTextDrawAlignment(playerid, SpeedForPlayer[playerid][1], 0);
PlayerTextDrawColor(playerid, SpeedForPlayer[playerid][1], 0x0D689FAA);
PlayerTextDrawUseBox(playerid, SpeedForPlayer[playerid][1], 0);
PlayerTextDrawBoxColor(playerid, SpeedForPlayer[playerid][1], 0x80808080);
PlayerTextDrawSetShadow(playerid, SpeedForPlayer[playerid][1], 1);
PlayerTextDrawSetOutline(playerid, SpeedForPlayer[playerid][1], 1);
PlayerTextDrawBackgroundColor(playerid, SpeedForPlayer[playerid][1], 0x00000066);
PlayerTextDrawFont(playerid, SpeedForPlayer[playerid][1], 0);
PlayerTextDrawSetProportional(playerid, SpeedForPlayer[playerid][1], 1);

SpeedForPlayer[playerid][2] = CreatePlayerTextDraw(playerid, 450.000, 404.000, «Unlock»);
PlayerTextDrawLetterSize(playerid, SpeedForPlayer[playerid][2], 0.500, 1.000);
PlayerTextDrawAlignment(playerid, SpeedForPlayer[playerid][2], 0);
PlayerTextDrawColor(playerid, SpeedForPlayer[playerid][2], 0x00D900AA);
PlayerTextDrawUseBox(playerid, SpeedForPlayer[playerid][2], 0);
PlayerTextDrawBoxColor(playerid, SpeedForPlayer[playerid][2], 0x80808080);
PlayerTextDrawSetShadow(playerid, SpeedForPlayer[playerid][2], 1);
PlayerTextDrawSetOutline(playerid, SpeedForPlayer[playerid][2], 1);
PlayerTextDrawBackgroundColor(playerid, SpeedForPlayer[playerid][2], 0x00000066);
PlayerTextDrawFont(playerid, SpeedForPlayer[playerid][2], 1);
PlayerTextDrawSetProportional(playerid, SpeedForPlayer[playerid][2], 1);

Далее если у вас нету stock для проверки скорости автомобиля то ко всем stock

Источник

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

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

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

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

[CLEO] Как сделать Спидометр

SedanceДата: Пятница, 19.07.2013, 23:17 | Сообщение # 1

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

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
<$CLEO>
0000:
thread ‘SPEED’

if
Player.Defined($PLAYER_CHAR)
jf @SPEED_END

:SPEED_END
wait 0
0A93: end_custom_thread

200?’200px’:»+(this.scrollHeight+5)+’px’);»> while true
if
Actor.Driving($PLAYER_ACTOR)
then
0390: load_txd_dictionary ‘SPEED’
038F: load_texture «CIRCLE» as 1
038F: load_texture «STRELK» as 2

0391: release_txd_dictionary
end
wait 0
end

Крч далее выгружаем это из памяти И на месте комментариев, нам понадобится ещё один цикл while. Проверка будет такая-же, как и в условие IF, в которого вложен цикл:

200?’200px’:»+(this.scrollHeight+5)+’px’);»> while Actor.Driving($PLAYER_ACTOR)
03F0: enable_text_draw 1

(Самая Тежёлая работа) Мы получили скорость машины. Нам осталось отобразить её на спидометре. Если так запустить скрипт, то стрелка будет в начале смотреть в низ, где никаких цифр не указано. Следовательно нам нужно сместить угол поворота стрелки на какой-то градус. Я вычислил, что для данного спидометра смещение должно быть на 54.0 градуса :

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

thread ‘SPEED’
if
Player.Defined($PLAYER_CHAR)
jf @SPEED_END

:SPEED_END
wait 0
0A93: end_custom_thread

Оее, теперь всё готова, можно отдыхать.

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

Если что то не правильно, пишите исправлю.

Приму в дар аккаунты на Samp-Rp 3+
Собейт в разработке.

Источник

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

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