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

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


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

VVV32768

Там через инфопоршень прописывать надо...

 

 

Это в папке level, нужного тебе уровня:
[level_scripts]
script = svalka

Это в папке scripts:
function main()
if not has_alife_info("controller_tubeman")then
alife():create("controller_tubeman",vector():set(69.456,1.29,95.033),239954,370)
db.actor:give_info_portion("controller_tubeman")
end
end

И инфопоршень нужен еще, тогда спавнится при каждом заходе на уровень, ну или какая там тебе функция нужна при каждом заходе...
У меня таким образом появляется контролер в квесте, можно сделать что бы только 1 раз спавнился например по желанию...

 

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

Жизнь следует измерять поступками, а не временем...

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

@losiara

Какие-то условия еще нужны для этого. - НИ, первый заход на уровень?

Для простоты пытался заспавнить ствол...

Не работает,  поршень не выдается. 

подразумевается имя которые вы указали

 

Улыбнуло...

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

А при чем тут проверка на инфу? Если ее нет, то функция должна выполняться по идее каждый раз при заходе на уровень.

 

VVV32768_Val_

А вы попробуйте в конец _g.script добавить это:

 

prefetch("rrr_spawn")

Под rrr_spawn подразумевается имя которые вы указали в level_script'e.

 

  • Нравится 1
Ссылка на комментарий

Имеется диалог построенный по такому шаблону:

<dialog id="ляляляляля"> 
  <phrase_list>
    <phrase id="0">
      <text>Привет, сталкер !</text>
      <next>1</next>
    </phrase>
    <phrase id="1">
      <text>Что надо от меня ?</text>
      <next>2</next>
      <next>4</next>
    </phrase>
    <phrase id="2">
      <text>...............</text>
      <next>3</next>
    </phrase>
    <phrase id="3">
      <text>...............</text>
    </phrase>
    <phrase id="4">
      <text>...............</text>
      <next>5</next>
    </phrase>
    <phrase id="5">
      <text>...............</text>
    </phrase> 
  </phrase_list>
</dialog>

т.е. присутствует развилка - 2 или 4 фраза. И получается, что при отсутствии условий в каждой из них они доступны одновременно. Вопрос - как движок это обработает ?

 

Во-первых, в следующий раз подобный пост без спойлера потру.

Во-вторых, что мешает узнать проверив это собственно ручно?

ColR_iT

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

Доброй ночи всем, словил вылет

Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ...s.t.a.l.k.e.r\gamedata\scripts\dialog_manager.script:283: attempt to perform arithmetic on field 'phrase' (a string value)

 

 

 

 

Предыстория: есть сталкер-трейдер, соответственно, конфиг торговли. Самое интересное, что при покупке чего-либо ассортимент не обновляется (save\load ничего не дают), а самое главное, если сохранится после покупки и поговорить - вышеописанный вылет. А диалог один единственный - стандартный hello_dialog.

 

Собственно, вопрос один: что это за вылет, с чем связан.

 

Сталкер - наше всё!

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

Во-первых, в следующий раз подобный пост без спойлера потру.

Во-вторых, что мешает узнать проверив это собственно ручно?

 

Про спойлер забыл, извиняйте...

 

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

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

Старлей

Проверка (лично мне) нужна для одноразового выполнения функции.

Подробнее можно узнать у Malandrius, это он юзал этот способ...

 

 

 _Val_

Почему инфопоршень не выдается??? У меня проверяет и выдает. Если не выдается значит функция у тебя не стартует.

Жизнь следует измерять поступками, а не временем...

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

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

Сделал всё именно так, как описано в посте 11081. За исключением объекта спавна естественно. Ну понятно, что функция не запускается, раз поршень не выдается...

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

@losiara, да ну начерта фигней-то страдать? Пишешь проверку по level.name() и все, а такая порнуха как у тебя использовалась в некоторых модах 2008 года... Не, ну на вкус и цвет конечно...Но все же. Очень трудно бывает отследить ход и логику действий при твоем подходе, ковырял один мод такой, где использована подобная конструкция... эх и намучался, думайте о тех, кто будет ковырять ваши моды в конце-то концов :)

  • Нравится 1
Ссылка на комментарий

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

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

Два вопроса:

1). Если я правильно понимаю, то: репутация - это параметр ГГ по отношению к группировкам, а благосклонность - это параметр ГГ по отношению к конкретному НПСу ?

 

2). Имеется добавленный мною НПС, приписан к гулагу, ему прописаны квесты(не регулярные) для ГГ. При их успешном выполнении будет-ли ГГ автоматически(движково\по умолчанию) начисляться репутация и\или благосклонность ? Или надо самому начислять и то и другое по факту выполнения  ?



malandrinus
 

при каждом заходе актора на какой-то уровень

можно уточнение? Имеется в виду именно "заход на уровень", т.е. появление ГГ на уровне через какой-то из левел-чейнджеров или будет срабатывать и простая загрузка сохранения на этом уровне ?

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

AndreySol,
1. Репутация - это отдельное число, собственно репутация ГГ в глазах общественности. Ближайшим аналогом является карма в фоллауте. Благосклонность - это смотря что ты имеешь в виду. Есть personal goodwill, это личное отношение одного персонажа к другому. Есть community goodwill, соответственно отношение группировки к конкретному персонажу, есть ещё отношение группировки к группировке. Всё это плюс добавка от ранга складывается в одно число - итоговое отношение. Если оно больше нуля - персонаж "позеленеет", меньше - "покраснеет" и станет атаковать. Ноль - будет серый.

Загляни в этот файл.
config/creatures/game_relations.ltx
Там в комментах разрабы написали полную формулу и там же все таблички, по которым вычисляются части этой формулы.
 

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


Заход на уровень - это попадание туда любым способом. Не помню только наверняка, сработает ли при повторном заходе. Вроде как сработает тоже. Но если уже находишься на уровне, то загрузка на этом уровне не приведёт к повторному срабатыванию. В общем неудобная и бесполезная штука - эти скрипты уровня.

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

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

malandrinus

 

2. По-моему, любой эффект от задания надо прописывать в этом задании явно, как собственно эффект или эффект от фразы при сдаче задания 

 

А так называемые регулярные задания, ну типа как у Сидора - принеси то, убей того, найди это ? Там как идет начисление всех этих благосклонностей и репутации ?

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

VVV32768, не совсем понятно, с чем ты не согласен. Если игрок уже находится на уровне и этот скрипт уже сработал, то второй раз он не сработает, пока не уйдёшь с уровня и не вернёшься на него ещё раз. С этим не согласен?

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий
Но если уже находишься на уровне, то загрузка на этом уровне не приведёт к повторному срабатыванию

А вот тут не соглашусь. В пределах уровня/локи срабатывает на любой заход, буть то просто переход на соседнюю локу или прямая загрузка с сейва, c добавлением префетча по схеме камрада Старлей.

P.S. Извиняюсь, редакция постов иногда клинит.

malandrinus я именно о повторной загрузке говорю.

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

Безглючная работа компа и модов, зависит от присутствия у юзера драйверов mozgi.sys и pryami_hands.vxd.

 

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

 

 


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

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

@AndreySol, так сложно в менеджер посмотреть? Вся награда и прибавки к репутации, рангу и etc. прописаны в task_manager.ltx и черпаются оттуда. При создании любого(!) квеста награда должна задаваться явно(!), как это уже говорилось выше, только в зависимости от типа квеста(т.н. однотипный, или же полностью свой) награда задается по разному, только и всего. Хотя если приколоться, то можно и свой аналог написать под свои нужды...ну тут уже воля фантазии.

 

Сегодня/завтра покопаюсь с goodwill'ами, потестирую и напишу как что работает. Пока в теории видно, что функционал методов установки отношений хорошо настраивается, а так же не используется весь функционал, который прописан... правда работает он, или нет, я пока не знаю. 

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

Особо не ковырялся, но вроде там все и так ясно, параметры пока не тестировал, внесу кое какие разъяснения. Коридор изменения коэффициента отношений относительно группировки -3000, 1000; относительно персонажа -1000; 1000, скоро посмотрю для гулагов этот диапазон. goodwill ничем не отличается от relation, просто relation завязан на константы ALife::ERelationType, эти константы можно менять в конфиге. goodwill(game_object*) и general_goodwill(game_object*) эквивалентные функции, по крайней мере я пока отличий не выявил. 

Для гулагов функции с goodwill применяются такие же, как к группировкам.

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

@Карлан, не стОит засорять топик и мозги другим подобными постами. Если уж так хочется донести до других то, что им неведомо, то "особо не ковырялся, но вроде там" ... "пока не тестировал" - ну ни как не выжется с "внесу кое какие разъяснения". Разъяснять свои домыслы оставь наверное себе, а в топик, если пишешь, то потрудись и покопаться и перепроверить!

Даже цифры в файле game_relations.ltx говорят о том, что упомянутые тобою "коридор" для community_goodwill ну никак не меньше +-5000! А то, что в том же файле этот "коридор" поделен на диапазоны (terrible ... excellent , и т,п.) не означает, что за упомянутыми границами идут недопустимые значения. Аналогично и для "персонального" goodwill - не приводи цифры с потолка...

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

И, заодно, перепроверил бы и пояснил бы другим, как зависят изменения персональных репутаций и/или благосклонностей, от групповых, дабы не возникало непоняток типа: "меняю/добавляю, а перс не становится дружелюбнее?"

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

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

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

Artos, так я коридоры как раз на практике и получал, методами change_xxx менял goodwill для группировок и персонажей как в минус, так и в плюс. И вот по достижению этих границ у меня далее goodwill не шагал. Ну я пишу то, что получил сам, возможно я не прав. А по зависимостям все подробно описано в конфиге, тут уже только для особо одаренных разъяснения нужны я считаю. Ну а на вопросы "меняю/добавляю, а перс не становится дружелюбнее?" какой смысл отвечать? Групповой goodwill - это групповой, а персональный - это персональный, так ясное дело если у группировки goodwill -3000, а ты персу этой группировки кинешь +1000 то он как был врагом, так и останется. 
 

 

Все же я готов поспорить на счет неправильности моих коридоров, т.к. я практикой их получал, и конфиг это подтверждает(иными словами жду весомых аргументов):

personal_goodwill_limits = -1000, 1000
community_goodwill_limits = -3000, 1000 

Возможно максимальные коридоры +-5000, но заданы они именно так.

 

P.S. пишу я не ради того что бы кого-то запутать/оповестить, а что бы корректировать русло своих ковыряний по поводу данных методов, а то видишь, я уже коридоры не те нашел, я же не знал. Ранее просто спрашивал, никто не ответил, вот приступил к изучению сам. Еще надо покопаться в конфиге получше и вывести зависимости отношений персональных благосклонностей к групповым.

 

P.S.S. Можно сразу узнать, reputation_relations и rank_relations если прописать(в конфиге), то они будут учитываться? Просто как проверить на учитывание я пока смутно представляю...

 

Возможно открываю америку, но вот это применимо для ТЧ:

friend_kill_reputation = -40
neutral_kill_reputation = -15
enemy_kill_reputation = 0

...продолжаю дальше ковырять конфиги.

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

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

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

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

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

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

Войти

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

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

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