Вопросы

Здравствуйте. Нужна помощь с handling_plugin_v14. Как сделать сохранения в (cfg, mysql). И что бы скорость настраивалась не для одной машины, а именно для модели. Кому не сложно напишите, не одну мне поможете :)

Спойлер


#define FILTERSCRIPT

// Рекомендуемая версия адаптации: Beta-Testing 2.4.3
// Рекомендуемая версия mp_handling: 1.4

#include <a_samp>
#include <mp_handling>

native IsValidVehicle(vehicleid);

#define HEDITOR_DIALOG_ID (200)

enum E_HEDITOR_PARAM_TYPE
{
    PARAM_TYPE_UINT,
    PARAM_TYPE_FLOAT,
    PARAM_TYPE_BOOL,
    PARAM_TYPE_SPECIAL
};

enum E_HEDITOR_STRUCT
{
    HEDIT_NAME[40],                        // parameter name
    HEDIT_FORMAT_STR[10],                // format string
    E_HEDITOR_PARAM_TYPE:HEDIT_TYPE,    // parameter type
    e_handling_id:HEDIT_ID                // e_handling_id id
};

new g_heditor_data[][E_HEDITOR_STRUCT] =
{
    { "Масса", "%.2f",                             PARAM_TYPE_FLOAT, hd_mass },
    { "Масса поворота", "%.2f",                 PARAM_TYPE_FLOAT, hd_turn_mass },
    { "Множитель сопротивления", "%.2f",         PARAM_TYPE_FLOAT, hd_drag_coeff },
    { "Центр тяжести (X)", "%.2f",                 PARAM_TYPE_FLOAT, hd_center_of_mass_x },
    { "Центр тяжести (Y)", "%.2f",                 PARAM_TYPE_FLOAT, hd_center_of_mass_y },
    { "Центр тяжести (Z)", "%.2f",                 PARAM_TYPE_FLOAT, hd_center_of_mass_z },
    { "Процент высоты (в воде)", "%d",             PARAM_TYPE_UINT, hd_percent_submerged },
    { "Сцепление колес", "%.2f",                 PARAM_TYPE_FLOAT, hd_traction_multiplier },
    { "Показатель сцепления колес", "%.2f",     PARAM_TYPE_FLOAT, hd_traction_loss },
    { "Кол-во передач", "%d",                     PARAM_TYPE_UINT, hd_number_of_gears },
    { "Максимальная скорость", "%.2f",             PARAM_TYPE_FLOAT, hd_max_velocity },
    { "Ускорение двигателя", "%.2f",             PARAM_TYPE_FLOAT, hd_engine_acceleration },
    { "Привод", "%s",                             PARAM_TYPE_SPECIAL, hd_drive_type },
    { "Тип двигателя", "%s",                     PARAM_TYPE_SPECIAL, hd_engine_type },
    { "Сила торможения", "%.2f",                 PARAM_TYPE_FLOAT, hd_brake_deceleration },
    { "Антиблокировочная система", "%s",         PARAM_TYPE_BOOL, hd_abs },
    { "Угол поворота руля (макс.)", "%.2f",     PARAM_TYPE_FLOAT, hd_steering_lock },
    { "Множитель повреждений", "%.2f",             PARAM_TYPE_FLOAT, hd_collision_damage_mult },
    { "Фары", "%d",                             PARAM_TYPE_UINT, hd_head_light },
    { "Фонари", "%d",                             PARAM_TYPE_UINT, hd_tail_light },
    { "Множитель масштаба колес", "%.2f",         PARAM_TYPE_FLOAT, hd_wheel_scale }
};

public OnPlayerSpawn(playerid)
{
    SendClientMessage(playerid, 0xFFFFFFFF, "Handling Editor - {66CC66}/heditor");
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmdtext, "/heditor", true, 8) == 0)
    {
        if(strlen(cmdtext) < 9)
        {
            SendClientMessage(playerid, 0xEEEEEEFF, "Usage: /heditor <vehicle id>");
            return 1;
        }
        
        new vehicleid = strval(cmdtext[9]);

        if(!IsValidVehicle(vehicleid))
        {
            SendClientMessage(playerid, 0xEEEEEEFF, "Invalid vehicle id");
            return 1;
        }
        
        ShowHandlingEditor(playerid, vehicleid);
        return 1;
    }
    
    return 0;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case HEDITOR_DIALOG_ID:
        {
            if(!response)
            {
                return 1;
            }
            
            if(listitem < 0 || listitem > sizeof(g_heditor_data) - 1)
            {
                return 1;
            }
            
            SetPVarInt(playerid, "heditor_param_id", listitem);
            
            ShowEditDialog(
                playerid,
                g_heditor_data[listitem][HEDIT_TYPE],
                g_heditor_data[listitem][HEDIT_ID]
            );
            
            return 1;
        }
        case HEDITOR_DIALOG_ID + 1:
        {
            new vehicleid = GetPVarInt(playerid, "heditor_vehicle_id");
            new param_id = GetPVarInt(playerid, "heditor_param_id");
            
            if(!response)
            {
                ShowHandlingEditor(playerid, vehicleid);
                return 1;
            }
            
            new value = 0;
            
            switch(g_heditor_data[param_id][HEDIT_TYPE])
            {
                case PARAM_TYPE_UINT:
                {
                    SetVehicleHandlingInt(
                        vehicleid,
                        g_heditor_data[param_id][HEDIT_ID],
                        strval(inputtext)
                    );
                }
                case PARAM_TYPE_FLOAT:
                {
                    SetVehicleHandlingFloat(
                        vehicleid,
                        g_heditor_data[param_id][HEDIT_ID],
                        floatstr(inputtext)
                    );
                }
                case PARAM_TYPE_BOOL:
                {
                    SetVehicleHandlingInt(
                        vehicleid,
                        g_heditor_data[param_id][HEDIT_ID],
                        strval(inputtext) ? 1 : 0
                    );
                }
                case PARAM_TYPE_SPECIAL:
                {
                    value = strval(inputtext);
                    
                    if(value < 0)
                    {
                        value = 0;
                    }
                    else if(value > 2)
                    {
                        value = 2;
                    }
                    
                    SetVehicleHandlingInt(
                        vehicleid,
                        g_heditor_data[param_id][HEDIT_ID],
                        strval(inputtext)
                    );
                }
            }
            
            ShowHandlingEditor(playerid, vehicleid);
            return 1;
        }
    }
    
    return 1;
}

stock ShowHandlingEditor(playerid, vehicleid)
{
    if(!IsValidVehicle(vehicleid))
    {
        return 1;
    }
    
    static
        value_text[16],
        dialog_text[2048],
        value
    ;
    
    dialog_text = "{FFFFFF}Параметр\t{FFFFFF}Значение";
    
    for(new idx = 0; idx < sizeof(g_heditor_data); idx++)
    {
        if(g_heditor_data[idx][HEDIT_TYPE] == PARAM_TYPE_FLOAT)
        {
            GetVehicleHandlingFloat(vehicleid, g_heditor_data[idx][HEDIT_ID], Float:value);
        }
        else
        {
            GetVehicleHandlingInt(vehicleid, g_heditor_data[idx][HEDIT_ID], value);
        }
        
        if(g_heditor_data[idx][HEDIT_TYPE] == PARAM_TYPE_BOOL)
        {
            format(value_text, sizeof(value_text), value ? ("есть") : ("нет"));
        }
        else if(g_heditor_data[idx][HEDIT_TYPE] == PARAM_TYPE_SPECIAL)
        {
            static const drive_type_str[][8 + 1] =
            {
                "передний",
                "задний",
                "полный"
            };
            
            static const engine_type_str[][7 + 1] =
            {
                "бензин",
                "дизель",
                "электро"
            };
            
            switch(g_heditor_data[idx][HEDIT_ID])
            {
                case hd_drive_type:
                {
                    format(value_text, sizeof(value_text), drive_type_str[value]);
                }
                case hd_engine_type:
                {
                    format(value_text, sizeof(value_text), engine_type_str[value]);
                }
            }
        }
        else
        {
            format(
                value_text,
                sizeof(value_text),
                g_heditor_data[idx][HEDIT_FORMAT_STR],
                value
            );
        }
        
        format(
            dialog_text,
            sizeof(dialog_text),
            "%s\n{FFFFFF}%s\t{00F400}%s",
            dialog_text,
            g_heditor_data[idx][HEDIT_NAME],
            value_text
        );
    }
    
    SetPVarInt(playerid, "heditor_vehicle_id", vehicleid);
    
    ShowPlayerDialog(
        playerid,
        HEDITOR_DIALOG_ID,
        DIALOG_STYLE_TABLIST_HEADERS,
        "Handling Editor",
        dialog_text,
        "Выбрать",
        "Отмена"
    );
    
    return 1;
}

stock ShowEditDialog(playerid, E_HEDITOR_PARAM_TYPE:type, e_handling_id:id)
{
    switch(type)
    {
        case PARAM_TYPE_UINT:
        {
            ShowPlayerDialog(
                playerid,
                HEDITOR_DIALOG_ID + 1,
                DIALOG_STYLE_INPUT,
                "Handling Editor",
                "{FFFFFF}Введите число:",
                "Изменить",
                "Отмена"
            );
        }
        case PARAM_TYPE_FLOAT:
        {
            ShowPlayerDialog(
                playerid,
                HEDITOR_DIALOG_ID + 1,
                DIALOG_STYLE_INPUT,
                "Handling Editor",
                "{FFFFFF}Введите дробное число:",
                "Изменить",
                "Отмена"
            );
        }
        case PARAM_TYPE_BOOL:
        {
            ShowPlayerDialog(
                playerid,
                HEDITOR_DIALOG_ID + 1,
                DIALOG_STYLE_INPUT,
                "Handling Editor",
                "{FFFFFF}Введите 0 (нет) или 1 (есть):",
                "Изменить",
                "Отмена"
            );
        }
        case PARAM_TYPE_SPECIAL:
        {
            switch(id)
            {
                case hd_drive_type:
                {
                    ShowPlayerDialog(
                        playerid,
                        HEDITOR_DIALOG_ID + 1,
                        DIALOG_STYLE_INPUT,
                        "Handling Editor",
                        "{FFFFFF}0: передний привод\n\
                        1: задний привод\n\
                        2: полный привод\n\
                        \n{FFFFFF}Введите требуемое число:",
                        "Изменить",
                        "Отмена"
                    );
                }
                case hd_engine_type:
                {
                    ShowPlayerDialog(
                        playerid,
                        HEDITOR_DIALOG_ID + 1,
                        DIALOG_STYLE_INPUT,
                        "Handling Editor",
                        "{FFFFFF}0: бензин\n\
                        1: дизель\n\
                        2: электро\n\
                        \n{FFFFFF}Введите требуемое число:",
                        "Изменить",
                        "Отмена"
                    );
                }
            }
        }
    }
    
    return 1;
}

 

Отредактировано пользователем tuki

Поделиться сообщением


Ссылка на сообщение

4 ответа на этот вопрос

  • 0

Это не просто код подредактировать, а надо писать полноценную систему. Вам в стол заказов, иначе не думаю, что кто-то возьмётся Вам помочь :)

Поделиться сообщением


Ссылка на сообщение
  • 0

@Aurum можно взяться токо если за деньги :$

Поделиться сообщением


Ссылка на сообщение
  • 0

Если бесплатно никто не может помочь, напишите в теме сколько это примерно будет стоить. Чтоб я знал цену, и люди которым это интересно, а интересно я думаю это многим :)

Поделиться сообщением


Ссылка на сообщение
  • 0
29 минут назад, tuki сказал:

Если бесплатно никто не может помочь, напишите в теме сколько это примерно будет стоить. Чтоб я знал цену, и люди которым это интересно, а интересно я думаю это многим :)

Пиши ему > Клац

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Mister Odin
      От Mister Odin
       
      new
       g_teleport_list[39][E_TELEPORT_LIST] = {  {"Спавн пгт.Батырево", 1802.3612, 2508.4824, 15.8887},  {"Спавн г.Арзамас", -113.5887, 977.7222, 12.0346},     {"Спавн г.Южный", 2744.2770, -2446.7246, 21.8988},     {"Центральный банк", 1852.020385,2040.791381,15.892713},  {"Рублёвка", -837.7783, 888.6161, 12.7232},  {"Казино", 1332.4252, 2358.7014, 17.6641},  {"Битва за контейнеры", 614.5167, 1722.3566, 12.0709},  {"Автосалон низкого класса", 2493.9616, -722.9544, 12.3315},  {"Автосалон среднего класса", 1407.7449, 455.4801, 13.1630},  {"Автосалон высокого класса", -14.0637, 2614.5664, 10.9892},   {"Мотосалон Harley Davidson", 785.720153, 750.465087, 12.000024},  {"Автошкола", 1909.174438,2227.679687,15.708162},  {"Военкомат", 1916.778564,2302.411376,15.574637},  {"Правительство области", -139.140975,593.789611,12.145712},  {"Отдел полиции №1 (ГИБДД)", 1906.805786,-2234.382812,11.257631},  {"Отдел полиции №2 (УМВД)", 2581.309326,-2416.139892,21.960090},  {"Отдел ФСБ", 1823.904663,2095.636718,15.848405},  {"Городская больница г.Арзамас", -285.797210,581.851562,12.120290},   {"СМИ", -317.708038,821.221679,13.051450},  {"Воинская часть", 1703.197265,1678.025878,15.279437},  {"Арзамасская ОПГ", 438.705322,1046.505126,12.002637},  {"Батыревская ОПГ", 1941.203857,2161.006591,15.705187},  {"Лыткаринская ОПГ", -2346.002441,75.257041,21.002962},  {"Шахта", 2381.5727, 1726.4451, -2.1506},  {"Завод", -1062.6697, 2204.1894, 38.0964},  {"Инкосация", 1864.1374, 2011.7136, 15.8546},  {"Транспортная Компания", 2362.1115, 1972.5627, 15.5530},  {"База механиков", 1840.918090,-118.025146,15.695312},  {"Курьерская служба доставки", 2764.509765,-2396.882568,21.890625},  {"Аренда автобуса(Южный)", 2771.041992,-2454.780761,21.845964},  {"Аренда автобуса(Арзамас)", -127.487670,943.652648,12.142824},   {"Аренда автобуса(Батырево)", 1798.986328,2529.591552,15.664262},  {"Гоночная трасса", -1568.7784, 1611.8305, 36.3971},  {"Дом на горе", -789.5397, -456.7479, 741.1422},  {"СТО и тюнинг-ателье", 1856.1375, -122.3266, 15.6888},  {"Аренда транспорта пгт.Батырево", 1763.641723,2255.673339,15.865348},  {"Аренда транспорта г.Арзамас", -36.923530,1360.673583,12.002090},  {"Аренда транспорта г.Южный", 1966.599975,-2603.943603,10.820312},  {"Тайный интерьер в Лыткарино", -2424.5818, 2846.3291, 40.7908} };