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

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

1. ED (hex) = 237 (16^1 * 14 + 16^0 * 13), иначе не сходится.

2. Картинка сложилась: в [lua_help.script] указаны действующие ссылки и неправильные значения, а при проверке if dik == DIK_keys.MOUSE_1 и т. п. читаются движковые значения.

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

Шпаргалка

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

Подскажите, пожалуйста, можно ли делать проверку расстояния от актора до произвольных координат, не привязанных к игровому объекту?
Мне нужна просто проверка расстояния до заданной мной фиксированной точки на локации, не хотелось бы спавнить объекты без необходимости. Как это сделать правильно?
Anomaly 1.5.2. Вот пример (оно работает, если что):

function is_swamp()
	local actor = db.actor	
	local obj_pos = vector():set(44.860466003418,-3.8407301902771,-361.91436767578)
	if actor and obj_pos then
		if actor:position():distance_to(obj_pos) < 75 then
			log("ambient_sound: actor in swamp zone! ")
			--return true
		end
	end
end

 

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

В ТЧ через файловую систему:

local file = getFS():r_open(полный путь) или …($app_data_root$, "user.ltx")
local text = file:r_stringZ()
-- дальше разбирать полученный текст через string.find, string.match и прочие методы

 

В ЧН через библиотеку io:

local filename = "_appdata_\\user.ltx"

for line in io.iines(filename) do		-- построчное чтение
	local x = line:find(…)
	

 

Еще через консоль можно: get_console():get_тип(название параметра или привязки клавиши).

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

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

Шпаргалка

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

При одном параметре можно обойтись консолью. Если надо больше, требуется полное описание задачи.

  • Спасибо 1

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

Шпаргалка

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

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

 

--в начале скрипта
local outfit = false

--в кусок кода в функции при нажатии кнопки
if not outfit then
	item:set_condition(1)
	self:GetStatic("no_money"):SetText("Костюм отремонтирован")
    outfit = true
else
	self:GetStatic("no_money"):SetText("Закончились кевларовые пластины")
end

 

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

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

@Stalkersof разумеется, так и будет, поскольку при каждой загрузке из сохранения твоя строка в начале скрипта выполняется заново, и переменная приобретает первоначальное значение.

Чтобы этого не происходило, значение переменной нужно не просто присваивать, но также сохранять в сейве (и читать оттуда при загрузке).
Примеров достаточно на любой вкус, даже в оригинале: см. xr_logic.pstor_store / xr_logic.pstor_retrieve (но это не лучший из вариантов, разве что для единичного использования).

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

Здравствуйте. Интересует пару вопросов.

1. Есть ли у кого какой-либо парсер xml данных нпс по specific_character id, чтобы получить этим самым парсером данные по спавну оружия и предметов у конкретного нпс? (всё думаю сделать скриптовую замену спавна предметов нпсам при спавне, через условную Lua-таблицу. В теории можно было бы просто <supplies> закоментить и спавнить что хош уже в скриптах, но было бы здорово получить хоть какие то данные из xml, чтобы хоть как то не подтереть что квестовое ненароком)

2. Словил прикол с поведением зверушек. А именно: 1) заспавнил зверушку и перманентно её ослепил. (set_fov(0)) 2) далее просто сделал движение и зверушка меня услышала и начала бежать на меня. 3) Я убежал, аж за АИ-сетку, чтобы зверушка отстала от меня. 4) Зверушка отагрилась и уселась под кустом отдыхать 5) Самый сок: я возвращаюсь на АИ-сетку за овер9999 метров от неё, она начинает бежать на меня. Самое интересное что best_enemy == nil , а get_enemy == 0. По моему монстры не обнуляют что то у себя, тем самым и возникают проблемы с тем что они порой "видят спиной". Вот интересно  мнение спеца на подобное.

3. Монстры "видят спиной", как лечить? :)

4. Ребят, как реализовать рандомные апгрейды в ЗП на заспавненных предметах? В наличии есть m_netpk, но не знаю какой параметр и как "подкручивать" :russian_ru:

5. есть у кого рабочая схема работы подствольников для нпс на COC 1.4.22 ? 

6. в COC 1.4.22 когда нпс стреляют из РГ-6 то у них затем в некоторой области зависает danger_inertion: стоят тупо озираются и ничего больше не делают. Мало ли у кого есть правка. :happy:

7. Пытаюсь перенести музыку из бара на базе ЧН в ЧН - в ЗП COC 1.4.22. Столкнулся с проблемой при установке комментария на музыку . Использовал  oggcommentfix ver. 8 и ничего не вышло,звучит всё так же "из головы" а не от бара. Может кто подсказать в чём дело? Мб каким другим софтом коммент править?

... А наше дело маленькое - с ружьём да по болотам. (с)

Ссылка на комментарий
9 часов назад, Max_Raf сказал:

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

Для того чтоб составить луа-таблицу под ваши нужды, совершенно нет нужды пользоваться луа.

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

php, C++, или другие по вкусу. Пишете там свой парсер, он вам дает данные, а их уже Ctrl+C -> Ctrl+V в свой Lua-скрипт. Ну, я лично делал бы так.

Если все же категорически хочется юзать Луа - тут это обсуждалось.

  • Полезно 2

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

Кто-нибудь разбирал методы биндеров подробно?

 

1. Что такое net_Relcase и почему этот метод вызывается 10–20 раз подряд при спавне объекта, а после по 1–2 раза при обращении к инвентарю и прочих вроде бы не связанных с отдельным объектом действиях? Есть старый пост, но он мало похож на правду – метод net_destroy показывает, что объект находится в онлайне при всех вызовах net_Relcase. В движке под таким методом вроде как удаляются ссылки на объект.
2. При каких условиях вызываются методы net_import и net_export? Есть другой старый пост, но он, видимо, вообще не про биндеры.

3. Зачем нужен метод reinit(section), если ссылку на секцию объекта можно получить через self.object в методе reload, который вызывается при тех же условиях "спавн / онлайн"?
4. Обязательно ли выполнять обновление объекта через общий класс object_binder в методах reload, reinit и update?
5. Обязательно ли проверять объект через object_binder.net_spawn?
6. Обязательно ли удалять биндер через object_binder.net_destroy?
7. Почему для разрушаемых объектов вроде ящиков привязка событий через set_callback указана не в reinit, а в net_destroy?
8. Обязательно ли отключать обработку событий в net_destroy?

  • Нравится 1

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

Шпаргалка

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

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

snd:play_no_feedback(obj, sound_object.s3d, 0, obj:position(), 1) -- звук не движется за объектом

Я что-то неправильно делаю или для ворон это не работает в принципе? Через play_at_pos тот же результат. Если для ворон движение звука не сделать в принципе, то ещё вопрос:

snd:play_at_pos(obj, obj:position(), 5, sound_object.s3d)

Если задать timeout 5 секунд для звука движущегося объекта, в какой позиции он начнёт воспроизводиться?:
1. в той, где объект был на момент выполнения функции
2. в той, где объект будет находиться в момент начала воспроизведения звука после истечения таймера

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

@wdfgosdgf https://xray-engine.org/index.php?title=Класс_sound_object

 

Автоматическое изменение позиции звука не реализовано, нужно делать ручками. В твоем случае надо подвязаться на апдейт биндера вороны и обновлять позицию звука через метод set_position. Разумеется, для каждой вороны свой экземпляр звукового объекта, ссылка на который сохраняется в биндере.

Изменено пользователем RayTwitty
  • Нравится 3
  • Полезно 1
Ссылка на комментарий
On 12/8/2014 at 11:51 AM, Dennis_Chikin said:

Ну, помним, незабвенный watcher_act.scrip, когда непись прямо во время боя прется через всю локацию, ни на что не обращая внимания, подбирать упавший бинтик, на другом краю этой локации, причем ориентируясь НА СЛУХ.

Надо полагать, это файл из НС-2010, в котором "ориентирование на слух" представлено перебором стандартного списка memory_sound_objects.

Потестил в ТЧ: бинты и прочие медикаменты при сбросе даже рядом с NPC в список источников звука не заносятся.
В "солянке" не правленый движок, скрипты только – была ли в действительности такая проблема?

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

Шпаргалка

Ссылка на комментарий
13.10.2023 в 09:02, Norman Eisenherz сказал:

не правленый движок, скрипты только – была ли в действительности такая проблема?

Была в свое время на наверное львиной доле модов на базе оригинального движка 1.0004 - 1.0006

  • Полезно 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.

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

Всем привет. Хочу выдать инфопорцию при сдачи второстепенных квестов. Делаю так:

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

В task_manager.script пишу:

 

в function CRandomTask:__init()

self.reward_info = utils.cfg_get_string(self.task_ini, id, "reward_info", nil, false, "")

 

в function CRandomTask:init_reward_dialog(dlg, parent)

    if self.reward_info ~= nil then
    phrase_script:AddGiveInfo(self.reward_info)
end

 

Соответственно в ltx:

reward_info = инфопорция

 

Но ничего не происходит. Что я пишу не так?

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

@Colder, попробуй так:

 

в function CRandomTask:__init()

    curr_task_info.reward_info = utils.cfg_get_string(self.task_ini, id, "reward_info", nil, false, nil)

 

в function CRandomTask:init_reward_dialog(dlg, parent)

    if self.task_info[v].reward_info ~= nil then phrase_script:AddGiveInfo(self.task_info[v].reward_info) end

 

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

S.T.A.L.K.E.R. CoP Objects (upd 15.11.24)

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

При отслеживании события callback.hit в обработчик передается аргумент local_direction – какой-то вектор из трех дробных значений. В движке есть комментарий "convert impulse into local coordinate system".

Что за значения пишутся в этот вектор и куда их можно применить?

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

Шпаргалка

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

Подскажите, в оригинале ТЧ можно влиять на голод ГГ скриптами? Скажем, повесить на апдейт увеличение сытости при наличии в инвентаре определённой брони?

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

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

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

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

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

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

Войти

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

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

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