aka_sektor 1 502 Опубликовано 30 Июня 2018 Как сделать, чтобы при создании скриншота, в левом верхнем углу экрана писало: "Создан скриншот: имя_скриншота.png" ? Есть ли функции в игре отслеживающие это? Моддинг трилогии S.T.A.L.K.E.R. - MODFAQ.RU | +TES/Fallout Поделиться этим сообщением Ссылка на сообщение
aka_sektor 1 502 Опубликовано 7 Июня 2019 Подскажет кто, что нужно изменить в логике дверей бункера Сидоровича, чтобы они изначально были октрыты? [logic] active = ph_door@locked [ph_door@locked] locked = true snd_open_start = trader_door_unlock on_info = {+esc_trader_can_leave} ph_door@closed %=play_snd(device\door_servomotor)% [ph_door@closed] closed = true locked = false on_use = ph_door@open %-esc_close_door% snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop [ph_door@open] closed = false locked = false on_use = ph_door@closed on_info = {+esc_close_door} ph_door@closed snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop Моддинг трилогии S.T.A.L.K.E.R. - MODFAQ.RU | +TES/Fallout Поделиться этим сообщением Ссылка на сообщение
aka_sektor 1 502 Опубликовано 7 Июня 2019 (изменено) @naxac блин, думал только дверью обойтись, но если её пробежать, голос Сидоровича в башке. Может подскажешь, что в логике Сидоровича изменить, чтобы пропустить туториал? [logic] active = {+esc_trader_hello_played} mob_trader@new_idle1, mob_trader@new_start_wait on_trade = mob_trade@new trade = misc\trade_trader.ltx ; ------------------------------------------------------------------------------------------------------ ; ÑÒÀÐÒ ; ------------------------------------------------------------------------------------------------------ ; Æäåì íåìíîãî [mob_trader@new_start_wait] anim_global = chair_hack_idle on_timer = 5000| mob_trader@new_start_intro1 can_talk = false tip_text = ;Ïîäâèãàåìñÿ ê èãðîêó [mob_trader@new_start_intro1] anim_global = chair_hack_to_desk on_signal = animation_end| mob_trader@new_start_intro2 %+esc_trader_hello_played% can_talk = false tip_text = ;Ïåðâàÿ ôðàçà "ÿ òåáÿ ñïàñ..." [mob_trader@new_start_intro2] anim_global = first_phrase anim_head = first_phrase sound_phrase = trader_monolog1 on_signal = animation_end| mob_trader@new_start_intro3 can_talk = false tip_text = ; Æäåì íåìíîãî, âêëþ÷àåì óïðàâëåíèå [mob_trader@new_start_intro3] anim_global = desk_idle tip = tips_esc_trader_how_to_talk on_info = {=talking} mob_trader@new_idle1 on_timer = 5000 | mob_trader@new_start_intro4 ; Ãîâîðèì âòîðóþ ôðàçó (÷òî ñòîèøü? ïîäõîäè) [mob_trader@new_start_intro4] anim_global = desk_talk anim_head = normal sound_phrase = trader_come_here2 on_signal = sound_phrase_end | mob_trader@new_idle1 ;on_info = {=talking} mob_trader@new_idle1 ; îáðûâàòü ôðàçó on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played% ;---------------------------------- ;------------- Idle --------------- ;---------------------------------- ;Îñíîâíîé idle (1) - çà ñòîëîì [mob_trader@new_idle1] anim_global = desk_idle on_signal = animation_end| {~25} mob_trader@new_idle1_to_idle3, {~50} mob_trader@new_idle1_to_idle5, {~75} mob_trader@new_idle1_to_idle2, mob_trader@new_idle1_to_idle1 on_info = {=talking} mob_trader@new_idle1_to_idle3 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played% on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait ; Idle (2) - ïî äèàãîíàëè [mob_trader@new_idle2] anim_global = diagonal_idle on_signal = animation_end| {~25} mob_trader@new_idle2_to_idle3, {~50} mob_trader@new_idle2_to_idle4, {~75} mob_trader@new_idle2_to_idle1, mob_trader@new_idle2_to_idle2 on_info = {=talking} mob_trader@new_idle2_to_idle3 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played% on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait ; Idle (3) - îòêèíóâøèñü íà ñïèíêó [mob_trader@new_idle3] anim_global = chair_hack_idle on_signal = animation_end| {~30} mob_trader@new_idle3_to_idle2, {~70} mob_trader@new_idle3_to_idle1, mob_trader@new_idle3_to_idle3 on_info = {=talking} mob_trader@new_talking on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played% on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait ; Idle (4) - çà êîìïüþòåðîì [mob_trader@new_idle4] anim_global = compute_idle on_signal = animation_end| {~40} mob_trader@new_idle4_to_idle2, mob_trader@new_idle4_to_idle4 on_info = {=talking} mob_trader@new_idle4_to_idle2 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played% on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait ; Idle (5) - ÷èòàåò [mob_trader@new_idle5] anim_global = listen_idle on_signal = animation_end| {~45} mob_trader@new_idle5_to_idle1, mob_trader@new_idle5_to_idle5 on_info = {=talking} mob_trader@new_idle5_to_idle1 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played% on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait ;---------------------------------- ;-------- Àâòîïåðåõîäû -------- ;---------------------------------- ; Ñòîë - ñòîë (ïðîìåæóòî÷íàÿ) [mob_trader@new_idle1_to_idle1] anim_global = desk_idle on_signal = animation_end| mob_trader@new_idle1 ; Äèàãîíàëü - äèàãîíàëü (ïðîìåæóòî÷íàÿ) [mob_trader@new_idle2_to_idle2] anim_global = diagonal_idle on_signal = animation_end| mob_trader@new_idle2 ; Ñïèíêà - ñïèíêà (ïðîìåæóòî÷íàÿ) [mob_trader@new_idle3_to_idle3] anim_global = chair_hack_idle on_signal = animation_end| mob_trader@new_idle3 ; Êîìïüþòåð - êîìïüþòåð (ïðîìåæóòî÷íàÿ) [mob_trader@new_idle4_to_idle4] anim_global = compute_idle on_signal = animation_end| mob_trader@new_idle4 ; ×èòàåò - ÷èòàåò (ïðîìåæóòî÷íàÿ) [mob_trader@new_idle5_to_idle5] anim_global = listen_idle on_signal = animation_end| mob_trader@new_idle5 ;---------------------------------- ;----- Ïåðåõîäû ìåæäó idle-ìè ---- ;---------------------------------- ; Äèàãîíàëü - êîìïüþòåð [mob_trader@new_idle2_to_idle4] anim_global = diagonal_to_compute on_signal = animation_end| mob_trader@new_idle4 ; Êîìïüþòåð - äèàãîíàëü [mob_trader@new_idle4_to_idle2] anim_global = compute_idle_to_diagonal on_signal = animation_end| mob_trader@new_idle2 ; Äèàãîíàëü - ñïèíêà [mob_trader@new_idle2_to_idle3] anim_global = diagonal_to_chair_hack on_signal = animation_end| {=talking} mob_trader@new_talking, mob_trader@new_idle3 ; Ñïèíêà - äèàãîíàëü [mob_trader@new_idle3_to_idle2] anim_global = chair_hack_to_diagonal on_signal = animation_end| mob_trader@new_idle2 ; Ñòîë - ñïèíêà [mob_trader@new_idle1_to_idle3] anim_global = desk_to_chair_hack on_signal = animation_end|{=talking} mob_trader@new_talking, mob_trader@new_idle3 ; Ñïèíêà - ñòîë [mob_trader@new_idle3_to_idle1] anim_global = chair_hack_to_desk on_signal = animation_end| mob_trader@new_idle1 ; Ñòîë - äèàãîíàëü [mob_trader@new_idle1_to_idle2] anim_global = desk_to_diagonal on_signal = animation_end| mob_trader@new_idle2 ; Äèàãîíàëü - ñòîë [mob_trader@new_idle2_to_idle1] anim_global = diagonal_to_desk on_signal = animation_end| mob_trader@new_idle1 ; Ñòîë - ÷èòàåò [mob_trader@new_idle1_to_idle5] anim_global = desk_to_listen on_signal = animation_end| mob_trader@new_idle5 ; ×èòàåò - ñòîë [mob_trader@new_idle5_to_idle1] anim_global = listen_to_desk on_signal = animation_end| mob_trader@new_idle1 ;-------------------------------------- ;------------- Ðàçãîâîð --------------- ;-------------------------------------- [mob_trader@new_talking] anim_global = chair_hack_talk anim_head = normal on_info = {!talking} mob_trader@new_idle3 ;-------------------------------------- ;------------ Òîðãîâëÿ ---------------- ;-------------------------------------- [mob_trade@new] anim_global = chair_hack_idle on_info = {=trading =trade_exchanged} mob_trader@new_trade_exchanged on_info2 = {!trading =trade_exchanged} mob_trader@new_trade_good on_info3 = {!trading !trade_exchanged} mob_trader@new_trade_bad [mob_trader@new_trade_bad] ;anim_global = diagonal_talk anim_global = chair_hack_idle anim_head = angry sound_phrase = trader_bad_trade on_signal = sound_phrase_end | mob_trader@new_idle2 on_actor_dist_ge_nvis = 12 | mob_trader@new_wait [mob_trader@new_trade_exchanged] ;anim_global = diagonal_talk anim_global = chair_hack_idle anim_head = normal sound_phrase = trader_exchanged on_signal = sound_phrase_end | mob_trader@new_idle2 on_actor_dist_ge_nvis = 12 | mob_trader@new_wait [mob_trader@new_trade_good] ;anim_global = diagonal_talk anim_global = chair_hack_idle anim_head = good sound_phrase = trader_good_trade on_signal = sound_phrase_end | mob_trader@new_idle2 on_actor_dist_ge_nvis = 12 | mob_trader@new_wait ;------------------------------------- ;---------- Ïðèâåòñòâèÿ -------------- ;------------------------------------- [mob_trader@new_hello] anim_global = hello anim_head = normal sound_phrase = trader_hello_what_have_you_got on_signal = animation_end | mob_trader@new_idle2 [mob_trader@new_bye] on_actor_dist_ge_nvis = 12 |mob_trader@new_wait anim_global = hello anim_head = normal sound_phrase = trader_bye on_signal = animation_end | mob_trader@new_wait [mob_trader@new_wait] anim_global = diagonal_idle_short on_actor_dist_le_nvis = 3 | {-esc_trader_hello_played} mob_trader@new_hello %+esc_trader_hello_played% on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played% on_actor_dist_ge_nvis2 = 12 | %-esc_trader_hello_played -esc_trader_bye_played% Изменено 7 Июня 2019 пользователем aka_sektor Моддинг трилогии S.T.A.L.K.E.R. - MODFAQ.RU | +TES/Fallout Поделиться этим сообщением Ссылка на сообщение
aka_sektor 1 502 Опубликовано 8 Июня 2019 @naxac, да, робит. А затемнение экрана эт скриптовое? Моддинг трилогии S.T.A.L.K.E.R. - MODFAQ.RU | +TES/Fallout Поделиться этим сообщением Ссылка на сообщение
aka_sektor 1 502 Опубликовано 8 Июня 2019 9 часов назад, naxac сказал: Удалить можно так Это куда предлагаешь прописать этот код? Моддинг трилогии S.T.A.L.K.E.R. - MODFAQ.RU | +TES/Fallout Поделиться этим сообщением Ссылка на сообщение
aka_sektor 1 502 Опубликовано 9 Июня 2019 (изменено) @naxac, если я правильно понял так: function actor_binder:net_spawn(data) printf("actor net spawn") level.show_indicators() self.bCheckStart = true self.weapon_hide = false -- ñïðÿòàíî èëè íåò îðóæèå ïðè ðàçãîâîðå. weapon_hide = false -- óñòàíàâëèâàåì ãëîáàëüíûé äåôîëòîâûé ôëàã. if object_binder.net_spawn(self,data) == false then return false end db.add_actor(self.object) if self.st.disable_input_time == nil then level.enable_input() end self.weather_manager:reset() -- game_stats.initialize () if(actor_stats.add_to_ranking~=nil)then actor_stats.add_to_ranking(self.object:id()) end --' Çàãðóæàåì íàñòðîéêè äðîïà death_manager.init_drop_settings() return true --' Удаляем рестриктор в бункере Сидоровича, --' который затемняет экран local obj = alife():object("trader_zone_task") if obj then alife():release(obj, true) end end UPD: похоже что нет... Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...alker shadow of chernobyl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value) UPD2: вот так не вылетает, но затемнение осталось. function actor_binder:net_spawn(data) --' Удаляем рестриктор в бункере Сидоровича, --' который затемняет экран local obj = alife():object("trader_zone_task") if obj then alife():release(obj, true) end printf("actor net spawn") level.show_indicators() self.bCheckStart = true self.weapon_hide = false -- спрятано или нет оружие при разговоре. weapon_hide = false -- устанавливаем глобальный дефолтовый флаг. if object_binder.net_spawn(self,data) == false then return false end db.add_actor(self.object) if self.st.disable_input_time == nil then level.enable_input() end self.weather_manager:reset() -- game_stats.initialize () if(actor_stats.add_to_ranking~=nil)then actor_stats.add_to_ranking(self.object:id()) end --' Загружаем настройки дропа death_manager.init_drop_settings() return true end Изменено 9 Июня 2019 пользователем aka_sektor Моддинг трилогии S.T.A.L.K.E.R. - MODFAQ.RU | +TES/Fallout Поделиться этим сообщением Ссылка на сообщение
aka_sektor 1 502 Опубликовано 14 Июня 2019 (изменено) Кажется давно есть в моде Paradise Lost вылет при загрузке сохранения, почему-то именно на уровне Кордон. Имеет вид: [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...shadow of chernobyl\gamedata\scripts\xr_logic.script:1195: attempt to index local 'obj' (a nil value) Открываю скрипт xr_logic, нахожу строку 1195, там следующая функция: function pstor_retrieve(obj, varname, defval) local npc_id = obj:id() if db.storage[npc_id].pstor ~= nil then local val = db.storage[npc_id].pstor[varname] if val ~= nil then return val end end if defval ~= nil then return defval end return nil --' abort("xr_logic: pstor_retrieve: variable '%s' does not exist", varname) end Ругается, на вторую строчку: local npc_id = obj:id() Что же с ней не так? Какая-то ошибка в функции? UPD: вот возможно похожий вылет: https://www.amk-team.ru/forum/topic/8230-cop-kovyryaemsya-v-faylah/?do=findComment&comment=1031683 Дело якобы в логике какого-то NPC. UPD2: вот ещё: https://www.amk-team.ru/forum/topic/8806-cop-kvesty/?do=findComment&comment=369302 Тут уже вроде из-за квеста. UPD3: ещё вариант: https://www.amk-team.ru/forum/topic/5525-soc-kovyryaemsya-v-faylah/?do=findComment&comment=855858 Вроде есть объяснение, но функция другая: В 21.06.2014 в 00:22, AndreySol сказал: в скрипте xr_logic в 126-й строке локальная переменная st равна nil. Открывай в редакторе, который показывает нумерацию строк, ищи 126-ю и гляди че там за nil получился. В оригинальном ТЧ эта строка находится в ф-ции configure_schemes, значит глюк связан с гулагами\логикой НПСов. Изменено 14 Июня 2019 пользователем aka_sektor Моддинг трилогии S.T.A.L.K.E.R. - MODFAQ.RU | +TES/Fallout Поделиться этим сообщением Ссылка на сообщение
aka_sektor 1 502 Опубликовано 3 Апреля 2020 Что это значит: https://ap-pro.ru/forum/100-9999-826370-16-1452102986 Цитата уникальный id объекта который ему назначил движек при спавне. alife():object(id) - возвращает объект, с таким номером. ? Это какая-то проверка, помогающая найти ID объекта? Если да, то как правильно и куда ещё вписывать, чтобы потом прочесть в логе. Моддинг трилогии S.T.A.L.K.E.R. - MODFAQ.RU | +TES/Fallout Поделиться этим сообщением Ссылка на сообщение
aka_sektor 1 502 Опубликовано 4 Апреля 2020 3 часа назад, Kirgudu сказал: имея id, можно получить сам объект Просто там дело было в вылете: https://ap-pro.ru/forum/100-9999-826159-16-1452077092 И вопрос касательно того, что значат цифры 1394: child registered but not found [1394] Думал это может story_id а выходит, просто id, который никем кроме движка не указывается. Отсюда вопрос, как зная id из вылета, найти объект с таким id? Моддинг трилогии S.T.A.L.K.E.R. - MODFAQ.RU | +TES/Fallout Поделиться этим сообщением Ссылка на сообщение
aka_sektor 1 502 Опубликовано 6 Апреля 2020 04.04.2020 в 19:48, Okichi сказал: в данном случае - никак, потому что этого объекта уже нет. Парадокс. А вот тут писали: 17.02.2012 в 00:03, smeh сказал: LuaChecker-0.3 Может я не правильно пользуюсь? 17.02.2012 в 23:01, Artos сказал: проверяй файлы чекером. Только не тем, который ты упоминал, а "Syntax Checker" (by Gun12), который тебе уже посоветовал Капрал Хикс 17.02.2012 в 11:19, Капрал Хикс сказал: script Syntax Checker - есть на stalkerin.gameru.net. Не виснет на больших скриптах и может скрипты проверять группой. Вот он: http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=viewtheoned&lid=447 Есть ли какое-то принципиальное отличие от чекера представленного в утилите SciTe: https://modfaq.ru/SciTE (кста, вопрос к @Charsi тоже, он советовал) Моддинг трилогии S.T.A.L.K.E.R. - MODFAQ.RU | +TES/Fallout Поделиться этим сообщением Ссылка на сообщение
aka_sektor 1 502 Опубликовано 7 Апреля 2020 Кто разбирается в логике? Беглым взглядом гляньте: Скрытый текст [logic@ex_gar_eger] suitable = {=check_npc_name(ex_gar_eger)} prior = 200 active = animpoint@ex_gar_eger level_spot = quest_npc [animpoint@ex_gar_eger] cover_name = ex_gar_a1_eger_cover avail_animations = animpoint_sit_normal combat_ignore_cond = true combat_ignore_keep_when_attacked = true gather_items_enabled = false help_wounded_enabled = true corpse_detection_enabled = false invulnerable = false def_state_moving = assault on_info = {+ops_quest_taked} %=release_npc% meet = meet@ex_gar_eger [meet@ex_gar_eger] close_anim = nil close_victim = nil far_anim = nil far_victim = nil close_distance = 0 far_distance = 0 close_snd_distance = 3 use = nil close_snd_hello = nil trade_enable = true allow_break = false meet_on_talking = true Чего неправильно может быть? Выяснил только, что вылетает из-за строчки: on_info = {+ops_quest_taked} %=release_npc% Если убрать %=release_npc%, то вылета нет. Это для чего служит? Моддинг трилогии S.T.A.L.K.E.R. - MODFAQ.RU | +TES/Fallout Поделиться этим сообщением Ссылка на сообщение
aka_sektor 1 502 Опубликовано 7 Апреля 2020 @Okichi, да, уже выяснили что её нет. Непонятно почему её написали, упоминаний во всем инете, кот наплакал. Использовали в итоге destroy_object Моддинг трилогии S.T.A.L.K.E.R. - MODFAQ.RU | +TES/Fallout Поделиться этим сообщением Ссылка на сообщение