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

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


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

Всем чистого неба коллеги

 

вопросец - в секции торговли для соответсвующих НПС есть такие строки

Скрытый текст

buy_condition = trade_generic_buy
sell_condition = {+mil_lukash_dolg_task_complete} trade_friend_sell, trade_generic_sell
buy_supplies = {+mil_leader_quest2_complete} supplies_exp_2,{+mil_lukash_dolg_task_complete} supplies_exp_1, supplies_generic

 сдесь как говориться записаны поршни, по которым происходит смена асортимента. 

 

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

 

Если да - то какие данные нужно писать взамен инфопоршней?

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

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

Если сравнивать с квестами, parse_condition понимает и ссылки на проверочные функции из [xr_conditions.script] – можно попробовать вместо ±инфо условие вида =fx_name с оформлением в указанном скрипте.

  • Согласен 1
  • Полезно 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

Задался целью сделать открываемыми все ящички, дверцы шкафов и пр. в Зоне. Собственно, всё работает, только вот например на базе "Свободы" в здании на втором этаже есть тумбочка с выдвижным ящичком (он вроде один такой судя по визуалу в спавне), который хоть и даёт возможность открыть и закрыть его (надпись меняется), но визуально не выдвигается. Это копать ph_door.script нужно?

Добавлено  Купер,

Исправленные модели выдвижных ящиков для ТЧ от @h0N0r здесь.

Ссылка на комментарий
36 минут назад, Капрал Хикс сказал:

есть тумбочка с выдвижным ящичком

ЕМНИП эта та же тумбочка что и у Борова стоит?

ЕМНИП_2 когда-то кто-то уже пытался сделать то-же самое 

и бодался с этой тумбой - кто, где и когда не помню, склероз видимо

но вроде-бы все дело было в самой модели 

то-ли глючная она или не доделана что-то в ней

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

Есть чудесная логика:

Скрытый текст

[logic]
active = remark
combat_ignore = combat_ignore
on_death = death

 

[remark]
target = esc_baza_novice_walk_3, 0
meet = no_meet
snd = esc_zombie_1
combat_ignore_cond = always
on_signal = sound_end | remark@2
on_info = {+esc_zombie_off} walker

 

[remark@2]
target = esc_baza_novice_walk_3, 0
meet = no_meet
snd = esc_zombie_2
combat_ignore_cond = always
on_signal = sound_end | remark
on_info = {+esc_zombie_off} walker

 

[walker]
path_walk = esc_shpil_walk
path_look = esc_shpil_look
combat_ignore_cond = always
on_info = {+esc_sidor_have} walker@2

 

[walker@2]
path_walk = esc_shpil_walk
path_look = esc_shpil_look
combat_ignore_cond = always
meet = no_meet

 

[death]
on_info = %+esc_sidor_have2%

 

[combat_ignore]
combat_ignore_cond = always

Как сделать чтобы remark был зациклен и НПС говорил до того момента как получит инфопоршень? А то переходит в remark@2 и затыкается.

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

Ссылка на комментарий
1 час назад, imcrazyhoudini сказал:

Как сделать чтобы remark был зациклен

Можно добавить промежуточную секцию с вилкой на возврат по небольшому таймеру (если требуется пауза) или переход дальше:

[remark@1]
target = esc_baza_novice_walk_3, 0
meet = no_meet
combat_ignore_cond = always
on_timer = 5 | remark
on_info = {+esc_zombie_off} walker

А из секции remark сделать переход на remark@1.

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

@Kirgudu а почему мой вариант не работает?

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

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

@imcrazyhoudini погоди, не обратил внимание, что во втором ремарке у тебя тоже звук с возвратом на начало по окончании.
Тогда моё предложение можно не принимать во внимание, оно неверное по сути. Не знаю, без собственноручной пробы в игре сказать не могу. Пусть более искушённые в логике отвечают. )

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

@Norman Eisenherz в кондишине стоят проверки на ранг ботов, под ранг ГГ ничё такого нет

 

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

Скрытый текст

function gar_actor_rank_newbie(actor,npc)
    local actor = db.actor
    if actor:character_rank() < 300 then
        return true
    end
end

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

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

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

Не понимаю, зачем упираться в готовые функции и в чем разница между ГГ и NPC при общем методе проверки ранга.

[trade_npc.ltx]
-- заменить инфо логической функцией
sell_condition = {=fx_name} npc_sell_list, …


[xr_conditions.script]
-- добавить описание
function fx_name()
	return db.actor:character_rank() < 300
end

 

  • Полезно 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

@Norman Eisenherz не всё так просто походу

вот прописал в конфигах продавца условия

Скрытый текст

[trader]
buy_condition = trade_generic_buy
sell_condition = {=actor_friend} trade_friend_sell, trade_generic_sell
buy_supplies = {=actor_rank_veteran} supplies_exp_2, {=actor_rank_experienced} supplies_exp_1, supplies_generic

Скрытый текст

-- функции на проверку ранга актора
function actor_rank_newbie()
    return db.actor:character_rank() < 300
end

function actor_rank_experienced()
    return db.actor:character_rank() < 600
end

function actor_rank_veteran()
    return db.actor:character_rank() < 900
end

function actor_rank_master()
    return db.actor:character_rank() > 900
end
 

на старте у меня ГГ новичок, но в продаже появляются предметы, что должны ток на ранге опытный и ветеран появлятся

  • Смешно 1

Лучше сделать мод с 0, чем пытаться залатать багованный.

Ссылка на комментарий
2 часа назад, DarkSnowder сказал:

buy_supplies = {=actor_rank_veteran} supplies_exp_2, {=actor_rank_experienced} supplies_exp_1, supplies_generic

Прочитай вслух свои условия.

Если ранг ГГ меньше 900, то продавать ему как ветерану. <= в начале игры с рангом ноль, срабатывает это условие
Если ранг ГГ больше или равен 900 и меньше 600, то продавать ему как опытному.
Если ранг ГГ больше или равен 900, то продавать стандартно

 

Я бы инвертировал условия или в конфиге или в функциях. Например, так:

buy_supplies = {!actor_rank_veteran} supplies_exp_2, {!actor_rank_experienced} supplies_exp_1, supplies_generic 

Тогда звучало бы более логично:

Если ранг ГГ больше или равен 900, то продавать как ветерану.

Если ранг ГГ меньше 900 и больше или равен 600, продавать как опытному.

Если ранг ГГ меньше 600, продавать стандартно.

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

@abramcumner в игре ранговая система вроде как такая

от 0 до 300 - новичок, от 300 до 600 - опытный, от 600 да 900 ветеран, а все кто свыше 900 мастера

 

то бишь как я хочу сделать - если ГГ новичок (то бишь его ранг не достиг 300 - продавать по таблице supplies_generic, если ранг ГГ опытный (от 300 до 600) - асортимент идёт по таблице supplies_exp_1, на а если свыше 600 - то продавать по supplies_exp_2.

Лучше сделать мод с 0, чем пытаться залатать багованный.

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

@DarkSnowder тогда надо переработать функции, чтобы они соответствовали системе:

 -- функции на проверку ранга актора
function actor_rank_newbie()
    return db.actor:character_rank() < 300
end

function actor_rank_experienced()
    local rank = db.actor:character_rank()
    return rank >= 300 and rank < 600
end

function actor_rank_veteran()
    local rank = db.actor:character_rank()
    return rank >= 600 and rank < 900
end

function actor_rank_master()
    return db.actor:character_rank() >= 900
end
  • Согласен 2
  • Полезно 1
Ссылка на комментарий

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

… = {=actor_rank(min_rank)} …

 

function actor_rank(min)
	local max = min + 300
	if min == 900 then
		max = min *10		-- на всякий случай
	end

	local rank = db.actor:character_rank()
	return (rank >= min and rank < max)
end

 

Изменено пользователем Norman Eisenherz
  • Полезно 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий
4 часа назад, Norman Eisenherz сказал:

Может, передавать ранг как аргумент, чтобы обойтись одной функцией?

Тогда, если правильно помню, функция должна содержать в своём объявлении ещё два параметра, которые в исходном её виде неявно опускаются, а при передаче аргумента обязательны:

function actor_rank(actor, npc, min)
  --...
end

при этом желательно проверить, в каком виде приходит в функцию аргумент min: числа или таблицы с единственным элементом.

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

@abramcumner ну чёт не срабатывает проверка видимо

Скрытый текст

buy_condition = trade_generic_buy
sell_condition = {!actor_friend} trade_friend_sell, trade_generic_sell
buy_supplies = {!actor_rank_veteran} supplies_exp_2, {!actor_rank_experienced} supplies_exp_1, supplies_generic

Скрытый текст

-- функции на проверку ранга актора
function actor_rank_newbie(actor, npc)
    return db.actor:character_rank() < 300
end

function actor_rank_experienced()
    local rank = db.actor:character_rank(actor, npc)
    return rank >= 300 and rank < 600
end

function actor_rank_veteran(actor, npc)
    local rank = db.actor:character_rank()
    return rank >= 600 and rank < 900
end

function actor_rank_master(actor, npc)
    return db.actor:character_rank() >= 900
end

ГГ спавнится с рангом 0, а всё равно в продаже предметы, что должны появляться при условии опытный и ветеран

Лучше сделать мод с 0, чем пытаться залатать багованный.

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

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

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

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

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

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

Войти

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

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

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