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

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

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

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

FAQ Как сохранить весь тюнинг

OKStyle

Адвокат по делам семейным
Administrator
Wiki Team
Регистрация
4 Мар 2011
Сообщения
7,094
Лучшие ответы
226
Репутация
2,455
Награды
11
Сегодня решил опубликовать кусочек тюнинг-системы, которую писал для своего проекта, может кому-то поможет. В общем, все знают, что есть проблемы со слотами компонентов тюнинга при использовании функции GetVehicleComponentInSlot. Ну а кто не знает - посмотрите на нашей Wiki.

Здесь:
* Починен CARMODTYPE_STEREO
* CARMODTYPE_FRONT_BUMPER и CARMODTYPE_REAR_BUMPER записывают именно бампера
* CARMODTYPE_SIDESKIRT был поделен на _L и _R
* Добавлены слоты: CARMODTYPE_FRONT_BULLBAR, CARMODTYPE_REAR_BULLBAR для кенгурятников
* Добавлен слот CARMODTYPE_STERN для неиспользуемых в игре эмблем на капот (stern - звезда на немецком, название пошло с накапотных шильдиков Мерседеса).

Добавим наши дефайны (используем стандартные и доработанные)
PHP:
// Vehicle Components
#define CARMODTYPE_SPOILER        0
#define CARMODTYPE_HOOD           1
#define CARMODTYPE_ROOF           2
#define CARMODTYPE_SIDESKIRT_L    3
#define CARMODTYPE_LAMPS          4
#define CARMODTYPE_NITRO          5
#define CARMODTYPE_EXHAUST        6
#define CARMODTYPE_WHEELS         7
#define CARMODTYPE_STEREO         8
#define CARMODTYPE_HYDRAULICS     9
#define CARMODTYPE_FRONT_BUMPER   10
#define CARMODTYPE_REAR_BUMPER    11
#define CARMODTYPE_VENT_RIGHT     12
#define CARMODTYPE_VENT_LEFT      13
#define CARMODTYPE_SIDESKIRT_R    14
#define CARMODTYPE_FRONT_BULLBAR  15
#define CARMODTYPE_REAR_BULLBAR   16
#define CARMODTYPE_STERN          17
#define CARMODTYPE_MAXIMUM        18
В enum должен быть массив с компонентами
PHP:
enum vData
{
    vTuning[CARMODTYPE_MAXIMUM]
};
new Data_Vehicle[MAX_VEHICLES][vData];
При загрузке мода или скрипта (у меня был скрипт):
PHP:
public OnFilterScriptInit()
{
// Тут создание всего транспорта (детали тюнинга запрашивать не будем, поделим запрос) из БД
    for(new i; i < MAX_VEHICLES; i++)
    {
        for(new j; j < CARMODTYPE_MAXIMUM; j++)
        {
            Data_Vehicle[i][vTuning][j] = -1;
// Запрос в БД о сохранённом тюнинге
            if(Data_Vehicle[i][vTuning][j] != -1) AddVehicleComponent(i, Data_Vehicle[i][vTuning][j]);
        }
    }
    return 1;
}
Использование стандартных тюнинг-мастерских
PHP:
public OnVehicleMod(playerid, vehicleid, componentid)
{
    new componenttype = -1;
    switch(componentid)
    {
        case 1017, 1027, 1030, 1039, 1040, 1051, 1052, 1062, 1063, 1071, 1072, 1094, 1099, 1101, 1102, 1107, 1120, 1121, 1124, 1137:             componenttype = CARMODTYPE_SIDESKIRT_L;
        case 1086:                                                                                                                               componenttype = CARMODTYPE_STEREO;
        case 1117, 1152, 1153, 1155, 1157, 1160, 1165, 1166, 1169..1175, 1179, 1181, 1182, 1185, 1188..1191:                                     componenttype = CARMODTYPE_FRONT_BUMPER;
        case 1140, 1141, 1148..1151, 1154, 1156, 1159, 1161, 1167, 1168, 1176..1178, 1180, 1183, 1184, 1186, 1187, 1192, 1193:                   componenttype = CARMODTYPE_REAR_BUMPER;
        case 1007, 1026, 1031, 1036, 1041, 1042, 1047, 1048, 1056, 1057, 1069, 1070, 1090, 1093, 1095, 1106, 1108, 1118, 1119, 1122, 1133, 1134: componenttype = CARMODTYPE_SIDESKIRT_R;
        case 1100, 1115, 1116, 1123, 1125:                                                                                                       componenttype = CARMODTYPE_FRONT_BULLBAR;
        case 1109, 1110:                                                                                                                         componenttype = CARMODTYPE_REAR_BULLBAR;
        case 1111, 1112:                                                                                                                         componenttype = CARMODTYPE_STERN; // на данном этапе недоступны в гаражах тюнинга
        default: GetVehicleComponentType(componentid);
    }
    if(componenttype == -1) return SendClientMessage(playerid, -1, !"Invalid component type!");
    Data_Vehicle[vehicleid][vTuning][componenttype] = componentid;
// Запрос в БД на сохранение тюнинга
    return 1;
}
Автор: OKStyle

P.S. Проверьте, у кого БД подключена, работает или нет, я не тестировал.
 
Сверху Снизу