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

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

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

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

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

[ГАЙД] Настраиваемые информационные диалоги

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

Маленький мод, позволяющий создавать настраиваемые информационные диалоги.

 

1) Качаем и распаковываем архив

 

2) Папку help кидаем в папку с миссией

 

3) Содержимое description.ext из папки, нужно добавить в конец своего description.ext, после этого файл можно удалить

 

Теперь нужно настроить вызов диалога в игре. Вариантов масса, я рассмотрю лишь вариант с хоткеем.

 

1) Открываем dayz_spaceInterrupt.sqf

Если его нет:

 

 

1) идём в @Dayz_Epoch\addons\dayz_code.pbo\actions и копируем файл dayz_spaceInterrupt.sqf в папку custom в вашей миссии

2) открываем compiles.sqf и ищем:

dayz_spaceInterrupt = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\dayz_spaceInterrupt.sqf";

и заменяем на:

dayz_spaceInterrupt = compile preprocessFileLineNumbers "custom\dayz_spaceInterrupt.sqf";

 

 

 

над последним _handled добавляем:

if (_dikCode == скан_код) then {
	_hndl = createdialog "HELP_DIALOG";
};

где скан_код заменяем нужным значением. Скан коды можно посмотреть здесь.

А HELP_DIALOG идентификатор диалога. Об этом дальше.

 

Если в инфистаре включена блокировка диалогов:

2) Открываем hlp_dialog.hpp в папке help

 

3) Ищем idd = 1; и заменяем еденицу на рандомное значение.

 

4) Открываем AHconfig.sqf и в блок _ALLOWED_Dialogs добавляем наше значение.

 

Готово. Теперь тестовый диалог открывается в игре нажатием выбранной клавиши.

 

Теперь переходим к кастомизации.

 

Мод использует обычные HTML страницы, про верстку рассказывать не буду, это тема для другой статьи, да и из стандартного файла всё понятно.

 

Разберём файл hlp_dialog.hpp:

 

 

class HELP_DIALOG // Идентификатор диалога, используется для вызова. Должен быть уникальным для каждого диалога.
{
idd = 1; // Меняем на своё значение, добавляем в разрешённые диалоги инфистара. Все диалоги могут иметь одинаковый idd.
movingenable = true;
   
class Controls
{
class help_box: Box_help
{
	idc = -1;
	x = 0.14777 * safezoneW + safezoneX;
	y = 0.0789474 * safezoneH + safezoneY;
	w = 0.707986 * safezoneW;
	h = 0.844211 * safezoneH;
};
class hlp_frame: RscFrame_help
{
	idc = 1800;
	text = "Help and Information";  // Заголовок диалога. Меняем текст в ковычках на свой.
	x = 0.14777 * safezoneW + safezoneX;
	y = 0.0789474 * safezoneH + safezoneY;
	w = 0.707986 * safezoneW;
	h = 0.844211 * safezoneH;
};
class hlp_picture: RscPicture_help // Картинка справа сверху. Удаляем класс целиком, если картинка не нужна.
{
	idc = 1200;
	text = "help\dayz-tr.paa"; // Путь до изображения.
	x = 0.489511 * safezoneW + safezoneX;
	y = 0.102632 * safezoneH + safezoneY;
	w = 0.353134 * safezoneW;
	h = 0.192894 * safezoneH;
	
};
class hlp_text: RscHTML_Help // Маленький блок информации в шапке. Может быть одинаковым во всех диалогах.
{
	idc = 1000;
	filename = "help\help_txt.html"; // Путь до файла.
  	text = "";	x = 0.167872 * safezoneW + safezoneX;
	y = 0.122369 * safezoneH + safezoneY;
	w = 0.308559 * safezoneW;
	h = 0.21 * safezoneH;
};
class hlp_html: RscHTML_Help // Содержимое диалога.
{
	idc = 1100;
	filename = "help\help.html"; // Путь до файла.
  	text = "";
	x = 0.164376 * safezoneW + safezoneX;
	y = 0.348684 * safezoneH + safezoneY;
	w = 0.677395 * safezoneW;
	h = 0.478422 * safezoneH;
};
class hlp_button: RscButton_help // Кнопка выхода.
{
	idc = 1600;
	text = "Close"; // Текст на кнопке.
	x = 0.699277 * safezoneW + safezoneX;
	y = 0.85 * safezoneH + safezoneY;
	w = 0.0987937 * safezoneW;
	h = 0.0521053 * safezoneH;
	action = closedialog 0;
};
};
};

 

 

 

Можно копировать этот код сколько угодно раз, главное менять пути и идентификатор диалога на свой.

 

Источник.

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

Изменено пользователем dimquea (история изменений)

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


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



Скрины бы скинул. А то половина людей не поймёт что это вообще. :)

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


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

 

Скрины бы скинул. А то половина людей не поймёт что это вообще. :)

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

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


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

содержимое 2го html файла не показывает

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


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

содержимое 2го html файла не показывает

а как то конкретнее можно?

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


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

Интересно, надо себе такое с правилами замутить, только как сделать так чтобы оно автоматом после титров открылось...

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


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

а как то конкретнее можно?

из файла help_txt показывает, а из help нет

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


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

Спасибо, давно искал, + заслужил. Сейчас попробую поставить!

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


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

из файла help_txt показывает, а из help нет

пути в dialog.hpp правильные?

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


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

да всё правильно 

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


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

да всё правильно 

а help.html редактировал?

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


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

Ты лучше расскажи как сам диалог написать. Мне очень интересно, в инете не очень много инфы. Как написать defines.hpp и тд, я был бы очень рад. Ну или хотя бы поверхностно.

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


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

А как сделать чтоб можно было еще и закрывать через кнопку?Например через F10.

Изменено пользователем Nyborezik (история изменений)

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


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

Народ так всё таки, подскажите как заставить диалог открываться автоматом , после появления игрока

Изменено пользователем all88 (история изменений)

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


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

Народ так всё таки, подскажите как заставить диалог открываться автоматом , после появления игрока

Попробуй вставить это в init.sqf:

_hndl = createdialog "HELP_DIALOG";

После:

if (!isDedicated) then 
	{

Я не уверен, что это сработает, но в теории должно :)

Изменено пользователем SpiritWolf (история изменений)

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


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

А как сделать чтоб можно было еще и закрывать через кнопку?Например через F10.

а чем кнопка "закрыть" не устраивает? ескейп тоже закрывает.

 

Ты лучше расскажи как сам диалог написать. Мне очень интересно, в инете не очень много инфы. Как написать defines.hpp и тд, я был бы очень рад. Ну или хотя бы поверхностно.

тебе нужен диалог для чего то другого? на вики богемии полно инфы по диалогам. если ты про содержимое этих диалогов, то тебе нужно править html файлы.

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


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

Попробуй вставить это в init.sqf:

_hndl = createdialog "HELP_DIALOG";

После:

if (!isDedicated) then 
	{

Я не уверен, что это сработает, но в теории должно :)

попробую сенкью)

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


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

Добрый день, у меня к тебе такой вопрос: я поставил данный скрипт себе на серв, добавил в исключения цифры. Все прекрасно работает. Но есть маленькое НО: у меня стоит Snap Building Pro и когда устанавливаешь какую либо деталь и фиксируешь ее на букву F-она не фиксируется. Так вот, может ли функция фиксации отказать из-за этого скрипта?

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


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

Добрый день, у меня к тебе такой вопрос: я поставил данный скрипт себе на серв, добавил в исключения цифры. Все прекрасно работает. Но есть маленькое НО: у меня стоит Snap Building Pro и когда устанавливаешь какую либо деталь и фиксируешь ее на букву F-она не фиксируется. Так вот, может ли функция фиксации отказать из-за этого скрипта?

у меня и то и то стоит и прекрасно работает. ищи ошибку в spaceInterrupt.

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


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

Значение "HELP_DIALOG" менять надо? 

Сейчас у меня вот так вот:
if (_dikCode == 0x41) then {
    _hndl = createdialog "HELP_DIALOG";
};
 
_handled
Изменено пользователем niksolnshu (история изменений)

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


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

 

Значение "HELP_DIALOG" менять надо?

да. если ты редактировал hlp_dialog.hpp.

вот так начинается код диалога:

class FAQ_DIALOG
{
idd = 1666;
movingenable = true;

FAQ_DIALOG это его идентификатор, который и надо вызывать.

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


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

Кирилицу не воспринимает. Какой шрифт и куда нужно вписать, чтоб воспринимало?

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


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

Да, я только подошел к этому варианту. Сейчас вот пробую



Кодировку может? UTF-8 без BOM

Как это "Без BOM"?  

Поставил charset=utf-8, все равно ????? отображает  :biggrin:

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


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

Да, я только подошел к этому варианту. Сейчас вот пробую

 

Как это "Без BOM"?  

Поставил charset=utf-8, все равно ????? отображает  :biggrin:

это вот так

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: BR0wi
      Подскажите где найти людей, которые делаю моды на заказ. К кому вообще обращаться? Или что бы реализовать свои идеи нужно самому "год" сидеть и изучать все механики модинга?
    • Автор: CubeIn
      Приветствую господа, хочу создать новый проект, уникальный, но для этого нужен маппер.
      Я оставлю здесь свой дискрод, напишите в лс, кто готов взяться за крупный проект.
      4me#4542
    • Автор: 6agu
      Поставил
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • Автор: 123new
      Много вопросов на данную тему наблюдаю от новичков, попробую прояснить немного сей вопрос.
       
      Предположим. что вы уже знаете на каких координатах вам надо спавнить определенное здание или объект\животное\бота, с каким углом поворота. И так. эта тема для вас.
       
      Сразу делаю пометку, метод, который добавили нам разработчики игры в патче 1.15, очень хорошо описал наш товарищ в сообщении форума:
      Рекоммендую вам использовать именно его!
      Ниже опубликованы старые методы.
       
      Если вы с расставили их с модифицированной версии Offline (Offline by Arksenor это называется), то вы получили и нашли код вида:
      GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13260.040039 0.0 3670.984131").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13262.756836 0.0 3645.180176").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13265.441406 0.0 3619.531982").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13268.124023 0.0 3593.995361").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13270.844727 0.0 3568.186523").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13273.514648 0.0 3542.561279").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13276.195313 0.0 3517.048828").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13278.399414 0.0 3496.097900").SetOrientation("-96.000000 0.000000 0.000000"); Здесь (по примеру первой строки) 1 значение в скобках - id постройки/объекта, 2 значение - координаты в формате X Y Z, разделенные пробелом, 3 - значение поворота примерно в том же формате.
      Как это делать в Offline - статья от автора Offine:
      https://github.com/Arkensor/DayZCommunityOfflineMode/wiki/Add-custom-objects-to-your-server-or-mission
       
      И так, инструкция:
      1. Добавляем в начало init.c файла в вашей mpmissions следующий код:
      #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\spawn_buildings.c" 2. Создаем в папке вашей активной mpmissions файлик spawn_buildings.c и заполняем его следующей информацией.
      void SpawnObject( string type, vector position, vector orientation ) { private string NameBlockLog = "[CreateObject] "; private string InfoLog = ""; if(type != "") { auto obj = GetGame().CreateObject( type, "0 0 0" ); if(obj) { if ((position[0] != 0) && (position[1] != 0) && (position[2] != 0)) { obj.SetPosition( position ); obj.SetOrientation( orientation ); obj.Update(); if (obj.CanAffectPathgraph()) { obj.SetAffectPathgraph(true, false); GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(GetGame().UpdatePathgraphRegionByObject, 100, false, obj); } InfoLog = "[Type: '" + obj.GetType() + "' Position: '" + obj.GetPosition().ToString() + "' Orientation: '" + obj.GetOrientation().ToString() + "']"; Write_Log(NameBlockLog + " Object has been created successfully! Info " + InfoLog); } else { InfoLog = "[Type: '" + type + "' Position: '" + position + "' Orientation: '" + orientation + "']"; Write_Log(NameBlockLog + " Object can't be created! Incorrect writed position. Info " + InfoLog); } } else { InfoLog = "[Type: '" + type + "' Position: '" + position + "' Orientation: '" + orientation + "']"; Write_Log(NameBlockLog + " Object can't be created! Info " + InfoLog); } } else { InfoLog = "[Type: '" + type + "' Position: '" + position + "' Orientation: '" + orientation + "']"; Write_Log(NameBlockLog + " Object can't be created! Incorrect writed type. Info " + InfoLog); } } void Write_Log(string message) { Print(String(message)); } 3. Открываем созданный нами файл,  и в конце файла дописываем следующее:
      void SpawnAirfeeldBuildings() { SpawnObject( "Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750", "-96.000000 0.000000 0.000000"); } void SpawnKrasnoBuildings() { SpawnObject( "Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750", "-96.000000 0.000000 0.000000"); } Где после void - название функции идет, а между открытыми скобками вызов спавна самих зданий на указанных координатах.
      На примере 1 строки:
      Land_CementWorks_ExpeditionB - id постройки (type)
      13251.875000 0.0 3748.525879 - координаты в формате X Y Z
      -96.000000 0.000000 0.000000 - значение поворота в формате X Y Z
      Внимание: id постройки и координаты в примере указаны не верные и требуют подключения дополнительной модификации для корректной работы!!! Координаты не соответствуют названию функции!!!
      4. открываем в MpMissions в папке с вашей активной миссией init.c и перед ЗАКРЫВАЮЩЕЙ скобкой '}' дописываем нужную нам функцию (это будет активация спавна на карте):
      SpawnAirfeeldBuildings(); 5. Готово, Запускайте сервер, и в scripts.log вы увидите процедуру спавна ваших зданий и увидите, спавнятся ли они на карте или нет.
      Можно написать конечно и более готовую, универсальную систему спавна на карте со считыванием конфигурации из файла, но я считаю это лишним.
       
      Как заполнить добавленные здания лутом на карте:
      вариант 1:
      https://github.com/Arkensor/DayZCommunityOfflineMode/wiki/Enable-loot-for-custom-placed-objects
      вариант 2: вручную заполнить xml-файл  mapgrouppos.xml в mpmssions данными о местоположении зданий, где rpy - значение поворота здания в формате Z Y X
       
      С помощью данной статьи вы можете разместить любой элемент игры(постройку, животное, зомби, бота), доступный к спавну через любую модификацию-админ. панель. Очень полезный мод в этом смысле BuilderItems, с его помощью можно творить поистину интересные локации!
    • Автор: Venom21
      Появилась такая проблема, нужно закрыть некоторые слоты под одежду, когда на определённый слот одет предмет…
      пример: возьмём экзоскелет от Фидова, там есть две версии которая одеваеться как на тело и ноги, и есть которая одеваться на разгрузку и пояс, так вот, нужно например чтобы при одетом экзаче на тело и ноги слоты под пояс и разгрузку блокировались, либо только под определенные предметы, если есть интерес то цену можем в личке обсудить…
      P.S. Разрешение от Фидова на переделку и переупаковку есть)
  • Наш выбор

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

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

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