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

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


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

@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, чем пытаться залатать багованный.

DarkSnowder.gif

Ссылка на комментарий
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.gif

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

@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, чем пытаться залатать багованный.

DarkSnowder.gif

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

народ, подскажите по братски

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

список есть, а взять их невозможно

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

[jaba_find_item_1]
type = find_item
community = actor
;condlist = {+agroprom_military_case_done}
text = st_jaba_recover_item_1_text
description = st_jaba_recover_item_1_descr
parent = jaba
target = cher_quest_wpn_pm_1
reward_money = 1500
reward_reputation = +15
reward_rank = 2
time = 86400

 

[jaba_find_item_2]
type = find_item
community = actor
;condlist = {+agroprom_military_case_done}
text = st_jaba_recover_item_2_text
description = st_jaba_recover_item_2_descr
parent = jaba
target = cher_quest_wpn_ak74u_1
reward_money = 3000
reward_reputation = +15
reward_rank = 5
time = 86400

 

[jaba_find_item_3]
type = find_item
community = actor
;condlist = {+agroprom_military_case_done}
text = st_jaba_recover_item_3_text
description = st_jaba_recover_item_3_descr
parent = jaba
target = cher_quest_af_cristall_flower_1
reward_money = 6000
reward_reputation = +15
reward_rank = 3
time = 86400

 

[jaba_find_item_4]
type = find_item
community = actor
;condlist = {+agroprom_military_case_done}
text = st_jaba_recover_item_4_text
description = st_jaba_recover_item_4_descr
parent = jaba
target = cher_quest_scout_pda
reward_money = 15000
reward_reputation = +15
reward_rank = 10
time = 86400

 

[jaba_find_item_5]
type = find_item
community = actor
;condlist = {+agroprom_military_case_done}
text = st_jaba_recover_item_5_text
description = st_jaba_recover_item_5_descr
parent = jaba
target = cher_quest_killer_outfit_1
reward_money = 8000
reward_reputation = +15
reward_rank = 7
time = 86400

 

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

DarkSnowder.gif

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

См. условия выдачи заданий в CRandomTask:check_task_props(task_id): активные задания того же типа, отсрочка, наличие целей на сервере.

 

По-хорошему, надо вывести часть таблицы task_info и проверить параметры этих заданий: для выдачи должно быть status=normal и enabled_props = true.

  • Нравится 2

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

Шпаргалка

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

Здравствуйте, платформа Тч. Скачивал от сюда: https://www.playground.ru/stalker_shadow_of_chernobyl/file/s_t_a_l_k_e_r_v0_4_x_ray_sdk-857862
Проблема в том, что когда я прописываю текст персонажу(все делал по туторам) и когда пишу название своего диалога, игра вылетает. Несколько раз пробовал и ничего.

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

Перемещено.

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

@dPlayer , мне чатджипити такое предложил:

-- Функция для убийства всех NPC определённой группировки
function kill_faction_members(faction_name)
    -- Получаем всех онлайн-NPC на текущей локации
    local npc_list = alife():objects()

    -- Перебираем всех существ
    for _, npc in pairs(npc_list) do
        -- Проверяем, что это персонаж (не объект)
        if npc:section() == "actor" or npc:section() == "stalker" then
            -- Проверяем группировку NPC
            if npc:character_community() == faction_name then
                -- Применяем смертельный урон
                npc:hit(10000, npc, nil, "hit_fire_wound")  -- 10000 урона точно убьёт
            end
        end
    end
end

-- Пример вызова функции для группировки "dolg" (Долг)

kill_faction_members("dolg")


 

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

@Kirgudu, да. Чат нужно учить и учить. Разумеется, так это работать не будет. Но примерное представление, что к чему, оно даёт.

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

@dPlayer , есть функция для убийства NPC, в онлайне точно сработает, в оффлайне не знаю уже, как и что.

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

Подскажите пожалуйста, как высчитываются вот эти вот значения оружия:

 V6GP-AfR0hk.jpg?size=303x60&quality=96&s

 

может формула какая-то, или что-то вроде того?

God save Hatsune Miku!

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

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

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

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

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

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

Войти

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

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

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