Вопросы

Здравствуйте. Нужна помощь с 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 пользователей онлайн

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

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

    • Talex
      От Talex
      Всем привет, сливаю первый мод!
      Информация о моде:

      — Основа Gamenix.
      — Мод переведен на Mysql R39, теперь ни каких слётов нет, мод работает стабильно с онлайном 160+.
      — Новый автосалон на TextDraw.
      — Система 3-х автомобилей (1 можно купить по дефолту, 2 и 3 за донат).
      — Автомобили у игроков теперь не пропадают (Id'ы авто сбивались, с номерами теперь тоже всё в порядке).
      — Оформление сервера полностью переработано, теперь оно более красивое.
      — Защита от копирования карты.
      — в меню сервера добавлен пункт визуальных настроек.
      — Номера на транспорт теперь можно приобрести в /donate.
      — Сделан новый красивый спидометр.
      — При получении номера, добавлен выбор региона.
      — Сделана система радаров и промокодов, создание прямо из игры.
      — Новый интерьер казино.
      — Магазин скинов теперь на TextDraw.
      — Автошкола полностью функционирует.
      — Добавлена информация после коннекта о последнем входе в собственный аккаунт.
      — Приватная защита от всех видов DDoS атак и DoS атак.                                                                                                                                    
      — пароль от АП (/alog) теперь у каждого администратора индивидуальный.
      — Изменено оформление самого мода
      Это не все изменения мода, их ещё очень много. все не упомнишь. 
      Автор мода: Неизвестен
      CUNBERS RP 8.4.3.rar