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

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

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

@dPlayer

custom_data = <<END

[spawner]

cond = {+agroprom_military_case_have -agroprom_military_case_done}

[smart_terrains]

none = true

[logic]

active = walker

[walker]

path_walk = solider_ambush_2_walk

path_look = solider_ambush_2_look

 

 

custom_data = <<END

[spawner]

cond = {+agroprom_military_case_have -agroprom_military_case_done}

[smart_terrains]

none = true

[logic]

active = walker

[walker]

path_walk = solider_ambush_1_walk

path_look = solider_ambush_1_look

 

 

custom_data = <<END

[spawner]

cond = {+agroprom_military_case_have -agroprom_military_case_done}

[smart_terrains]

none = true

[logic]

active = walker

[walker]

path_walk = agr_not_gulag_patrol_walk_2

path_look = agr_not_gulag_patrol_look_2

END

 

 

Аmbush я почему-то переводил как укрытие

Правильный перевод - засада.

Укрытие это - shelter или hiding place

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

"Кругом зомби.....у меня кончаются патроны...."

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

Как установить значение здоровья ГГ? Конструкция типа

function gar_ricochet_wound()
db.actor.health = -0.9
end

работает только так, если поставить

db.actor.health = 0.1

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

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

@dPlayer, чтобы установить здоровье, например, в 0.1 напиши

db.actor.health = 0.1 - db.actor.health
Изменено пользователем Charsi
  • Спасибо 1
Ссылка на комментарий

Секция actor_dialogs я так понимаю не работает в релизе? Или диалоги всё равно надо прописывать в характер_деск? Просто хочется использовать стандартные профили НПС из оригинала, как им прописать несколько диалогов, в meet не выходит прописать больше 1 диалога в схеме, т.е. конструкция вида

meet_dialog = dialog1, dialog2

даёт доступность только dialog1.

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

@dPlayer, а можешь сказать применение? Просто нужные диалоги же итак прописываются в профиль НПС.

GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Куча раритетных модов на моем облаке — на память о былом.

JNCR — Coming Soon...

i5-10400F / RAM 16GB / GTX 1660 Super / 1TB HDD+256GB SSDm2 / Win 11 PRO x64 / Samsung Curved 27" x2

Ссылка на комментарий
Секция actor_dialogs я так понимаю не работает в релизе?

Судя по тому, что в ф-ции init_meet(xr_meet.script) нет никаких упоминаний про actor_dialogs - таки да, не работает.

 

meet_dialog = dialog1, dialog2... даёт доступность только dialog1.

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

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

 

 

meet_dialog устанавливает новый стартовый диалог, а он в отличии от actor-диалогов может быть только один.
По условию их может быть n-ое количество.
meet_dialog = {-esc_stalker_most_leader_dialog_start_compl} esc_stalker_most_leader_dialog_start, {+esc_stalker_most_leader_dialog_start_compl} esc_stalker_most_leader_def_dialog

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

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

 

 

По условию их может быть n-ое количество.

К каждому выходит какое-то условие надо, а просто так не включатся?

 

 

а можешь сказать применение?

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

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

 

 

К каждому выходит какое-то условие надо, а просто так не включатся?

Разумеется. Если прописать через запятую три диалога без условий, то у тебя всегда будет играться первый. Можно не писать эти условия в самой секции meet, напиши в скелете диалога, чтобы он не был цикличным. Сделай в начале проверку на отсутствие инфо, которое выдашь в конце диалога. Как вариант.

  • Спасибо 1

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

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

 

 

К каждому выходит какое-то условие надо

Вообще-то это логично. Делает ГГ что-то, получает один диалог, не делает - другой. Ну и до бесконечности..

А ты хотел, чтобы было доступно сразу несколько диалогов без каких-либо предусловий?

  • Спасибо 1
Ссылка на комментарий

 

 

По условию их может быть n-ое количество.

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

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

Я про это и толкую. Диалог начинает непись, всегда будет один диалог, тут все логично. Видимо, не так поняли друг друга.

 

а он в отличии от actor-диалогов может быть только один.

Сначала мне это показалось как вообще один, т.е. после него ты никаких диалогов заюзать не сможешь. :)

 


 

Вот еще пример для @dPlayer c довольно емкой структурой условий:

meet_dialog = {+mechanic_start_polter_quest -esc_mechanic_night_polters_complete} esc_mechanic_quest_polters_compl, {+esc_mechanic_repair_dialog_done -mechanic_start_polter_quest !check_night_time} esc_mechanic_quest_polters_day, {+esc_mechanic_repair_dialog_done -mechanic_start_polter_quest =check_night_time} esc_mechanic_quest_polters_night, {-esc_technic_inspect_obj_second_compl +technic_inspect_object_complete} esc_technic_inspect_obj_second, {+esc_defence_village -esc_technic_inspect_obj_third_compl +esc_technic_inspect_obj_second_compl} esc_technic_inspect_obj_third, {-esc_technic_meet_possible} esc_technic_default_no_meet_dialog, {+esc_technic_meet_possible} esc_technic_default_meet_dialog
Изменено пользователем BoBaH_671
  • Спасибо 1

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

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

 

 

А ты хотел, чтобы было доступно сразу несколько диалогов без каких-либо предусловий?

Конкретно сейчас нет, а в целом да, хотелось бы любое кол-во диалогов. Предусловия не важны, всё равно чаще выходит так, что без прекондишенов нужен только 1 разговор с НПС, а потом всяко появятся условия.

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

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

Где-нибудь в xr_conditions пишем такой код:

local random_dialog = nil
function get_random_dialog(actor, npc, p)
	local max_count = p and p[1] or 1

	if random_dialog == nil or random_dialog.counter >= max_count then
		random_dialog = {dialog_set = false, counter = 1}
	else
		random_dialog.counter = random_dialog.counter + 1
	end

	math.randomseed(time_global())
	if not random_dialog.dialog_set then
		random_dialog.dialog_set = random_dialog.counter == max_count or math.random(random_dialog.counter, max_count) == max_count
		return random_dialog.dialog_set
	else
		return false
	end
end 

Затем в логике пишем так (пример для трёх равнозначных диалогов):

meet_dialog = {=get_random_dialog(3)} dialog1, {=get_random_dialog(3)} dialog2, {=get_random_dialog(3)} dialog3 

Важно:

1. аргумент, передаваемый в функцию, должен быть равен общему числу диалогов;

2. функцию обязательно надо использовать в том числе для последнего диалога в цепочке, чтобы не сбился внутренний счётчик;

3. дополнительные условия (например инфопорции) при таком подходе использовать нельзя;

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

 

При таких последовательных вызовах функция случайным образом назначит активным один из диалогов.

При повторной попытке заговорить счётчик диалогов сбросится и случайный выбор будет сделан заново.

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

@Kirgudu, как вариант, можно ещё использовать вероятность ~. Не? :)

meet_dialog = {~30} dialog1, {~60} dialog2, {~10} dialog3 
  • Согласен 1

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

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

@BoBaH_671, вот понятия не имею. Но не исключено. Почему бы не проверить, если есть возможность? ;)

Если сработает (сам посмотреть не могу) - это, пожалуй, будет оптимальней, чем то, что я понаписал выше. Что ж, хотя бы поупражнялся. :D

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

@Kirgudu, сработало. Только у меня диалог после открытия практически сразу исчезает. Быть может, эта штука висит на апдейте даже во время диалога? Тогда проверка возвращает false, и диалоговое окно закрывается. Надеюсь, ты понял, что за несвязную чушь я сказал. :D

Думаю, так оно и есть. Играя в моды, сдавая квест на поиск какого-то предмета, я открывал окно диалога, продавал предмет, и диалог после закрытия торговли сбрасывался. С вероятностью так же, на апдейте висит, похоже.

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

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

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

@Stalkeruga_238,

function search_weapon_complete1(actor, npc)
if db.actor ~= nil then
if db.actor:object("ПРЕДМЕТ") then
db.actor:give_info_portion("ПОРШЕНЬ")
return true
end
end
return false
end
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

AMK-Team.ru

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