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

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


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

@Карлан, не очень понял. Я не программист, поэтому все эти коллбеки и прочее для меня непонятны.
Вообще, я спрашивал про назначение этих файлов. Зачем они нужны (только попроще) и читает ли их движок вообще?

@Vadyanchikus, попроще - они нужны для поддержки квестов, и да, они задействованы. Как и всякие *_dialogs.script. А вообще в папке scripts ltx файлов быть не должно ;).

 

 

Вопрос: какой из этих файлов используется игрой и используется ли он вообще

Ну если внимательно глянуть содержимое этих файлов: таблица, в которую заносится список большинства инфо-порций, используемых в игре. Далее парсинг этой таблицы и выдача всех занесенных в нее и-п актеру(ГГ). Личное мое мнение - рудимент, оставшийся от тестирования игры ПЫСами. Если я не ошибаюсь, то соответственно ценность этих файлов - сами понимаете какая...

 

Теперь о своем:

Как-то давненько, попадалось мне пояснение о том, как рассчитывается цена покупки\продажи шмота всякими торговцами главгерою. И там вроде учитывается благосклонность(goodwill), причем и личная(торгаш->ГГ) и группировки торгаша(группировка торгаша->ГГ(или группировка ГГ?)). Собственно два вопроса:
 - напомните эту формулу, кто помнит\знает\имеет описание;
 - все виды благосклонности - от чего еще изменяются, кроме прямого изменения из скриптов с помощью движковых ф-ций ?

@Vadyanchikus, @UnLoaded, возможно я не так понял, и имелись ввиду скрипты task_1.script и иже с ним, если так, то это чистый мусор который можно весь удалить, что я давно и сделал у себя. Мне подумалось что речь идет о level_tasks.script и его хвостах.

 

 - напомните эту формулу, кто помнит\знает\имеет описание;

Формулу чего? Расчета цены предмета? Расчета коэффициента благосклонности? Расчет самой благосклонности? Точнее говори. Если говорить о торговле, то там совсем все странно... и забавно :).

 

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

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

@Карлан, да, я имел в виду task_1.script и ему подобные.
Кстати, поможешь с одним делом? Уже 2-ой день голову ломаю.
В общем, ситуация: я ввёл в игру флешку, а на ней инфа. Так вот, я хочу сделать так, что при взятии этой флешки в КПК ГГ появляется соответствующая инфа. Я прописал в скрипте инфопоршень, зарегал сам инфопоршень, прописал его текст, а инфа всё равно не выдаётся. Никаких ошибок и вылетов, я просто получаю флешку и на этом всё.
Вот скрипт:

 

function borov_flash()
if (actor:object("borov_flash") and not has_alife_info("borov_flash_found")) then
db.actor:give_info_potrion("borov_flash_found")
end
end


Вот зареганный инфопоршень:

 

 

<info_portion id="borov_flash_found">
<article>borov_flash</article>
</info_portion>

 


Вот зареганный article:

 

 

<article id="borov_flash" name="Borov flash" article_type="Journal" group="Found_PDA">
<text>borov_flash</text>
</article>

 


Уже не знаю, чего не хватает.

@Vadyanchikus, для твоей цели у тебя некорректная функция, примерно надо вот так (и то можно в тернарный завернуть, но я чтоб понятнее):

function borov_flash(obj)
if obj and obj:section() == 'borov_flash' and not has_alife_info("borov_flash_found") then --// подобран объект с секцией borov_flash?
db.actor:give_info_potrion("borov_flash_found") --// даем инфо
end
end

Вызов этой функции нужно вписать в тейк коллбек, открой bind_stalker.script, найди функцию actor_binder:on_item_take (obj), и после этой строки впиши:

имя_твоего_скрипта.borov_flash(obj)

И не пользоваться бб-кодами при публикации своего кода на этой площадке - моветон ;).

@Карлан, а этот скрипт точно будет работать? Просто свой я брал на основе имеющихся, например, та же флешка Стрелка или доки из Х18. Всё бы ничего, но на Win 7 игра долго грузится, а я порядком утомился ждать из-за каждой мелкой правки, ибо пока только учусь  :)
И, вот, немного непонятен твой комментарий:

 

 

подобран объект с секцией borov_flash?

borov_flash - это название предмета. Если что, то он квестовый.

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

@Vadyanchikus, это секция предмета, названием можно обозвать имя. Функция работать будет, можно еще заюзать function_complete, по моему так называется, это прямо в самом подзадании проставлять надо (если это финальное подзадание то и в голове таска тоже), можешь в оригинале примеры посмотреть. 

@Карлан, скрипт не работает. Инфа по прежнему не появляется в КПК.

 

 

скрипт не работает.

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

 

 

 

В движке же русским по белому...

Откуда вывод, что у всех исходники движка, и все их читают аки азбуку ? Ну нет у меня их...

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

К примеру - от кол-ва купленного\проданного торгашам шмота меняется ? Если да, то какова формула ? 

 

 

 

Если говорить о торговле, то там совсем все странно... и забавно

Именно о ней. Как в чистом ТЧ считаются цены продажи\покупки у торгашей ?

Откуда вывод, что у всех исходники движка, и все их читают аки азбуку ? Ну нет у меня их...

Скачай. Я не вижу проблемы.

 

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

Вопрос вообще некорректный. Управляется все одним файлом - делай раз, там русским по белому написаны нормальные комменты - делай два.

 

К примеру - от кол-ва купленного\проданного торгашам шмота меняется ?

Нет.

 

Именно о ней. Как в чистом ТЧ считаются цены продажи\покупки у торгашей ?

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

Но самая главная магия она там, немного ниже, разгадка тайны этого монолита стоила мне нескольких часов. Узрейте и вы.

@UnLoaded, а чего его выкладывать? Он есть, только чуток выше в сообщениях:

function borov_flash(obj)
if obj and obj:section() == 'borov_flash' and not has_alife_info("borov_flash_found") then --// подобран объект с секцией borov_flash?
db.actor:give_info_potrion("borov_flash_found") --// даем инфо
end
end

Кстати говоря, в скрипте ошибка: give_info_potrion. Но самое интересное не это, а то, что игра не ругалась на эту ошибку при запуске. Как это понимать?

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

Секция 

[known_info]
поршень

работает только на трупах или в тайниках тоже можно юзать? Если нет, то как можно при обыске тайника вызвать функцию/толкнуть поршень?

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

Ранее был известен под ником BoBaH_671.

@BoBaH_671, секция для тайников разумеется не работает, в оригинале только развеселым костылем, ставишь флаг в юз колбек неписей на трупов, потом проверяешь ui_carbody, проверяешь этот флаг, если он не взведен, то значит шаримся по тайнику, а вот по какому конкретно - не понятно, а колбек есть только на взятие из, поэтому надо костыль развивать, фейково перекидываем предмет от одного к другому и узнаем с каким конкретно тайником имеем дело. Ву-а-ля.

 

P.S. на 7 движке есть колбек для тайника на юз, чем убиваются все вышеописанные костыли, выводы думай сам.

@Карлан, долго всё это и не очень понятно, такой способ для меня не катит. :)

Ранее был известен под ником BoBaH_671.

Вопросы, вопросы... Ничего не знаю.
Вопрос: копаясь в броне (а копаюсь я там давно), недавно заметил такой параметр power_loss. Интересно, что в релизе он присутствует только у 2-х комбезов: сталкера и "Ветер свободы" (значения 0.87 и 0.77 соответственно).
Из названия могу предположить, что эта строчка отвечает за расход выносливости конкретно в этом костюме, но я не уверен. В сборке 2571 есть похожая строчка: power_restore_speed, она есть только у одного комбеза, в релизе он вырезан.
Кто что скажет?

  BoBaH_671

Юзание тайника можно "увидеть" если написать к ним свой биндер, а у него отлавливать калбек callback.use_object. Причем Вы можете сделать свою секцию для предмета O_INVBOX своего тайника со своим биндером, не затрагивая уже существующие тайники, ибо задача перецепляния Вашего биндера в конфигах игры к существующим долгая и для внимательных людей.

 

Собственно вопрос - в биндере сталкера есть callback.take_item_from_box и есть callback.on_item_take, но первый не вызывается на взятие предметов из трупа, а второй как бы не того плана калбек. Как отловить каллбек на взятие преметов именно из трупа, вот чтобы можно было прицепить на него function takeItemFromCorpse(corpse,item).

Благодарю!

Изменено пользователем Winsor
  • Спасибо 1

Поиском вроде прошёлся, первый пост изучил, но конкретно моего вопроса не нашёл, увы.
Итак, меня которую игру подряд слегка утомляет такая фигня, что при встрече отрядов "Долга" и "Свободы" последние практически всегда дохнут полным составом, ибо 9*39 - это вам не шутки решил я уравнять слегка шансы, но так, чтобы не трогать конфиги пукалок и боеприпасов. А так как я достаточно давно добавил адаптацию Арсенал-мода для АМК 1.4.1, то решение пришло само - раздать новые стволы неписям. И разнообразия добавится, и кого-то из свободовцев в экзе можно вооружить всамделишными лупомётами: МГ-42, МГ-3, ПКМ. Глядишь и шансы какбэ уравняются.
Полез я значит в gameplay чтобы по локациям раздать стволы народу (я вообще решил заодно гопников усилить, ибо отстреливать их стало скучно). Ну ок, разобрался где там ружбайки выдаются - замечательно же, выдал почти везде, но вот незадача, в файле для припяти нет ни долга, ни свободы. Не, ну правда, а ведь они появятся там - и будут друг дружку истребялять. Ну ок, я рассудил так: раз есть достаточно крупный файл character_desc_simulation.xml и вроде ни за какую локацию он не отвечает, то, видимо, рандомные группы формируются из него. Попробовал сначала эксперимент поставить на кошках наёмниках - и проканало вроде. Но я пока что какбэ не уверен в назначении этого файла. Так что первый вопрос: а за что отвечает этот самый character_desc_simulation.xml?

Ну и скролля шаблоны в этом файле натолкнулся на такую строчку:

wpn_ak74u = 1, 0, 1, 0 \n

Ну с названием ружбайки всё понятно, а вот что за цифери стоят потом? За что они отвечают? Так как в аналогичных строках для другого оружия я встречал только 1 и 0, то предполагаю, что каждая цифра означает наличие/отсутствие чего-либо. Но нигде в каментах к файлу я не обнаружилописания этих переменных. Причём иногда эти цифры не ставятся. Так что подскажите, камрады.
И решусь задать ещё один вопрос - он ко мне пришёл прямо сейчас, так что по его поводу я ничего не искал.
Вот раздобыл я кучу ружбаек разных в процессе игры. Мне стало скучно и пошёл я на Кордон, ну чтобы пацанов из Лагеря Новичков норм вооружить значит. Затарился патронами нужными, чтобы неписи могли ружбайки юзать, броников набрал кучу. 300 кг между прочим в рюкзаке потащил в кустюме специальном. Приношу, раздаю броники так, чтобы новый пнджак был дороже, чем старый у чувака. Отбегаю, он применяется - и вот ужо у костра сидят: долговец, свободовец, вояка и монолитовец, ну и базарят - красота да и только. Один только чувак в белой куртке так и не сменил одёжку, при этом его ранг уже был "мастер" на момент раздачи. Чому так произошло? Но это не главный вопрос, ибо всё интереснее стало, когда я пукалки начал раздавать. Чуваки, вооружённые "калашами", новыми ружбайками, даже "грозой", отказываются пользоваться. Просто оставляют в инвентаре. Более того, через несколько дней количество юзеров АК-74 только увеличилось. Ситуация такая, что когда НПС получает "калаш", то он тут же ставит оную бабаху в слот, если есть нужные патроны, а предыдущую пукалку выбрасывает в инвентарь. Я предположил, что на каждой локации, или для каждого типа НПС есть свой приоритет по оружию, причём цена ствола роли не играет. Так вот, где прописаны эти параметры и насколько глобально они влияют на поведение НПС?

Ну вот как-то так. Если пропустил ответы в выдаче поиска, то ткните, пожалуйста носом, но больно не бейте :)

 

 

 

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

Этот самый фактор где-то в конфигах прописан, или "волшебное число" в движке прибитое гвоздями, или как-то из чего-то высчитывается ?


 

 

Но самое интересное не это, а то, что игра не ругалась на эту ошибку при запуске. Как это понимать?

Очень просто: при запуске игры проверка какой-либо валидности содержимого скриптов не производится. А вот при вызове кода, содержащего ошибку будет вылет. Это как раз подтверждает, что данная ф-ция у Вас не вызывается - иначе была-бы ошибка.

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

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

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

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

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

Войти

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

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

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