Вопросы

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

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

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

    • angel_sinvays
      От angel_sinvays


      Скачать файл Florida Role Play | (Бонусный)
      Список доработок/изменений:

      1. Исправлены дыры с рублями, падением мода
      2. Новый античит(/ac)
      3. Аренда вертолетов (/gps - аренда транспорта - аренда вертолетов)
      4. Добавлена система /goadminka (раздача админки при определённом онлайне)
      5. Обновленны интерьеры банд, СМИ, ПД, выбор скина, домов, магазинов
      6. Изменён экстерьер парка у мэрии, на против больницы
      7. Изменен текстдрав Логотипа, выбор скина, спидометра, дм арены, капта
      8. Вместо мопедов сделаны пикапы аренды
      9. Добавлена система VIP (Бронза, Серебро, Золото и Верона)
      10. Изменена система семей
      11. Добавлен чат для випов (/vc)
      12. При попытки проследить за ботом, перекидывает за игрока
      13. Добавлено казино, в котром можно играть на донат и рубли
      14. Добавлена система дуэлей
      15. Добавлены команды: /security, /checkfull и /fonline
      16. Изменён бот для авто-инвайта
      17. Изменена система дм зон (отличается от дуэлей)
      18. Доработана система статистики администратора, добавлено время администрирования в /admins
      19. Добавлен премиум меню для Verona PREMIUM
      20. Добавлены карты для /tp - Мероприятия
      21. Добавлена статистика лидера, изменена /lmenu
      22. Добавлена покупка аксессуаров в /donate
      23. Добавлена команда /obj
      24. Перераспределил команды для админов
      25. При наличии 1000 рублей или большой суммы виртов у игрока появляется кейс
      26. Исправлены баги со спавном банд
      27. Исправлены баги с падением под текстуры
      28. Исправлен баг с виртуальными мирами
      29. Добавлен NPC авто-инвайт на спавн
      30. Добавлен NPC проведения дуэлей
      31. Исправлена команда /banip
      32. Изменена и доделана система от сливов
      33. Возможность добавить своих ботов (+ уже встроены в мод)
      34. Доработана система мероприятий
      35. Переработана система доната (/donaterub and /donate)
      36. Обновлены плагины, почищена БД
      37. Новые артефакты
      38. Новый спавн
      39. Новая аренда
      40. Автоинвайт в мэрии
       
      UPD: Понизил ценник на мод
      Добавил angel_sinvays Добавлено 14.02.2022 Категория Моды Автор Angel Sinvays  
    • angel_sinvays
      От angel_sinvays
      Список доработок/изменений:

      1. Исправлены дыры с рублями, падением мода
      2. Новый античит(/ac)
      3. Аренда вертолетов (/gps - аренда транспорта - аренда вертолетов)
      4. Добавлена система /goadminka (раздача админки при определённом онлайне)
      5. Обновленны интерьеры банд, СМИ, ПД, выбор скина, домов, магазинов
      6. Изменён экстерьер парка у мэрии, на против больницы
      7. Изменен текстдрав Логотипа, выбор скина, спидометра, дм арены, капта
      8. Вместо мопедов сделаны пикапы аренды
      9. Добавлена система VIP (Бронза, Серебро, Золото и Верона)
      10. Изменена система семей
      11. Добавлен чат для випов (/vc)
      12. При попытки проследить за ботом, перекидывает за игрока
      13. Добавлено казино, в котром можно играть на донат и рубли
      14. Добавлена система дуэлей
      15. Добавлены команды: /security, /checkfull и /fonline
      16. Изменён бот для авто-инвайта
      17. Изменена система дм зон (отличается от дуэлей)
      18. Доработана система статистики администратора, добавлено время администрирования в /admins
      19. Добавлен премиум меню для Verona PREMIUM
      20. Добавлены карты для /tp - Мероприятия
      21. Добавлена статистика лидера, изменена /lmenu
      22. Добавлена покупка аксессуаров в /donate
      23. Добавлена команда /obj
      24. Перераспределил команды для админов
      25. При наличии 1000 рублей или большой суммы виртов у игрока появляется кейс
      26. Исправлены баги со спавном банд
      27. Исправлены баги с падением под текстуры
      28. Исправлен баг с виртуальными мирами
      29. Добавлен NPC авто-инвайт на спавн
      30. Добавлен NPC проведения дуэлей
      31. Исправлена команда /banip
      32. Изменена и доделана система от сливов
      33. Возможность добавить своих ботов (+ уже встроены в мод)
      34. Доработана система мероприятий
      35. Переработана система доната (/donaterub and /donate)
      36. Обновлены плагины, почищена БД
      37. Новые артефакты
      38. Новый спавн
      39. Новая аренда
      40. Автоинвайт в мэрии
       
      UPD: Понизил ценник на мод
    • angel_sinvays
      От angel_sinvays
      Attractive RP
      Скачать файл Давно не было сливов , сейчас я вам готов продемонстрировать копию проекта Attractive RolePlay
      Изначально слив был выложен на моём канале, но после я хочу выложить его сюда.
      Добавил angel_sinvays Добавлено 01.05.2024 Категория Моды Автор Angel Sinvays  
    • KAIF
      От KAIF
      !!!!!ВСЕГО ОДНА КОПИЯ!!!! 
      Единственный мод GTA RP.
       
      Фракции:
      Правительство
      ГИБДД
      Полиция Южного
      ФСБ
      ЦГБ-А
      Автошкола
      Китайская мафия
      Русская Мафия
      Итальянская Мафия
      Американская Мафия
      Чеченская Мафия
      ВВС
      МЧС
      ОПГ Тяп-Ляп
      ОПГ Хади-Такташ
      СМИ Южного
      ФСИН
      В комплекте идёт СБОРКА И МОД.
      Также после покупки вы отправляете мне свой айпи сервера и я привязываю вам сборку под ваш айпи (единоразово) 
      Единственный мод GTA RP.
    • Demon7
      От Demon7
      Как исправить эту ошибку? Попытался залить на мод данный код и при компиляции происходит данная ошибка. Эта ошибка находится на строчке if(GetPlayerData(targetid, "friend_request") == playerid)
      CMD:frien(playerid, params[]) {     new targetid = strval(params);     if(!IsPlayerConnected(targetid))     {         SendClientMessage(playerid, COLOR_RED, "Целевой игрок не подключен к серверу.");         return 0;     }     if(targetid == playerid)     {         SendClientMessage(playerid, COLOR_RED, "Вы не можете предложить себе подружиться.");         return 0;     }     if(IsPlayerInRangeOfPlayer(playerid, targetid, 2.0))     {         if(GetPlayerData(targetid, "friend_request") == playerid)         {             SendClientMessage(playerid, COLOR_RED, "У вас уже есть ожидающий запрос на дружбу от этого игрока.");             return 0;         }         SendClientMessage(playerid, COLOR_YELLOW, "Вы предложили игроку подружиться. Ожидайте ответа...");         SendClientMessage(targetid, COLOR_YELLOW, "Игрок предлагает вам подружиться. Используйте /accept или /reject.");         SetPlayerData(playerid, "friend_request", targetid);         SetPlayerData(targetid, "friend_request", playerid);     }     else     {         SendClientMessage(playerid, COLOR_RED, "Игрок находится слишком далеко.");     }     return 1; }