Вопросы

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

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


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

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

  • 0

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

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

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

 

Спойлер

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

c48c6bac39e2a1499740f4d1e50637c3.png

 

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


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

 

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

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

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


Ссылка на сообщение
  • 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;
}

 

 

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

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

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

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

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


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

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

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


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

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

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

    • Mister Odin
      От Mister Odin
       
      new
       g_teleport_list[39][E_TELEPORT_LIST] = {  {"Спавн пгт.Батырево", 1802.3612, 2508.4824, 15.8887},  {"Спавн г.Арзамас", -113.5887, 977.7222, 12.0346},     {"Спавн г.Южный", 2744.2770, -2446.7246, 21.8988},     {"Центральный банк", 1852.020385,2040.791381,15.892713},  {"Рублёвка", -837.7783, 888.6161, 12.7232},  {"Казино", 1332.4252, 2358.7014, 17.6641},  {"Битва за контейнеры", 614.5167, 1722.3566, 12.0709},  {"Автосалон низкого класса", 2493.9616, -722.9544, 12.3315},  {"Автосалон среднего класса", 1407.7449, 455.4801, 13.1630},  {"Автосалон высокого класса", -14.0637, 2614.5664, 10.9892},   {"Мотосалон Harley Davidson", 785.720153, 750.465087, 12.000024},  {"Автошкола", 1909.174438,2227.679687,15.708162},  {"Военкомат", 1916.778564,2302.411376,15.574637},  {"Правительство области", -139.140975,593.789611,12.145712},  {"Отдел полиции №1 (ГИБДД)", 1906.805786,-2234.382812,11.257631},  {"Отдел полиции №2 (УМВД)", 2581.309326,-2416.139892,21.960090},  {"Отдел ФСБ", 1823.904663,2095.636718,15.848405},  {"Городская больница г.Арзамас", -285.797210,581.851562,12.120290},   {"СМИ", -317.708038,821.221679,13.051450},  {"Воинская часть", 1703.197265,1678.025878,15.279437},  {"Арзамасская ОПГ", 438.705322,1046.505126,12.002637},  {"Батыревская ОПГ", 1941.203857,2161.006591,15.705187},  {"Лыткаринская ОПГ", -2346.002441,75.257041,21.002962},  {"Шахта", 2381.5727, 1726.4451, -2.1506},  {"Завод", -1062.6697, 2204.1894, 38.0964},  {"Инкосация", 1864.1374, 2011.7136, 15.8546},  {"Транспортная Компания", 2362.1115, 1972.5627, 15.5530},  {"База механиков", 1840.918090,-118.025146,15.695312},  {"Курьерская служба доставки", 2764.509765,-2396.882568,21.890625},  {"Аренда автобуса(Южный)", 2771.041992,-2454.780761,21.845964},  {"Аренда автобуса(Арзамас)", -127.487670,943.652648,12.142824},   {"Аренда автобуса(Батырево)", 1798.986328,2529.591552,15.664262},  {"Гоночная трасса", -1568.7784, 1611.8305, 36.3971},  {"Дом на горе", -789.5397, -456.7479, 741.1422},  {"СТО и тюнинг-ателье", 1856.1375, -122.3266, 15.6888},  {"Аренда транспорта пгт.Батырево", 1763.641723,2255.673339,15.865348},  {"Аренда транспорта г.Арзамас", -36.923530,1360.673583,12.002090},  {"Аренда транспорта г.Южный", 1966.599975,-2603.943603,10.820312},  {"Тайный интерьер в Лыткарино", -2424.5818, 2846.3291, 40.7908} };