Рекомендованные сообщения



Не найдено.

5 posts in this topic

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

 

Edited by tuki

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
29 минут назад, tuki сказал:

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

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

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • odosenok
      By odosenok
      Описание системы.
      Система полета камерой представляет собой возможность перемещаться в пространстве игры по всем осям (X, Y, Z) путем нажатия кнопок на клавиатуре.
       
      Подключение системы.
      1. Система написана в отдельном файле - include. Вам необходимо скачать этот файл и добавить в папку, находящейся в следующей директории:
      "..\pawno\include" 2. Затем Вам следует открыть свой игровой мод и в начале, после всех инклудов, дописать следующую строку:
      #include <fly>  
      Работа с системой.
      В систему полета камерой включены две функции:
      1.
      SetPlayerFlyStatus(playerid, status = 2) /* playerid - ID игрока, которого Вы хотите "отправить" в режим полета status - режим полета* * предусмотрено три режима полета: CAMERA_MODE_NONE (0) - выключить режим полета, CAMERA_MODE_FLY (1) - включить режим полета, CAMERA_MODE_REVERSE (2) - сменить режим на реверсивный */ 2. 
      IsPlayerFlying(playerid) /* playerid - ID игрока, пребывание в состоянии полета которого Вы хотите проверить *данная функция возвращает: CAMERA_MODE_NONE (0), если игрок не находится в состоянии полета, CAMERA_MODE_FLY (1), если игрок находится в состоянии полета */ При помощи данных функций Вы можете управлять пребыванием игрока в режиме полета, а также получать информацию о том, "летает" ли игрок в тот или иной момент.
       
      Особенности системы.
      Системой полета предусмотрено, что игрок, выходящий из режима полета, появится именно там, где вышел. Так, если Вы покидаете режим полета, пребывая в озере, то появление игрока будет именно в этом озере.
       
      Пример использования.
      CMD:fly(playerid, params[]) { static const MSG_USE_CMD[] = !"» Usage the command: /fly [mode 0-2]"; if(isnull(params)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; new mode; if(sscanf(params, "d", mode)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; else if(!(0 <= mode <= 2)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; SetPlayerFlyStatus(playerid, mode); return 1; } CMD:checkfly(playerid, params[]) { static const MSG_USE_CMD[] = !"» Usage the command: /checkfly [playerid]"; if(isnull(params)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; new id; if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; else if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, !"The player is not connected") & 0; static const status_fly[][] = { !"The player is not flying", !"The player is flying" }; SendClientMessage(playerid, -1, status_fly[IsPlayerFlying(id)]); return 1 } Авторское право.
      Функции для получения позиции для перемещения камеры, само перемещение вырезаны из разработки Norck.
      В свою очередь я, @odosenok, лишь преобразовал данный код, создал более удобный интерфейс.
       
      fly.inc
    • KAIF
      By KAIF
      Здравствуйте, хотел бы продать переделанный игровой мод всем знакомого проекта GTA RolePlay
      Фракции:
      1)Правительство
      2)ГИБДД
      3)Полиция Южного
      4)ФСБ
      5)ЦГБ-А
      6)Автошкола
      7)ВВС
      8)СМИ
      9)ОМОН
      10)опг.Тукаевские
      11)опг.Тяп-Ляп
      12)Чеченская Мафия
      13)Американская Мафия
      14)Якудза
      15)Русская Мафия
      16)Итальянская Мафия
      Добавлено/исправлено:
      1)Добавлен ВЕСЬ ОПТИМИЗИРОВАННЫЙ маппинг GTA ROLEPLAY.(2018-2019г)
      2)Добавлены организации мафий.
      3)Перенесены все чекпоинты как на GTA ROLEPLAY.
      4)Добавил в донат покупку военного билета.
      5)Изменил название рангов во фракциях как на GTA ROLEPLAY/
      6)Изменен логотип GTA ROLEPLAY
      7)Переделан весь GPS, изменены все координаты.
      В моде - 6 уровней администрации.(если хотите можете увелить кол-во админок)
      Имеется фуллдоступ, выдаётся в pawno.
      Так же в комплекте будет идти мод-пак к серверу.
      После покупки вы получите архив с модом, а в самом архиве будет текстовый файл с ссылкой на скачивание модпака.