Ashley100
Умник
Сообразил простенький по функционалу, и ну уродливый по дизайну
спидометр.
Начнём как всегда с глобальной переменной:
Далее создадим сами TD спидометра, кидаем в OnGameModeInit:
Далее идем в OnPlayerStateChange дабы сделать проверку на вход и выход из машины...
Теперь создадим stock в котором и будут происходить все действия, то есть обновляться...
Осталось только сделать обновление спидометра несколько раз в секунду. Я использовал OnPlayerUpdate. Просто вставляем наш stock:
Начнём как всегда с глобальной переменной:
PHP:
new Text:Speed[21];
Далее создадим сами TD спидометра, кидаем в OnGameModeInit:
PHP:
Speed[0] = TextDrawCreate(518.000000, 320.000000, "1");
TextDrawBackgroundColor(Speed[0], 850647808);
TextDrawFont(Speed[0], 5);
TextDrawLetterSize(Speed[0], 0.500000, 1.000000);
TextDrawColor(Speed[0], 1157625087);
TextDrawSetOutline(Speed[0], 1);
TextDrawSetProportional(Speed[0], 1);
TextDrawUseBox(Speed[0], 1);
TextDrawBoxColor(Speed[0], 850648063);
TextDrawTextSize(Speed[0], 143.000000, 149.000000);
TextDrawSetPreviewModel(Speed[0], 1945);
TextDrawSetPreviewRot(Speed[0], 0.000000, 0.000000, 0.000000, 1.000000);
TextDrawSetSelectable(Speed[0], 0);
Speed[1] = TextDrawCreate(525.000000, 321.000000, "1");
TextDrawBackgroundColor(Speed[1], 850647808);
TextDrawFont(Speed[1], 5);
TextDrawLetterSize(Speed[1], 0.859999, 1.000000);
TextDrawColor(Speed[1], 255);
TextDrawSetOutline(Speed[1], 1);
TextDrawSetProportional(Speed[1], 1);
TextDrawUseBox(Speed[1], 1);
TextDrawBoxColor(Speed[1], 850648063);
TextDrawTextSize(Speed[1], 131.000000, 137.000000);
TextDrawSetPreviewModel(Speed[1], 1945);
TextDrawSetPreviewRot(Speed[1], 0.000000, 90.000000, 0.000000, 1.000000);
TextDrawSetSelectable(Speed[1], 0);
Speed[2] = TextDrawCreate(535.000000, 370.000000, "-");
TextDrawBackgroundColor(Speed[2], -134546689);
TextDrawFont(Speed[2], 1);
TextDrawLetterSize(Speed[2], 7.270001, 0.599999);
TextDrawColor(Speed[2], -1);
TextDrawSetOutline(Speed[2], 1);
TextDrawSetProportional(Speed[2], 1);
Speed[3] = TextDrawCreate(496.000000, 296.000000, "1");
TextDrawBackgroundColor(Speed[3], -218433280);
TextDrawFont(Speed[3], 5);
TextDrawLetterSize(Speed[3], 2.859998, 2.000000);
TextDrawColor(Speed[3], -1);
TextDrawSetOutline(Speed[3], 1);
TextDrawSetProportional(Speed[3], 1);
TextDrawUseBox(Speed[3], 1);
TextDrawBoxColor(Speed[3], -134546689);
TextDrawTextSize(Speed[3], 188.000000, 197.000000);
TextDrawSetPreviewModel(Speed[3], 18844);
TextDrawSetPreviewRot(Speed[3], 96.000000, 97.000000, 0.000000, 1.000000);
Speed[4] = TextDrawCreate(541.000000, 362.000000, "/");
TextDrawBackgroundColor(Speed[4], -134546689);
TextDrawFont(Speed[4], 1);
TextDrawLetterSize(Speed[4], 1.099998, 1.299999);
TextDrawColor(Speed[4], -134546689);
TextDrawSetOutline(Speed[4], 1);
TextDrawSetProportional(Speed[4], 1);
Speed[5] = TextDrawCreate(511.000000, 360.000000, "-");
TextDrawBackgroundColor(Speed[5], -134546689);
TextDrawFont(Speed[5], 1);
TextDrawLetterSize(Speed[5], 3.399998, 0.799998);
TextDrawColor(Speed[5], -1);
TextDrawSetOutline(Speed[5], 1);
TextDrawSetProportional(Speed[5], 1);
TextDrawSetSelectable(Speed[5], 0);
Speed[6] = TextDrawCreate(549.000000, 354.000000, ".");
TextDrawBackgroundColor(Speed[6], 559385343);
TextDrawFont(Speed[6], 1);
TextDrawLetterSize(Speed[6], 1.100000, 4.499999);
TextDrawColor(Speed[6], 16711935);
TextDrawSetOutline(Speed[6], 1);
TextDrawSetProportional(Speed[6], 1);
TextDrawSetSelectable(Speed[6], 0);
Speed[7] = TextDrawCreate(580.000000, 382.000000, "N");
TextDrawBackgroundColor(Speed[7], 15794064);
TextDrawFont(Speed[7], 3);
TextDrawLetterSize(Speed[7], 1.059999, 5.000000);
TextDrawColor(Speed[7], 15794175);
TextDrawSetOutline(Speed[7], 0);
TextDrawSetProportional(Speed[7], 1);
TextDrawSetShadow(Speed[7], 0);
TextDrawSetSelectable(Speed[7], 0);
Speed[8] = TextDrawCreate(516.000000, 351.000000, "0");
TextDrawBackgroundColor(Speed[8], 15794064);
TextDrawFont(Speed[8], 2);
TextDrawLetterSize(Speed[8], 0.400000, 1.499999);
TextDrawColor(Speed[8], 15794175);
TextDrawSetOutline(Speed[8], 0);
TextDrawSetProportional(Speed[8], 1);
TextDrawSetShadow(Speed[8], 0);
TextDrawSetSelectable(Speed[8], 0);
Speed[9] = TextDrawCreate(558.000000, 363.000000, "F:100 H:100");
TextDrawBackgroundColor(Speed[9], 15794175);
TextDrawFont(Speed[9], 2);
TextDrawLetterSize(Speed[9], 0.270000, 1.000000);
TextDrawColor(Speed[9], -1);
TextDrawSetOutline(Speed[9], 0);
TextDrawSetProportional(Speed[9], 1);
TextDrawSetShadow(Speed[9], 0);
TextDrawSetSelectable(Speed[9], 0);
Speed[10] = TextDrawCreate(540.000000, 388.000000, ">"),TextDrawColor(Speed[10], -1),TextDrawSetPreviewRot(Speed[10], 10.000000, 180.000000, 93.000000, 1.000000);
Speed[11] = TextDrawCreate(543.000000, 400.000000, ">"),TextDrawColor(Speed[11], -308079361),TextDrawSetPreviewRot(Speed[11], 10.000000, 200.000000, 93.000000, 1.000000);
Speed[12] = TextDrawCreate(548.000000, 411.000000, ">"),TextDrawColor(Speed[12], -311487233),TextDrawSetPreviewRot(Speed[12], 10.000000, 210.000000, 93.000000, 1.000000);
Speed[13] = TextDrawCreate(557.000000, 419.000000, ">"),TextDrawColor(Speed[13], -314043137),TextDrawSetPreviewRot(Speed[13], 10.000000, 220.000000, 93.000000, 1.000000);
Speed[14] = TextDrawCreate(567.000000, 426.000000, ">"),TextDrawColor(Speed[14], -317451009),TextDrawSetPreviewRot(Speed[14], 10.000000, 240.000000, 93.000000, 1.000000);
Speed[15] = TextDrawCreate(580.000000, 427.000000, ">"),TextDrawColor(Speed[15], -183628033),TextDrawSetPreviewRot(Speed[15], 10.000000, 270.000000, 93.000000, 1.000000);
Speed[16] = TextDrawCreate(593.000000, 425.000000, ">"),TextDrawColor(Speed[16], -16776961),TextDrawSetPreviewRot(Speed[16], 10.000000, 290.000000, 93.000000, 1.000000);
Speed[17] = TextDrawCreate(604.000000, 419.000000, ">"),TextDrawColor(Speed[17], -16776961),TextDrawSetPreviewRot(Speed[17], 10.000000, 310.000000, 93.000000, 1.000000);
Speed[18] = TextDrawCreate(613.000000, 409.000000, ">"),TextDrawColor(Speed[18], -16776961),TextDrawSetPreviewRot(Speed[18], 10.000000, 325.000000, 93.000000, 1.000000);
Speed[19] = TextDrawCreate(618.000000, 397.000000, ">"),TextDrawColor(Speed[19], 255),TextDrawSetPreviewRot(Speed[19], 10.000000, 345.000000, 93.000000, 1.000000);
Speed[20] = TextDrawCreate(620.000000, 385.000000, ">"),TextDrawColor(Speed[20], 255),TextDrawSetPreviewRot(Speed[20], 10.000000, 345.000000, 93.000000, 1.000000);
for(new A = 10; A < 21; A++)
{
TextDrawBackgroundColor(Speed[A], -256);
TextDrawFont(Speed[A], 5);
TextDrawLetterSize(Speed[A], 1.899999, 1.000000);
TextDrawSetOutline(Speed[A], 1);
TextDrawSetProportional(Speed[A], 1);
TextDrawUseBox(Speed[A], 1);
TextDrawBoxColor(Speed[A], 0xFFFFFF00);
TextDrawTextSize(Speed[A], 20.000000, 20.000000);
TextDrawSetPreviewModel(Speed[A], 19134);
}
Далее идем в OnPlayerStateChange дабы сделать проверку на вход и выход из машины...
PHP:
if(newstate == PLAYER_STATE_DRIVER)// если садимся в машину, то показываем спидометр
{
for(new w; w < 11; w++){TextDrawShowForPlayer(playerid,Speed[w]);}
}
else if(newstate == PLAYER_STATE_ONFOOT)// если вылезаем из машины то скрываем
{
for(new w; w < 21; w++){TextDrawHideForPlayer(playerid,Speed[w]);}
}
Теперь создадим stock в котором и будут происходить все действия, то есть обновляться...
PHP:
stock UpdateSpeed(playerid)
{
if(IsPlayerInAnyVehicle(playerid))
{
new Float:health;
new veh = GetPlayerVehicleID(playerid);
GetVehicleHealth(veh, health);
new speedd = GetVehicleSpeed( veh );
new string [ 210 ] ;
format ( string, sizeof(string), "%d", speedd );
TextDrawSetString( Speed[8] , string );
format ( string, sizeof(string), "F:100 H:%.0f", health /10 );// тут у нас хп и бензин. Бензин не робит так как у меня его нет.
TextDrawSetString( Speed[9] , string );
switch ( speedd )
{
case 0: {TextDrawSetString( Speed[7] , "N" );}// если скорать 0 то ставим N(нейтрал)
case 1..20: {TextDrawShowForPlayer ( playerid, Speed [ 10 ]) ;TextDrawSetString( Speed[7] , "1" );}// если скорать от 1 до 20 то будет первая скорать. И так далее
case 21..40: {TextDrawShowForPlayer ( playerid, Speed [ 11 ]) ;for(new A = 12; A < 21; A++){TextDrawHideForPlayer ( playerid, Speed [ A ]) ;}}
case 41..50: {TextDrawShowForPlayer ( playerid, Speed [ 12 ]) ;for(new A = 13; A < 21; A++){TextDrawHideForPlayer ( playerid, Speed [ A ]) ;}}
case 51..70: {TextDrawShowForPlayer ( playerid, Speed [ 13 ]) ;TextDrawSetString( Speed[7] , "2" );for(new A = 14; A < 21; A++){TextDrawHideForPlayer ( playerid, Speed [ A ]) ;}}
case 71..80: {TextDrawShowForPlayer ( playerid, Speed [ 14 ]) ;for(new A = 15; A < 21; A++){TextDrawHideForPlayer ( playerid, Speed [ A ]) ;}}
case 81..100: {TextDrawShowForPlayer ( playerid, Speed [ 15 ]) ;for(new A = 16; A < 21; A++){TextDrawHideForPlayer ( playerid, Speed [ A ]) ;}}
case 101..120: {TextDrawShowForPlayer ( playerid, Speed [ 16 ]) ;TextDrawSetString( Speed[7] , "3" );for(new A = 17; A < 21; A++){TextDrawHideForPlayer ( playerid, Speed [ A ]) ;}}
case 121..149: {TextDrawShowForPlayer ( playerid, Speed [ 17 ]) ;for(new A = 18; A < 21; A++){TextDrawHideForPlayer ( playerid, Speed [ A ]) ;}}
case 150..170: {TextDrawShowForPlayer ( playerid, Speed [ 18 ]) ;TextDrawSetString( Speed[7] , "4" );for(new A = 19; A < 21; A++){TextDrawHideForPlayer ( playerid, Speed [ A ]) ;}}
case 171..190: {TextDrawShowForPlayer ( playerid, Speed [ 19 ]) ;for(new A = 20; A < 21; A++){TextDrawHideForPlayer ( playerid, Speed [ A ]) ;}}
case 191..200: {TextDrawShowForPlayer ( playerid, Speed [ 20 ]) ;TextDrawSetString( Speed[7] , "5" );}
}
}
return 1;
}
Осталось только сделать обновление спидометра несколько раз в секунду. Я использовал OnPlayerUpdate. Просто вставляем наш stock:
PHP:
UpdateSpeed(playerid);
