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

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


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

2 странных вопроса:

 

1. После серии массивных правок получил вылет 0023:0640F45E xrGame.dll после связки npc:stop_talk(); actor:stop_talk() в диалоге у Сидоровича. Причем только у Сидоровича - неписи нормально заканчивают разговор, и идут заниматься своими делами.

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

 

2. У физобъетов после смены активной секции логики нужно переустанавливать коллбэки, как минимум, на использование. Как минимум, у дверей. Это только у них так ?

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

Модмейкеры,скажите,как на сталкер тень чернобыля v 1.0006 сделать ремонтника?ну или хотя бы чтоб бармен чинил оружия?Помогите пожалуйста.

 

Гугли - есть такой мод. Находится очень быстро.

ColR_iT

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

Братцы, прошу помощи.

В релизе НС 2011, есть такой пункт: "из монстров части выпадают не на удачу, а по четкой схеме. Например у кабана теперь выпадает четыре копыта, но если при его убийстве Вы были недостаточно аккуратны, например стреляли по ногам, то вполне возможно, что при обыске не досчитаетесь «поврежденных» копыт".

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

Братцы, помогите информацией: как обеспечить такой механизм? В каких файлах, какие секции отвечают за колличество частей монстров при убиении зверушек и их повреждения с минусованием поврежденных?

Предполагая, что я не первый с этим вопросом (возможно даже не пятый и не десятый), сразу прошу прощения у зубров отечественной модерской общественности за недостаточную внимательность и тщательность - ткните носом, дайте ссылку на обсуждение данного креатива. Еще прошу прощения у модератора, за дополнительную работу по чистке темы от повторений, если мой вопрос все же попадает в этот список.

Заранее благодарю за помощь.

Братцы, не покиньте в лихую годину, поддержите собрата по разуму  :russian_ru:

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

может просто не правильно выразился... Просто объяснялово. "Особенности "Народной Солянки 2011". Я его читал давненько, просто в память засел такой приятный ништячок, добавляющий реализьму.

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

Девятки, есть такой мод Smart Monster Parts (Умное выпадание частей монстров) за авторством Руся.

На форуме была целая тема, посвященная данному моду.

Вот этот мод и был адаптирован под НС.

Неважно – сколько у тебя друзей. Важно - сколько из них помогут тебе в трудную минуту и сколько вспомнят о тебе когда им хорошо.

"Худ" и "Умное выпадание частей монстров" для Народной солянки

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

Премного благодарен за ссылку.

Но там совсем нет обсуждения. Там целая тема личных творческих наработок уважаемых модеров. А хотя бы в общих чертах, как это делается? Если, скажем, я не в НС это хочу вставить, а усовершенствовать какой-нито другой мод, или наметаю некоторые наметки для своего (в далеком будущем)... В общем - как это делается ручками в блокнотике?

Заранее благодарю.

 

Ищешь отдельно "Умное выпадение частей монстров"; сравниваешь файлы с оригиналом; смотришь, что было изменено; делаешь так у себя.

"Жевать" за тебя никто не будет.

ColR_iT

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

ColR_iT, Это, естественно, первое что я сделал. И все же не уловил где прописан этот механизм.

В строке Spawn_Inventory_Item_Probability вообще стоит = 0. Надо понимать, умное выпадение обеспечивается скриптом. В скрипто-письме я понимаю, мягко говоря мало, но... Открыл smart_monster_parts.script. В конце я конечно разобрал local table_mobs = где всем двуруким/двуногим и четырехлапым зверушкам выставлено должное количество рук/ног/лап. Ладно, думаю, выходит не боги горшки обжигают, не все так сложно и не понятно в "криптографии". Закидываю монстров.ltx и smart_monster_parts.script. в свою gamedat`у. Иду на пастбище кабанчиков, разделываю... и оказывается, что горшки обжигают все таки боги. Не работает.

Вот поэтому я и обратился к знающим людям, чтобы указали где и чего в этих файлах я не увидел.

И все таки, Братцы, можно расчитывать на помощь, или я до Школы моддинга еще не дорос и возиться с такими, как я, знающим людям недосуг?

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

Когда-то в одном из поздних билдов видел, что в ПДА топ-двадцатки сталкеров под их аватарками и рангом была короткая биография. Вроде "Хранитель группировки Долг, хорошо вооружен и опасен", "Неизвестный сталкер, детальная инфа отсутствует"... В ПДА чистой игры осталось место под эту биографию, но ее почему-то вырезали. Можно ли ее вернуть? Нужно описание, как это сделать, или ссылка на тему, где это описано. Спасибо заранее.

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

Девятки, добавь в bind_monster.script в конце метода generic_object_binder:hit_callback строку smart_monster_parts.main_check(obj, amount, local_direction, who, bone_index), а в конце метода  generic_object_binder:death_callback добавь smart_monster_parts.death_spawn(victim)

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

@Shredder, Спасибо за отклик.

Сделал. Результат - стабильный вылет при убийстве кабанчика:

 

 

Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ...hernobyl\gamedata\scripts\smart_monster_parts.script:335: attempt to index global 'arc' (a nil value)

 

 

Что может быть не так? Что я проглядел? Извращался по всякому: и целиком весь function Руся копировал (оба), и отдельно эти строки. В родной bind_monster.script Чистого ТЧ и модовый измененный. Пробовал просто заменить его Русёвым... Либо не работает, либо вылет.

Плохо, однако, быть безграмотным в .script`о-графии...

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

Девятки, надеюсь файл arc.script у тебя есть?

Неважно – сколько у тебя друзей. Важно - сколько из них помогут тебе в трудную минуту и сколько вспомнят о тебе когда им хорошо.

"Худ" и "Умное выпадание частей монстров" для Народной солянки

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

@Comador, эээ...ммм... нет. Не нашел такого.

А что должен представлять из себя этот файл? В смысле - функция его какова? Просто, есть файл ars.script. Может это тот же файл, но модифицированный под этот мод и где-то просто можно прописать отсыл к нему?

 

----------- Framework initialization -------------------------


-- Вспомогательная функция инициализации модуля.
local function init_module_if_exists(module)
if _G[module] and _G[module].init then
_G[module].init()
else
xr_s.warning("init_module_if_exists: cannot find module "..module)
end
end

-- Эта функция вызывается при старте игры. Необходимо дать возможность модулям зарегистрировать коллбэки.
function init()
init_module_if_exists("ars_cop")
init_module_if_exists("xrs_armor")
end


-- колбеки
local callbacks={
-- actor binder

 

 

это не то, что движок требует?

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

Не могу понять, почему логика двери работает некорректно. 

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

 

Все об этой двери:

 

[8979]

; cse_abstract properties
section_name = space_restrictor
name = actor_has_lab_x8_key_card_restrictor
position = 171.44148254395,30.752767562866,-483.31811523438
direction = 0,0,0

; cse_alife_object properties
game_vertex_id = 3135
distance = 0
level_vertex_id = 534626
object_flags = 0xffffff3e
custom_data = <<END
[logic]
active = sr_idle

[sr_idle]
on_actor_inside = %+check_absence_lab_x8_key_card%
END

; cse_shape properties
shapes = shape0
shape0:type = box
shape0:axis_x = 1.0513414382935,0,0
shape0:axis_y = 1.0513414382935,0,0
shape0:axis_z = 1.0513414382935,0,0
shape0:offset = 0,0,0

; cse_alife_space_restrictor properties
restrictor_type = 3

[8980]

; cse_abstract properties
section_name = space_restrictor
name = lab_x8_door_decoding_restrictor
position = 171.63209533691,30.751937866211,-485.51480102539
direction = 0,0,0

; cse_alife_object properties
game_vertex_id = 3135
distance = 0
level_vertex_id = 534618
object_flags = 0xffffff3e
custom_data = <<END
[logic]
cfg = scripts\alex_mod\lab_x8_door_decoding.ltx
END

; cse_shape properties
shapes = shape0
shape0:type = box
shape0:axis_x = 1.0513414382935,0,0
shape0:axis_y = 1.0513414382935,0,0
shape0:axis_z = 1.0513414382935,0,0
shape0:offset = 0,0,0

; cse_alife_space_restrictor properties
restrictor_type = 3

[8981]

; cse_abstract properties
section_name = space_restrictor
name = lab_x8_door_decoding_sound_restrictor
position = 171.64683532715,30.751802444458,-486.09631347656
direction = 0,0,0

; cse_alife_object properties
game_vertex_id = 3135
distance = 0
level_vertex_id = 534618
object_flags = 0xffffff3e
custom_data = <<END
[logic]
active = sr_idle

[sr_idle]
on_info = {+lab_x8_door_access_decoding} sr_sound

[sr_sound]
snd = device\decoder
play_at_actor = true
on_signal = sound_end| sr_idle
on_info = {+lab_x8_door_finish_decoding} nil
END

; cse_shape properties
shapes = shape0
shape0:type = box
shape0:axis_x = 1.0513414382935,0,0
shape0:axis_y = 1.0513414382935,0,0
shape0:axis_z = 1.0513414382935,0,0
shape0:offset = 0,0,0
; cse_alife_space_restrictor properties
restrictor_type = 2

 

 

[logic]
active = ph_door@locked

[ph_door@locked]
locked = true
closed = true
tip_open = tip_door_coded
on_info = {+take_lab_x8_key_card_complite} ph_door@coded

[ph_door@coded]
locked = true
closed = true
tip_open = tip_door_decode
on_info = {!take_lab_x8_key_card_complite} ph_door@locked
on_use = ph_door@decoding %+lab_x8_door_access_decoding%

[ph_door@decoding]
locked = true
closed = true
tip_open = tip_door_decoding
on_info = {+lab_x8_door_finish_decoding} ph_door@unlocked

[ph_door@unlocked]
locked = false
closed = false
show_tips = false

 

 

[logic]
active = sr_idle

[sr_idle]
on_info = {+lab_x8_door_access_decoding} sr_timer

[sr_timer]
type = dec
start_value = 5000
on_value = 0| %+lab_x8_door_finish_decoding%

 

 

<!-- Квест: Найти способ раскодировать дверь в лаборторию Х-8 -->
<info_portion id="lab_x8_find_key_card">
<task>lab_x8_find_key_card_task</task>
</info_portion>

<info_portion id="lab_x8_find_key_card_complite"></info_portion>
<info_portion id="lab_x8_door_open"></info_portion>
<info_portion id="lab_x8_door_access_decoding"></info_portion>
<info_portion id="lab_x8_door_finish_decoding"></info_portion>

 

<!-- Квест: Забрать ключ-карту из тайника Тауруса -->
<info_portion id="take_lab_x8_key_card">
<task>take_lab_x8_key_card_task</task>
</info_portion>

<info_portion id="take_lab_x8_key_card_complite"></info_portion>

 

<!-- Автопроверка наличия\отсутствия ключ-карты у ГГ -->
<info_portion id="check_absence_lab_x8_key_card">
<action>alex_mod_tasks.check_absence_lab_x8_key_card</action>
</info_portion>

 

 


-- Проверка взятия ГГ ключа-карты из тайника Тауруса
function check_take_lab_x8_key_card(task, objective)
if db.actor:object("lab_x8_key_card") then
db.actor:give_info_portion("take_lab_x8_key_card_complite")
return true
end
return false
end

-------------------------------------------------------------------------------------------------
-- Автопроверка наличия\отсутствия ключ-карты от лаборатории Х-8 у ГГ на Генераторах
-------------------------------------------------------------------------------------------------

-- (true - выдать задание на поиск способа открыть дверь)
function check_absence_lab_x8_key_card(task, objective)
if db.actor:object("lab_x8_key_card") == nil then
db.actor:give_info_portion("lab_x8_find_key_card")
return true
end
return false
end

 

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

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

Девятки, в скрипте smart_monster_parts.script есть вызов функции "спавна" частей. Эта функция прописана в файле arc.script.

Неважно – сколько у тебя друзей. Важно - сколько из них помогут тебе в трудную минуту и сколько вспомнят о тебе когда им хорошо.

"Худ" и "Умное выпадание частей монстров" для Народной солянки

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

Stalker_AleX333, попробуй так:
 


[logic]
active = ph_door@locked
 
[ph_door@locked]
locked = true
closed = true
tip_open = tip_door_coded
on_info = {+lab_x8_door_finish_decoding} ph_door@close
on_info2 = {+take_lab_x8_key_card_complite} ph_door@coded
 
[ph_door@coded]
locked = true
closed = true
tip_open = tip_door_decode
on_info = {!take_lab_x8_key_card_complite} ph_door@locked
on_use = ph_door@decoding %+lab_x8_door_access_decoding%
 
[ph_door@decoding]
locked = true
closed = true
tip_open = tip_door_decoding
on_info = {+lab_x8_door_finish_decoding} ph_door@close
 
[ph_door@close]
locked = false
closed = true
on_use = ph_door@open
show_tips = false
 
[ph_door@open]
locked = false
closed = false
on_use = ph_door@close
show_tips = false
 

 

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

@Shredder, ничего не изменилось. процесс декодирования все так же "зависает" в самом конце. Вероятно дело в логике декодирования.

 

З.Ы. Нашел еще одну неприятную ошибку: если перед взятием из мною созданного тайника, квестового предмета сделать сейв, а затем загрузить его - тайник будет пуст. Кто-нибудь знает почему игра "не записала" его?

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

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

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

@Shredder, никогда не приходилось заниматься подобным. И таки как это делается? Советы, туторы я так понимаю есть.

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

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

@Девятки, ну я этот мод не ковырял, делал подобное сам, и следуя здравой логике, из этого скрипта(arc.script, они обычно бывают базовые) вызываются два коллбека в биндер монстров, а именно хит коллбек(когда мы в них стреляем, и ведем подсчет), и дез колбек(для, непосредственно, спавна). Т.о. найди два этих вызова и просто перенеси их в биндер монстров, и все, профит.

 

, гляди http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%BE%D0%B4_NPC_%D0%B2_offline-online_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82

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

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

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

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

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

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

Войти

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

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

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...