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

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


Halford

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

(изменено)

[error]Expression : fatal error

[error]Function : CScriptEngine::lua_error

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

[error]Line : 73

[error]Description : <no expression>

[error]Arguments : LUA error: f:\games\stalker\gamedata\scripts\utils.script:156: attempt to index local 'char_ini' (a nil value)

 

Ошибка при обращении к функции cfg_get_string. Как можно отследить скрипт, вызывающий эту ошибку, то есть обратившийся к этой функции? Сам utils.script в порядке.

Изменено пользователем Полтергейст

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


Ссылка на сообщение
(изменено)

Maks_K

а не проще поставить проверку на nil

Как? Начать с

    if char_ini == nil then

а дальше что? Я в скриптах не очень, потому и спрашиваю.

 

Ещё в utils.script обнаружил закомментированную функцию "trace", может как-то с помощью неё можно отследить скрипт, вызвавший ошибку?

Изменено пользователем Полтергейст

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


Ссылка на сообщение
(изменено)

Возможно ли теоретически сделать в ТЧ захват (или уничтожение) смарта и войну группировок так, как это сделано в ЧН? Или хотя бы сделать так, чтобы можно было какому-нибудь отряду прописать нападение на смарт?

Изменено пользователем Полтергейст

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


Ссылка на сообщение
(изменено)

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

Такая ж фигня и на агропроме возле входа в подземелье и ещё много где.

Изменено пользователем Полтергейст

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


Ссылка на сообщение
(изменено)

Решил создать новые аномалии под ТЧ, порылся, нашёл кучу уже существующих интересных, но отключенных аномалий. Попробовал восстановить аномалию zone_ameba - словил вылет: почему-то из строки visual в конфиге аномалии читается только первый символ, как следствие - игра жалуется, что не может найти p.ogf. Соответствие скриптовому классу se_zone_visual прописал на всякий случай, хотя на Z_AMEBA это не должно влиять. Что с этим делать?

 

С аномалией "кислотный туман" тоже проблемка: не знаю что писать в строку "class" в конфиге. Скриптовый clsid есть (zone_acid_fog), а какому классу для конфигов он соответствует - не знаю, в поиске не нашёл. Может кто знает?

 

И ещё вопросик: реально ли вообще в ТЧ сделать squad'ы? Через ON_OFF_G не получается, т.к. класс не скриптовый, но думаю, может как-то сделать через db.script. В se_stalker и se_monster сделать поле now_in_squad и при загрузке (STATE_Read) добавлять в специальную таблицу в db, но как сделать, чтобы неписи не разбегались в разные стороны? Спавн по такой схеме, как в ЗП (sim_board.fill_start_position) я уже сделал, но дальше что-то всё идёт из рук вон плохо.

 

Происходят чудеса: с начало игры в деревне новичков спанятся нпс-ы в экзах, в ТД пасутся сталкеры, которые должны быть в Припяти, Круглов превращается в рядового сталкера и вместо побега на Янтарь устраивает шмон трупов наёмников, бродит по территории Ростока, жалуется на жизнь и т.д.

Смотрите smart_terrain_presets.ltx, там прописывается соответствие группировок и рангов для уровня. И ещё: в одном из скриптов (по-моему smart_terrain.script) видел, что неписям при переходе из смарта в смарт добавляется ранг, может было бы лучше отключить.

Изменено пользователем Полтергейст

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


Ссылка на сообщение
(изменено)
4. How can I insert the function, that the monster-piece "burers hand" is useable as primary weapon

Рука контролёра из NLC для этого лучше подойдёт. :)

Изменено пользователем Полтергейст

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


Ссылка на сообщение
(изменено)

Блин, что-то я совсем замучался с обходом аномалий неписями. Ни в какую не хотят обходить. Сначала думал, что повлияли мои правки в amk_anoms.script и se_stalker.script - заменил на оригиналы, та же байда. Кто-нибудь вообще может объяснить, как в AMK сделан обход аномалий неписями? То, что они прописываются как restrictor'ы я знаю, но как именно это (не) работает?

И ещё: есть ли ограничение на длину значения параметра SpaceRestrictionSection в ltx'ах неписей (m_stalker.ltx и др.)? Вот так

SpaceRestrictionSection = space_restrictor, zone_mine_field, zone_burning_fuzz, zone_burning_fuzz1, zone_buzz, zone_gravi_zone, zone_ice, zone_flame, zone_zhar, zone_emi, zone_campfire_grill, zone_mincer, zone_death, zone_mosquito_bald, zone_no_gravity, zone_psy, zone_witches_galantine, zone_zharka_static

не слишком много?

 

как создать передвигающиеся аномалии

Берите любую понравившуюся аномалию из zone_torrid.ltx

Посмотрите, как это реализовано на уровне x18

 

_

Ещё у меня есть одна идейка - сделать смарты доступными не только для людей и мутантов, но и для техники. Чтобы вертушкам и БТРам можно было задавать работы и переходы из смарта в смарт. Такое вообще возможно?

Изменено пользователем Полтергейст

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


Ссылка на сообщение
(изменено)

Если декомпилировать all.spawn, то в файле alife_l04u_labx18.ltx есть вот это:

; cse_motion properties

motion_name = labx18_1floor_2.anm

Что это значит я пока не знаю, но что именно эта строка отвечает за направление движения - 100%

Упоминания labx18_1floor_2 в скриптах и конфигах не нашёл.

Изменено пользователем Полтергейст

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


Ссылка на сообщение
(изменено)

Если формат .anm файлов не менялся, то должно подойти. Пробовать надо.

Только надо, чтобы аномалии было где "развернуться".

Да, и ещё: класс ZS_TORRD в ЗП поддерживает скрипт для серверного объекта, в ТЧ для класса Z_TORRID такой поддержки нет. На движение влиять не должно, просто функции скриптового класса se_anoms.se_zone_torrid работать в ТЧ не будут.

А вообще, лучше было бы с помощью скрипта задать аномалии путь движения по waypoint'ам. Например, принудительно менять position, game_veretex и level_vertex серверному объекту. Но это сложнее и готовых скриптов для этого пока нет.

Изменено пользователем Полтергейст

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


Ссылка на сообщение
(изменено)

Кто знает, за что отвечает параметр killer_clsids у всей живности?

 

появляется хрен знает где

:) Наверное, в .anm жёстко указаны координаты, по которым должна двигаться аномалия.

Изменено пользователем Полтергейст

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


Ссылка на сообщение
(изменено)
А возможно ли отследить с какой локации на какую переходит ГГ

Сделать в биндере игрока поле actor_on_level и в net_spawn поставить сравнение имени текущего уровня с именем уровня, записанного в этом поле. Если значения отличаются - записать это в какой-нибудь параметр. Может можно было бы сделать это через биндер для level_changer, но как именно пока не знаю.

Изменено пользователем Полтергейст

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


Ссылка на сообщение
(изменено)
потому как я ни чего похожего actor_on_level не нашел

Там этого и нет, надо самому создать поле actor_on_level и приравнять его к level.name(). Сделать, чтобы этот параметр сохранялся. Потом в net_spawn() сравнивать actor_on_level с level.name().

Выглядит это примерно так:

 

function actor_binder:__init (obj) super(obj)

...

actor_on_level = nil

level_changing_from = nil

level_changing_to = nil

...

end

 

function actor_binder:net_spawn(data)

...

if actor_on_level == nil then

actor_on_level = level.name()

else

level_changing_from = actor_on_level

actor_on_level = level.name()

level_changing_to = actor_on_level

end

...

end

 

function actor_binder:save(packet)

...

packet:w_stringZ(actor_on_level)

...

end

 

function actor_binder:load(reader)

...

reader:r_stringZ(actor_on_level)

...

end

 

 

После этого можно будет запрашивать параметры level_changing_to и level_changing_from из любого скрипта. Можно это же сделать через биндер для самого level_changer'а, но это чуть сложнее. В функциях save/load всё должно быть в той же последовательности, то есть, если сохранение параметра actor_on_level идёт после сохранения какого-то другого параметра, то и в загрузке они должны идти в таком же порядке.

 

 

------

Сегодня мне удалось перенести state_mgr.script из ЗП в ТЧ. Всё работает, кроме раненых и анимаций сидения у костра. При попытке вылечить раненого игра вылетает (ругается, что передаю nil в state_mgr.set_state. А любители погрятся у костра просто стоят как столбы. Копал xr_kamp - ничего не нашёл. Кто-нибудь знает, как правильно вызвать смену анимации при лечении раненых и в схеме xr_kamp?

Изменено пользователем Полтергейст

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


Ссылка на сообщение
Вот "вырезки" из этих файлов:

Подставьте перед элементами таблицы "state_mgr_".

Для первого элемента получится state_mgr_movement. И так далее.

Короче говоря, эти параметры делаются для скриптов, имена которых можно узнать этой подстановкой. Вот у меня почему-то на новом state_mgr'е не хочет работать анимация "sit", причина непонятна.

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


Ссылка на сообщение
(изменено)

weapon = "none" --' Оружие убрано совсем; "strapped" - на спине, "unstrapped" - в руках

movement = move.stand, --' непись стоит на месте (ещё бывает move.walk - ходьба, move.run - бег)

mental = anim.free, --' Непись в свободном состоянии (ещё бывает anim.panic - шарахаться от всего недружески настроенного, anim.danger - напряжённое состояние)

bodystate = move.standing, --' Состояние тела: стоим ровно (ещё бывает move.crouch - присесть)

animstate = "stand", --' Состояние анимации - в ТЧ везде, кроме сидячих и спящих анимаций ставим "stand"

animation = "raciya" --' Имя анимации

 

Если подставить перед этими параметрами state_mgr_, то получим

state_mgr_weapon, state_mgr_movement, state_mgr_mental и т.д. - имена скриптов, для которых эти параметры задаются.

Изменено пользователем Полтергейст

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


Ссылка на сообщение
(изменено)

Кто-нибудь может подсказать, почему это движок вдруг перестал видеть функцию initialize_if_needed() в smart_terrain.script? Что делал:

Поставил поле m_smart_terrain_id в se_stalker и se_monster, в котором записывается id смарта, в котором npc сейчас. В сохранение/загрузку тоже добавил. После этого заменил все обращения к функции <серверный объект>:smart_terrain_id() на <серверный объект>.m_smart_terrain_id.

 

Вся фишка в том, что smart_terrain.script работает (проверял schecker'om), но функцию всё равно потерял из виду во время игры (!!!). ППЦ какой-то, как такое вообще может быть? Помогите кто-нибудь.

 

Ошибка проявляется при вызове этой функции из xr_gulag.setup_gulag_and_logic_on_spawn

В последний момент успеваю заметить стоящего, как столб, непися.

 

И ещё такой вопросик: нафига smart_terrain'у двойное обновление? Одно вызывается симулятором, другое через биндер. Какой в этом смысл?

Изменено пользователем Полтергейст

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


Ссылка на сообщение
(изменено)

Смена состояний вызывается отчасти из move_mgr, отчасти зависит от движковых состояний (mental_state, danger_objects и других). Иногда вызывается из схем поведения (xr_*).

Соответствие скриптов state_mgr* друг другу хранится в state_lib.

 

Лучше их вообще не трогать, если работают. Я уже писал, что пробовал переносить новый state_mgr от ЗП, но без проблем не обошлось. Пришлось откатить обратно, но старый скрипт периодически вызывает "C Stack overflow", особенно когда в онлайне много неписей.

 

Для монстров всё попроще, один скрипт mob_state_mgr.

Изменено пользователем Полтергейст

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


Ссылка на сообщение

Вопрос к авторам АМК мода: почему может слетать ваша схема обхода аномалий? Даже если в xr_motivator дописать функцию anomaly_evade как в bind_monster, всё равно не помогает. amk_anoms из NLC, хотя с оригинальным такая же ерунда. Что я делаю не так?

Может ли список "SpaceRestrictionSection" в m_stalker.ltx как-то на это влиять?

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


Ссылка на сообщение
(изменено)

Arhara

На самом деле - схема АМК не слетела - её просто нет

Как это? А что тогда делает класс "evaluator_anomaly" в blowout_scheme?

У меня аномалии тупо не добавляются в restrictor'ы NPC, хотя я вчера сносил свои правки и ставил чистые конфиги и скрипты (blowout_scheme, xr_motivator, amk_anoms, move_mgr) с АМК мода - такая же фигня.

 

Если её нет - как тогда сделать, чтобы обходили?

 

Может как-то задействовать эти строки из stalker_ids?

action_anomaly_planner
detect_anomaly
action_solve_zone_puzzle
property_inside_anomaly 
get_out_of_anomaly

 

Блин, ну помогите кто-нибудь! Я уже утомился с этой проблемой. Пробовал прописывать аномалии при их спавне к рестрикторам НПС и уже существующие при спавне самих НПС - после того, как дошёл до Петрухи и компании - вылет без лога. Если запихнуть это в update биндеров, то вообще мёртвый висяк. Схема от АМК по-прежнему отказывается работать, хотя файлы, которые отвечают за её работу, оригинальные.

Есть ли какой-нибудь готовый скрипт прописывания аномалий в restrictor'ы к NPC, которые в оффлайне? То, что это возможно - 100%. Если такого скрипта нет, то до нового года я такой сделать не успею :(

 

С обновлением смартов проблему решил - просто сделал добавление в db.smart_by_name всех смартов, а не только онлайновых, и всё время вызывал их обновления из binder'а игрока.

Изменено пользователем Полтергейст

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


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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

AMK-Team.ru

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