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

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

 
 
Спойлер

FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : lua_pcall_failed
[error]File          : c:\xray\forward frontier\public build\src\layers\xrrender\resourcemanager_scripting.cpp
[error]Line          : 101
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...a.l.k.e.r. call of pripyat\gamedata\scripts\utils.script:469: bad argument #1 to 'gsub' (string expected, got nil)
 

stack trace:

Подскажите, пожалуйста, куда копать? Я уже задолбался, все перепроверил, все написано правильно, ошибок не найдено.

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


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

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


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

AziatkaVictor Логика НПС, рестрикторов и дверей

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


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

Крим скинь тогда все, посмотрим, может упустил чего.

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


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

Логика двух дверей

Спойлер

[logic]
active = ph_door@locked

[ph_door@locked]
locked = true
closed = true
tip_open = tip_sector_doors_dont_open
on_info = {+pri_sector_quest_place_door_open_info} ph_door@open

[ph_door@locked2]
locked = true
closed = true
tip_open = tip_sector_doors_dont_open

[ph_door@open]
locked = false
closed = false
tip_open = tip_door_close
on_use = ph_door@closed
not_for_npc = true
on_info = {+second_level_light_off_info} ph_door@locked2
on_game_timer = 200 | ph_door@closed

[ph_door@closed]
locked = false
closed = true
tip_close = tip_door_open
on_use = ph_door@open
on_info = {+second_level_light_off_info} ph_door@locked2

Логика одной двери

Спойлер

[logic]
active = ph_door@locked

[ph_door@locked]
locked = true
closed = true
tip_open = tip_sector_doors_dont_open_need_key
on_info = {+pri_sector_second_level_door_info} ph_door@locked2

[ph_door@locked2]
locked = true
closed = true
tip_open = tip_door_need_key
on_use = ph_door@closed %=remove_item(pri_sector_quest_room_door_key)%

[ph_door@open]
locked = false
closed = false
tip_open = tip_door_close
on_use = ph_door@closed
not_for_npc = true

[ph_door@closed]
locked = false
closed = true
tip_close = tip_door_open
on_use = ph_door@open

Логика второй пары дверей

Спойлер

[logic]
active = ph_door@locked

[ph_door@locked]
locked = true
closed = true
tip_open = tip_sector_doors_dont_open_need_key
on_info = {+building_poltergest_squad_dead_info} ph_door@locked2

[ph_door@locked2]
locked = true
closed = true
tip_open = tip_door_need_key
on_use = ph_door@closed %=remove_item(second_level_sector_door_key_light) +pri_sector_second_level_door_info%

[ph_door@open]
locked = false
closed = false
tip_open = tip_door_close
on_use = ph_door@closed
not_for_npc = true

[ph_door@closed]
locked = false
closed = true
tip_close = tip_door_open
on_use = ph_door@open


Логика рестрикторов

Спойлер

[logic]
active = sr_idle@1

[sr_idle@1]
on_info = {+pri_sector_corpse_autobus_flashback_dialog_end_info} sr_idle@2 %=run_postprocess(black:1:false) =disable_ui%

[sr_idle@2]
on_game_timer = 20 | sr_idle@3 %=remove_squad(autobus_sector_squad)%

[sr_idle@3]
on_game_timer = 10 | sr_idle@4 %=teleport_actor(pri_b35_military_sector_look:pri_b35_military_sector_walk) =create_squad(building_sector_squad:pri_b35_military)%

[sr_idle@4]
on_game_timer = 40 | sr_idle@5 %=stop_postprocess(1) =enable_ui() +pri_sector_building_start_dialog_open_info%

[sr_idle@5]
on_info = {+pri_sector_building_start_dialog_end_info} sr_idle@6 %=run_postprocess(black:2:false) =disable_ui%

[sr_idle@6]
on_game_timer = 50 | sr_idle@end %=stop_postprocess(2) =enable_ui() +pri_sector_quest_place_door_open_info%

[sr_idle@end]

 

Спойлер

[logic]
active = sr_idle@expect

[sr_idle@expect]
on_info = {+sector_in_zone_info} sr_idle@wa

[sr_idle@wa]
on_actor_inside = sr_idle@1 %=actor_off_effect =disable_ui%

[sr_idle@1]
on_game_timer = 30 | sr_idle@2 %=run_postprocess(black:1:false)%

[sr_idle@2]
on_game_timer = 30 | sr_idle@3 %=teleport_actor(pri_sector_quest_after_off_actor_walk:pri_sector_quest_after_off_actor_look) =set_game_time(23:30) =remove_squad(building_sector_squad)%

[sr_idle@3]
on_game_timer = 50 | sr_idle@4 %=actor_off_end_effect =stop_postprocess(1)%

[sr_idle@4]
on_game_timer = 10 | sr_idle@5 %=send_tip(atom_about_missing_sector_sms:one_of_the_lads)%

[sr_idle@5]
on_game_timer = 50 | sr_idle@6 %=enable_ui() +second_level_light_off_info%

[sr_idle@6]
on_info = {+second_level_sector_seacrh_info} sr_idle@end %=create_squad(building_poltergest_squad:pri_b35_military)%

[sr_idle@end]

 

Спойлер

[logic]
active = sr_idle@1

[sr_idle@1]
on_info = sr_idle@2 %=turn_off(second_level_light_2) =turn_off(second_level_light_3)%

[sr_idle@2]
on_info = {+second_level_light_off_info} sr_idle@3 %=turn_off(second_level_light_1) =turn_on(second_level_light_2) =turn_on(second_level_light_3)%

[sr_idle@3]
on_actor_inside = sr_idle@end %=turn_off(second_level_light_2)%

[sr_idle@end]

 

Спойлер

[logic]
active = sr_idle@button

[sr_idle@button]
on_actor_inside = sr_idle@out %=run_tutorial(second_level_sector_seacrh)%

[sr_idle@out]
on_actor_outside = sr_idle@button %=stop_tutorial(second_level_sector_seacrh)%
on_info = {+second_level_sector_seacrh_info} sr_idle@nil %=stop_tutorial(second_level_sector_seacrh) =give_actor(second_level_sector_door_key_light)%

[sr_idle@nil]

 


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

Все, что менял. Ну, по крайней мере, точно помню, что я их прописывал до вылета

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


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

Крим вылет происходит во время загрузки?

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


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

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


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

Логику неписей на стол давай.


c01570bf2e07524.png

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


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

Крим тогда в логике меняй на:

[logic]
active = sr_ide@start

[sr_idle@start]

Менять надо по одному, пока вылет не исчезнет, чтобы понять, из-за какого файла он происходит. Когда найдешь, напиши, что за файл.

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


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

Логика рестрикторов

=enable_ui()
Без скобок.
%=run_postprocess(black:1:false)%
У тебя уже написано false, этот процесс не надо останавливать, хотя это не влияет на игру, просто к слову.


Дополнено 1 минуту спустя
2 часа назад, Крим сказал:

on_info = {+second_level_sector_seacrh_info} sr_idle@nil %=stop_tutorial(second_level_sector_seacrh) =give_actor(second_level_sector_door_key_light)%

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


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

=turn_on(second_level_light_2) =turn_on(second_level_light_3)

Можно сделать и так: =turn_on(second_level_light_2:second_level_light_3)

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


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

А как редактировать ПДА? Допустим, я хочу добавить вкладку со своими скриптами, как это сделать? Я не нахожу файл в скриптах.

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


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

AziatkaVictor Так, насколько я знаю, тут нужно в движок лезть. Хотя, возможно, я ошибаюсь

  • Спасибо 1

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


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

AziatkaVictor Раньше это делали при помощи патча движка, который выдавал инфопорцию с именем закладки в xml файле ПДА при нажатии на нее и далее самописным скриптом отрисовывали страницу из ПДА с нужной информацией (масса примеров в модах, один из них Связь времен). В эпоху открытых исходников это делают при помощи правок движка.

  • Спасибо 1

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

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


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



ss_egor_07-30-21_21-29-01_(mainmenu).jpg.43a9ef754a3d263b61a4c52bec057444.jpg

Друзья мододелы, нарисовалась новая проблема по моддингу. На днях совместил вин мерджем опции ганслингера и опции open xray. Хотелось что бы игрок мог оптимизировать настройки под себя, а получилось то что в спойлере.


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

Как исправить, скажите пожалуйста. + ко всему некоторые настройки при новом запуске не лочятся а сбрасываются

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

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


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

dasher в редакторе зажимаешь мышь и перетаскиваешь картинку в спойлер.

  • Спасибо 1

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


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

настройки при новом запуске не лочятся а сбрасываются

Совместить движковые правки.


Еще один злодей!
6 ГБ ОЗУ DDR3 1094 мГц (Разносорт) Процессор Intel Xeon E5420 4/4 2.57 ГГц (OC)
Видеокарта Gigabyte Radeon RX 580 8192 МБ GDDR5 (Micron) DirectX v12.0

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


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

Добрый вечер.  Есть несколько сквадов НПС со стори-ид. Нужно, чтобы их атаковал вертолет, нейтральный к ГГ.  Как должна выглядеть логика этого вертолета?

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


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

Совместить движковые правки.

то есть надо dll ковырять?  


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

Какая допустим прога для этого нужна?

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


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

Как должна выглядеть логика этого вертолета?

В оригинальном ЗП никак, поскольку есть две проблемы:
1. Скрипты логики вертолета не рассчитаны на ведение боя. В текущей схеме вертолет летает по маршруту и только если в его секторе обстрела появиться указанная цель он будет стрелять.
2. Скриптам можно указать только две цели: actor или all.

Выход: существенная переделка скриптов поведения вертолета.

  • Лайк 1

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

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


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

Какая допустим прога для этого нужна?

Исходники gunslinger доступны. Исходники Open X-Ray тоже. Для редактирования Open X-Ray вам понадобится Visual Studio.

  • Спасибо 1

Еще один злодей!
6 ГБ ОЗУ DDR3 1094 мГц (Разносорт) Процессор Intel Xeon E5420 4/4 2.57 ГГц (OC)
Видеокарта Gigabyte Radeon RX 580 8192 МБ GDDR5 (Micron) DirectX v12.0

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


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

Как должна выглядеть логика этого вертолета?

 

7 часов назад, denis2000 сказал:

Выход: существенная переделка скриптов поведения вертолета.

В моде Связь Времен на основе вертолета сделаны автоматические турели.

Там прописана логика с помощью которой можно назначать врагов ( сталкеры, монстры .,ГГ, все враги)

Можно даже приписать турели группировку. Тогда она будет уничтожать всех кто враждебен её группировке.

Файлов много. Основной файл - это файл логики ph_turrel.script

Там смотрите как сделано и переписывайте логику вертушки.

 

Изменено пользователем makdm
  • Лайк 1

Терпение... И все получится.

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


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

Я создал npc (character_desc, npc_profile, spawn_sections) но он не разговаривает ссылается на командира. Можно ли как то исправить?

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

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


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

Lenya056 Персонажу надо прописать логику. На 58-й странице в этой же теме мне помогают разобраться с такой же проблемой

Изменено пользователем Stepan_sovok1917
  • Мастер! 1

294404326_-1.png.b174b8675b96f1eea9aed038584779b1.png

                    Паблик ВК       

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


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

Кажется я понял причину вылета. Скажите, пожалуйста, в этих логиках все хорошо?

Спойлер

[logic@building_sector]
active = walker@1
suitable = {=check_npc_name(building_sector)} true 
prior = 200

[walker@1]
path_walk = sector_walk
path_look = sector_look
meet = no_meet
on_info = {+pri_sector_building_start_dialog_open_info} walker@2
invulnerable = true 
combat_ignore_cond = true
gather_items_enabled = false
help_wounded_enabled = false
corpse_detection_enabled = false
def_state_moving = rush
def_state_standing = threat_danger

[walker@2]
path_walk = sector_walk
path_look = sector_look
meet = meet@2
on_info = {+pri_sector_quest_place_door_open_info} walker@3 
invulnerable = true 
combat_ignore_cond = true
gather_items_enabled = false
help_wounded_enabled = false
corpse_detection_enabled = false
def_state_moving = rush
def_state_standing = threat_danger

[meet@2]
close_snd_hello = nil
close_snd_bye     = nil
close_victim     = nil
far_victim         = nil
close_distance  = 0
far_distance     = 0
close_snd_distance = 3
use = {-pri_sector_building_start_dialog_end_info !actor_enemy =dist_to_actor_le(20)} self, true
allow_break = false
trade_enable = false
meet_on_talking = false
meet_dialog = pri_sector_building_start_dialog

[walker@3]
path_walk = sector_2_walk
path_look = sector_2_look
meet = no_meet
on_info = {=npc_in_zone(fourth_level_sector_quest_restr)} walker@4 %+sector_in_zone_info%
on_actor_dist_ge_nvis = 50 | walker@4 %=kill_actor%
invulnerable = true
combat_ignore_cond = true
gather_items_enabled = false
help_wounded_enabled = false
corpse_detection_enabled = false
def_state_moving = rush
def_state_standing = threat_danger

[walker@4]
path_walk = sector_2_walk
path_look = sector_2_look
meet = no_meet
invulnerable = true
combat_ignore_cond = true
gather_items_enabled = false
help_wounded_enabled = false
corpse_detection_enabled = false
def_state_moving = rush
def_state_standing = threat_danger

Спойлер

[logic@building_poltergest_squad]
active = mob_home@pri_start
suitable = {=target_squad_name(building_poltergest_squad)} true
prior = 70
monster_job = true

[mob_home@pri_start]
path_home = poltergeist_walk
out_restr = pri_b35_military_out_restr
home_min_radius = 10
home_max_radius = 20
aggressive = true

 


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

Все, спасибо всем! Причина вылета устранена!

  • Мастер! 1

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


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

Я создал смарт но вот такая ошибка:

...call of pripyat\gamedata\scripts\xr_motivator.script:161: attempt to index local 'smart_task' (a nil value)

Вот его логика

[smart_terrain]
max_population = 1
 
[exclusive]
zat_skad_sniper_1 = zaton\zat_skad_sniper_1.ltx 

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

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


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

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

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

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

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

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

Войти

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

Войти

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

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