---
Для начала объявим все переменные для текстдравов и прочего, для этого ко всем new добавляем
Code: Select all
new Float:VehicleHealth; // Переменная для определения хп кара
new obnvseed[64],obnvseed1[64],obnvseed2[64],doorstatus[30];; // Переменный для обновления текстдравов
new enstatus[30] // переменная для обновления статуса двигателя(заведён/заглушён), если у вас нет системы двигателя, не нужно заводить его, то не объявляем эту переменную ака не добавляем
new Text:TIC; // TextDraw Info for Cars
new Text:TIV; // TextDraw Info for BMX
new Text:THC[MAX_PLAYERS]; // TextDraw Health for Cars
new Text:TFC[MAX_PLAYERS]; // TextDraw Fuel for Cars
new Text:TSC[MAX_PLAYERS]; // TextDraw Speed for Cars & BMX
new Text:TEC[MAX_PLAYERS]; // TextDraw Engine for Cars // если нет системы двигателя то удаляем эту строку
new Text:TDC[MAX_PLAYERS]; // TextDraw Doors for Cars
new Text:THV[MAX_PLAYERS]; // TextDraw Health for BMX
В public OnGameModeInit() создаём наши текстдравы и ставим таймер для обновления
TIC = TextDrawCreate(14,290,"~y~Health:~n~Fuel:~n~Speed:");
TextDrawFont(TIC,1);
TextDrawBackgroundColor(TIC,COLOR_BLACK);
TextDrawSetOutline(TIC,1);
TextDrawSetShadow(TIC,1);
TIV = TextDrawCreate(14,300,"~y~Health:~n~Speed:");
TextDrawFont(TIV,1);
TextDrawBackgroundColor(TIV,COLOR_BLACK);
TextDrawSetOutline(TIV,1);
TextDrawSetShadow(TIV,1);
for(new i = 0; i < MAX_PLAYERS; i++)
{
THC[i] = TextDrawCreate(80,290,"~w~0%");
TFC[i] = TextDrawCreate(60,300,"~g~0%");
TSC[i] = TextDrawCreate(75,310,"~w~0 km/h");
TEC[i] = TextDrawCreate(15,320,"~r~En"); // если у вас нет системы двигателя удаляем эту строку
TDC[i] = TextDrawCreate(50,320,"~g~UnLock");
TextDrawBackgroundColor(TFC[i],COLOR_BLACK);
TextDrawBackgroundColor(TSC[i],COLOR_BLACK);
TextDrawBackgroundColor(THC[i],COLOR_BLACK);
TextDrawBackgroundColor(TEC[i],COLOR_BLACK); // если у вас нет системы двигателя удаляем эту строку
TextDrawBackgroundColor(TDC[i],COLOR_BLACK);
TextDrawFont(TFC[i],1);
TextDrawFont(TSC[i],1);
TextDrawFont(THC[i],1);
TextDrawFont(TEC[i],1); // если у вас нет системы двигателя удаляем эту строку
TextDrawFont(TDC[i],1);
TextDrawSetOutline(TFC[i],1);
TextDrawSetOutline(TSC[i],1);
TextDrawSetOutline(THC[i],1);
TextDrawSetOutline(TEC[i],1); // если у вас нет системы двигателя удаляем эту строку
TextDrawSetOutline(TDC[i],1);
TextDrawSetShadow(TFC[i],1);
TextDrawSetShadow(TSC[i],1);
TextDrawSetShadow(THC[i],1);
TextDrawSetShadow(TEC[i],1); // если у вас нет системы двигателя удаляем эту строку
TextDrawSetShadow(TDC[i],1);
THV[i] = TextDrawCreate(80,300,"~w~0%");
TextDrawBackgroundColor(THV[i],COLOR_BLACK);
TextDrawFont(THV[i],1);
TextDrawSetOutline(THV[i],1);
TextDrawSetShadow(THV[i],1);
}
SetTimer("SpeedUpdate",150,1); // таймер для обновления
В public OnPlayerStateChange(playerid, newstate, oldstate) добавим скрытие текстдравов если игрок покинул машину ака стал пешеходом и так-же показываем спидометр если он водитель
if(newstate == PLAYER_STATE_ONFOOT) // скрываем если покидает
{
TextDrawHideForPlayer(playerid,TIC);
TextDrawHideForPlayer(playerid,TIV);
TextDrawHideForPlayer(playerid,THC[playerid]);
TextDrawHideForPlayer(playerid,TFC[playerid]);
TextDrawHideForPlayer(playerid,TSC[playerid]);
TextDrawHideForPlayer(playerid,THV[playerid]);
TextDrawHideForPlayer(playerid,TEC[playerid]); // если у вас нет системы двигателя удаляем эту строку
TextDrawHideForPlayer(playerid,TDC[playerid]);
return 1;
}
if(newstate == PLAYER_STATE_DRIVER) // показываем
{
if(!IsABMX(newcar)) // если игрок садиться в любой кар кроме велосипеда
{
TextDrawShowForPlayer(playerid,TIC);
TextDrawShowForPlayer(playerid,THC[playerid]);
TextDrawShowForPlayer(playerid,TFC[playerid]);
TextDrawShowForPlayer(playerid,TEC[playerid]); // если у вас нет системы двигателя удаляем эту строку
TextDrawShowForPlayer(playerid,TDC[playerid]);
}
else // если игрок садиться в велосипед
{
TextDrawShowForPlayer(playerid,TIV);
TextDrawShowForPlayer(playerid,THV[playerid]);
}
TextDrawShowForPlayer(playerid,TSC[playerid]);
return 1;
}
Теперь в конец мода добавляем сток для определения скорости(км/ч) и обновления текстдравов
stock SpeedVehicle(playerid)
{
new Float:ST[4];
if(IsPlayerInAnyVehicle(playerid))
GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 170.3;
return floatround(ST[3]);
}
forward SpeedUpdate();
public SpeedUpdate()
{
for(new i; i < GetMaxPlayers(); i++)
{
if(IsPlayerInAnyVehicle(i))
{
new vehicle = GetPlayerVehicleID(i);
GetVehicleHealth(GetPlayerVehicleID(i),VehicleHealth);
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vehicle,engine,lights,alarm,doors,bonnet,boot,objective);
if(!IsABMX(vehicle)) // для всех каров кроме велосипедов
{
format(obnvseed2,64,"~w~%.0f%",VehicleHealth/10);
if(Gas[vehicle] > 10)
{
format(obnvseed,64,"~g~%d%",Gas[vehicle]);
}
else
{
format(obnvseed,64,"~r~%d%",Gas[vehicle]);
}
TextDrawSetString(THC[i],obnvseed2);
TextDrawSetString(TFC[i],obnvseed);
TextDrawSetString(TEC[i],enstatus); // если у вас нет
системы двигателя удаляем эту строку
if(gCarLock[vehicle] == 1) { format(doorstatus,30,"~r~Lock"); }
else { format(doorstatus,30,"~g~UnLock"); }
}
else // для велосипеда
{
format(obnvseed2,64,"~w~%.0f%",VehicleHealth/10);
TextDrawSetString(THV[i],obnvseed2);
}
format(obnvseed1,64, "~w~%d km/h",SpeedVehicle(i));
TextDrawSetString(TSC[i],obnvseed1);
}
}
}
return 1;
}
Если у вас нет распределения каров по типам(велосипеды, обычные авто, лодки, лётные т/с), то вставляем и этот паблик
stock IsABMX(carid)
{
new model = GetVehicleModel(carid);
if(model==509||model==481||model==510)
{
return 1;
}
return 0;
}
Автор: Неизвестен