Выкладываю готовый спидометр для вашего мода
Что показывает спидометр
- Скорость
- ХП транспорта
- Открыты или закрыты двери
- Горит ли свет
- Заведён ли двигатель
Начнём.
К переменным добавляем:
PHP:
new PlayerText:s_Speed_PTD[MAX_PLAYERS][13];
new Text:s_Speed_TD[5];
new s_Speed_Timer[MAX_PLAYERS];
new s_Speed_Vehicle[MAX_PLAYERS];
new s_Speed_Vehicle_Model[MAX_PLAYERS];
const s_SpeedTick = 500; // обновление спидометра, чем меньше цифра тем плавнее
PHP:
s_SpeedTD();
PHP:
s_Speed_Timer[playerid] = -1;
s_Speed_Vehicle[playerid] = s_Speed_Vehicle_Model[playerid] = 0;
s_SpeedPTD(playerid);
PHP:
if(s_Speed_Timer[playerid] != -1)
{
KillTimer(s_Speed_Timer[playerid]);
}
PHP:
if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
{
s_Speed_Vehicle[playerid] = GetPlayerVehicleID(playerid);
s_Speed_Vehicle_Model[playerid] = GetVehicleModel(s_Speed_Vehicle[playerid]);
}
else if((oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER) &&
newstate != PLAYER_STATE_DRIVER && newstate != PLAYER_STATE_PASSENGER)
{
s_Speed_Vehicle[playerid] = 0;
s_Speed_Vehicle_Model[playerid] = 0;
}
if(newstate == PLAYER_STATE_DRIVER)
{
s_SpeedShow(playerid);
}
if(newstate != PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_DRIVER)
{
s_SpeedHide(playerid);
}
PHP:
stock s_SpeedShow(playerid)
{
for(new i; i < 5; i ++)
{
TextDrawShowForPlayer(playerid, s_Speed_TD[i]);
}
for(new i; i < 13; i ++)
{
PlayerTextDrawShow(playerid, s_Speed_PTD[playerid][i]);
}
if(s_Speed_Timer[playerid] != -1)
{
KillTimer(s_Speed_Timer[playerid]);
}
s_Speed_Update(playerid, s_Speed_Vehicle[playerid]);
s_Speed_Timer[playerid] = SetTimerEx("@_s_SpeedTimer", s_SpeedTick, true, "i", playerid);
return 1;
}
stock s_SpeedHide(playerid)
{
for(new i; i < 5; i ++)
{
TextDrawHideForPlayer(playerid, s_Speed_TD[i]);
}
for(new i; i < 13; i ++)
{
PlayerTextDrawHide(playerid, s_Speed_PTD[playerid][i]);
}
if(s_Speed_Timer[playerid] != -1)
{
KillTimer(s_Speed_Timer[playerid]);
s_Speed_Timer[playerid] = -1;
}
return 1;
}
stock Float:OnVehicleMaximalSpeed(model)
{
switch(model)
{
case 400, 409, 516, 526, 535, 551, 575, 576, 579, 599: return 88.0;
case 401, 466: return 82.0;
case 402, 277: return 104.0;
case 403, 433, 471, 532, 601: return 61.0;
case 404: return 74.0;
case 405, 445, 518, 542:return 91.0;
case 410: return 72.0;
case 411: return 123.0;
case 412, 439, 560, 534, 602, 603: return 94.0;
case 415, 451: return 108.0;
case 416, 421: return 86.0;
case 419, 436, 474, 527, 529, 540, 546: return 83.0;
case 420, 550, 568: return 81.0;
case 422, 467, 489, 492, 500: return 78.0;
case 424: return 75.0;
case 426, 522, 596, 597, 598: return 98.0;
case 427, 507, 565, 587: return 92.0;
case 429, 541: return 113.0;
case 434: return 93.0;
case 438, 505, 515, 547: return 79.0;
case 440, 582: return 76.0;
case 461, 521, 524, 566: return 90.0;
case 462, 463, 468, 586: return 80.0;
case 558, 470, 482, 490: return 87.0;
case 475, 536, 567: return 96.0;
case 478: return 65.0;
case 480: return 103.0;
case 491: return 83.0;
case 494, 502, 503: return 120.0;
case 523, 580, 581, 585, 600: return 85.0;
case 506, 559, 562: return 100.0;
case 571: return 52.0;
case 514: return 67.0;
default: return 300.0;
}
return 300.0;
}
//td
stock s_Speed_Update(playerid, veh) // 40 max
{
new _f[4]; new Float:_h; new speed = GetVehicleSpeed(veh);
GetVehicleHealth(veh, _h);
new h = floatround(_h / 10);
format(_f, 4, "%d", h); PlayerTextDrawSetString(playerid, s_Speed_PTD[playerid][0], _f);
format(_f, 4, "%d", speed); PlayerTextDrawSetString(playerid, s_Speed_PTD[playerid][1], _f);
//health
PlayerTextDrawTextSize(playerid, s_Speed_PTD[playerid][2], 40 - (0.4 * h), 16.0000); // 40 - 100%
PlayerTextDrawTextSize(playerid, s_Speed_PTD[playerid][3], (0.4 * h), 16.0000); // 400 - 100
PlayerTextDrawShow(playerid, s_Speed_PTD[playerid][2]);
PlayerTextDrawShow(playerid, s_Speed_PTD[playerid][3]);
new Float:step = 40.0 / OnVehicleMaximalSpeed(s_Speed_Vehicle_Model[playerid]);
PlayerTextDrawTextSize(playerid,s_Speed_PTD[playerid][4], 40 - (step * speed), 16.0000);
PlayerTextDrawTextSize(playerid,s_Speed_PTD[playerid][5], (step * speed), 16.0000);
PlayerTextDrawShow(playerid, s_Speed_PTD[playerid][4]);
PlayerTextDrawShow(playerid, s_Speed_PTD[playerid][5]);
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(s_Speed_Vehicle[playerid], engine, lights, alarm, doors, bonnet, boot, objective);
if(doors == 1) PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][7], -1299494913);
else PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][7], 1111638783);
if(lights == 1) PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][8], -1299494913);
else PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][8], 1111638783);
if(engine == 1) PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][9], -1299494913);
else PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][9], 1111638783);
PlayerTextDrawShow(playerid, s_Speed_PTD[playerid][7]);
PlayerTextDrawShow(playerid, s_Speed_PTD[playerid][8]);
PlayerTextDrawShow(playerid, s_Speed_PTD[playerid][9]);
}
@_s_SpeedTimer(playerid);
@_s_SpeedTimer(playerid)
{
s_Speed_Update(playerid, s_Speed_Vehicle[playerid]);
return 1;
}
stock GetVehicleSpeed(vehicleid)
{
new Float: v[3];
GetVehicleVelocity(vehicleid, v[0], v[1], v[2]);
return floatround( 100.0 * floatsqroot(
floatpower(v[0],2) +
floatpower(v[1],2) +
floatpower(v[2],2)),
floatround_floor);
}
stock s_SpeedTD()
{
s_Speed_TD[0] = TextDrawCreate(519.4762, 337.1865, "LD_SPAC:white"); // пусто
TextDrawTextSize(s_Speed_TD[0], 100.0000, 16.0000);
TextDrawAlignment(s_Speed_TD[0], 1);
TextDrawColor(s_Speed_TD[0], 1111638783);
TextDrawBackgroundColor(s_Speed_TD[0], 255);
TextDrawFont(s_Speed_TD[0], 4);
TextDrawSetProportional(s_Speed_TD[0], 0);
TextDrawSetShadow(s_Speed_TD[0], 0);
s_Speed_TD[1] = TextDrawCreate(519.8569, 353.8265, "LD_SPAC:white"); // пусто
TextDrawTextSize(s_Speed_TD[1], 40.0000, 16.0000);
TextDrawAlignment(s_Speed_TD[1], 1);
TextDrawColor(s_Speed_TD[1], -1001698305);
TextDrawBackgroundColor(s_Speed_TD[1], 255);
TextDrawFont(s_Speed_TD[1], 4);
TextDrawSetProportional(s_Speed_TD[1], 0);
TextDrawSetShadow(s_Speed_TD[1], 0);
s_Speed_TD[2] = TextDrawCreate(579.6675, 353.8265, "LD_SPAC:white"); // пусто
TextDrawTextSize(s_Speed_TD[2], 40.0000, 16.0000);
TextDrawAlignment(s_Speed_TD[2], 1);
TextDrawColor(s_Speed_TD[2], 1111638783);
TextDrawBackgroundColor(s_Speed_TD[2], 255);
TextDrawFont(s_Speed_TD[2], 4);
TextDrawSetProportional(s_Speed_TD[2], 0);
TextDrawSetShadow(s_Speed_TD[2], 0);
s_Speed_TD[3] = TextDrawCreate(519.8569, 370.1275, "LD_SPAC:white"); // пусто
TextDrawTextSize(s_Speed_TD[3], 40.0000, 16.0000);
TextDrawAlignment(s_Speed_TD[3], 1);
TextDrawColor(s_Speed_TD[3], 1152551679);
TextDrawBackgroundColor(s_Speed_TD[3], 255);
TextDrawFont(s_Speed_TD[3], 4);
TextDrawSetProportional(s_Speed_TD[3], 0);
TextDrawSetShadow(s_Speed_TD[3], 0);
s_Speed_TD[4] = TextDrawCreate(579.6675, 370.1275, "LD_SPAC:white"); // пусто
TextDrawTextSize(s_Speed_TD[4], 40.0000, 16.0000);
TextDrawAlignment(s_Speed_TD[4], 1);
TextDrawColor(s_Speed_TD[4], 1111638783);
TextDrawBackgroundColor(s_Speed_TD[4], 255);
TextDrawFont(s_Speed_TD[4], 4);
TextDrawSetProportional(s_Speed_TD[4], 0);
TextDrawSetShadow(s_Speed_TD[4], 0);
}
stock s_SpeedPTD(playerid)
{
s_Speed_PTD[playerid][0] = CreatePlayerTextDraw(playerid, 562.7617, 356.8265, "100"); // hp
PlayerTextDrawLetterSize(playerid, s_Speed_PTD[playerid][0], 0.2228, 1.2458);
PlayerTextDrawAlignment(playerid, s_Speed_PTD[playerid][0], 1);
PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][0], -1);
PlayerTextDrawBackgroundColor(playerid, s_Speed_PTD[playerid][0], 255);
PlayerTextDrawFont(playerid, s_Speed_PTD[playerid][0], 3);
PlayerTextDrawSetProportional(playerid, s_Speed_PTD[playerid][0], 1);
PlayerTextDrawSetShadow(playerid, s_Speed_PTD[playerid][0], 0);
s_Speed_PTD[playerid][1] = CreatePlayerTextDraw(playerid, 562.7617, 371.7275, "100"); // speed
PlayerTextDrawLetterSize(playerid, s_Speed_PTD[playerid][1], 0.2228, 1.2458);
PlayerTextDrawAlignment(playerid, s_Speed_PTD[playerid][1], 1);
PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][1], -1);
PlayerTextDrawBackgroundColor(playerid, s_Speed_PTD[playerid][1], 255);
PlayerTextDrawFont(playerid, s_Speed_PTD[playerid][1], 3);
PlayerTextDrawSetProportional(playerid, s_Speed_PTD[playerid][1], 1);
PlayerTextDrawSetShadow(playerid, s_Speed_PTD[playerid][1], 0);
s_Speed_PTD[playerid][2] = CreatePlayerTextDraw(playerid, 519.8569, 353.8265, "LD_SPAC:white"); // health_1
PlayerTextDrawTextSize(playerid, s_Speed_PTD[playerid][2], 30.0000, 16.0000);
PlayerTextDrawAlignment(playerid, s_Speed_PTD[playerid][2], 1);
PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][2], 1111638783);
PlayerTextDrawBackgroundColor(playerid, s_Speed_PTD[playerid][2], 255);
PlayerTextDrawFont(playerid, s_Speed_PTD[playerid][2], 4);
PlayerTextDrawSetProportional(playerid, s_Speed_PTD[playerid][2], 0);
PlayerTextDrawSetShadow(playerid, s_Speed_PTD[playerid][2], 0);
s_Speed_PTD[playerid][3] = CreatePlayerTextDraw(playerid, 579.6423, 353.8265, "LD_SPAC:white"); // health_1
PlayerTextDrawTextSize(playerid, s_Speed_PTD[playerid][3], 10.0000, 16.0000);
PlayerTextDrawAlignment(playerid, s_Speed_PTD[playerid][3], 1);
PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][3], -1001698305);
PlayerTextDrawBackgroundColor(playerid, s_Speed_PTD[playerid][3], 255);
PlayerTextDrawFont(playerid, s_Speed_PTD[playerid][3], 4);
PlayerTextDrawSetProportional(playerid, s_Speed_PTD[playerid][3], 0);
PlayerTextDrawSetShadow(playerid, s_Speed_PTD[playerid][3], 0);
s_Speed_PTD[playerid][4] = CreatePlayerTextDraw(playerid, 519.8569, 370.0398, "LD_SPAC:white"); // speed_1
PlayerTextDrawTextSize(playerid, s_Speed_PTD[playerid][4], 30.0000, 16.0000);
PlayerTextDrawAlignment(playerid, s_Speed_PTD[playerid][4], 1);
PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][4], 1111638783);
PlayerTextDrawBackgroundColor(playerid, s_Speed_PTD[playerid][4], 255);
PlayerTextDrawFont(playerid, s_Speed_PTD[playerid][4], 4);
PlayerTextDrawSetProportional(playerid, s_Speed_PTD[playerid][4], 0);
PlayerTextDrawSetShadow(playerid, s_Speed_PTD[playerid][4], 0);
s_Speed_PTD[playerid][5] = CreatePlayerTextDraw(playerid, 579.6423, 369.9275, "LD_SPAC:WHITE"); // speed_2
PlayerTextDrawTextSize(playerid, s_Speed_PTD[playerid][5], 10.0000, 16.0000);
PlayerTextDrawAlignment(playerid, s_Speed_PTD[playerid][5], 1);
PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][5], 1152551679);
PlayerTextDrawBackgroundColor(playerid, s_Speed_PTD[playerid][5], 255);
PlayerTextDrawFont(playerid, s_Speed_PTD[playerid][5], 4);
PlayerTextDrawSetProportional(playerid, s_Speed_PTD[playerid][5], 0);
PlayerTextDrawSetShadow(playerid, s_Speed_PTD[playerid][5], 0);
s_Speed_PTD[playerid][6] = CreatePlayerTextDraw(playerid, 545.9998, 339.3008, "SPEEDOMETER"); // speed
PlayerTextDrawLetterSize(playerid, s_Speed_PTD[playerid][6], 0.2228, 1.2458);
PlayerTextDrawAlignment(playerid, s_Speed_PTD[playerid][6], 1);
PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][6], -1);
PlayerTextDrawBackgroundColor(playerid, s_Speed_PTD[playerid][6], 255);
PlayerTextDrawFont(playerid, s_Speed_PTD[playerid][6], 1);
PlayerTextDrawSetProportional(playerid, s_Speed_PTD[playerid][6], 1);
PlayerTextDrawSetShadow(playerid, s_Speed_PTD[playerid][6], 0);
s_Speed_PTD[playerid][7] = CreatePlayerTextDraw(playerid, 519.3380, 387.1065, "LD_SPAC:white"); // door
PlayerTextDrawTextSize(playerid, s_Speed_PTD[playerid][7], 33.0000, 16.0000);
PlayerTextDrawAlignment(playerid, s_Speed_PTD[playerid][7], 1);
PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][7], 1111638783);
PlayerTextDrawBackgroundColor(playerid, s_Speed_PTD[playerid][7], 255);
PlayerTextDrawFont(playerid, s_Speed_PTD[playerid][7], 4);
PlayerTextDrawSetProportional(playerid, s_Speed_PTD[playerid][7], 0);
PlayerTextDrawSetShadow(playerid, s_Speed_PTD[playerid][7], 0);
s_Speed_PTD[playerid][8] = CreatePlayerTextDraw(playerid, 553.0298, 387.1065, "LD_SPAC:white"); // light
PlayerTextDrawTextSize(playerid, s_Speed_PTD[playerid][8], 33.0000, 16.0000);
PlayerTextDrawAlignment(playerid, s_Speed_PTD[playerid][8], 1);
PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][8], 1111638783);
PlayerTextDrawBackgroundColor(playerid, s_Speed_PTD[playerid][8], 255);
PlayerTextDrawFont(playerid, s_Speed_PTD[playerid][8], 4);
PlayerTextDrawSetProportional(playerid, s_Speed_PTD[playerid][8], 0);
PlayerTextDrawSetShadow(playerid, s_Speed_PTD[playerid][8], 0);
s_Speed_PTD[playerid][9] = CreatePlayerTextDraw(playerid, 586.7216, 387.1065, "LD_SPAC:white"); // engine
PlayerTextDrawTextSize(playerid, s_Speed_PTD[playerid][9], 33.0000, 16.0000);
PlayerTextDrawAlignment(playerid, s_Speed_PTD[playerid][9], 1);
PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][9], 1111638783);
PlayerTextDrawBackgroundColor(playerid, s_Speed_PTD[playerid][9], 255);
PlayerTextDrawFont(playerid, s_Speed_PTD[playerid][9], 4);
PlayerTextDrawSetProportional(playerid, s_Speed_PTD[playerid][9], 0);
PlayerTextDrawSetShadow(playerid, s_Speed_PTD[playerid][9], 0);
s_Speed_PTD[playerid][10] = CreatePlayerTextDraw(playerid, 527.7141, 390.5008, "DOORS"); // speed
PlayerTextDrawLetterSize(playerid, s_Speed_PTD[playerid][10], 0.1443, 0.9301);
PlayerTextDrawAlignment(playerid, s_Speed_PTD[playerid][10], 1);
PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][10], -1);
PlayerTextDrawBackgroundColor(playerid, s_Speed_PTD[playerid][10], 255);
PlayerTextDrawFont(playerid, s_Speed_PTD[playerid][10], 1);
PlayerTextDrawSetProportional(playerid, s_Speed_PTD[playerid][10], 1);
PlayerTextDrawSetShadow(playerid, s_Speed_PTD[playerid][10], 0);
s_Speed_PTD[playerid][11] = CreatePlayerTextDraw(playerid, 564.8050, 390.5008, "LIGHT"); // speed
PlayerTextDrawLetterSize(playerid, s_Speed_PTD[playerid][11], 0.1443, 0.9301);
PlayerTextDrawAlignment(playerid, s_Speed_PTD[playerid][11], 1);
PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][11], -1);
PlayerTextDrawBackgroundColor(playerid, s_Speed_PTD[playerid][11], 255);
PlayerTextDrawFont(playerid, s_Speed_PTD[playerid][11], 1);
PlayerTextDrawSetProportional(playerid, s_Speed_PTD[playerid][11], 1);
PlayerTextDrawSetShadow(playerid, s_Speed_PTD[playerid][11], 0);
s_Speed_PTD[playerid][12] = CreatePlayerTextDraw(playerid, 595.9974, 390.5008, "ENGINE"); // speed
PlayerTextDrawLetterSize(playerid, s_Speed_PTD[playerid][12], 0.1443, 0.9301);
PlayerTextDrawAlignment(playerid, s_Speed_PTD[playerid][12], 1);
PlayerTextDrawColor(playerid, s_Speed_PTD[playerid][12], -1);
PlayerTextDrawBackgroundColor(playerid, s_Speed_PTD[playerid][12], 255);
PlayerTextDrawFont(playerid, s_Speed_PTD[playerid][12], 1);
PlayerTextDrawSetProportional(playerid, s_Speed_PTD[playerid][12], 1);
PlayerTextDrawSetShadow(playerid, s_Speed_PTD[playerid][12], 0);
}
Последнее редактирование: