Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Спидометр

Salery

Изучающий
Пользователь
Регистрация
27 Ноя 2016
Сообщения
542
Лучшие ответы
0
Репутация
243
Награды
2


Выкладываю готовый спидометр для вашего мода

Что показывает спидометр

  • Скорость
  • ХП транспорта
  • Открыты или закрыты двери
  • Горит ли свет
  • Заведён ли двигатель

Начнём.

К переменным добавляем:

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; // обновление спидометра, чем меньше цифра тем плавнее
В OnGameModeInit:

PHP:
s_SpeedTD();
В OnPlayerConnect:

PHP:
s_Speed_Timer[playerid] = -1;
s_Speed_Vehicle[playerid] = s_Speed_Vehicle_Model[playerid] = 0;
s_SpeedPTD(playerid);
В OnPlayerDisconnect
PHP:
    if(s_Speed_Timer[playerid] != -1)
    {
        KillTimer(s_Speed_Timer[playerid]);
    }
В OnPlayerStateChange

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);
}
 
Последнее редактирование:
Сверху Снизу