Перейти к контенту

[SoC] Ковыряемся в файлах


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

[psy_dog_phantom] - фантом, создаваемый зверушками с секцией psy_dog, psy_dog_radar.

Меня порядком удивило, что секция фантома - не прописана в конфиге этих зверушек.

Она что, в движке гвоздями прибита, да? :) На весь класс SM_DOG_P


 

 

ltx:r_string(id, "description"),

Чтение из конфига. id - секция, description - ключ который читаем.

 

 

 

Собственно еще один вопрос к знатокам, обыскал форум не нашел как запустить диалог у мертвого непися как будто он живой,

Без ковыряний движка - никак. Альтернативы... поидее будут но не скоро.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Вопросцы...
Кто-нибудь помнит мод на оживление НПС с помощью артефакта тов. Kolmogor?
Ложим арт, к которому привязан скрипт, в мертвую тушку непися и он сразу же валяется у наших ног, вымаливающий аптечку.
Проблема состоит в том, что когда актор просто выкидывает арт, а потом пытается взять обратно, ловлю стабильный вылет со "старой доброй" ошибкой "_g.script:1121".

Собсно, вопросы.
1)Может ли

local need_update = 0


local heart = nil
local id

function on_item_drop(item)
if item:section() ~= "mega_heart" then
return
end
--dbg.log("RES: on_item_drop item=%s", item:name())
heart = item
need_update = 1
end

function update()
if need_update == 0 then return end
--dbg.log("RES: update stage=%s", need_update)
if need_update == 1 then
local obj = heart:parent()
if obj == nil then
--dbg.log("RES: only drop. return")
return
end
id = obj:id()

local inv = level.main_input_receiver()
if inv ~= nil then
level.start_stop_menu(inv, false)
--dbg.log("RES: close inv")
end

amk.convert_npc[id] = true
local sim = alife ()
sim:set_switch_online (id, false)
sim:set_switch_offline (id, true)
--dbg.log("RES: [%s] move offline", obj:name())
need_update = 2
elseif need_update == 2 then
--dbg.log("RES: update 2")
local obj = level.object_by_id(id)
if obj == nil then
--dbg.log("RES: real move offline")
else
--dbg.log("RES: wait offline")
return
end
--dbg.log("RES: update 3")
local sobj = alife():object(id)
--dbg.log("RES: update 4")
t = amk.read_stalker_params(sobj)
--dbg.log("RES: update 5")
t.health=0.1
t.killerid=65535
for i=1,8 do t.game_death_time = 0 end
t.updhealth = 0.1
t.skeleton_flags=0
--dbg.log("RES: update 6")
amk.write_stalker_params(t, sobj)
--dbg.log("RES: repack packet")
need_update = 0
end
end


при подборе арта каким-то образом влиять на актора и этим провоцировать вылет?
2)Если да, то возможно ли сделать исключение для актора и как?
3)Если проблема заключается не в этом, то куда копать?
Заранее спасибо.

Ссылка на комментарий

Помните пост о говорящем чайнике? 
Так вот, собственно вопрос. Сделал я объект, поставил кости, шейпы, заспавнил на секции торговца, но он целиком поворачивается вслед за ГГ. Не подскажите как исправить? 

svarog2741.gif

 

НС - шлак, солянки - шлак.

Ссылка на комментарий

Уважаемые знающие, вопрос по UI - после изучения соурсов движка и lua_help заметил некоторые расхождения - например SetAccelerator к кнопке, в коде движке в CUIXmlInit вызов есть такого метода (в хидере UIButton.h метод описан ), в lua_help - в CUIButton такого метода нет. в связи с тем что таких функций несколько - кому верить  - исходникам движка и использовать из своего скрипта (50% что будет работать :) ), или lua_help и тогда делать через CUIXmlInit только?

Ссылка на комментарий

мод на оживление НПС с помощью артефакта

А он вообще когда-нибудь работал ?

 

Впрочем, это в любом случае вопрос для телепатов: в оригинале в _g.script:1121 находится оператор end, на котором ни какой ошибки не может быть в принципе.

 

По самому же скрипту достаточно вот этого: heart = item - дальше может быть все, что угодно.


По поводу говорящего чайника, которые еще и поворачивается, то смотрим традиционно xr_meet.script:

if mgr.state ~= "nil" then
	if mgr.emerg_state then
		state_mgr.set_state( npc, mgr.state, nil, nil, { ["look_object"]
			= victim }, { ["animation"] = true }, synsound )
	else state_mgr.set_state( npc, mgr.state, nil, nil,
		{ ["look_object"] = victim }, nil, synsound )
end	end
-- ну или что-то типа того, и решаем, что с этим делать.

 

P.S. Да, в соседней теме есть приведенный в человекочитаемый вид.

Изменено пользователем Dennis_Chikin
  • Спасибо 1
  • Полезно 1
Ссылка на комментарий

@Winsor, метод SetAccelerator в оригинале игры не экспортирован в скрипты и используется лишь в движке. Акселераторы для кнопок можно задать в xml параметрами accel и accel_ext.

 

 оживление НПС

Работает, но плохо. Лучше бы его удалить и пересоздать по номеру из спавна. Или прописать его диалоги кому-то из ещё живых.

  • Спасибо 2
Ссылка на комментарий

 

 

А он вообще когда-нибудь работал ?

 

 

Работает, но плохо.


Да вот как раз-таки оживление работает вполне себе неплохо, если переносить заспавненный артефакт из своего инвентаря в инвентарь НПС, только при подборе с земли - вылет. Ну и косяк с квестовыми НПС (после оживления непись просто испарился с локации).
Запретить бы выбрасывание арта, но как я понял на классе артефакта это сделать невозможно, а класс II_attach нельзя не выкинуть, не перенести в инвентарь НПС/куда-то ещё...Кажется, класса подходящего под мои запросы нет.


 
Ссылка на комментарий

id = obj:id()

if id == 0 then need_update = 0; return end

 

Как минимум.

Но вообще - переделывать все.

  • Спасибо 1
Ссылка на комментарий

Заметил сегодня такую аномалию, пропали звуки шагов гг по всем поверхностям. Исключая динамические объекты. В gamemtl.xr только одна правка - отключение замедления гг, при движении по воде. В конфиге ГГ, вроде все тоже ок. Кто-нибудь сталкивался с подобным? Есть конечно вероятность, что проблема как-то связана с правками EAX в бинарниках игры. Но аналогичных проблем, в оф. теме на форуме gameru я не встречал.

 

З.Ы. Если самостоятельно найду решение\ошибку - отпишусь.

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

Ссылка на комментарий

@TIGER_VLAD, да, ты прав проблема была именно в этом направлении. Я перекидывал пакеты omf анимаций из OGSE и именно они и вызвали вышеописанную проблему. Ну я не думаю, что в самом OGSE она присутствует, значит нужно чего-то еще добавить\подредактировать. Знать бы еще что... Пока предполагаю, что анимки завязаны на новых звуках.

Изменено пользователем Stalker_AleX333
  • Нравится 1

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

Ссылка на комментарий
, если ты из OGSE взял анимации, то нужно из всех моделей костюмов удалить анимацию экзоскелета. Кажется exo_animation.omf. Под рукой компьютера нет, поэтому в названии могу ошибаться.
Ссылка на комментарий

Всех с наступающим праздником! Товарищи подскажите что означает этот выброс игры.

 

 

 

Expression    : fatal error

Function      : CScriptEngine::lua_error
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ....r. - shadow of chernobyl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)

 

 

Изменено пользователем HellRatz
Добавлено  HellRatz,

Перенесено.

Ссылка на комментарий
_g.script:20: bad argument #2 to 'format' (string expected, got no value)

http://stalkerin.gameru.net/wiki/index.php?title=Причины_вылетов_игры_(разбираем_логи)

Изменено пользователем HellRatz
Ссылка на комментарий

Уважаемые, пытаюсь нарисовать окошко с границами

self.main_form=xml:InitStatic("main_form", self)
xml:InitStatic("main_form:top_border",self.main_form)
xml:InitStatic("main_form:left_border",self.main_form)
xml:InitStatic("main_form:right_border",self.main_form)
xml:InitStatic("main_form:bottom_border",self.main_form)

 

 

<main_form x="312" y="134" width="400" height="500" stretch="1">
	<texture x="312" y="134" width="400" height="500">ui\ui_fog_of_war</texture>
			
			<top_border x=0 y=0 width=400 height=5 stretch=1>
				<texture x=0 y=0 width=400 height=5 >ui\ui_frame_t</texture>
			</top_border>
			<left_border x=0 y=0 width=5 height=500 stretch=1>
				<texture  x=0 y=0 width=5 height=500>ui\ui_frame_l</texture>
			</left_border>
			
			<right_border x=300 y=0 width=5 height=500 stretch=1 complex_mode="1">
				<texture  x=300 y=0 width=5 height=500>ui\ui_frame_r</texture>
			</right_border>

			<bottom_border x=0 y=495 width=400 height=5 stretch=0>
				<texture  x=0 y=495 width=400 height=5>ui\ui_frame_b</texture>
			</bottom_border>
</main_form>

 

 

post-35264-0-22449000-1431030657_thumb.png

 

т.е. левый и верхний фреймы нормальные, а нижний и правый "расколбасило" (вернее растянуло, если не ошибаюсь - по горизонтали на непонятную величину), хотя если смотреть в dds на эти ui\ui_frame_r и ui\ui_frame_b - все нормально, stretch не влияет никак, без OriginalRect текстура еще больше корячится... в чем может быть ошибка?

Изменено пользователем Winsor
Ссылка на комментарий

 

 

А InitFrame не устраивает
- может и устраивает, но я не понял по какому принципу строятся границы. Есть у Вас пример использования InitFrame с куском описания в xml?

Благодарю!

Ссылка на комментарий

@Winsor

    ...
    local xml = CScriptXmlInit()
    xml:ParseFile("any.xml") -- не знаю какой там у тебя файл
    xml:InitFrame("main_form", self)
    ...

xml

<main_form x="312" y="134" width="400" height="500" stretch="1">
    <texture>название_текстуры</texture> <!-- не знаю где она(они) располагаются -->
</main_form>
название_текстуры - на самом деле это не одна текстура, а вроде 9 штук (не помню).
Называются они соответственно :
название_текстуры_l  -- левая
название_текстуры_lt -- левый верхний угол
название_текстуры_t  -- верхняя
название_текстуры_rt -- правый верхний угол
название_текстуры_r  --  и .т.д.
название_текстуры_rb
название_текстуры_b
название_текстуры_lb
девятая текстура - заполнитель, не помню какое там у неё "расширение".
 
Примеры посмотри в файлах игры.
Так вот указывать нужно <texture>название_текстуры</texture> без "расширений".
А InitFrame дальше сам сложит всё как положено.
Изменено пользователем Nazgool
  • Спасибо 1
Ссылка на комментарий

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

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

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

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

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

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   1 пользователь

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