Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
DrTauren

Создаём торговца драгоценными камнями

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

Координаты в данном скрипте настроены для карты Тавиана. Но вы можете сделать свою миссию и изменть всё под свою карту.
Скрипт создаст торговца рубинами, а так же соответствующий маркер на карте.

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

Инструкция:
1)
Открываем файл server_traders.sqf и находим строку:

serverTraders = [

сразу под это строкой добавляем это:

"RU_Villager1"

2) Ещё ниже находим эту секцию:

/*---------------------------------------------------------------------------
NEUTRAL VENDORS
---------------------------------------------------------------------------*/

и добавляем сразу под ней этот код:

//Gems
menu_RU_Villager1 = [
[["Gemstones",700]],
[],
"neutral"
];

P.S. Если вы меняете скин торговца (или даже если нет), то обязательно проверьте что бы такого же класснейма, например RU_Villager1, не было в файле server_traders.sqf. То есть каждому торговцу должен соответствовать определённый скин.

3) Открываем базу данных вашего сервера и заходим в таблицу server_traders. Создаём там новую запись и вставляем это в соответствующие поля:

, , RU_Villager1, 13, neutral, ,Tavi Mining Company

P.S. Первые две колонки оставляем пустыми.

13 - Число соответствующее определённому острову (11=Cherno, 13=Taviana, 16=Pantera)

4) Открываем таблицу traders_data. Отсортируйте её по возрастанию что бы найти самое большое число в колонке "ID". А потом создаём строки с вещами, используя новые ID (с более высоким значением). У нас будет так:

7589,["ItemRuby",1], 250,[9,"ItemGoldBar10oz",1],[5,"ItemGoldBar10oz",1],0,700,trade_items
7590,["ItemTopaz",1], 250,[9,"ItemGoldBar10oz",1],[5,"ItemGoldBar10oz",1],0,700 ,trade_items
7591,["ItemObsidian",1], 250,[9,"ItemGoldBar10oz",1],[5,"ItemGoldBar10oz",1],0,700,trade_items
7592,["ItemSapphire",1], 250,[9,"ItemGoldBar10oz",1],[5,"ItemGoldBar10oz",1],0,700,trade_items
7593,["ItemAmethyst",1], 250,[9,"ItemGoldBar10oz",1],[5,"ItemGoldBar10oz",1],0,700,trade_items
7594,["ItemEmerald",1], 250,[9,"ItemGoldBar10oz",1],[5,"ItemGoldBar10oz",1],0,700,trade_items
7595,["ItemCitrine",1], 250,[9,"ItemGoldBar10oz",1],[5,"ItemGoldBar10oz",1],0,700,trade_items

Вы так же можете использовать командную строку и этот код, если так вам удобнее создать новые строки с вещами:

 

 

REPLACE INTO `traders_data` (`id`, `item`, `qty`, `buy`, `sell`, `order`, `tid`, `afile`) VALUES (7589, '["ItemRuby",1]', 250, '[9,"ItemGoldBar10oz",1]', '[5,"ItemGoldBar10oz",1]', 0, 700, 'trade_items');
REPLACE INTO `traders_data` (`id`, `item`, `qty`, `buy`, `sell`, `order`, `tid`, `afile`) VALUES (7590, '["ItemTopaz",1]', 250, '[9,"ItemGoldBar10oz",1]', '[5,"ItemGoldBar10oz",1]', 0, 700, 'trade_items');
REPLACE INTO `traders_data` (`id`, `item`, `qty`, `buy`, `sell`, `order`, `tid`, `afile`) VALUES (7591, '["ItemObsidian",1]', 250, '[9,"ItemGoldBar10oz",1]', '[5,"ItemGoldBar10oz",1]', 0, 700, 'trade_items');
REPLACE INTO `traders_data` (`id`, `item`, `qty`, `buy`, `sell`, `order`, `tid`, `afile`) VALUES (7592, '["ItemSapphire",1]', 250, '[9,"ItemGoldBar10oz",1]', '[5,"ItemGoldBar10oz",1]', 0, 700, 'trade_items');
REPLACE INTO `traders_data` (`id`, `item`, `qty`, `buy`, `sell`, `order`, `tid`, `afile`) VALUES (7593, '["ItemAmethyst",1]', 250, '[9,"ItemGoldBar10oz",1]', '[5,"ItemGoldBar10oz",1]', 0, 700, 'trade_items');
REPLACE INTO `traders_data` (`id`, `item`, `qty`, `buy`, `sell`, `order`, `tid`, `afile`) VALUES (7594, '["ItemEmerald",1]', 250, '[9,"ItemGoldBar10oz",1]', '[5,"ItemGoldBar10oz",1]', 0, 700, 'trade_items');
REPLACE INTO `traders_data` (`id`, `item`, `qty`, `buy`, `sell`, `order`, `tid`, `afile`) VALUES (7595, '["ItemCitrine",1]', 250, '[9,"ItemGoldBar10oz",1]', '[5,"ItemGoldBar10oz",1]', 0, 700, 'trade_items');

 

 

5) Открываем файл mission.sqm в папке с вашей миссией и ищем эту строку:

class Markers {

после этого вы увидите:

items=число;

Какое бы число не было бы выше, прибавьте к этому числу 1. То есть было, например, 27, а стало 28.

Находим конец секции с маркерами и вставляем туда это:

class Item27
{
position[]={6054.33,5,7704.25};
name="TaviMiningCompany";
text="Tavi Mining Company";
type="mil_dot";
colorName="ColorBlack";
};

Число 27 тут тоже изменяем на то что мы написали выше, отняв от него 1. Всё это делается потому что отсчёт классов начинается с нуля, а не с единицы. То есть если вначале мы написали, что классов будет всего 28, то номер последнего должен быть 27. (Арма такая Арма :D )

6) Открываем файл init.sqf и находим там эту строку:

​if (isServer) then {

а ниже вставляем эту:

execVM "custom\Gem_Trader.sqf";

В итоге секция должна приобрести примерно такой вид:

 

if (isServer) then {
call compile preprocessFileLineNumbers "\z\addons\dayz_server\missions\DayZ_Epoch_13.Tavi\dynamic_vehicle.sqf"; //Compile vehicle configs
 
// Add trader citys
_nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_13.Tavi\mission.sqf";
_serverMonitor = [] execVM "\z\addons\dayz_code\system\server_monitor.sqf";
execVM "custom\Gem_Trader.sqf";
};

 

 

7) В папке миссии создаём папку custom и там создаём файл Gem_Trader.sqf со следующим содержимым:

 

 

_unit_1337 = objNull;
if (true) then
{
  _this = createAgent ["RU_Villager1", [6054.33,7704.25,0.1], [], 0, "CAN_COLLIDE"];
  _unit_1337 = _this;
  _this setDir 29;
  _this setVehicleInit "this allowDammage false; this disableAI 'FSM'; this disableAI 'MOVE'; this disableAI 'AUTOTARGET'; this disableAI 'TARGET'; this setBehaviour 'CARELESS'; this forceSpeed 0;  ";
  _this setUnitAbility 0.60000002;
_this allowDammage false; _this disableAI 'FSM'; _this disableAI 'MOVE'; _this disableAI 'AUTOTARGET'; _this disableAI 'TARGET'; _this setBehaviour 'CARELESS'; _this forceSpeed 0;_this enableSimulation false;
};
 
_vehicle_0 = objNull;
if (true) then
{
  _this = createVehicle ["MAP_bouda_plech", [6056.0205, 7702.5825, 6.1035156e-005], [], 0, "CAN_COLLIDE"];
  _vehicle_0 = _this;
  _this setDir 90.66597;
  _this setPos [6056.0205, 7702.5825, 6.1035156e-005];
};
 
_vehicle_9 = objNull;
if (true) then
{
  _this = createVehicle ["MAP_stanek_3B", [6054.7871, 7705.0747], [], 0, "CAN_COLLIDE"];
  _vehicle_9 = _this;
  _this setDir 118.30024;
  _this setPos [6054.7871, 7705.0747];
};
 
_vehicle_16 = objNull;
if (true) then
{
  _this = createVehicle ["MAP_Misc_WoodPile", [6061.7505, 7702.2954, -3.0517578e-005], [], 0, "CAN_COLLIDE"];
  _vehicle_16 = _this;
  _this setPos [6061.7505, 7702.2954, -3.0517578e-005];
};
 
_vehicle_29 = objNull;
if (true) then
{
  _this = createVehicle ["MAP_Barels", [6055.0283, 7700.7544], [], 0, "CAN_COLLIDE"];
  _vehicle_29 = _this;
  _this setDir 6.0406318;
  _this setPos [6055.0283, 7700.7544];
};
 
_vehicle_30 = objNull;
if (true) then
{
  _this = createVehicle ["MAP_barrel_water", [6056.3247, 7703.3833, -3.0517578e-005], [], 0, "CAN_COLLIDE"];
  _vehicle_30 = _this;
  _this setPos [6056.3247, 7703.3833, -3.0517578e-005];
};
 
_vehicle_31 = objNull;
if (true) then
{
  _this = createVehicle ["MAP_P_pipe_small", [6059.0938, 7700.5908, 3.0517578e-005], [], 0, "CAN_COLLIDE"];
  _vehicle_31 = _this;
  _this setDir 3.4072633;
  _this setPos [6059.0938, 7700.5908, 3.0517578e-005];
};
 
_vehicle_32 = objNull;
if (true) then
{
  _this = createVehicle ["Land_Fire_barrel", [6062.4844, 7704.5562], [], 0, "CAN_COLLIDE"];
  _vehicle_32 = _this;
  _this setDir 203.54425;
  _this setPos [6062.4844, 7704.5562];
};

 


В этот файл закидываются здания, то есть база (рынок) где будет стоять торговец, а так же сам торговец. Имейте ввиду, что класснейм скина торговца в этом файле должен совпадать с класснеймом в базе данных, о чём я уже говорил.

Ну а на этом всё, надеюсь что помог :)

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


Ссылка на сообщение
Поделиться на других сайтах





по мне проще было добавить на геройскую и бандитскую (напф). а за гайд +

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


Ссылка на сообщение
Поделиться на других сайтах

У меня камни есть у всех торговцев,на Напфе. Кому надо,пишите.

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


Ссылка на сообщение
Поделиться на других сайтах

Возник вопросик, а как узнать координаты того места, куда хочешь поставить трейдера? Нужно для карты Чернорусь.

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


Ссылка на сообщение
Поделиться на других сайтах

Возник вопросик, а как узнать координаты того места, куда хочешь поставить трейдера? Нужно для карты Чернорусь.

Инфистар дебагом.

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


Ссылка на сообщение
Поделиться на других сайтах

Торгаш спавнится один в одном через какой то промежуток времени. К рестарту их на точке около 30 штук, куда нажать чтоб вылечить?)

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


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: 123new
      В данной теме я распишу возможность создания серверного мода для сервера на собственном примере и объясню как его собрать.Работающий на момент публикации статьи на версии сервера игры 1.04.152050.
       
      Темы к ознакомлению, связанные с данным материалом:
      https://s-platoon.ru/topic/8701-enscript-uchimsya-osnovam-skriptinga/
      https://s-platoon.ru/topic/8622-enscript-delaem-skript-dlya-moda-i-osnovnye-principy-skriptinga-modov/
       
      Нам понадобятся:
      1. Сервер игры актуальной версии, не ниже патча 1.04. Как установить можно узнать тут:
      До версии 1.04 параметра servermod у сервера игры не существовало!!!
      2. Программа 'PBO manager' с состава инструментария армы из сети: https://www.armaholic.com/page.php?id=16369
      Зеркало: https://yadi.sk/d/_gmzoNSDpNJTt
      Еще зеркало:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      3. Скрипты для упаковки в наш мод, сформированные и подготовленные нами вручную. Как - смотрите тему
      4. Notepad++ https://notepad-plus-plus.org/download
      P.S. Вместо 'PBO manager' можно использовать DayZ Tools, но как им пользоваться разбираемся сами 😉
       
      И так, приступим:
      1. Предположим, что у нас имеется свой некий набор
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      Подробнее о создании скриптов для своих целей - читайте вот эту тему!
      2. Создаем папку с нашим модом. Для примера, это будет папка '@My_Server_Mod'. В созданной нами папке создаем папку 'Addons', а в ней папку 'My_Server_Mod'.
      3. Помещаем содержимое распакованного архива в папку 'My_Server_Mod'. Должно получиться так:

      4. В папке 'My_Server_Mod' создаем файлик 'config.cpp' и заполняем его следующими данными (советую использовать Notepad++ для этого):
      class CfgPatches // требуется обязательно { class My_Server_Mod // требуется обязательно, совпадает с именем мода { units[]={}; // may be not worked weapons[]={}; // may be not worked requiredVersion=0.1; // may be not worked requiredAddons[]={}; /* requiredAddons[]= { "DZ_Data", // Перечисляем требуемые и используемые модом аддоны (pbo-файлы игры и модов по их внутренним скриптовым именам) }; */ }; }; class CfgMods // // требуется обязательно, совпадает с именем мода { // https://community.bistudio.com/wiki/DayZ:Modding_Structure#Mod_presentation class My_Server_Mod { dir = "My_Server_Mod"; // Имя папки мода, совпадает с именем мода picture = ""; // Картинка в описании мода action = ""; // Ссылка, например вот так: action = "https://dayz.com/"; hideName = 1; // Не уверен, что этот параметр работает hidePicture = 1; // Не уверен, что этот параметр работает name = "My_Server_Mod"; // Имя мода (а также его внутреннее скриптовое имя) logoSmall = "Mods/TestMod/modlogosmall.tga"; // значок рядом с именем мода, если описание не развернуто logo = "Mods/TestMod/modlogo.tga"; // логотип под меню игры logoOver = "Mods/TestMod/modlogohover.tga"; // при наведении курсора мыши на логотип tooltip = "tooltip"; // подсказка при наведении курсора мыши overview = "My Server Mod"; // Описание credits = "123new"; // credits author = "123new"; // author authorID = "0"; // author steam ID version = "1.0"; // version extra = 0; // Не уверен, что этот параметр работает type = "mod"; // требуется обязательно, остается неизменным // inputs = "mods\testmod\inputs\my_new_inputs.xml"; // необязательно, при использовании пользовательских inputs dependencies[]={"Core","GameLib","Game","World","Mission"}; // необязательно, если необходимо установить зависимость класса class defs { class engineScriptModule { value=""; // если значение пустое, используется функция ввода по умолчанию files[]={"My_Server_Mod/scripts/1_Core"}; // вы можете добавить любое количество файлов или каталогов, и они будут скомпилированы вместе с оригинальными скриптами игрового модуля }; class gameLibScriptModule { value=""; files[]={"My_Server_Mod/scripts/2_GameLib"}; }; class gameScriptModule { //value="CreateGameMod"; // когда значение заполнено, имя функции ввода модуля скрипта по умолчанию перезаписывается им value = ""; files[]={"My_Server_Mod/scripts/3_Game"}; }; class worldScriptModule { value=""; files[]={"My_Server_Mod/scripts/4_World"}; }; class missionScriptModule { value=""; files[]={"My_Server_Mod/scripts/5_Mission"}; }; }; // Если какой-то из разделов скриптинга вам не нужен и вы не сибираетесь его паковать, сотрите необходимый блок с ним выше и в массиве dependencies }; }; Пояснения в файле оставил. Файл готовый:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      Как видите, в 'deffs' названия классов и путей соответствуют родным из 'scripts.pbo', но с допиской имени мода. Имя мода в данном случае и есть идентификатор для обращения к своему моду извне. А в 'dependencies' перечисляются используемые классы оригинальных скриптов без дописки номера секции. Количество используемых 'dependencies' и блоков 'deffs' должно быть идентично.
      Пояснения есть также и в официальной документации от разработчика: https://community.bistudio.com/wiki/DayZ:Modding_Structure#Mod_presentation
      5. Запаковываем нашу папку 'My_Server_Mod' в pbo-файл 'My_Server_Mod.pbo' через 'PBO manager', как на скриншоте ниже:

      Можно использовать и другие способы запаковки, если знаете их или привычны вам.
      6. Добавляем в параметры запуска сервера параметр:
      "-servermod=@My_Server_Mod;" -FilePatching 7. Радуемся, наш серверный
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      P.S. Создавать bikey файл для мода и bisign подписи для него не требуется, иначе это может привести к неработоспособности серверной модификации (возможно, недоработка сервера игры разработчиком)
       
      Отмечу сразу, что данный способ подходит для модификации и переписывания оригинальных классов скриптов сервера от разработчиков и модификации чужих модов с помощью моддинга, применяется исключительно на стороне сервера игры и клиент игры не затрагивает. Распространять такой мод игрокам НЕ НУЖНО!
      Изменение оригинальных скриптов, для которых не предусмотрена операция 'modded class' в движке игры, а также классов и функций, которые защищены языком и движком игры от такого рода действий через серверные моды не получится. Если вы столкнулись с этим, вам проще распаковать scripts.pbo и поместить папку scripts в корень сервера игры, добавить в параметры запуска сервера параметр -FilePatching и изменять напрямую в папке необходимые вам файлы.Запаковывать назад в pbo папку и размещать в dta в таком случае не нужно!
       
      P.P.S. Процедура создания своего собственного клиент-серверного мода на основе скриптов работает таким же образом. В случае создания такого мода, файл 'config.cpp' может быть для стандартного мода более разнообразным, а также после требуется обязательная подпись такого мода в bisign и создание bikey файлов. Более подробно это освещать требуется отдельно!
    • Автор: 123new
      Здравствуйте, дорогие друзья и посетители сайта. В данной теме я распишу как создать свой "чистый" сервер на основе первых официальных серверных файлов игры, доступных каждому в steam для тех, кто приобрел эту замечательную игру. Для тех, кто не приобретал ее, не расстраивайтесь, добавлю зеркала на файлы.
      И так, приступим.
       
      Системные требования игры:
      https://s-platoon.ru/topic/7014-polnaya-dokumentaciya-servernyh-faylov-dayz-standalone-dayz-server-files-documentation/?do=findComment&comment=61219
       
      Нам понадобятся:
      1. Notepad++ https://notepad-plus-plus.org/download
      2. Официальные серверные файлы игры со steam. Скачать  их можно:
      В Steam из раздела 'инструменты' , выбрав DayZ Server и нажав 'установить' Вручную через утилиту SteamCMD:
      3. Официальный клиент игры из steam: https://store.steampowered.com/app/221100/DayZ/
      4. "Настроенная конфигурация серверной части игры" и батник для старта сервера:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      И так, приступим.
      Копируем папку со скачанными серверными файлами игры (папку DayZServer ) в отдельную папку. В пути и имени папки не должно быть пробелов и русских символов. Саму новую папку можно назвать как хотите, я же назову ее MyServer. Распаковываем архив с "Настроенной конфигурацией серверной части игры" в папку с серверными файлами (папка MyServer). Получим что-то типа такого: Далее мы работаем уже только внутри папки MyServer Открываем в Notepad++ файл server.cfg в папке Instance_1.  Настраиваем его, комментарии к настройке на русском в файле имеются.
      При особой необходимости вы можете свериться с serverDZ.cfg в корневой папке сервера, это оригинальный файл конфигурации, предоставленный разработчиками. Также, можете прочитать информацию из официальной документации с переводом в теме вот этой(смотрите во 2 сообщении указанной темы). Плюсом есть пояснения в конце гайда! Открываем в Notepad++ файлы BEServer.cfg  и BEServer_x64.cfg в папке Instance_1\Battleye в папке сервера. Настраиваем параметры, содержимое обоих файлов должно быть идентичным.
      Параметры:
      RConPassword - Устанавливает пароль для подключения RCon инструментов  (инструмент удаленного администрирования, таких как BEC/Dart).
      RestrictRCon - Включает\отключает RCon-функции (кик\бан\ограничение подключения) (0 для отключения органичений)
      MaxPing - устанавливает ограничение на сервере по пингу
      В примере, уже имеющемся у вас, 12345678 - rcon-пароль сервера, 500 - максимальный пинг, разрешенный battleye для игры на сервере, RestrictRCon 0 - разрешить подключение с RCon-клиентов с правами кика и бана (0 - разрешено все, 1 - запрещен кик и бан, только отправка в чат). Запускаем !!!Start_server.bat и наш сервер запустится. Запускаем клиент игры со steam, находим наш сервер вручную по ip и порту, либо имени сервера.
      Если сервер запущен на том же компьютере, где и игра, и на стандартном порту 2302, то поумолчанию поиск выполняется по 127.0.0.1:2302
      Если сервер запущен на другом компьютере, то вместо 127.0.0.1 будет ip адрес компьютера, где запущен сервер, или его доменное имя. Например, myserver.com:2302 или 178.123.22.12:2302
      ВАЖНО: если сервер запущен на другом компьютере, отличном от компьютера где запущена игра, то для доступа на сервер игроков необходимо иметь "внешний" выделенный ip-адрес и открытый порт сервера!
      Сменить порт сервера можно в !!!Start_server.bat (Notepad++ для редактирования),  параметр запуска сервера -port= Более подробно по параметрам запуска читайте ниже. Для выключения сервера рекоммендуется пользоваться !!!Server_kill.bat файлом, созданным в соответствии с рекоммендациями разработчиков игры и официальной документацией.  
      Разъяснения по параметрам запуска сервера игры (для !!!Start_server.bat ):
      Разъяснения по конфигурационному файлу сервера игры (для serverDZ.cfg ):
       
      Crack SmartSteamEmu v. 1.4.3 данной версии клиента игры и сервера:
      Скачать с Zippyshare.com: https://www64.zippyshare.com/v/mHmPweqg/file.html
      Скачать с Mega.nz: https://mega.nz/#!rnZBXK4b!KRrJm6obcJjUlzMpEPNQ3R8sy2z0pP-0Myb_ao4TVhg
      Скачать с yandex.disk: https://yadi.sk/d/4xSF1dSt6XN41g
      Инструкция по установке есть в архиве, дублирую:
       
      Дополнительно:
      Для работы с Battleye, кика и бана игроков используйте ip-адрес и порт сервера, и любой rcon-клиент с паролем из BEServer_x64.cfg
      Для работы BEC файл BEServer.cfg должен быть идентичным по содержанию BEServer_x64.cfg иначе программа не будет работать!
      База данных (storage) теперь хранится по пути: mpmissions\dayzOffline.chernarusplus\storage_{номер instance с cfg сервера}
      В базе данных также хранится файл с сохранениями игроков на сервере с именем players.db
      Если вы не находите свой сервер в списке серверов игры во вкладке Community, проверьте на доступность и открытость извне игровой порт, а также порты steam и steamquery (см. cfg файл сервера). Сервера с crack не отобразятся там.
       
      Вот и все, приятной игры на сервере!
       
       
    • Автор: 123new
      В данной теме я распишу мой вариант установки сейвзоны, работающий на момент публикации статьи на версии сервера игры 1.06.152885.
       
      Установка
      1. Открываем 'init.c' в  'MpMissions' вашей.
      2. Вверху файла добавляем 1 строкой:
      #include "$CurrentDir:\\mpmissions\\dayzoffline.chernarusplus\\Scripts\safezone.c" Где 'dayzoffline.chernarusplus' - имя папки с активной 'MpMissions' вашей.
      Т.е. для карты Livonia 'dayzoffline.chernarusplus'  надо вручную заменить на 'dayzOffline.enoch'
      Пример:

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      3.Создаем папку 'Scripts' в корне 'MpMissions' вашей, а в ней создаем файл с именем 'safezone.c' следующего содержания:
      /* Author: Sania(ZoS) (aka 123new) Project: S-platoon.ru Install: 1. Create a 'Scripts' directory in your active mpmissions 2. Plase this filename (safezone.c) in 'Scripts' 3. Add in init.c this line: #include "$CurrentDir:\\mpmissions\\dayzoffline.chernarusplus\\Scripts\safezone.c" Where is 'dayzoffline.chernarusplus' is active mpmission directory in cfg filename server 4. Configure a next settings */ class SafeZone_PlugIn { protected bool Activate_SafeZone_PlugIn = true; // safezone on (true) or off (false) protected float SAFEZONE_time_repeat_checking = 10; //In seconds ref static TStringArray SAFEZONE_LOACTIONS = {"15145.1 32.9793 13919.0", "12145.1 32.9793 10919.0"};//Map coords (positions of the safe zone) protected static float SAFEZONE_RADIUS = 100; //In meter protected static string SAFEZONE_ENTRY_MESSAGE = "Welcome to The SafeZone! Godmode ENABLED!"; protected static string SAFEZONE_EXIT_MESSAGE = "You Have Left The SafeZone! Godmode DISABLED!"; void OnInit() { if(Activate_SafeZone_PlugIn) { GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(RunCheckStart, (SAFEZONE_time_repeat_checking * 1000), true); } } static void RunCheckStart() { private array<Man> players = new array<Man>; GetGame().GetPlayers( players ); if (SAFEZONE_LOACTIONS.Count() > 0) { if (players.Count() > 0) { foreach(string SAFEZONE_LOACTION: SAFEZONE_LOACTIONS) { if( players.Count() > 0 ) { foreach(Man player: players) { if(player) { private PlayerBase player_casted = PlayerBase.Cast(player); CheckingPosition(player_casted,SAFEZONE_LOACTION.ToVector()); } } } } } } } static void CheckingPosition(PlayerBase player,vector SAFEZONE_LOACTION) { private float SAFEZONE_distance; private string SAFEZONE_ZoneCheck, SAFEZONE_UID_PLAYER, SAFEZONE_NAME_PLAYER; SAFEZONE_NAME_PLAYER = player.GetIdentity().GetName(); SAFEZONE_UID_PLAYER = player.GetIdentity().GetPlainId(); //Steam 64 private vector SAFEZONE_pos_player = player.GetPosition(); private vector SAFEZONE_LOCATION_FIXED = CorrectToGroundPosY(SAFEZONE_LOACTION); private string name_mesage_profile = "GodModeEnabledFor: " + SAFEZONE_UID_PLAYER + " Location: " + SAFEZONE_LOACTION.ToString(); SAFEZONE_distance = vector.Distance(SAFEZONE_pos_player,SAFEZONE_LOCATION_FIXED); if (SAFEZONE_distance <= SAFEZONE_RADIUS) //Player Inside Zone { SAFEZONE_ZoneCheck = ""; GetGame().GetProfileString(name_mesage_profile,SAFEZONE_ZoneCheck); if (SAFEZONE_ZoneCheck == "true") //Already in zone { GetGame().SetProfileString(name_mesage_profile,"true"); player.SetAllowDamage(false); //GodMode On return; } else { GetGame().SetProfileString(name_mesage_profile,"true"); Print("[SafeZone] " + SAFEZONE_NAME_PLAYER + " (" + SAFEZONE_UID_PLAYER + ") Enter in safeZone in position: " + SAFEZONE_LOCATION_FIXED.ToString()); player.SetAllowDamage(false); //GodMode On SendPersonalMessage(SAFEZONE_ENTRY_MESSAGE, player); } } else { //Player Outside of Zone if (SAFEZONE_distance > SAFEZONE_RADIUS) //Player Outside of Zone { SAFEZONE_ZoneCheck = ""; GetGame().GetProfileString(name_mesage_profile,SAFEZONE_ZoneCheck); if (SAFEZONE_ZoneCheck == "false") { GetGame().SetProfileString(name_mesage_profile,"false"); return; } else { if (SAFEZONE_ZoneCheck != "") { GetGame().SetProfileString(name_mesage_profile,"false"); Print("[SafeZone] " + SAFEZONE_NAME_PLAYER + " (" + SAFEZONE_UID_PLAYER + ") Left safeZone in position: " + SAFEZONE_LOCATION_FIXED.ToString()); player.SetAllowDamage(true); //GodMode Off SendPersonalMessage(SAFEZONE_EXIT_MESSAGE, player); } else { GetGame().SetProfileString(name_mesage_profile,"false"); return; } } } } } static vector CorrectToGroundPosY(vector pos) { private float pos_x = pos[0]; private float pos_z = pos[2]; private float pos_y = GetGame().SurfaceY(pos_x, pos_z); private vector tmp_pos = Vector(pos_x, pos_y, pos_z); return tmp_pos; } static void SendPersonalMessage(string message, PlayerBase casted_player) { Man player; Class.CastTo(player, casted_player); if(( player ) && (message != "")) { Param1<string> m_GlobalMessage = new Param1<string>(message); GetGame().RPCSingleParam(player, ERPCs.RPC_USER_ACTION_MESSAGE, m_GlobalMessage, true, player.GetIdentity()); } } } /* class SafeZone_Config //test config for json { vector SAFEZONE_LOACTION = "15145.1 32.9793 13919.0"; //Map coords (position of the safe zone) float SAFEZONE_RADIUS = 100.0; //In meter string SAFEZONE_ENTRY_MESSAGE = "Welcome to The SafeZone! Godmode ENABLED!"; string SAFEZONE_EXIT_MESSAGE = "You Have Left The SafeZone! Godmode DISABLED!";\ } */ ref SafeZone_PlugIn SafeZone = new SafeZone_PlugIn(); modded class CustomMission { override void OnInit () { super.OnInit(); SafeZone.OnInit(); } } Ну или скачиваем его отсюда в готовом виде:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      Здесь:
       'SAFEZONE_LOACTIONS' - координаты точкек центра сейвзоны, можно указать несколько.
      'SAFEZONE_RADIUS' - радиус от указанного центра севзоны, на котором действует защита
      'ENTRY_MESSAGE' - сообщение о входе в зону (не рекоммендуется указывать русский язык, может не отображаться)
      'EXIT_MESSAGE' - сообщение о выходе из зоны (не рекоммендуется указывать русский язык, может не отображаться)
      'SAFEZONE_time_repeat_checking' - время повтора проверки наличия игроков в зонах, в секундах
      'Activate_SafeZone_PlugIn' - активация плагина скрипта, true - ключен, false - выключен
      4. Запускаем сервер и проверяем.
       
      Для совсем ленивых готовая миссия сервера с настроенной сейвзоной для патча игры 1.06 
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
       
      Гайд обновлен: 31.01.2020
       
       
    • Автор: 123new
      Собственно, в шапке темы написано все. Давайте в этой теме обсуждать вопрос создания 'нормальной' (привычной для всех, в том числе и для редактирования) базы данных персонажей сервера. Возможно, даже с возможностью мультисерверной работы (что крайне лишним не было бы).
       
    • Автор: 123new
      В данной теме мы с вами научимся создавать простой скрипт, который позволит выводить в чат объявления, которые вы захотите сами.
       
      Нам понадобится:
      1. Сервер DayZ 1.0, сделанный по одному из гайдов:
      2. Notepad++
      3. Немножечко трезвого ума
       
      Приступим:
      1. Открываем Mpmissions - dayzOffline.chernarusplus - init.c
      2. В самом начале файла добавляем:
      #include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\InfoMessages.c" Находим функцию
      void main() и перед ее закрывающей скобкой "}"добавляем:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(CustomInformation, TIME_Information_Repeat, true); пример:

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      3. Помещаем в папку файл  Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      Либо создаем вручную этот файл с именем "InfoMessages.c" и заполняем его следующим текстом:
      int TIME_Information_Repeat = 60000; //in ms (60 seconds = 60000) ref TStringArray Messages = {"Welcome to My Server!", "This is server DayZ 1.0 Stable version!", "Our ip adress: ....", "Our site: ....", "Good day and big Loot for all!"}; void CustomInformation() { //GetGame().GetWorld().GetPlayerList(m_Players); array<Man> players = new array<Man>; GetGame().GetPlayers( players ); private int numbOfplayers = players.Count(); if( numbOfplayers > 0 ) { // GetGame().ChatPlayer(0,Messages.GetRandomElement()); foreach(Man player: players) { InfoMessages_SendPersonalMessage(Messages.GetRandomElement(), player); } } } void InfoMessages_SendPersonalMessage(string message, Man player) { if(( player ) && (message != "")) { Param1<string> m_GlobalMessage = new Param1<string>(message); GetGame().RPCSingleParam(player, ERPCs.RPC_USER_ACTION_MESSAGE, m_GlobalMessage, true, player.GetIdentity()); } } 4. Настраиваем файл как нам нужно. Т.е. в строке
      int TIME_Information_Repeat = 60000; //in ms (60 seconds = 60000) указываем время повтора вывода сообщений в чат (поумолчанию стоит минута)
      и сами сообщения в переменной
      ref TStringArray Messages = {"Welcome to My Server!", "This is server DayZ 0.63 Experimental!", "Our ip adress: ....", "Our site: ....", "Good day and big Loot for all!"}; Важно: в конце последней строки обязательно должна быть скобка и точка с запятой, иначе сервер не запустится!
       
      P.S. Если сообщения вам не видны, включите их видимость в настройках вашего клиента игры для себя!
       
       
       
  • Наш выбор

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.