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

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


Halford

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

@Serg.Ivan, не обращай внимание на очередной бред от @*Shoker*'а, и не вздумай удалять по его совету... движок тебя не поймет и все одно заставит вернуть все обратно (хотя из *db-архивов игры нужно еще постараться чтобы удалить ;-) ).

За отображение худа (индикаторов миникарты, окошек с оружием/патронами и т.п.) отвечает в первую очередь движок, а уж xml-конфиги имеют вторичное значение и отвечают за "что и где будет показано". К твоему сведению, иконки худа изначально отключены и их отображение включается в биндере актора в методе спавна актора(actor_binder:net_spawn). Найди строку level.show_indicators() - и закомментируй, если не надобен.

Однако, в игре в логике/сценах порою "худ" скрывается и вновь отображается скриптово ... а проверки состояния нет, поэтому придется постоянно "переотключать" командою: level.hide_indicators(), поставив куда-нибудь на апдейт актору или переработав скрипты с использованием этих функций управления худами.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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


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

@J.A.A., вообще-то по перл-скриптам имеется специальный топик: "Universal ACDC и другие perl-скрипты", где и автор может ответить по существу.

А вообще, ggrc.pl и распаковывает и упаковывает ((де)компилит), но не следует уповать на успех... Без манипуляций с SDK многое может быть недоступным.

И поищи в сети версию ggrc.pl посвежее, например v0.7

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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


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

@Dennis_Chikin, вредно заниматься болтовней... т.е. без вникания в суть/контекст - делать общие выводы.

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

К моему сожалению, именно "вредный совет" (точнее ремарка) большинством (кто не любит копаться в скриптах), кому может потребоваться подобное отключение, и будет использоваться или даже используется. Для думающих там же дан иной совет, но почему-то тобою не процитированный - "переработь скрипты с использованием функций управления худами", так что каждый подбирает для себя по вкусу и по навыкам.

 

Ну а твой "совет":

Вполне достаточно убрать худ в "сценарный" момент, и не включать его при первом апдейте.

- из области болтологии... любой "сценарный момент" выполняется  после 1-го апдейта... Так что по твоему "совету" или ЕЩЕ не выключить (еще не запущена сцена), или УЖЕ не требуется, т.к. не включено. (иначе: это и есть переработка скриптов!)

 

Примечание: Если человек затеял снять некое видео по геймплею и не хочет чтобы на экране был худ - то "вредного совета" более чем достаточно. Ну а для игры/мода с использованием фишки с отключением худа - в контекстве данного топика достаточно краткой подсказки о необходимости переработки скриптов, а не  куцых  "вредных иль полезных советов".

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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


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

Один брякнул, второй попугайничает..., при чем как будто кто-то возражал...


Товарищ *Shoker*  правильно сказал, вылет происходит, когда функции передан nil...

Ну что ж, попробуем поправить, дабы уже привычные погадалки в ответах ("вроде как"/"скорее всего") не расползались аж в справочники (#30):

- никакой это не "побочный вылет функции, которая создаёт лог вылета", о чем уже не раз глаголит "Товарищ *Shoker*", а прямое следствие попытки чтения параметра из конфига игры, и уж тем более не зависит от радиусов A-Life.

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

- "функции передан nil" - ну отчего же сразу так и 'nil'? Любое значение, которое не удовлетворяет ожидаемым условиям подпадает под эту ошибку. Кто-то забывает указать обязательный параметр. Кто-то умудряется вместо букв подсунуть числа иль наоборот. Ну а кто-то вообще  кириллицей  заставляет давиться движок...

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

 

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

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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


Ссылка на сообщение
По правилу ответ на вопрос  Потенциал должен быть как в твоем посте, а по сути?

И по правилам и по сути, вопрошавшему достаточно было воспользоваться банальным поиском по порталу иль инету, чтобы по фразе "invalid_parameter_handler" получить ответ о том, с чем он столкнулся (см. справочник:  #1). А вот отвечающему (и вторящему ему), следовало бы не только самому в справочник заглянуть, но и не мусорить "отсебятиной" в том же справочнике, нарушая правила топика (цитата: Если увижу, что запостили вылет, который здесь есть,...).

 

Также, хочется обратить внимание на то, что очень часто некоторые отвечалкины стали общности зашоривать на частности, выдавая это за единственно верный ответ. Тот же @Потенциал указал только строки в логе об ошибке. Эта ошибка, как уже указано выше, говорит о  не прошедшей  проверке на валидность параметров. Ты же,@Старлей вместе с @*Shoker*'ом, начинаете зацикливать на каком-то nil'е и радиусе алайфа, выпячивая свои грабли перед другими... Не нужно в каждом случае пытаться упрощать, порою это не сокращает время поиска ошибки, а наоборот.

Вообщем у меня один вопрос только в том посте от 2009 года написано: "инициализируется некий объект"  - можно ли это расценивать как спавн, или ввод в онлайн?

Ответ: и/или и не только! ! Т.е. это можно расценивать и как спавн объекта и как ввод объекта в онлайн и вообще в иной ситуации.

По вопросу видно, что ты так и не понял суть ошибки. При обработке некоторой ситуации была обнаружена ошибка значения параметра, о чем движок и сообщает в логе. Обнаружение ошибки возможно, например, и при установке метки на уже заспавненный и вышедший в онлайн объект и в множестве иных ситуаций.

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

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

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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


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

@Serg.Ivan, а тебе не приходит в голову, что довольно глупо ожидать положительного результата от того, что ты какому-то предмету/объекту пропишешь в конфиге какой-то тобою названный параметр?!

Также глупо ожидать, что та же консерва, после правки ее конфига (без смены класса!) начнет влиять на пуленепробиваемость, иль артефакт утолять жажду...

 

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

  • Нравится 2

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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


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

@_Val_, не стОит пытаться совмещать цитаты. Нужно не копипастить иль повторять шаблонно, а понимать суть и делать то, что задумано.

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

  • Нравится 3

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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


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

Из игры (скриптов) невозможно "отследить открытую вкладку(Задачи/План/Журнал...) в PDA". Вкладками(фреймами) в КПК заведует движок и ничего не вызывается и не передается скриптам. Только доработка движка (или использование внешних "приблуд") даст такую возможность.

 

Не срабатывает функция спавна НПС

И не может сработать! Помимо синтаксической ошибки, о которой уже указано выше, в написанной (без применения головы) функции

спавнится объект (local npc = alife():.. ), а далее идут попытки net-пакетами обрабатывать amk.read_stalker_params(obj) ...

Т.о., в лучшем случае, если функция не вылетит по синтаксису или по отсутствующим переменным, заспавненный объект (npc->obj) после спавна просто напросто будет удален, как не нашедший работу в каком-либо гулаге.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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


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

Почему многие стали считать, что комп/приложения должны сами понимать то, что безграмотно пишет им человек?

@Хемуль36рус, неужели не можешь сам проверить корректность твоей записи логики, тем более примеров в том же алл.спавне предостаточно?

Уже "шапка" кастомдаты тобою исковеркана(!), а должно быть ( custom_data = <<END ... END ):

custom_data = <<END
[logic]
active = sr_idle

т.е. кастомдате объекта должно быть присвоено все, что находится между тэгами 'END'.

Ну и сама строка в секции логики:

[sr_idle]
on_info = {+dat_hem_sms} %=smski.sid_sms% nil

т.е. к 'nil' - не приравнивается что-то, а "если есть инфопоршень XXX - то выполняется функция FFF и логика сменяется на нИлевую секцию, т.е. отключается"...

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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


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

@Хемуль36рус, после твоих пояснялок можно предположить что твой вопрос (заковыка) в общем не имеет отношения к алл.спавну.

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

Чтобы не сильно зависеть от именно алл.спавн'а можно логику (ее конфиги) вынести в отдельный файл:

ustom_data = <<END
[logic]
cfg = scripts\my_file.ltx
END

 и экспериментировать уже с ним, и тогда гораздо проще перепроверить вызывается ли у тебя вообще некая функция smski.sid_sms (?) и не в ней ли загвоздка...

 


@azrael1325, чтобы "через логику вызывать скрипты из сторонних файлов" требуется доработанный скрипт 'xr_logic', и он в Народной Солянке доработан под это. Если же доработка где-то отсутствует - будет "штатный" вылет с сообщением в лог ("xr_logic: scheme '%s' is not registered in modules.script" или "object '%s': pick_section_from_condlist: function '%s' is not defined in xr_effects.script").

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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


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

@Хемуль36рус, ответь, плз, на вопрос:"А что ты сам сделал чтобы понять 'почему' у тебя не выходит?"

- ты отделил ошибку от алл.спавна (т.е. ошибки синтаксиса кастомдаты и схемы логики)?

- ты локализовал ошибку до скрипта 'smski.script' или даже до функции 'smski.sid_sms'?

- ты хотя бы можешь сказать, что твоя функция, отвечающая за выдачу СМСки вызывается логикой?

... и т.д. ... Причин великое множество, а ты предлагаешь нам гадать, а тебе "понимать"...

 

а) Проверь, активируется ли твоя логика для твоего рестриктора (вывод нужного в лог в биндере схемы не сложно поставить);

б) Проверь, вызывается ли твоя функция из логики схемы (вывод в лог из функции тоже не сложно написать);

с) Если функция вызывается - проверяй аргументы и/или корректность самой функции (нам неведомой!). Судя по ее названию 'sid_sms' - в нее должен передаваться некий сид (стори_ид)...

ну а если не вызывается, то, как уже упоминалось мною не раз, твой скрипт должен быть проинициализирован игрою(!), поэтому или потрудись это сделать или переноси свою функцию в xr_effects.script или arhara_dialog.script  и перепроверяй.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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


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

@Хемуль36рус, квесты на предметы ("find_item") оперируют секцией, по которой спавнится в игру предмет. В se_item.script все секции предметов, которые могут применяться для квестов, регистрируются в таксменеджере ( task_manager.get_random_task():register_target(self) ). В самом таскменеджере задания могут выдаваться только(!) при наличии в игре соответствующих предметов (определяются по (от)регистрации секций при спавне).

Т.о. если хочешь выдавать задание на предмет - позаботься чтобы предметы этого класса регистрировались при их спавне в игру по своей секции в таскменеджере.

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

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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


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

И не нужно выдавать отсебятину за истину.

Абсолютно бессмысленный совет/утверждение -

 

местами короче поменяй у себя комманды

т.к. строка из конфига логики "on_actor_inside = nil {+esc_kill_gunslinger}"  полностью эквивалентна такой же "{+esc_kill_gunslinger} nil".

Скрипт (xr_logic.script) разбирает эту строку, разбивая (распарсивая по маскам) на фрагменты и "от перемены мест" НИЧЕГО не изменяется, т.е. логика будет ИДЕНТИЧНА! Иначе, действия в любом слчае будут по-порядку таковыми:

- проверяется наличие/отсутствие инфопоршней ( {+/-} ) и/или условий функций ( {=/!} );

- определяется (если указана) вероятность (~);

- выдаются/убираются инфопоршни ( %+/-% ) и/или выполняются функции/экшены ( %...% );

- текущая секция логики сменяется следующей (или nil).

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

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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


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

 

 

ЗЫ..А куда Артос то делся?

Сменил (временно) Москву на глухую провинцию... , да и хобби уже более приземленные (в буквальном смысле). ;)

Интернет тут (в моей тверской деревеньке) как в 80-ые прошлого века, но вероятно потихоньку вновь влезу в кодинг... вот только комп из Москвы нужно будет привезти, т.к. на ноуте не развернуться...

А вообще... привет всем(!). Смотрю у вас тут похоже жизнь (моддинг) все еще "булькает". ;)

  • Нравится 1

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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


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

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