#Lymar
Дебютант
Доброго времени суток дорогие пользователи Pawno-Info.Ru
Хочу с вами поделится маленьким спидометром.
Примечание: большая красная полоска играет роль ProgressBar (будет менять размер в соотношении с количеством бензина в баке)
Для тех у кого не грузит скрин:
Для работы нам понадобится
И так начнем.
Добавим инклуд:
Хочу с вами поделится маленьким спидометром.
Примечание: большая красная полоска играет роль ProgressBar (будет менять размер в соотношении с количеством бензина в баке)
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Для работы нам понадобится
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
И так начнем.
Добавим инклуд:
PHP:
#include <vehicleutil>
Добавим несколько переменных:
PHP:
enum vinfo
{
Engine,
Light,
Float:Fuel = 100.0
};
new VehInfo[MAX_VEHICLES][vinfo];
new PlayerText:SpeedoDraw[13][MAX_PLAYERS];
new SpeedoTimer[MAX_PLAYERS];
new fueltimer[MAX_VEHICLES];
Добавим парочку форвардов:
PHP:
forward Speedometr(playerid);
forward FuelCheck(vehicleid);
В public OnPlayerConnect(playerid) добавим загрузку TextDraw:
PHP:
CreateTextDraws(playerid);
В public OnPlayerStateChange(playerid, newstate, oldstate) добавим вывод спидометра если вы садитесь в машину, прячем спидометр если вы с нее выйдите (у велосипедов спидометра не будет + их не нужно будет заводить):
PHP:
new vehicleid = GetPlayerVehicleID(playerid);
switch(GetVehicleModel(vehicleid))
{
case 481, 510, 509: SetEngineState(vehicleid, 1);
default:
{
switch(newstate)
{
case PLAYER_STATE_DRIVER:
{
for(new i = 0, j = sizeof(SpeedoDraw); i < j; i++) PlayerTextDrawShow(playerid, SpeedoDraw[i][playerid]);
SpeedoTimer[playerid] = SetTimerEx("Speedometr", 500, true, "i", playerid);
if(VehInfo[vehicleid][Engine] == 0)
{
SendClientMessage(playerid, 0x33AA33FF, "Нажмите ''2'' что бы завести двигатель.");
SendClientMessage(playerid, 0x33AA33FF, "Нажмите ''ALT'' что бы включить фары.");
}
}
case PLAYER_STATE_ONFOOT:
{
for(new i = 0, j = sizeof(SpeedoDraw); i < j; i++) PlayerTextDrawHide(playerid, SpeedoDraw[i][playerid]);
KillTimer(SpeedoTimer[playerid]);
}
}
}
}
В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) добавим события на кнопки 2 и ALT:
PHP:
new vehicleid = GetPlayerVehicleID(playerid);
if(newkeys == KEY_SUBMISSION)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
switch(GetVehicleModel(vehicleid))
{
case 481, 510, 509: return true;
default:
{
if(VehInfo[vehicleid][Fuel] <= 0) return SendClientMessage(playerid, 0xAA3333FF, "В машине нет бензина!");
switch(VehInfo[vehicleid][Engine])
{
case 1: SetEngineState(vehicleid, 0), KillTimer(fueltimer[vehicleid]);
default: SetEngineState(vehicleid, 1), fueltimer[vehicleid] = SetTimerEx("FuelCheck", 30000, true, "d", vehicleid);
}
}
}
}
}
if(newkeys == KEY_FIRE)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
switch(VehInfo[vehicleid][Light])
{
case 1: SetLightState(vehicleid, 0);
default: SetLightState(vehicleid, 1);
}
}
}
Создадим 2 public's(функционал спидометра, и паблик который отвечает за трату бензина):
PHP:
public Speedometr(playerid)
{
new Float:fuels[MAX_PLAYERS], str1[16], str2[16], vehicleid = GetPlayerVehicleID(playerid);
switch(VehInfo[vehicleid][Engine])
{
case 1: PlayerTextDrawSetString(playerid, SpeedoDraw[8][playerid],"~g~ENGINE");
case 0: PlayerTextDrawSetString(playerid, SpeedoDraw[8][playerid],"~r~ENGINE");
}
switch(VehInfo[vehicleid][Light])
{
case 1: PlayerTextDrawSetString(playerid, SpeedoDraw[9][playerid],"~g~LIGHT");
case 0: PlayerTextDrawSetString(playerid, SpeedoDraw[9][playerid],"~r~LIGHT");
}
format(str1, sizeof(str1), "KM/H~n~%d", GetVehicleSpeed(vehicleid));
format(str2, sizeof(str2), "FUEL: %.0f", VehInfo[vehicleid][Fuel]);
PlayerTextDrawSetString(playerid, SpeedoDraw[10][playerid],str1);
PlayerTextDrawSetString(playerid, SpeedoDraw[12][playerid],str2);
if(fuels[playerid] > VehInfo[vehicleid][Fuel] || fuels[playerid] < VehInfo[vehicleid][Fuel])
{
fuels[playerid] = VehInfo[vehicleid][Fuel];
PlayerTextDrawTextSize(playerid, SpeedoDraw[11][playerid], (71.500000/100)*VehInfo[vehicleid][Fuel], 18.480005);
PlayerTextDrawHide(playerid, SpeedoDraw[11][playerid]);
PlayerTextDrawShow(playerid, SpeedoDraw[11][playerid]);
}
return true;
}
public FuelCheck(vehicleid)
{
if(VehInfo[vehicleid][Engine] == 1)
{
VehInfo[vehicleid][Fuel] -= 1.0;
if(VehInfo[vehicleid][Fuel] <= 0) SetEngineState(vehicleid, 0), VehInfo[vehicleid][Fuel] = 0;
}
return true;
}
В конце мода добавим парочку стоков (облегчающие работу с функциями заводки двигателя и включения фар):
PHP:
stock SetEngineState(vehicleid, set)
{
switch(set)
{
case 1: VehInfo[vehicleid][Engine] = 1, SetVehicleEngineState(vehicleid, true);
case 0: VehInfo[vehicleid][Engine] = 0, SetVehicleEngineState(vehicleid, false);
}
}
stock SetLightState(vehicleid, set)
{
switch(set)
{
case 1: VehInfo[vehicleid][Light] = 1, SetVehicleLightsState(vehicleid, true);
case 0: VehInfo[vehicleid][Light] = 0, SetVehicleLightsState(vehicleid, false);
}
}
stock GetVehicleSpeed(vehicleid)
{
new Float:st1,Float:st2,Float:st3;
GetVehicleVelocity(vehicleid,st1,st2,st3);
new Float:st4 = floatsqroot(floatpower(floatabs(st1), 2.0) + floatpower(floatabs(st2), 2.0) + floatpower(floatabs(st3), 2.0)) * 100.3;
return floatround(st4);
}
И наконец-то в конце мода добавим наш TextDraw:
PHP:
stock CreateTextDraws(playerid)
{
SpeedoDraw[0][playerid] = CreatePlayerTextDraw(playerid, 637.000000, 406.939880, "usebox");
PlayerTextDrawLetterSize(playerid, SpeedoDraw[0][playerid], 0.000000, 3.721110);
PlayerTextDrawTextSize(playerid, SpeedoDraw[0][playerid], 518.500000, 0.000000);
PlayerTextDrawAlignment(playerid, SpeedoDraw[0][playerid], 1);
PlayerTextDrawColor(playerid, SpeedoDraw[0][playerid], 0);
PlayerTextDrawUseBox(playerid, SpeedoDraw[0][playerid], true);
PlayerTextDrawBoxColor(playerid, SpeedoDraw[0][playerid], 1195853696);
PlayerTextDrawSetShadow(playerid, SpeedoDraw[0][playerid], 0);
PlayerTextDrawSetOutline(playerid, SpeedoDraw[0][playerid], 0);
PlayerTextDrawFont(playerid, SpeedoDraw[0][playerid], 0);
SpeedoDraw[1][playerid] = CreatePlayerTextDraw(playerid, 521.000000, 404.879913, "LD_SPAC:white");
PlayerTextDrawLetterSize(playerid, SpeedoDraw[1][playerid], 0.000000, 0.000000);
PlayerTextDrawTextSize(playerid, SpeedoDraw[1][playerid], 112.500000, 1.680020);
PlayerTextDrawAlignment(playerid, SpeedoDraw[1][playerid], 1);
PlayerTextDrawColor(playerid, SpeedoDraw[1][playerid], -2147483393);
PlayerTextDrawSetShadow(playerid, SpeedoDraw[1][playerid], 0);
PlayerTextDrawSetOutline(playerid, SpeedoDraw[1][playerid], 0);
PlayerTextDrawFont(playerid, SpeedoDraw[1][playerid], 4);
SpeedoDraw[2][playerid] = CreatePlayerTextDraw(playerid, 521.000000, 441.159759, "LD_SPAC:white");
PlayerTextDrawLetterSize(playerid, SpeedoDraw[2][playerid], 0.000000, 0.000000);
PlayerTextDrawTextSize(playerid, SpeedoDraw[2][playerid], 112.500000, 1.680020);
PlayerTextDrawAlignment(playerid, SpeedoDraw[2][playerid], 1);
PlayerTextDrawColor(playerid, SpeedoDraw[2][playerid], -2147483393);
PlayerTextDrawSetShadow(playerid, SpeedoDraw[2][playerid], 0);
PlayerTextDrawSetOutline(playerid, SpeedoDraw[2][playerid], 0);
PlayerTextDrawFont(playerid, SpeedoDraw[2][playerid], 4);
SpeedoDraw[3][playerid] = CreatePlayerTextDraw(playerid, 520.000000, 404.879943, "LD_SPAC:white");
PlayerTextDrawLetterSize(playerid, SpeedoDraw[3][playerid], 0.000000, 0.000000);
PlayerTextDrawTextSize(playerid, SpeedoDraw[3][playerid], 1.500000, 38.079986);
PlayerTextDrawAlignment(playerid, SpeedoDraw[3][playerid], 1);
PlayerTextDrawColor(playerid, SpeedoDraw[3][playerid], -2147483393);
PlayerTextDrawSetShadow(playerid, SpeedoDraw[3][playerid], 0);
PlayerTextDrawSetOutline(playerid, SpeedoDraw[3][playerid], 0);
PlayerTextDrawFont(playerid, SpeedoDraw[3][playerid], 4);
SpeedoDraw[4][playerid] = CreatePlayerTextDraw(playerid, 557.500000, 404.759948, "LD_SPAC:white");
PlayerTextDrawLetterSize(playerid, SpeedoDraw[4][playerid], 0.000000, 0.000000);
PlayerTextDrawTextSize(playerid, SpeedoDraw[4][playerid], 1.500000, 38.079986);
PlayerTextDrawAlignment(playerid, SpeedoDraw[4][playerid], 1);
PlayerTextDrawColor(playerid, SpeedoDraw[4][playerid], -2147483393);
PlayerTextDrawSetShadow(playerid, SpeedoDraw[4][playerid], 0);
PlayerTextDrawSetOutline(playerid, SpeedoDraw[4][playerid], 0);
PlayerTextDrawFont(playerid, SpeedoDraw[4][playerid], 4);
SpeedoDraw[5][playerid] = CreatePlayerTextDraw(playerid, 633.500000, 404.639953, "LD_SPAC:white");
PlayerTextDrawLetterSize(playerid, SpeedoDraw[5][playerid], 0.000000, 0.000000);
PlayerTextDrawTextSize(playerid, SpeedoDraw[5][playerid], 1.500000, 38.079986);
PlayerTextDrawAlignment(playerid, SpeedoDraw[5][playerid], 1);
PlayerTextDrawColor(playerid, SpeedoDraw[5][playerid], -2147483393);
PlayerTextDrawSetShadow(playerid, SpeedoDraw[5][playerid], 0);
PlayerTextDrawSetOutline(playerid, SpeedoDraw[5][playerid], 0);
PlayerTextDrawFont(playerid, SpeedoDraw[5][playerid], 4);
SpeedoDraw[6][playerid] = CreatePlayerTextDraw(playerid, 559.000000, 428.399993, "LD_SPAC:white");
PlayerTextDrawLetterSize(playerid, SpeedoDraw[6][playerid], 0.000000, 0.000000);
PlayerTextDrawTextSize(playerid, SpeedoDraw[6][playerid], 74.500000, 1.679992);
PlayerTextDrawAlignment(playerid, SpeedoDraw[6][playerid], 1);
PlayerTextDrawColor(playerid, SpeedoDraw[6][playerid], -2147483393);
PlayerTextDrawSetShadow(playerid, SpeedoDraw[6][playerid], 0);
PlayerTextDrawSetOutline(playerid, SpeedoDraw[6][playerid], 0);
PlayerTextDrawFont(playerid, SpeedoDraw[6][playerid], 4);
SpeedoDraw[7][playerid] = CreatePlayerTextDraw(playerid, 595.500000, 429.520019, "LD_SPAC:white");
PlayerTextDrawLetterSize(playerid, SpeedoDraw[7][playerid], 0.000000, 0.000000);
PlayerTextDrawTextSize(playerid, SpeedoDraw[7][playerid], 1.500000, 12.319976);
PlayerTextDrawAlignment(playerid, SpeedoDraw[7][playerid], 1);
PlayerTextDrawColor(playerid, SpeedoDraw[7][playerid], -2147483393);
PlayerTextDrawSetShadow(playerid, SpeedoDraw[7][playerid], 0);
PlayerTextDrawSetOutline(playerid, SpeedoDraw[7][playerid], 0);
PlayerTextDrawFont(playerid, SpeedoDraw[7][playerid], 4);
SpeedoDraw[8][playerid] = CreatePlayerTextDraw(playerid, 577.500000, 430.640014, "ENGINE");
PlayerTextDrawLetterSize(playerid, SpeedoDraw[8][playerid], 0.268500, 1.079200);
PlayerTextDrawAlignment(playerid, SpeedoDraw[8][playerid], 2);
PlayerTextDrawColor(playerid, SpeedoDraw[8][playerid], -1);
PlayerTextDrawSetShadow(playerid, SpeedoDraw[8][playerid], 0);
PlayerTextDrawSetOutline(playerid, SpeedoDraw[8][playerid], -1);
PlayerTextDrawBackgroundColor(playerid, SpeedoDraw[8][playerid], 51);
PlayerTextDrawFont(playerid, SpeedoDraw[8][playerid], 1);
PlayerTextDrawSetProportional(playerid, SpeedoDraw[8][playerid], 1);
SpeedoDraw[9][playerid] = CreatePlayerTextDraw(playerid, 615.500000, 430.640014, "LIGHT");
PlayerTextDrawLetterSize(playerid, SpeedoDraw[9][playerid], 0.268500, 1.079200);
PlayerTextDrawAlignment(playerid, SpeedoDraw[9][playerid], 2);
PlayerTextDrawColor(playerid, SpeedoDraw[9][playerid], -1);
PlayerTextDrawSetShadow(playerid, SpeedoDraw[9][playerid], 0);
PlayerTextDrawSetOutline(playerid, SpeedoDraw[9][playerid], -1);
PlayerTextDrawBackgroundColor(playerid, SpeedoDraw[9][playerid], 51);
PlayerTextDrawFont(playerid, SpeedoDraw[9][playerid], 1);
PlayerTextDrawSetProportional(playerid, SpeedoDraw[9][playerid], 1);
SpeedoDraw[10][playerid] = CreatePlayerTextDraw(playerid, 539.500000, 407.119934, "KM/H");
PlayerTextDrawLetterSize(playerid, SpeedoDraw[10][playerid], 0.380499, 1.790399);
PlayerTextDrawAlignment(playerid, SpeedoDraw[10][playerid], 2);
PlayerTextDrawColor(playerid, SpeedoDraw[10][playerid], -1);
PlayerTextDrawSetShadow(playerid, SpeedoDraw[10][playerid], 0);
PlayerTextDrawSetOutline(playerid, SpeedoDraw[10][playerid], -1);
PlayerTextDrawBackgroundColor(playerid, SpeedoDraw[10][playerid], 51);
PlayerTextDrawFont(playerid, SpeedoDraw[10][playerid], 1);
PlayerTextDrawSetProportional(playerid, SpeedoDraw[10][playerid], 1);
SpeedoDraw[11][playerid] = CreatePlayerTextDraw(playerid, 560.500000, 408.239990, "LD_SPAC:white");
PlayerTextDrawLetterSize(playerid, SpeedoDraw[11][playerid], 0.000000, 0.000000);
PlayerTextDrawTextSize(playerid, SpeedoDraw[11][playerid], 71.500000, 18.480005);
PlayerTextDrawAlignment(playerid, SpeedoDraw[11][playerid], 1);
PlayerTextDrawColor(playerid, SpeedoDraw[11][playerid], -2147483393);
PlayerTextDrawSetShadow(playerid, SpeedoDraw[11][playerid], 0);
PlayerTextDrawSetOutline(playerid, SpeedoDraw[11][playerid], 0);
PlayerTextDrawFont(playerid, SpeedoDraw[11][playerid], 4);
SpeedoDraw[12][playerid] = CreatePlayerTextDraw(playerid, 596.500000, 410.479919, "FUEL");
PlayerTextDrawLetterSize(playerid, SpeedoDraw[12][playerid], 0.315499, 1.443200);
PlayerTextDrawAlignment(playerid, SpeedoDraw[12][playerid], 2);
PlayerTextDrawColor(playerid, SpeedoDraw[12][playerid], -1);
PlayerTextDrawSetShadow(playerid, SpeedoDraw[12][playerid], 0);
PlayerTextDrawSetOutline(playerid, SpeedoDraw[12][playerid], -1);
PlayerTextDrawBackgroundColor(playerid, SpeedoDraw[12][playerid], 51);
PlayerTextDrawFont(playerid, SpeedoDraw[12][playerid], 1);
PlayerTextDrawSetProportional(playerid, SpeedoDraw[12][playerid], 1);
}
На этом все!!!
Готовый pwn:
Готовый pwn:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Последнее редактирование:
