Question

Хочу начать заниматься скриптингом, банальные штучки по типу изменения названия сервера/ постановки сервера на хостинг знаю.
Хочу выйти на новый уровень и понять как создаются и прописываются новые системы.
Пример: Вышла на Радмире система с брелком автосигнализации, как мне её сделать на своем сервере??

Share this post


Link to post

4 answers to this question

  • 0

@Kreker, я постараюсь вам описать процесс написания этой системы, но стоит понимать следующее:

  1. Любая готовая система (отчасти даже идея) требует знание игрового мода. То, что будет предоставлено как образец, может не подойти в ваш игровой мод – придется вам же адаптировать.
  2. Чтобы что-то делать, нужно понимать, что именно. В случае отношений заказчик - исполнитель это техническое задание. В данном случае вполне будет достаточно чуть более подробного описания того, как это работает на вашем Radmir. К счастью, уже давно нигде не играю, потому не знаю, какие системы и где выходят.

Таким образом, на данный момент от вас нужно описание того, как вы себе это представляете. В идеале – алгоритм (некоторая последовательность действий), который бы описывал, как вообще работает эта система, – тогда и с кодом не будет проблем.

 

Спойлер

Не брелком сигнализации, а брелоком. И ударение тоже падает на букву о.

c48c6bac39e2a1499740f4d1e50637c3.png

 

Share this post


Link to post
  • 0

 

@Cawfee Благодарю за поправку.
https://www.youtube.com/watch?v=yG1bJyFWJMk- в данном видеоролике описывается работа системы.
Смотреть с 8:50.

Edited by Kreker

Share this post


Link to post
  • 0

У меня была копия Радмира... С обновления 5.5 - брелки работают на cef. Его можно взять с RADMIR LAUNCHER - resurces - projects - crmp - cef - assets - js.

Все что там указано написано через Visual Studio. Если нужно могу объяснить в дискорде - "not getto#7616". Вот сама CMD (её в самый конец мода)

 

Спойлер

CMD:keys(playerid)
{
    new vehicleid;
    new Float:Distance_ = 50.0;
    for(new c = 0; c<30; c++)
    {
        if(cars_g[playerid][c] != INVALID_VEHICLE_ID)
        {
            new Float:Distance = D_PlayerVehicle(playerid, cars_g[playerid][c]);
            if(Distance < Distance_)
            {
                Distance_ = Distance;
                vehicleid = cars_g[playerid][c];
            }
        }
    }
    if(Distance_ == 50.0return SendClientMessage(playerid, 0x808080FF"Вы далеко от своего авто");
    if(GetIteam(playerid, 256) < 1return SCM(playerid, 0xCECECEFF"У вас нет сигнализации");
    if(vehicleid != INVALID_VEHICLE_ID || GetPlayerAllowedCar(playerid) != INVALID_VEHICLE_ID)
    {
        if(GetPVarInt(playerid, "keys") == 0) SendPacket_2(playerid, s_CefInterface, t_CefShow, "CarKey""[0, 1, 1, 1, 1, 1]"), SetPVarInt(playerid, "keys"1);
        else SendPacket_1(playerid, s_CefInterface, t_CefHide, "CarKey"), DeletePVar(playerid, "keys");
    }
    else
    {
        if(GetPlayerOwnableCars(playerid) == 0)
            SendClientMessage(playerid, 0x999999FF"У вас нет личного/доверенного  транспорта");
                else
                    SendClientMessage(playerid, 0x999999FF"Ваш личный транспорт не загружен на сервер");
    }

    return 1;
}

public: CarsKey_OnPlayerRequst(playerid, remain)
{
    new vehicleid;
    new Float:Distance_ = 50.0;
    for(new c = 0; c<30; c++)
    {
        if(cars_g[playerid][c] != INVALID_VEHICLE_ID)
        {
            new Float:Distance = D_PlayerVehicle(playerid, cars_g[playerid][c]);
            if(Distance < Distance_)
            {
                Distance_ = Distance;
                vehicleid = cars_g[playerid][c];
            }
        }
    }
    if(Distance_ == 50.0return SendClientMessage(playerid, 0x808080FF"Вы далеко от своего транспорта");
    switch(remain)
    {
        case 5:
        {
            if(vehicleid != INVALID_VEHICLE_ID || GetPlayerAllowedCar(playerid) != INVALID_VEHICLE_ID)
            {
                new status = GetVehicleParam(vehicleid, V_LOCK);
                if(status)
                {
                    Action(playerid, "закрыл личный транспорт", _, true);
                    GameText(playerid, "~w~Транспорт ~r~закрыт"40001);
                    SetVehicleParam(vehicleid, V_LOCK, VEHICLE_PARAM_OFF);
                    SendPacket_1(playerid, s_CefInterface, t_CefUpdate, "playSound('sounds/alarm/key_unlock.mp3', 0, 1)");
                }
                else
                {
                    Action(playerid, "закрыл личный транспорт", _, true);
                    GameText(playerid, "~w~Транспорт ~r~закрыт"40001);
                    SetVehicleParam(vehicleid, V_LOCK, VEHICLE_PARAM_ON);
                    SendPacket_1(playerid, s_CefInterface, t_CefUpdate, "playSound('sounds/alarm/key_lock.mp3', 0, 1)");
                }
            }
            else
            {
                if(GetPlayerOwnableCars(playerid) == 0)
                    SendClientMessage(playerid, 0x999999FF"У вас нет личного/доверенного  транспорта");
                else
                    SendClientMessage(playerid, 0x999999FF"Ваш личный транспорт не загружен на сервер");
            }

        }
        case 4:
        {
            if(vehicleid != INVALID_VEHICLE_ID || GetPlayerAllowedCar(playerid) != INVALID_VEHICLE_ID)
            {
                new status = GetVehicleParam(vehicleid, V_BOOT);
                if(status == VEHICLE_PARAM_OFF)
                {
                    Action(playerid, "открыл багажник личного т/с", _, true);
                    GameText(playerid, "~w~Багажник~g~открыт"40001);
                    SetVehicleParam(vehicleid, V_BOOT, VEHICLE_PARAM_ON);
                }
                else if(status == VEHICLE_PARAM_ON)
                {
                    Action(playerid, "закрыл багажник личного т/с", _, true);
                    GameText(playerid, "~w~Багажник~g~закрыт"40001);
                    SetVehicleParam(vehicleid, V_BOOT, VEHICLE_PARAM_OFF);
                }
            }
            else
            {
                if(GetPlayerOwnableCars(playerid) == 0)
                    SendClientMessage(playerid, 0x999999FF"У вас нет личного/доверенного  транспорта");
                else
                    SendClientMessage(playerid, 0x999999FF"Ваш личный транспорт не загружен на сервер");
            }
        }
        case 6:
        {
            if(vehicleid != INVALID_VEHICLE_ID || GetPlayerAllowedCar(playerid) != INVALID_VEHICLE_ID)
            {
                new status = GetVehicleParam(vehicleid, V_BONNET);
                if(status == VEHICLE_PARAM_OFF)
                {
                    Action(playerid, "открыл капот личного т/с", _, true);
                    GameText(playerid, "~w~Капот ~r~открыт"40001);
                    SetVehicleParam(vehicleid, V_BONNET, VEHICLE_PARAM_ON);
                }
                else if(status == VEHICLE_PARAM_ON)
                {
                    Action(playerid, "закрыл капот личного т/с", _, true);
                    GameText(playerid, "~w~Капот ~r~закрыт"40001);
                    SetVehicleParam(vehicleid, V_BONNET, VEHICLE_PARAM_OFF);
                }
            }
            else
            {
                if(GetPlayerOwnableCars(playerid) == 0)
                    SendClientMessage(playerid, 0x999999FF"У вас нет личного/доверенного  транспорта");
                else
                    SendClientMessage(playerid, 0x999999FF"Ваш личный транспорт не загружен на сервер");
            }
        }
        case 3: GameText(playerid, "~r~Безключевой доступ не доступен"30001);
        case 2:
        {
            if(vehicleid != INVALID_VEHICLE_ID || GetPlayerAllowedCar(playerid) != INVALID_VEHICLE_ID)
            {
                if(GetVehicleData(vehicleid, V_FUEL) <= 0.0return GameText(playerid, "~r~нет бензина, 4000, 2);

                new engine = (GetVehicleParam(vehicleid, V_ENGINE) ^ VEHICLE_PARAM_ON);
                SetVehicleParam(vehicleid, V_ENGINE, engine);

                if(GetVehicleParam(vehicleid, V_ENGINE) ^ VEHICLE_PARAM_OFF)
                {
                    SendPacket_1(playerid, s_CefInterface, t_CefUpdate, "playSound('sounds/car/start_engine_car.wav', 0, 1)");
                    GameText(playerid, "~g~ДВИГАТЕЛЬ ЗАВОДИТСЯ..."10003);
                }
            }
            else
            {
                if(GetPlayerOwnableCars(playerid) == 0)
                    SendClientMessage(playerid, 0x999999FF"У вас нет личного/доверенного  транспорта");
                else
                    SendClientMessage(playerid, 0x999999FF"Ваш личный транспорт не загружен на сервер");
            }
        }
    }

    return 1;
}

stock LPN(playerid)
{
    new fmt_text[2640],
        Cache: result;

    mysql_format(mysql, fmt_text, sizeof fmt_text, "SELECT * FROM numbers WHERE owner_id=%d AND trunk=0 LIMIT 20", GetPlayerAccountID(playerid));
    result = mysql_query(mysql, fmt_text, true);

    new rows = cache_num_rows();

    new query[170], eventid, type, number[32], region[32];

    format(fmt_text, sizeof fmt_text, "");

    if(!rows) numbersinv[playerid] = "";
    for(new i = 0; i < rows; i ++)
    {

        eventid = cache_get_field_content_int(i, "id");
        type = cache_get_field_content_int(i, "type");

        cache_get_field_content(i, "number", number);
        cache_get_field_content(i, "region", region);

        format(query, sizeof query, ",[%d,99,1,%d,\"%s %s\"]", eventid, type, number, region);
        strcat(fmt_text, query);

        numbersinv[playerid] = fmt_text;
    }

    cache_delete(result);
}

stock LoadSkins(playerid)
{
    new fmt_text[2640],
        Cache: result;

    mysql_format(mysql, fmt_text, sizeof fmt_text, "SELECT * FROM n_skins WHERE owner_id=%d AND trunk=0 LIMIT 20", GetPlayerAccountID(playerid));
    result = mysql_query(mysql, fmt_text, true);

    new rows = cache_num_rows();

    new query[170], eventid, skin_id;

    format(fmt_text, sizeof fmt_text, "");

    if(!rows) skins_inv[playerid] = "";
    for(new i = 0; i < rows; i ++)
    {

        eventid = cache_get_field_content_int(i, "id");
        skin_id = cache_get_field_content_int(i, "skin_id");

        format(query, sizeof query, ",[%d,100,0,%d]", eventid, skin_id);
        strcat(fmt_text, query);

        skins_inv[playerid] = fmt_text;
    }

    cache_delete(result);
}

stock LoadMySQLSettings()
{
    new FileID = ini_openFile("mysql_settings.ini"),errCode;
    if(FileID < 0)
    {
        printf("Error while opening MySQL settings file. Error code: %d",FileID);
        return 0;
    }
    errCode = ini_getString(FileID,"host",MySQLSettings[MYSQL_HOST]);
    if(errCode < 0) printf("Error while reading MySQL settings file (host). Error code: %d",errCode);
    errCode = ini_getString(FileID,"username",MySQLSettings[MYSQL_USER]);
    if(errCode < 0) printf("Error while reading MySQL settings file (username). Error code: %d",errCode);
    errCode = ini_getString(FileID,"password",MySQLSettings[MYSQL_PASS]);
    if(errCode < 0) printf("Error while reading MySQL settings file (password). Error code: %d",errCode);
    errCode = ini_getString(FileID,"database",MySQLSettings[MYSQL_BASE]);
    if(errCode < 0) printf("Error while reading MySQL settings file (database). Error code: %d",errCode);
    ini_closeFile(FileID);
    return 1;
}

 

 

Edited by Cawfee

Заметка от Cawfee , создано

3.2. Код необходимо брать в тег "Код", а код более 10 строк – еще и в "Спойлер". Как это сделать рассказано в разделе "FAQ".

Устное предупреждение.

Share this post


Link to post
  • 0

@Tom Extraside Отправил вам заявку в дискорд, спасибо за помощь!!

Share this post


Link to post
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

    • Kasper0
      By Kasper0
      Продажа мода KAIF CRMP// Готовый кроссплатформленный мод (можно играть одновременно с ПК и телефонов)
       
      Характеристики мода:
       
      Процессор: PAWN.CMD
      Кол-во строк в моде: 60+k
      Режим: RolePlay
      Автор и разработчик: Максим Зуев

      Посла оплаты обратитесь в ЛС,для предоставления игровой сборки и помощи в установке мода.

      Системы в моде:
       
      — Полная адаптация под телефоны;
      — Абсолютно новая система светофоров (Штрафы за проезд на красный);
      — Биржа обмена;
      — Красивые интерьеры;
      — Уникальня система репорта;
      — Система ТОП ДОНАТЕРОВ;
      — Подарки за пополнение счета (Донат);
      — Возможность создавать маппинг прямо из игры;
      — Система тюнинга (Обвесы и т.д);
      — Мероприятие "Мясорубка";
      — Система ГОНКИ;
      — Бойцовский клуб;
      — Баня для отдыха;
      — BATTLE ROYALE;
      — Дуэли;
      — Прыжки с парашютом;
      — Система Контейнеров;
      — Система Автоугонщиков;
      — Работа мусорщиком;
      — Валюта EURO;
      — Система VIP'ок (Ruby, Sapphire, Emerald, Diamond);
      — Система штрафстоянок;
      — Работа ХИТМАНОМ (Заказные убийства);
      — Система Гос.Волны (/editgov);
      — Система рефералок (/referals);
      — Система друзей (/friends);
      — Система Ивентов, итоги в конце недели (Лучший Гос.служащий,Лучший убийца, Лучший тащер, Лучший армеец);
      — Система аксессуаров;
       
      Видеообзоры (YT,VK):

      https://www.youtube.com/watch?v=Gzzl2UN2i48

      https://www.youtube.com/watch?v=lZv-TRRFa1U

      https://www.youtube.com/watch?v=od1KDSHitu8
    • Kasper0
      By Kasper0


      Скачать файл CRMP MOBILE | KAIF RP | PC+MOBILE
      Продажа мода KAIF CRMP// Готовый кроссплатформленный мод (можно играть одновременно с ПК и телефонов)
       
      Характеристики мода:
       
      Процессор: PAWN.CMD
      Кол-во строк в моде: 60+k
      Режим: RolePlay
      Автор и разработчик: Максим Зуев

      Посла оплаты обратитесь в ЛС,для предоставления игровой сборки и помощи в установке мода.

      Системы в моде:
       
      — Полная адаптация под телефоны;
      — Абсолютно новая система светофоров (Штрафы за проезд на красный);
      — Биржа обмена;
      — Красивые интерьеры;
      — Уникальня система репорта;
      — Система ТОП ДОНАТЕРОВ;
      — Подарки за пополнение счета (Донат);
      — Возможность создавать маппинг прямо из игры;
      — Система тюнинга (Обвесы и т.д);
      — Мероприятие "Мясорубка";
      — Система ГОНКИ;
      — Бойцовский клуб;
      — Баня для отдыха;
      — BATTLE ROYALE;
      — Дуэли;
      — Прыжки с парашютом;
      — Система Контейнеров;
      — Система Автоугонщиков;
      — Работа мусорщиком;
      — Валюта EURO;
      — Система VIP'ок (Ruby, Sapphire, Emerald, Diamond);
      — Система штрафстоянок;
      — Работа ХИТМАНОМ (Заказные убийства);
      — Система Гос.Волны (/editgov);
      — Система рефералок (/referals);
      — Система друзей (/friends);
      — Система Ивентов, итоги в конце недели (Лучший Гос.служащий,Лучший убийца, Лучший тащер, Лучший армеец);
      — Система аксессуаров;
       
      Видеообзоры (YT,VK):

      https://www.youtube.com/watch?v=Gzzl2UN2i48

      https://www.youtube.com/watch?v=lZv-TRRFa1U

      https://www.youtube.com/watch?v=od1KDSHitu8
      Добавил Kasper0 Добавлено 08.12.2023 Категория Моды Автор devJust  
    • nnnumber1
      By nnnumber1
      Доброго времени суток, совсем недавно начал свой путь разработчика в САМП/КРМП, ищу интересный проект для взаимовыгодного сотрудничества.
      Хочется "набивать руку" и повышать свой уровень в реальных условиях!

      Пишите в ЛС на форуме.
    • Makkos
      By Makkos
      Ищу человека которий может сделать лаунчер мобайл для самп проекта
      Оплата в - грн
      Жду предложений в телеграм - https://t.me/creator700