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

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

 

61561952a1.png

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

 

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

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

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


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

https://yadi.sk/i/asIP9yeeV0ouPg

9 минут назад, Сергей Шубин сказал:

Тогда покажи, как выглядит секция зоны сна.  В алл.спавн или в эдиторе.

 

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


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

 

 local sleep_zones = {
                        "raz_sleep_1"
                        "zat_a2_sr_sleep",

В функции прямо так и написано?

"raz_sleep_1"
                        "zat_a2_sr_sleep",

 

Должна быть запятая

"raz_sleep_1",
                        "zat_a2_sr_sleep",

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


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

В функции прямо так и написано?

"raz_sleep_1"
                        "zat_a2_sr_sleep",

 

Должна быть запятая

"raz_sleep_1",
                        "zat_a2_sr_sleep",

Спасибо, действительно тупанул) Однако, перепроверил всё ещё раз 10 и всё равно не работает. Может быть дело в sr_sleep.ltx? Потому что он не из оригинального ЗП взят был.

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


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

Gerbys 

Возьми оригинальный sr_sleep и посмотри, что будет.

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


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

Может быть дело в sr_sleep.ltx? Потому что он не из оригинального ЗП взят был.

А почему у вас левый файл скрипта?


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

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

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


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

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : ..\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ...call of pripyat\gamedata\scripts\bind_monster.script:283: attempt to index local 'who' (a nil value)
Жалуется на строку
for i=1, self.item_count do
        alife():create(self.item, who:position(), who:level_vertex_id(), who:game_vertex_id(), who:id())
    end
who для того, чтобы части тела при юзании монстра спавнились в инвентарь ГГ или НПС.

Вылетает игра, если я в скобки функции добавлю monster. Это необходимо для функции monster:clsid().
function generic_object_binder:on_use(monster, obj, who)
А если я уберу подальше monster,  function generic_object_binder:on_useobj, who, monster) то игра будет вылетать с таким логом:
 

Спойлер

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : ..\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ...call of pripyat\gamedata\scripts\bind_monster.script:252: attempt to index local 'monster' (a nil value)
Жалуется на строку
    local monster_level_1 = monster:clsid() == clsid.dog_s

А если я поставлю monster между obj и who, то функция становится нерабочей.
Регистрация коллбэка:
 object:set_callback(callback.use_object, self.on_use, self)
Как исправить это?

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

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


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

А почему у вас левый файл скрипта?

Потому что начинать заниматься модостроем я начал в 2018 году и в нём же и закончил, и только недавно продолжил. Уж не знаю почему, но я распаковал для моддинга файлы не оригинальной игры, а мода (вроде бы, уже не помню).

Поэтому в sr_sleep.ltx у меня следующее:

Спойлер

[logic]
active = sr_idle@wait

[sr_idle@wait]
on_actor_inside = sr_idle@run %=run_tutorial(tutorial_sleep)%

[sr_idle@run]
on_info = {+tutorial_sleep} %-tutorial_sleep =run_tutorial(tutorial_sleep)%
on_actor_outside = {+tutorial_sleep} sr_idle@wait, sr_idle@wait %=stop_tutorial%
on_info2 = {!has_active_tutorial -sleep_active} sr_idle@wait
 

 

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


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

Gerbys Значит без вариантов: очищаете геймдату, берете оригинальные файлы и правите их.


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

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

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


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

Gerbys 

Это не тот sr_sleep.  Это файл логики спального места.  Раз у вас надпись появляется, значит с логикой всё нормально.  Дальше надо проверять game_tutorial из папки gamedata/configs/ui и xr_effects из папки gamedata/scripts.  В каком то из них сбой.  Предполагаю, что в game_tutorial.  Он, вероятнее всего, не вызывает функцию сна из xr_effects.  Без запятой игра, вероятнее всего, вылетела бы.

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


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

Gerbys 

Это не тот sr_sleep.  Это файл логики спального места.  Раз у вас надпись появляется, значит с логикой всё нормально.  Дальше надо проверять game_tutorial из папки gamedata/configs/ui и xr_effects из папки gamedata/scripts.  В каком то из них сбой.  Предполагаю, что в game_tutorial.  Он, вероятнее всего, не вызывает функцию сна из xr_effects.  Без запятой игра, вероятнее всего, вылетела бы.

Спойлер

<tutorial_sleep>
        <global_wnd/>

        <item>
            <disabled_key>quit</disabled_key>
            <length_sec/>
            <action id="use" finalize="1">xr_effects.sleep</action>
            <function_on_stop>xr_effects.sleep</function_on_stop> 
            <guard_key>use</guard_key>
            <disabled_key>quit</disabled_key>
            <grab_input>0</grab_input>
            <main_wnd>
                <auto_static start_time="0" length_sec="5000" x="512" y="660" width="300" height="60" alignment="c" stretch="1"
                            la_cyclic="1" la_texture="1" la_alpha="1">
                    <text font="graffiti22" r="225" g="225" b="250" a="255" align="c">sleep_zone_tip</text>
                </auto_static>
            </main_wnd>
        </item>
    </tutorial_sleep>

В game_tutorials строка function_on_stop была закомментирована, но ничего не изменилось при раскомментровании.

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


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

Успешно перешёл на локацию.👍

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ...k.e.r. call of pripyat hd\gamedata\scripts\_g.script:263: bad argument #1 to 'gfind' (string expected, got nil)


Требую Xiaomi ассистентку на основе Евы Элфи!

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


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

Gerbys 

Идеи пока закончились.  Выложи полностью файлы ui_sleep_dialoog и xr_effects из gamedata/scripts

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


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

Gerbys 

Идеи пока закончились.  Выложи полностью файлы ui_sleep_dialoog и xr_effects из gamedata/scripts

Проблема решена! Как оказалось, xr_effects у меня лежал в папке нерабочих скриптов (в 2018м году туда убрал, а всё из-за запятой и невнимательности)


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

Вопросы на этом не заканчиваются. Каким образом можно заспавнить рандомный сквад? Через логику спейс рестриктора можно?

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


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

Вопросы на этом не заканчиваются. Каким образом можно заспавнить рандомный сквад? Через логику спейс рестриктора можно?

Что имеется ввиду? Например, есть такой вариант:
 

[simulation_stalker_1]:online_offline_group
faction = stalker
npc_random = sim_default_stalker_0, sim_default_stalker_0, sim_default_stalker_0, sim_default_stalker_1, sim_default_stalker_1, sim_default_stalker_1, sim_default_stalker_1, sim_default_stalker_2,  sim_default_stalker_2, sim_default_stalker_2, sim_default_stalker_3, sim_default_stalker_3, sim_default_stalker_4
npc_in_squad = 2, 3

В данном случае заспавнится сквад из 2 или 3 НПС из списка npc_random


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

Есть ли вариант заставить кровососа проиграть определённую анимацию, как-то: удар или поза к атаке?

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


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

Есть ли вариант заставить кровососа проиграть определённую анимацию, как-то: удар или поза к атаке?

Чисто теоретически: добавляете нужную вам анимацию под именем stand_sleep_2 в файл krovosos_animation.omf, а в логике используете:

on_info = %=set_force_sleep_animation(2)%

 

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

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

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

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


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

Не могу понять, почему не воспроизводится звук.
написал небольшой скрипт в generic_object_binder мутанта (в функцию на наведение курсором на мутанта и нажатием клавиши использования):
    local ini = system_ini()
    local object = self.object
    local snd_config = ini:r_string(object:section(), "Sound_use")
    -- устанавливаем озвучку использования
    self.sound_use = sound_object(snd_config)
Пробовал иначе:
xr_sound.set_sound_play(db.actor:id(), snd_config)
Было тоже самое.
xr_sound.play_sound_looped(db.actor:id(), snd_config)
вылетало с логом что значение theme = nil, хотя игра читает локальную snd_config (r_string).
Как решить эту проблему? Можно ли вызвать звук другой функцией?

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


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

Чисто теоретически: добавляете нужную вам анимацию под именем stand_sleep_2 в файл krovosos_animation.omf

 

С помощью какой программы осуществляется чтение этого файла?

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


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

Работает ли параметр npc_in_squad на платформе ЗП? Сколько не выставлял его в параметры симуляционных сквадов, например:

npc_in_squad = 2, 3

Всегда спавнилось 3 непися и никогда не спавнилось 2. 

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


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

С помощью какой программы осуществляется чтение этого файла?

3ds max.

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


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

С помощью какой программы осуществляется чтение этого файла?

 

Спойлер

 

 

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

0000.png

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


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

Работает ли параметр npc_in_squad на платформе ЗП?

Да, эти параметры точно работают.

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

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

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

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


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

Есть ли вариант заставить кровососа проиграть определённую анимацию

У меня сейчас нет возможности проверить, но я точно помню что кто-то проигрывал анимацию удара котролёру таким методом

self.object:play_cycle("new_torso_attack_0", true)

 

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


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

Что имеется ввиду? Например, есть такой вариант:
 


[simulation_stalker_1]:online_offline_group
faction = stalker
npc_random = sim_default_stalker_0, sim_default_stalker_0, sim_default_stalker_0, sim_default_stalker_1, sim_default_stalker_1, sim_default_stalker_1, sim_default_stalker_1, sim_default_stalker_2,  sim_default_stalker_2, sim_default_stalker_2, sim_default_stalker_3, sim_default_stalker_3, sim_default_stalker_4
npc_in_squad = 2, 3

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

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


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

Gerbys Если чисто логикой, то можно так:

[logic]
active = sr_idle@wait

[sr_idle@wait]
on_info = {+info_portion} sr_idle@spawn

[sr_idle@spawn]
on_info1 = {~10} nil %=create_squad(squad_1:smart_terrain)%
on_info2 = {~10} nil %=create_squad(squad_2:smart_terrain)%
on_info3 = {~10} nil %=create_squad(squad_3:smart_terrain)%
on_info4 = {~10} nil %=create_squad(squad_4:smart_terrain)%

Рандомно спавниться один из сквадов squad_1...squad_4 на указанном смарте.

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

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

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

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


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

Господа, объясните мне, пожалуйста, что есть такое "default_to_ruck", ибо встречал данную строку во многих конфигах (outfit.ltx, artefacts.ltx и т.д.), а понять, что же это такое так и не смог.

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


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

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

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

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

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

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

Войти

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

Войти

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