Вопросы

Kreker
Новичок

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

Поделиться сообщением


Ссылка на сообщение

4 ответа на этот вопрос

  • 0
Cawfee
Великий Гуру

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

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

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

 

Спойлер

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

c48c6bac39e2a1499740f4d1e50637c3.png

 

Поделиться сообщением


Ссылка на сообщение
  • 0
Kreker
Новичок

 

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

Отредактировано пользователем Kreker

Поделиться сообщением


Ссылка на сообщение
  • 0
Tom Extraside
Новичок

У меня была копия Радмира... С обновления 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.0) return SendClientMessage(playerid, 0x808080FF, "Вы далеко от своего авто");
    if(GetIteam(playerid, 256) < 1) return 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.0) return 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~закрыт", 4000, 1);
                    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~закрыт", 4000, 1);
                    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~открыт", 4000, 1);
                    SetVehicleParam(vehicleid, V_BOOT, VEHICLE_PARAM_ON);
                }
                else if(status == VEHICLE_PARAM_ON)
                {
                    Action(playerid, "закрыл багажник личного т/с", _, true);
                    GameText(playerid, "~w~Багажник~g~закрыт", 4000, 1);
                    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~открыт", 4000, 1);
                    SetVehicleParam(vehicleid, V_BONNET, VEHICLE_PARAM_ON);
                }
                else if(status == VEHICLE_PARAM_ON)
                {
                    Action(playerid, "закрыл капот личного т/с", _, true);
                    GameText(playerid, "~w~Капот ~r~закрыт", 4000, 1);
                    SetVehicleParam(vehicleid, V_BONNET, VEHICLE_PARAM_OFF);
                }
            }
            else
            {
                if(GetPlayerOwnableCars(playerid) == 0)
                    SendClientMessage(playerid, 0x999999FF, "У вас нет личного/доверенного  транспорта");
                else
                    SendClientMessage(playerid, 0x999999FF, "Ваш личный транспорт не загружен на сервер");
            }
        }
        case 3: GameText(playerid, "~r~Безключевой доступ не доступен", 3000, 1);
        case 2:
        {
            if(vehicleid != INVALID_VEHICLE_ID || GetPlayerAllowedCar(playerid) != INVALID_VEHICLE_ID)
            {
                if(GetVehicleData(vehicleid, V_FUEL) <= 0.0) return 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~ДВИГАТЕЛЬ ЗАВОДИТСЯ...", 1000, 3);
                }
            }
            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;
}

 

 

Отредактировано пользователем Cawfee

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

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

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

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

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

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

    • patrickk
      От patrickk
      Всем привет, решил написать dm сервер и довольно хорошим получился, даже на голову выше Goat dm. Оставил не решенную проблему тем что  у меня есть 4 локации с rp run и cj run ну а как добавить cj бег на те локации не знаю и как эта система работает. Надеюсь мне помогут знающие люди
    • Samolet
      От Samolet
      Здраствуйте, cоздаю копию Arizona на ОМП, опен мультиплеер, загрузил и подключил бд, но сервер не хочет вот лог :[2026-10-20T21:03:32+0300] [Info] Log file reloaded. Starting open.mp server (1.5.8.3079) from commit c6759bd8d265171ae3d86598895a23d5a8d92a3b Loading component $CAPI.so Successfully loaded component C-API (1.5.8.3079) with UID 10467dd8d4c56fc6 Loading component LegacyConfig.so Successfully loaded component LegacyConfig (1.5.8.3079) with UID 24ef6216838f9ffc Loading component NPCs.so Successfully loaded component NPCs (1.5.8.3079) with UID 3d0e59e87f4e90bc Loading component Recordings.so Successfully loaded component Recordings (1.5.8.3079) with UID 871144d399f5f613 Loading component Checkpoints.so Successfully loaded component Checkpoints (1.5.8.3079) with UID 44a937350d611dde Loading component TextDraws.so Successfully loaded component TextDraws (1.5.8.3079) with UID 9b5dc2b1d15c992a Loading component Pawn.so Successfully loaded component Pawn (1.5.8.3079) with UID 78906cd9f19c36a6 Loading component GangZones.so Successfully loaded component GangZones (1.5.8.3079) with UID b3351d11ee8d8056 Loading component Actors.so Successfully loaded component Actors (1.5.8.3079) with UID c81ca021eae2ad5c Loading component Pickups.so Successfully loaded component Pickups (1.5.8.3079) with UID cf304faa363dd971 Loading component Dialogs.so Successfully loaded component Dialogs (1.5.8.3079) with UID 44a111350d611dde Loading component Objects.so Successfully loaded component Objects (1.5.8.3079) with UID 59f8415f72da6160 Loading component Console.so Successfully loaded component Console (1.5.8.3079) with UID bfa24e49d0c95ee4 Loading component TextLabels.so Successfully loaded component TextLabels (1.5.8.3079) with UID a0c57ea80a009742 Loading component Variables.so Successfully loaded component Variables (1.5.8.3079) with UID 75e121848bc01fa2 Loading component Databases.so Successfully loaded component Databases (1.5.8.3079) with UID 80092e7eb5821a96 Loading component LegacyNetwork.so Successfully loaded component RakNetLegacyNetwork (1.5.8.3079) with UID ea9799fd79cf8442 Loading component CustomModels.so Successfully loaded component CustomModels (1.5.8.3079) with UID 15e3cb1e7c77ffff Loading component Menus.so Successfully loaded component Menus (1.5.8.3079) with UID 621e219eb97ee0b2 Loading component Vehicles.so Successfully loaded component Vehicles (1.5.8.3079) with UID 3f1f62ee9e22ab19 Loading component Classes.so Successfully loaded component Classes (1.5.8.3079) with UID 8cfb3183976da208 Loading component Timers.so Successfully loaded component Timers (1.5.8.3079) with UID 2ad8124c5ea257a3 Loaded 22 component(s) from /home/gs113492/components Executing Server Config... [2026-10-20T21:03:33+0300] [Info] Loading plugin: crashdetect.so [2026-10-20T21:03:33+0300] [Info] CrashDetect plugin 4.19 [2026-10-20T21:03:33+0300] [Info] Loading plugin: mapandreas.so [2026-10-20T21:03:33+0300] [Info] Loading plugin: streamer.so [2026-10-20T21:03:33+0300] [Info] *** Streamer Plugin v2.9.4 by Incognito loaded *** [2026-10-20T21:03:33+0300] [Info] Loading plugin: sscanf.so [2026-10-20T21:03:33+0300] [Info] [2026-10-20T21:03:33+0300] [Info] =============================== [2026-10-20T21:03:33+0300] [Info] sscanf plugin loaded. [2026-10-20T21:03:33+0300] [Info] Version: 2.8.3 [2026-10-20T21:03:33+0300] [Info] (c) 2018 Alex "Y_Less" Cole [2026-10-20T21:03:33+0300] [Info] =============================== [2026-10-20T21:03:33+0300] [Info] Loading plugin: TOTP.so [2026-10-20T21:03:33+0300] [Info] TOTP plugin v1.0.1 by Games loaded. [2026-10-20T21:03:33+0300] [Info] Loading plugin: mysql_static.so [2026-10-20T21:03:33+0300] [Info] >> plugin.mysql: R39-6 successfully loaded. [2026-10-20T21:03:33+0300] [Info] Loading plugin: libpawn_json.so [2026-10-20T21:03:34+0300] [Error] Function not registered: YSF_SetTickRate [2026-10-20T21:03:34+0300] [Error] Function not registered: PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] Run time error 19: "File or function is not found" [2026-10-20T21:03:34+0300] [Info] [debug] PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] YSF_SetTickRate [2026-10-20T21:03:34+0300] [Error] File or function is not found [2026-10-20T21:03:34+0300] [Error] Function not registered: PC_RegAlias [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_GetWriteOffset [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_Reset [2026-10-20T21:03:34+0300] [Error] Function not registered: PR_RegHandler [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_Delete [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_New [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_ResetReadPointer [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_SetWriteOffset [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_IgnoreBits [2026-10-20T21:03:34+0300] [Error] Function not registered: PR_Init [2026-10-20T21:03:34+0300] [Error] Function not registered: PR_SendRPC [2026-10-20T21:03:34+0300] [Error] Function not registered: PR_SendPacket [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_WriteValue [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_GetNumberOfBytesUsed [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_ReadValue [2026-10-20T21:03:34+0300] [Error] Function not registered: PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] Run time error 19: "File or function is not found" [2026-10-20T21:03:34+0300] [Info] [debug] PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] BS_ReadValue [2026-10-20T21:03:34+0300] [Info] [debug] BS_GetNumberOfBytesUsed [2026-10-20T21:03:34+0300] [Info] [debug] BS_WriteValue [2026-10-20T21:03:34+0300] [Info] [debug] PR_SendPacket [2026-10-20T21:03:34+0300] [Info] [debug] PR_SendRPC [2026-10-20T21:03:34+0300] [Info] [debug] PR_Init [2026-10-20T21:03:34+0300] [Info] [debug] BS_IgnoreBits [2026-10-20T21:03:34+0300] [Info] [debug] BS_SetWriteOffset [2026-10-20T21:03:34+0300] [Info] [debug] BS_ResetReadPointer [2026-10-20T21:03:34+0300] [Info] [debug] BS_New [2026-10-20T21:03:34+0300] [Info] [debug] BS_Delete [2026-10-20T21:03:34+0300] [Info] [debug] PR_RegHandler [2026-10-20T21:03:34+0300] [Info] [debug] BS_Reset [2026-10-20T21:03:34+0300] [Info] [debug] BS_GetWriteOffset [2026-10-20T21:03:34+0300] [Info] [debug] PC_RegAlias [2026-10-20T21:03:34+0300] [Error] File or function is not found [2026-10-20T21:03:34+0300] [Info] [debug] Run time error 19: "File or function is not found" [2026-10-20T21:03:34+0300] [Info] [debug] PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] YSF_SetTickRate [2026-10-20T21:03:34+0300] [Error] File or function is not found [2026-10-20T21:03:34+0300] [Info] [debug] Run time error 19: "File or function is not found" [2026-10-20T21:03:34+0300] [Info] [debug] PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] BS_ReadValue [2026-10-20T21:03:34+0300] [Info] [debug] BS_GetNumberOfBytesUsed [2026-10-20T21:03:34+0300] [Info] [debug] BS_WriteValue [2026-10-20T21:03:34+0300] [Info] [debug] PR_SendPacket [2026-10-20T21:03:34+0300] [Info] [debug] PR_SendRPC [2026-10-20T21:03:34+0300] [Info] [debug] PR_Init [2026-10-20T21:03:34+0300] [Info] [debug] BS_IgnoreBits [2026-10-20T21:03:34+0300] [Info] [debug] BS_SetWriteOffset [2026-10-20T21:03:34+0300] [Info] [debug] BS_ResetReadPointer [2026-10-20T21:03:34+0300] [Info] [debug] BS_New [2026-10-20T21:03:34+0300] [Info] [debug] BS_Delete [2026-10-20T21:03:34+0300] [Info] [debug] PR_RegHandler [2026-10-20T21:03:34+0300] [Info] [debug] BS_Reset [2026-10-20T21:03:34+0300] [Info] [debug] BS_GetWriteOffset [2026-10-20T21:03:34+0300] [Info] [debug] PC_RegAlias [2026-10-20T21:03:34+0300] [Info] Legacy Network started on ***.**.**.***:2717. Помогите пожалуйста