Перейти к содержанию

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

 

61561952a1.png

Тема посвящена моддингу на платформе Зов Припяти.

 

Правила темы:

  • Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть.
  • Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.
  • Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).
  • Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться.

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


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

Xenomorphom configs\scripts\pripyat\pri_a25_blow_up_enter_door.ltx


Путь во мгле.
Связь времен.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

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

Изменено пользователем ian98

76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 
53 минуты назад, ian98 сказал:

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

Прежде чем что-то грандиозное сделать, задайте себе пару вопросов:
А зачем оно? А нужно ли? Есть ли смысл в этом?
Помню, в ЗП когда включено диалоговое окно с сохранениями, есть кнопка, которая может удалить сохранения. Уверен точно, что это меню реализовано через скрипты, а значит вызов удаления сохранения можно реализовать из скриптов.
Предлагаю такой алгоритм:
1. В момент сохранения проверить, включён ли режим одна жизнь.
Проверять, происходит ли сохранение в данный момент можно таким способом в момент апдейта актёра:
if get_hud():GetCustomStatic("game_saved")~=nil then
 Если да, то записываем имя сохранения в таблицу для сохранений (пригодится в будущем). Также нужно записать количество сделанных сохранений. Таблица будет иметь вид:
{[a] = "save_name"}
Также нужно сделать проверку:
Сначала запишем имя сейва: local last_save_name
Потом объявим local last_save_name
if save_name~=last_save_name then -- Если появился новый сейв с новым названием
      ..заполним таблицу..
end
2. Если игрок умер, и таблица с сохранениями не равна nil или не пустая:
Передаём какой-нибудь переменной аргумент из таблицы сохранений (название сохранения передаём), и вызываем функцию, которая удаляет сохранения. В качестве аргумента передаём переменную.
Функция должна иметь примерно такой вид:
Но перед этим надо будет распарсить таблицу с помощью ipairs.
local save_name
.. Парсим таблицу..
save_name = v -- это, что после знака =
saves_count = k -- это [a]
.....
function on_actor_death()
for i = 1, saves_count do
       if t and t ~= nil then -- Проверим ещё раз на всякий случай
              функция, удаляющая сейв(save_name)
       end
end
end


Дополнено 8 минуты спустя

Всё необходимые функции вы можете найти в файлах ui_load_dialog и ui_save_dialog

Изменено пользователем liner

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


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

Функция на удаление сейва: ui_load_dialog.delete_save_game(filename)


Дополнено 2 минуты спустя
2 минуты назад, denis2000 сказал:

liner ian98 Как мне кажется, это можно сделать гораздо проще, если включен такой режим - запретить сохранение в меню и в автосейвах.

Тогда название будет отображать всю правду:)))
Вышел из игры - весь прогресс пропал. Думаю вы поняли о чём я.

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


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

liner Я это понял ранее чем вы напомнили, поэтому и удалил сообщение. Минус вашего метода: вы не можете контролировать все методы сохранения и как следствие удалить все сохранения задействованные в этом прохождении. Поэтому я, подумав решил, предложить внедрение в сейв генерируемого в момент старта новой игры ключа. В случае смерти ключ генерируется заново и при загрузке сейва сравнивается с тем, что сохранено и при несовпадении... ну например закидывать ГГ в специальную локацию - могилу откуда нет выхода, кроме как начать новую игру с новым ключем (решение за разработчиком, что делать и как ограничивать игрока). Это позволит контролировать абсолютно все сохранения: быстрые, через меню, автосейвы в контрольных местах сюжета, сохранения вручную через консоль.

Изменено пользователем denis2000

Путь во мгле.
Связь времен.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

Подскажите пожалуйста, могу ли я сделать у себя в dead air инвентарь как в ЗП с одним индикатором типо как там кровотичение, радиация ? Мне нужно только один такой индыкатор чтобы я туда впихнул индыкатор Жажды, у меня там индекатор с полоской здоровье и сытость я хочу уменьшить эти полоски здоровья и сытости и впихнуть туда кружок с индыкатором жажды, чтобы не было его на экране, ибо у меня нет никаких индыкаторов на экране кроме полоски выносливости ну и патрончики....вопрос ищо один, можно ли это сделать без правки движка ?

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


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

Подскажите где-нибудь можно увеличить силу захвата актором динамических объектов или тех же трупов?

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


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

 

В 05.03.2021 в 09:08, Yura001 сказал:

Здравствуйте, нашёл гайд по созданию собственного проводника в зп. Для телепортации пишут скрипт где напрямую указывают вектор и координаты. Есть ли какой-нибудь способ сделать это без указания координат напрямую? Например воткнуть смарт кавер и тепать в него.

 

В 05.03.2021 в 13:19, denis2000 сказал:

Yura001 


local object = get_story_object("стори_ид_смарта")
local position = object:position()
npc:set_npc_position(position)

 

 

В 05.03.2021 в 13:19, denis2000 сказал:

стори_ид_смарта

1) Смарт кавера, или смарт террейна?

2)стори айди задаётся в game_story_ids.ltx?

 

Изменено пользователем Stepan_sovok1917

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


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, Stepan_sovok1917 сказал:

Смарт кавера, или смарт террейна?

Смарт-чего угодно.

1 час назад, Stepan_sovok1917 сказал:

стори айди задаётся в game_story_ids.ltx?

Нет в кастомдате объекта.

Untitled-1.jpg

Изменено пользователем denis2000

Путь во мгле.
Связь времен.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

denis2000  Логику смарта обязательно прописывать?

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


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

Как заставить иконку индыкатора с hud_wnd.... показать иконку в инвентаре ? Например от жажды !

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


Ссылка на сообщение
Поделиться на другие сайты
 
2 часа назад, Stepan_sovok1917 сказал:

Логику смарта обязательно прописывать?

У смарт-террейна нет логики, у него конфиг и он обязателен.


Путь во мгле.
Связь времен.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

Приветствую. Не подскажите ли с помощью каких скриптов можно сделать так, чтобы при приближении к какому - либо существу (бюреру например) на ГГ накладывался определенный партикл (жгучего пуха).
Еще интересует, каким образом можно сделать предмет, который при использовании его в определенном смарте давал бы ГГ определенную info. Мне это для квеста надо.
И еще можно ли сделать так, чтобы при входе ГГ в определенный смарт на него накладывался постэфект?
Если подскажите хоть с одним из пунктов, буду очень благодарен)

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


Ссылка на сообщение
Поделиться на другие сайты
 
5 часов назад, Kamr4d сказал:

с помощью каких скриптов можно сделать так, чтобы при приближении к какому - либо существу (бюреру например) на ГГ накладывался определенный партикл

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

5 часов назад, Kamr4d сказал:

каким образом можно сделать предмет, который при использовании его в определенном смарте давал бы ГГ определенную info

Читайте колбеки на использование предметов

5 часов назад, Kamr4d сказал:

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

В смарт - нет, в рестриктор - да:

[sr_idle]
on_info = {=actor_in_zone(имя_рестриктора)} %=run_postprocess(имя_постпроцесса:ид_постпроцесса:true)% 

 


Путь во мгле.
Связь времен.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

denis2000 Благодарю за помощь

7 минут назад, denis2000 сказал:

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

Читайте колбеки на использование предметов

В смарт - нет, в рестриктор - да:


[sr_idle]
on_info = {=actor_in_zone(имя_рестриктора)} %=run_postprocess(имя_постпроцесса:ид_постпроцесса:true)% 

 

 

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


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

Как правильно пользоваться функцией math.floor?
В лог я вывел числа без округления и с округлением. По правилам математики, например, число 1,6 должно округлиться до 2, но почему-то в игре округляется до 1.
 

Спойлер

[LUA]  Total item helm_battle_dolg bonus without math.floor: 1.25
[LUA]  Total item helm_battle_dolg bonus: 1
[LUA]  Total item wpn_saiga bonus without math.floor: 2.65
[LUA]  Total item wpn_saiga bonus: 2
вызов из скрипта:
log("Total item "..tostring(itm:section()).." bonus without math.floor: "..tostring(cost_bonus+cond_bonus+weight_bonus+bonus-cond_fine))
log("Total item "..tostring(itm:section()).." bonus: "..tostring(math.floor(cost_bonus+cond_bonus+weight_bonus+bonus-cond_fine)))

 

Изменено пользователем liner

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


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

liner math.floor округляет до меньшего числа. Тебе нужно использовать math.ceil.

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


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

Как выдать из таблицы тайник ГГ, который не был облутан ранее ГГ?

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


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

liner treasure_manager.get_treasure_manager():give_random()


Путь во мгле.
Связь времен.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

Такой вопрос. Существует мод DH(динамические шапки). Он отображает правильно каски и противогазы на гг, как и, скорее всего, должно было бы быть, но проблема в том, что мод отображает все правильно только пока гг жив. Как только актор погибает, то каска на нем не видна как и в оригинале, что обидно т.к по сути шутер от первого лица и модель персонажа нашего мы видим лишь в катсценах и как раз вот во время смерти. Так вот, я пытался ковырять мод, смотреть там что-то, понятное дело я почти ничего не знаю, но может автор того мода просто забыл что-то простое, что-то что можно поправить одной волшебной строчкой? А может есть другие моды с другим названием, но похожие по наполнению? Связи с автором того мода нет у меня. Он где-то остался тааааам, в прошлом, на старом добром АМК.


76561198152189716.png

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


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

Вылет. Происходит при входе в игру, не во время загрузки на уровень, а во время запуска самой игры через файл exe. 

Спойлер

Последние строчки в логе:

xrEngine.exe caused an EXCEPTION_ACCESS_VIOLATION in module VCRUNTIME140.dll at 0000000015CB1C81, strstr()+0353 byte(s)
stack trace:
0x0000000015CB1C81 VCRUNTIME140.dll, strstr + 353 byte(s)
0x000000002335883D xrGame.dll, CxImage::`copy constructor closure' + 2207501 byte(s)
0x00000000233584D7 xrGame.dll, CxImage::`copy constructor closure' + 2206631 byte(s)
0x00000000233582CA xrGame.dll, CxImage::`copy constructor closure' + 2206106 byte(s)
0x0000000023507437 xrGame.dll, CDialogHolder::IR_UIOnMouseMove + 1686647 byte(s)
0x0000000023506A02 xrGame.dll, CDialogHolder::IR_UIOnMouseMove + 1684034 byte(s)
0x00000000234646CA xrGame.dll, CDialogHolder::IR_UIOnMouseMove + 1019658 byte(s)
0x0000000023465FE2 xrGame.dll, CDialogHolder::IR_UIOnMouseMove + 1026082 byte(s)
0x0000000023039AD4 xrGame.dll, CDialogHolder::operator= + 9671348 byte(s)
0x0000000022E82304 xrGame.dll, CDialogHolder::operator= + 7871204 byte(s)
0x00000000400294B1 xrEngine.exe, CRenderDevice::Run + 593 byte(s)
0x00000000400D2BBF xrEngine.exe, InitSound2 + 847 byte(s)
0x00000000400D3819 xrEngine.exe, InitSound2 + 4009 byte(s)
0x00000000400D39B9 xrEngine.exe, InitSound2 + 4425 byte(s)
0x00000000400E5F8A xrEngine.exe, CApplication::load_draw_internal + 66410 byte(s)
0x00000000613D7C24 KERNEL32.DLL, BaseThreadInitThunk + 20 byte(s)
0x000000006304D721 ntdll.dll, RtlUserThreadStart + 33 byte(s)
 
[error][     487]    : Попытка обращения к неверному адресу.

Полный лог вылета: xray_tbilly.log

Подскажите, что делать? Раньше с таким не сталкивался.

Изменено пользователем Крим

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


Ссылка на сообщение
Поделиться на другие сайты
 
8 часов назад, ian98 сказал:

Такой вопрос. Существует мод DH(динамические шапки). Он отображает правильно каски и противогазы на гг, как и, скорее всего, должно было бы быть, но проблема в том, что мод отображает все правильно только пока гг жив. Как только актор погибает, то каска на нем не видна как и в оригинале, что обидно т.к по сути шутер от первого лица и модель персонажа нашего мы видим лишь в катсценах и как раз вот во время смерти. Так вот, я пытался ковырять мод, смотреть там что-то, понятное дело я почти ничего не знаю, но может автор того мода просто забыл что-то простое, что-то что можно поправить одной волшебной строчкой? А может есть другие моды с другим названием, но похожие по наполнению? Связи с автором того мода нет у меня. Он где-то остался тааааам, в прошлом, на старом добром АМК.

Зачем оставлять включённым UI, если при смерти ГГ включается вид от 3-го лица? Мне кажется, это будет плохо смотреться и мешаться.

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


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

liner а можно ли? Там шапки к юи привязаны? 


76561198152189716.png

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


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

liner Я тоже не понял при чем здесь UI. Вы что имели ввиду?


Путь во мгле.
Связь времен.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

Подскажите пожалуйста, как сделать progress_bar для пояса вот так.... есть подсказка, но как с ней обращатся не знаю....   condition_progress_bar = "1"></dragdrop_belt>

S10312-14270482(1).png

Изменено пользователем Kalambur

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

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