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

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

  Информация (Показать)

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

  Читать рекомендуется. (Показать)

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий
  27.02.2024 в 09:33, Kirgudu сказал:

iterate_inventory_box

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

на ап про спрашивал тоже про это, тоже написали про iterate_inventory_box

  Показать

но мне бы пример живой увидеть хотя бы

«Если долго мучиться, что-нибудь получится»
Охотник за артефактами|Crow Game Killer
img.php?nick=Pavel2000&sert=2&text=t0

Ссылка на комментарий
  27.02.2024 в 11:00, Pavel_2000 сказал:

но мне бы пример живой увидеть хотя бы

Живой пример использования в ЗП (оригинал) можно увидеть здесь:
xr_effects.jup_b202_inventory_box_relocate(actor, npc)

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

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

@Kirguduвидел его, пока искал в скриптах всё связаное с "inventory_box"

нашёл вот 

function item_in_inventory_box(actor, npc, p)
--p[1] - стори_ид_ящика
--p[2] - имя_предмета
local inv_box = get_story_object(p[1])
local items_table = {}
local item_in_box = false

local function add_items(inv_box, item)
   table.insert(items_table, item)
end

inv_box:iterate_inventory_box(add_items, inv_box)

for k,v in pairs(items_table) do
   if v:name() == p[2] then
      item_in_box = true
   end
end

return item_in_box

end

 

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

«Если долго мучиться, что-нибудь получится»
Охотник за артефактами|Crow Game Killer
img.php?nick=Pavel2000&sert=2&text=t0

Ссылка на комментарий
  функция для xr_condition (Показать)

сказали что это должно работать но я не понимаю как оно работает

«Если долго мучиться, что-нибудь получится»
Охотник за артефактами|Crow Game Killer
img.php?nick=Pavel2000&sert=2&text=t0

Ссылка на комментарий
  27.02.2024 в 11:00, Pavel_2000 сказал:

Суть такова:

Тебе подсказали правильно.

  27.02.2024 в 12:04, Pavel_2000 сказал:

нашёл вот

Нашел правильно. Это сработает (Если надо искать не по имени объекта а по секции, просто меняешь :name() на :section()

  27.02.2024 в 14:20, Pavel_2000 сказал:

сказали что это должно работать

Правильно сказали. Это работает. Как - ровно так как ты и просил. А как надо?)

 

  27.02.2024 в 12:04, Pavel_2000 сказал:
inv_box:iterate_inventory_box

В порядке (возможно) полезной доп.инфы.

1) В ОГСР ЕМНИП, метод iterate_inventory выполняет то же самое. И для актора, и для нпс, и для ящиков. Я это лично сам туда заносил, если не выпилили то значит работает.

2) Методы iterate_inventory и iterate_inventory_box - это методы клиентского объекта. Если ящик не в онлайне, то они не сработают естественно. В этом случае остается только перебор по parent_id серверного объекта.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

@Zander_driver  мне нужно было проверить наличие артефакта в invectory_box 

я добавил эту функцию в xr_condition начал вызывать из логики

on_press = {=item_in_inventory_box(box_b400_story_id:af_oasis_heart)} ph_button@switch

и ничего не происходило 

поменял на на :section() и всё заработало, почему так?

и ящик в онлайне

«Если долго мучиться, что-нибудь получится»
Охотник за артефактами|Crow Game Killer
img.php?nick=Pavel2000&sert=2&text=t0

Ссылка на комментарий
  27.02.2024 в 14:45, Pavel_2000 сказал:
af_oasis_heart

Наверное потому, что это секция. А не имя.

  26.02.2024 в 23:18, Pavel_2000 сказал:

проверка на наличие определённого предмета

Формулируйте свои желания правильно. Определенного - по имени? секции? ID? story_id? Еще по какому признаку?

:)

  • Спасибо 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

ну я прошу прощения (я не очень сильно во всём этом разбираюсь) и в любом случае большое спасибо за помощь

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

Правила форума, 2.1.1 (оффтоп).
Для "Спасибо" в каждом сообщении справа-внизу есть кнопки. Старайтесь, пожалуйста, пользоваться ими.

  • Спасибо 1

«Если долго мучиться, что-нибудь получится»
Охотник за артефактами|Crow Game Killer
img.php?nick=Pavel2000&sert=2&text=t0

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

Здравствуйте, у меня есть скрипт на телепортацию который вызывается из gametutorials при использовании рестриктора

function gaus_laz_v_gaus()
    if xr_conditions.actor_in_zone(actor, npc, {"gaus_laz_v_gaus_sr"}) then
	    db.actor:give_info_portion("af_run_tutor")
        teleport_actor(nil, nil, {"gaus_prolez_v_gaus_way","gaus_prolez_v_gaus_look"})
	end
end

 

[logic]
active = sr_idle@start

[sr_idle@start]
on_info  = {=actor_in_zone(gaus_laz_v_gaus_sr)} %=run_tutorial(gaus_laz_v_gaus_tutor)%
on_info2 = {+af_run_tutor} sr_idle@tutorial %=run_postprocess(black:666)%

[sr_idle@tutorial]
on_info = {!actor_in_zone(gaus_laz_v_gaus_sr)} %=stop_tutorial%
on_info2 = {+af_run_tutor} %-af_run_tutor%
on_game_timer = 30 | sr_idle@start %=stop_postprocess(666)%

прописал в логике рестриктора запуск пост процесса на чёрный экран и при использовании актёр мгновенно телепортируется и это выглядит не очень

 как можно сделать задержку телепортации на две секунды?

а именно скорее всего мне нужно таймер в скрипт добавить

«Если долго мучиться, что-нибудь получится»
Охотник за артефактами|Crow Game Killer
img.php?nick=Pavel2000&sert=2&text=t0

Ссылка на комментарий
  28.02.2024 в 13:22, Pavel_2000 сказал:

как можно сделать задержку телепортации на две секунды?

function gaus_laz_v_gaus()
  if xr_conditions.actor_in_zone(actor, npc, {"gaus_laz_v_gaus_sr"}) then
    db.actor:give_info_portion("af_run_tutor")
    local timer = time_global() + 2000 -- установка маркера времени на 2 секунды вперёд
    level.add_call(
      function() return timer < time_global() end, -- проверка, что текущее время стало больше, чем установленный маркер
      function() teleport_actor(nil, nil, {"gaus_prolez_v_gaus_way","gaus_prolez_v_gaus_look"}) end -- действие, как только проверка вернула true
    )
  end
end

 

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

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

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

Бьюсь над тем, чтобы в однотипных квестах по поиску предметов можно было искать не только броню и оружие...

Собственно, подсказали когда-то тут:

  мои попытки: (Показать)

Быть может, можно как-то заполнить таблицу local registred_items = {} в начале se_item.script? Но как? Пробовал вписать detector_simple = true и 0 результата.

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

[task_manager.script] register_target() выбирает подходящие объекты при движковой регистрации и добавляет их id в task_info[задача].task_objects – куда-то сюда надо копать

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

Шпаргалка

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

@Капрал Хикс 

Можно поправить task_manager.script:

CRandomTask:action_give_task
	...
	-- заремить этот блок, т.к. метки ставятся только на существующий объект
	--elseif task_desc.type == "find_item" then
	--	objective:set_map_hint(task_desc.text)
	--	objective:set_map_location("find_item_location")
	--	objective:set_object_id(task_desc.selected_target)

CRandomTask:check_task_props
		...
	elseif self.task_info[task_id].type == "find_item" then
		if self.task_info[task_id].target_objects == nil or table.getn(self.task_info[task_id].target_objects) == 0 then
			-- всегда true, чтобы задание было доступно, даже если предмета нет в игре
			self.task_info[task_id].enabled_props = true
			return
		end

Минус - не будет отметок на предметах.

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

Вспомнил вот… Для заданий artefact и monster_part список target_objects не заполняется и метка не создается, а возможность выдачи определяется только простыми проверками "наличие выданных заданий такого типа + отсрочка". Для нового задания с поиском обычной брони (без секции в all.spawn) должно хватить копии конфигов и скриптов задания artefact / monster_part под другим именем.

  • Полезно 1

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

Шпаргалка

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

@Norman Eisenherz , работает! Осталось доработать тексты, но в целом на поиск детектора задание взялось, проапдейтилось и сдалось.

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

Проверил в ТЧ, подтверждаю (стоило сразу так сделать вместо советов "может быть").

Полный список правок, если кому-то интересно:

• [game_tasks_by_vendor.xml] – новый тип задания "parent_new_type"

• [task_manager.ltx] – конфиг нового задания, обязательно с заголовком в начале файла

• [task_manager.script] – копия строк с обработкой задания "artefact" => "new_type"

  • Нравится 1
  • Полезно 3

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

Шпаргалка

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

@Norman Eisenherz , ещё строка find_item (меняем на свой тип задания) = "return_for_reward_bring", - текст "принести заказчику обещанное".

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

Не соглашусь: задание "find_item" имеет дополнительную обработку "есть на сервере, но не в кармане заказчика" – надо копировать или "artefact", или "monster_part".

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

Шпаргалка

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

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

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

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

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

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

Войти

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

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

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