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

Обновлено: 08.07.2024

1)в public OnGameModeInit,добавим таймер

2)добавляем public без разницы куда,например в конец мода

3)В public OnPlayerStateChange,вставляем


if(newstate == 2) //Если игрок водитель авто, зачем нам выкидывать пассажиров?
<
if(Fuel[GetPlayerVehicleID(playerid)]
Спидометр

1)создаем функцию которая будет узнавать скорость

stock GetVehicleSpeed(playerid)
<
new Float:speed[4]; // Объявляем одномерный массив с вещественным типом переменных
if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),speed[0],speed[1],speed[2]); // Если игрок в каком-либо транспорте, то узнаем скорость его ТС по x, y и z и записываем их в массив
speed[3] = floatsqroot(floatpower(floatabs(speed[0]), 2.0) + floatpower(floatabs(speed[1]), 2.0) + floatpower(floatabs(speed[2]), 2.0)) * 253.3; // узнаем квадратный корень и записываем в speed[3]
return floatround(speed[3]); // возвращаем
>

2)Ко всем new ,добавляем

3)В public OnPlayerConnect добавляем,

Speed[playerid] = TextDrawCreate(260.0, 431.0,"~y~km/h: ~w~0 ~y~Benzin: ~w~0 ~y~Health: ~w~0"); // Делаем textdraw (~y~ - желтый цвет; ~w~ - белый) \
TextDrawAlignment(Speed[playerid],0); // Выравнивание. В данном случае 0 (нет 0) А вообще 1 - по левому краю, 2 - по ширине, 3 - по правому краю
TextDrawBackgroundColor(Speed[playerid],0x000000FF); // Цвет обводки (в данном случае черный)
TextDrawFont(Speed[playerid],1); // Тип ТекстДрава
TextDrawSetOutline(Speed[playerid], 2); //Толщина обводки
TextDrawLetterSize(Speed[playerid],0.350000,1.300000); // Размер символов
TextDrawColor(Speed[playerid],0xFFFFFFFF);//цвет символов
TextDrawSetProportional(Speed[playerid],1); //

4)Ко всем forward добавляем,

5)В public OnGameModeInit вставляем,

SetTimer("SpeedUpdate",1000,1); /*это время обновления текстдрава.*/

6)Теперь в конец мода


public SpeedUpdate()
<
new string[255]; // объявляем одномерный массив
for(new i; i +

Моё портфолио


VirusTotal — бесплатная служба, осуществляющая анализ подозрительных файлов на предмет выявления вирусов, червей, троянов и всевозможных вредоносных программ.

Проверить свой файл

♙ Нужно место под вашу рекламу на сайте или в группе? Ознакомьтесь с нашими условиями и расценками. ♙ При публикации файлов на сайт, ссылка на VirusTotal обязательна! ♙ Правила группы распространяются и на сайт. ♙


Данный TD нарисовал я (Николай Батурин)
Внутри 20 TD, архив запакован в rar и фаил в формате pwn.
Всем добра и позетива =)

Автор: Prosto Mark

Вы хотите перейти по внешней ссылке.
Внимание! Наш сайт не несёт ответственности за файлы, размещённые на сторонних ресурсах.

Ссылки для вставки:

Прямая ссылка:
BB-code ссылка:
HTML ссылка: [TD] Спидометр для SA-MP" type="text" readonly="readonly" />


Теги: спидометр текстдрав

Простой спидометр для GTA San Andreas

Особенности:
- Спидометр отображает реальную внутриигровую скорость;
- Ночью шкала и "стрелка" подсвечиваются;
- Не для широкоформатных мониторов (разрешений).

Простой спидометр для GTA San Andreas можно скачать, используя соответсвующие кнопки, а установить мод в игру можно как с использованием режима автоматической установки в нашем фирменном инсталляторе, так и вручную.

new Text:Box;//переменная главного бокса //
new Text:Speed;//Переменная текстдрава со словом Speed
new Text:SpeedShow[MAX_PLAYERS];//Переменная показывает скорость автомобиля(отдельна для каждого игрока)
new Text:Fuel;//Переменная текстдрава со словом fuel
new Text:FuelShow[MAX_PLAYERS];//Переменная текстдрава показывающая район(отдельна для каждого игрока)
new Text:Status;//Переменная текстдрава со словом Status
new Text:StatusShow[MAX_PLAYERS];//Переменная текстдрава показывающая status авто(отдельна для каждого игрока)
new Text:KMShow[MAX_PLAYERS];//Переменная текстдрава показывающая status авто(отдельна для каждого игрока)
new str1[64],str2[64],str3[64],str5[64];

[moder]и замените на[/moder]

new Text:Box;//переменная главного бокса //
new Text:Speed;//Переменная текстдрава со словом Speed
new Text:SpeedShow[MAX_PLAYERS];//Переменная показывает скорость автомобиля(отдельна для каждого игрока)
new Text:Fuel;//Переменная текстдрава со словом fuel
new Text:FuelShow[MAX_PLAYERS];//Переменная текстдрава показывающая район(отдельна для каждого игрока)
new Text:Status;//Переменная текстдрава со словом Status
new Text:StatusShow[MAX_PLAYERS];//Переменная текстдрава показывающая status авто(отдельна для каждого игрока)
new Text:KMShow[MAX_PLAYERS];//Переменная текстдрава показывающая status авто(отдельна для каждого игрока)
new Text:Fill[MAX_PLAYERS];//By EblanStyle
new str1[64],str2[64],str3[64],str5[64],str4[64];

[moder]далее ищите Ваши текстдравы Спидометра и заменяете на Эти[/moder]

STimer[playerid] = SetTimerEx("UpdateSpeedometr", Update, 1, "d", playerid); // таймер!
SpeedShow[playerid] = TextDrawCreate(374.000000, 408.000000,"0"); //сам Text Draw km/h
TextDrawBackgroundColor(SpeedShow[playerid], 255);
TextDrawAlignment(SpeedShow[playerid], 2);
TextDrawLetterSize(SpeedShow[playerid],0.500000, 1.500000);//размер текста
TextDrawFont(SpeedShow[playerid],0);//стиль
TextDrawColor(SpeedShow[playerid],761773823);//цвет текста
TextDrawSetOutline(SpeedShow[playerid],1);//размер обводки
TextDrawSetProportional(SpeedShow[playerid],1);

StatusShow[playerid] = TextDrawCreate(451.000000, 414.000000, "_");//сам Text Draw Status
TextDrawBackgroundColor(StatusShow[playerid], 255);//обводка текста
TextDrawLetterSize(StatusShow[playerid],0.619998, 1.399999);//размер текста
TextDrawFont(StatusShow[playerid], 1);//стиль
TextDrawColor(StatusShow[playerid], 9896191);//цвет текста
TextDrawSetOutline(StatusShow[playerid], 1);//размер обводки
TextDrawSetProportional(StatusShow[playerid],1);

KMShow[playerid] = TextDrawCreate(393.000000, 410.000000, "_");//сам Text Draw Status
TextDrawBackgroundColor(KMShow[playerid], 255);
TextDrawLetterSize(KMShow[playerid],0.379999, 0.899999);//размер текста
TextDrawFont(KMShow[playerid], 2);//стиль
TextDrawColor(KMShow[playerid], 724790015);//цвет текста
TextDrawSetOutline(KMShow[playerid], 1);//размер обводки
TextDrawSetProportional(KMShow[playerid],1);

FuelShow[playerid] = TextDrawCreate(445.000000, 399.000000, "_");//сам Text Draw fuel
TextDrawBackgroundColor(FuelShow[playerid], 255);//обводка текста
TextDrawLetterSize(FuelShow[playerid],0.500000, 1.000000);//размер текста
TextDrawFont(FuelShow[playerid], 0);//стиль
TextDrawColor(FuelShow[playerid], -1165802241);//цвет текста
TextDrawSetOutline(FuelShow[playerid], 1);//размер обводки
TextDrawSetProportional(FuelShow[playerid],1);

Fill[playerid] = TextDrawCreate(487.000000, 396.000000, "_");
TextDrawBackgroundColor(Fill[playerid], 255);
TextDrawFont(Fill[playerid], 2);
TextDrawLetterSize(Fill[playerid], 0.310000, 1.500000);
TextDrawColor(Fill[playerid], -1677721345);
TextDrawSetOutline(Fill[playerid], 1);
TextDrawSetProportional(Fill[playerid], 1);

TextDrawHideForPlayer(playerid,Box);
TextDrawHideForPlayer(playerid,Speed);
TextDrawHideForPlayer(playerid,SpeedShow[playerid]);
TextDrawHideForPlayer(playerid,Fuel);
TextDrawHideForPlayer(playerid,FuelShow[playerid]);
TextDrawHideForPlayer(playerid,Status);
TextDrawHideForPlayer(playerid,StatusShow[playerid]);
TextDrawHideForPlayer(playerid,KMShow[playerid]);

[moder]и заменяете на:[/moder]

TextDrawHideForPlayer(playerid,Box);
TextDrawHideForPlayer(playerid,Speed);
TextDrawHideForPlayer(playerid,SpeedShow[playerid]);
TextDrawHideForPlayer(playerid,Fuel);
TextDrawHideForPlayer(playerid,FuelShow[playerid]);
TextDrawHideForPlayer(playerid,Status);
TextDrawHideForPlayer(playerid,StatusShow[playerid]);
TextDrawHideForPlayer(playerid,KMShow[playerid]);
TextDrawHideForPlayer(playerid,Fill[playerid]);

[moder]так же ищите[/moder]

TextDrawDestroy(SpeedShow[playerid]);
TextDrawDestroy(FuelShow[playerid]);
TextDrawDestroy(StatusShow[playerid]);
TextDrawDestroy(KMShow[playerid]);

[moder]и заменяете на:[/moder]

TextDrawDestroy(SpeedShow[playerid]);
TextDrawDestroy(FuelShow[playerid]);
TextDrawDestroy(StatusShow[playerid]);
TextDrawDestroy(KMShow[playerid]);
TextDrawDestroy(Fill[playerid]);

[admin]теперь ищите все что связоно с:[/admin]

TextDrawHideForPlayer(playerid,Box);
TextDrawHideForPlayer(playerid,Speed);
TextDrawHideForPlayer(playerid,SpeedShow[playerid]);
TextDrawHideForPlayer(playerid,Fuel);
TextDrawHideForPlayer(playerid,FuelShow[playerid]);
TextDrawHideForPlayer(playerid,Status);
TextDrawHideForPlayer(playerid,StatusShow[playerid]);
TextDrawHideForPlayer(playerid,KMShow[playerid]);

[moder]и заменяете на:[/moder]

TextDrawHideForPlayer(playerid,Box);
TextDrawHideForPlayer(playerid,Speed);
TextDrawHideForPlayer(playerid,SpeedShow[playerid]);
TextDrawHideForPlayer(playerid,Fuel);
TextDrawHideForPlayer(playerid,FuelShow[playerid]);
TextDrawHideForPlayer(playerid,Status);
TextDrawHideForPlayer(playerid,StatusShow[playerid]);
TextDrawHideForPlayer(playerid,KMShow[playerid]);
TextDrawHideForPlayer(playerid,Fill[playerid]);

TextDrawShowForPlayer(playerid,Box);
TextDrawShowForPlayer(playerid,Speed);
TextDrawShowForPlayer(playerid,SpeedShow[playerid]);
TextDrawShowForPlayer(playerid,Fuel);
TextDrawShowForPlayer(playerid,FuelShow[playerid]);
TextDrawShowForPlayer(playerid,Status);
TextDrawShowForPlayer(playerid,StatusShow[playerid]);
TextDrawShowForPlayer(playerid,KMShow[playerid]);

[moder]и заменяете на:[/moder]

TextDrawShowForPlayer(playerid,Box);
TextDrawShowForPlayer(playerid,Speed);
TextDrawShowForPlayer(playerid,SpeedShow[playerid]);
TextDrawShowForPlayer(playerid,Fuel);
TextDrawShowForPlayer(playerid,FuelShow[playerid]);
TextDrawShowForPlayer(playerid,Status);
TextDrawShowForPlayer(playerid,StatusShow[playerid]);
TextDrawShowForPlayer(playerid,KMShow[playerid]);
TextDrawShowForPlayer(playerid,Fill[playerid]);

[moder]и внизу под этим должно быть:[/moder]

else if(newstate == PLAYER_STATE_ONFOOT)//выходит скрываем
<
TextDrawHideForPlayer(playerid,Box);
TextDrawHideForPlayer(playerid,Speed);
TextDrawHideForPlayer(playerid,SpeedShow[playerid]);
TextDrawHideForPlayer(playerid,Fuel);
TextDrawHideForPlayer(playerid,FuelShow[playerid]);
TextDrawHideForPlayer(playerid,Status);
TextDrawHideForPlayer(playerid,StatusShow[playerid]);
TextDrawHideForPlayer(playerid,KMShow[playerid]);
>

else if(newstate == PLAYER_STATE_ONFOOT)//выходит скрываем
<
TextDrawHideForPlayer(playerid,Box);
TextDrawHideForPlayer(playerid,Speed);
TextDrawHideForPlayer(playerid,SpeedShow[playerid]);
TextDrawHideForPlayer(playerid,Fuel);
TextDrawHideForPlayer(playerid,FuelShow[playerid]);
TextDrawHideForPlayer(playerid,Status);
TextDrawHideForPlayer(playerid,StatusShow[playerid]);
TextDrawHideForPlayer(playerid,KMShow[playerid]);
TextDrawHideForPlayer(playerid,Fill[playerid]);
>

[moder]теперь идем в паблик UpdateSpeedometr(playerid):
и заменяем его на:[/moder]

public UpdateSpeedometr(playerid)//обновляем каждую секунду наш текстдрав
<
if(IsPlayerInAnyVehicle(playerid))
<
new vehicleid;
vehicleid = GetPlayerVehicleID(playerid);
new locked[32];
new maxx[15];
if(Max[playerid] == 1) < maxx = "~b~Min"; >else < maxx = "~R~Max"; >
if(IsLocked[GetPlayerVehicleID(playerid)] == 1)
<
locked = "~r~~h~Lock";
>
else
<
locked = "~g~~h~Unlock";
>
format(str4, sizeof(str4), "FUEL");
format(str1, sizeof(str2),"%d",SpeedVehicle(playerid));
if(Fuell[vehicleid] = 150)
<
SendClientMessage(playerid, COLOR_LIGHTRED, "Вы были кикнуты по подозрению в читерстве. (Код ошибки: 2888)");
SendClientMessage(playerid, COLOR_LIGHTRED, "Удалите чит программу, чтобы продолжить игру на сервере");
Kick(playerid);
>
if(SpeedVehicle(playerid) !=0)
<
Fuell[vehicleid] -= 0.003;
if(GetPlayerVehicleID(playerid) == caridhouse[playerid])
<
PlayerInfo[playerid][pFuelcar] -= 0.003;
>
>
new carid = GetPlayerVehicleID(playerid);
if(SuperGt(carid))
<
if(SpeedVehicle(playerid) !=0)
<
Fuell[vehicleid] -= 0.005;
if(GetPlayerVehicleID(playerid) == caridhouse[playerid])
<
PlayerInfo[playerid][pFuelcar] -=0.005;
>
>
>
TextDrawSetString(SpeedShow[playerid],str1);
TextDrawSetString(FuelShow[playerid],str2);
TextDrawSetString(StatusShow[playerid],str5);
TextDrawSetString(KMShow[playerid],str3);
TextDrawSetString(Fill[playerid],str4);
>
>

[moder]так же ищите бокс спидометра примерно должен выгледить так:[/moder]

Box = TextDrawCreate(533.000000, 393.000000, "____");
TextDrawBackgroundColor(Box, 255);
TextDrawFont(Box, 1);
TextDrawLetterSize(Box, 1.309998, 4.499999);
TextDrawColor(Box, -1);
TextDrawSetOutline(Box, 0);
TextDrawSetProportional(Box, 1);
TextDrawSetShadow(Box, 1);
TextDrawUseBox(Box, 1);
TextDrawBoxColor(Box, COLOR_BOX);
TextDrawTextSize(Box, 348.000000, 27.000000);

[moder]и замените его на:[/moder]

Box = TextDrawCreate(533.000000, 393.000000, "____");
TextDrawBackgroundColor(Box, 255);
TextDrawFont(Box, 1);
TextDrawLetterSize(Box, 1.309998, 4.499999);
TextDrawColor(Box, -1);
TextDrawSetOutline(Box, 0);
TextDrawSetProportional(Box, 1);
TextDrawSetShadow(Box, 1);
TextDrawUseBox(Box, 1);
TextDrawBoxColor(Box, COLOR_BOX);
TextDrawTextSize(Box, 348.000000, 27.000000);
Speed = TextDrawCreate(533.000000, 393.000000, "____");
TextDrawBackgroundColor(Speed, 255);
TextDrawFont(Speed, 1);
TextDrawLetterSize(Speed, 1.309998, 4.499999);
TextDrawColor(Speed, -1);
TextDrawSetOutline(Speed, 0);
TextDrawSetProportional(Speed, 1);
TextDrawSetShadow(Speed, 1);
TextDrawUseBox(Speed, 1);
TextDrawBoxColor(Speed, COLOR_BOX);
TextDrawTextSize(Speed, 348.000000, 27.000000);

Читайте также: