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

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

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


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

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

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

 

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

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

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


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий
  14.12.2023 в 21:34, Colder сказал:

Возникла проблема что при использовании компресионого мешка на НЕ разрешеной дистанции компресионый мешок не спавнится обратно к гг.

Ну так надо его заспавнить?) В коде этого и НЕ делается.
Добавь bool флаг, записывай в него результат каждой проверки в цикле, по окончании цикла если флаг останется в false, то компрессионный мешок надо спавнить обратно.

  • Нравится 3

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

Ссылка на комментарий
  16.12.2023 в 10:41, Colder сказал:

он спавниться каждым действием

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

  15.12.2023 в 01:45, Zander_driver сказал:

Добавь bool флаг, записывай в него результат каждой проверки в цикле, по окончании цикла если флаг останется в false, то

А вот это я просто так, для красоты написал?

:mda:

  • Нравится 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.

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

@Colder , можно: вместо break сделай return, а сразу после цикла поставь спавн этого мешка. Получится, если в цикле return не сработал, значит дистанция больше, значит спавним мешок обратно.

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

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

Понадобилось тут разобраться с поворотом объектов. Оказывается есть целых 3 ключевых понятия: direction, angle и rotation.
С последними двумя все просто, углы поворота над плоскостью, первый в радианах, второй в градусах (именно это значение мы видим в SDK).

А вот первое - это направление в диапазоне от -1 до 1.

Набросал функции получения direction имея angle/rotation, которые должны работать по идее даже в оригинале (где имеется полурабочий класс матрицы, но его достаточно):

function angle_to_direction(angle)
	local m = matrix()
	m:setXYZ(angle.x, angle.y, angle.z)
	return m.k
end

function rotation_to_direction(angle)
	local m = matrix()
	m:setXYZ(utils.deg2rad(angle.x), utils.deg2rad(angle.y), utils.deg2rad(angle.z))
	return m.k
end

А вот чтобы обратно получить angle/rotation имея direction, нужно, как я понял получить доступ к матрице трансформации объекта (XFORM), применив к нему getXYZ (ну или getHPB).

Прав ли я в рассуждениях и что такое на самом деле direction? Направление относительно чего?

 

P.S. Частично угол поворота можно восстановить при помощи методов вектора getH и getP, но только yaw и pitch.

  • Полезно 3
Ссылка на комментарий
  19.12.2023 в 20:50, RayTwitty сказал:

чтобы обратно получить angle/rotation имея direction, нужно, как я понял получить доступ к матрице трансформации объекта (XFORM), применив к нему getXYZ (ну или getHPB).

Прав ли я в рассуждениях

Да, прав.

Вообще общепринято во всех 3D-движках, положение и ориентацию в пространстве любого объекта выражать через матрицу.

В Unreal Engine она называется Transform, в X-Ray - XFORM, но суть одна и та же. Вся информация о положении и ротации хранится там, и получается оттуда.

  19.12.2023 в 20:50, RayTwitty сказал:

что такое на самом деле direction? Направление относительно чего?

Тут могу ошибиться в деталях формулировки, но емнип, так:

У каждого 3д-объекта можно взять условно направление "вперед" - обычно это положительное направление по одной из осей локальных координат этого объекта. (А вот +x или +z считается направлением "вперед" в X-Ray... блин, уже не помню) но одно из них).

direction это направление этого локального вектора "вперед", у данного объекта, в глобальной системе координат игры. Т.е. буквально направление куда объект "смотрит".

Относительно его позиции, в той же глобальной системе координат.

  • Нравится 1
  • Полезно 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.

Ссылка на комментарий
  19.12.2023 в 22:10, Zander_driver сказал:

А вот +x или +z считается направлением "вперед" в X-Ray... блин, уже не помню

наверное это ещё зависит от того как ориентирована сама локация/плоскость на которую ставиться объект, потому что если сама плоскость или лока ориентирована не строго по осям в глобальной системе коорд-т, то чтобы объект подвинуть вперёд возможно надо уменьшать x, а на какой-то плоскости z, а на третьей и x и z или наоборот, вообще чтоб представить положение объекта в 3D-пространстве на 2D-мониторе довольно трудно, тут надо иметь или хорошее воображение в голове или 3 Д шлем/очки или сделать модель в реальном мире и подвигать её физически:)

  • Смешно 1
Ссылка на комментарий
  19.12.2023 в 22:45, CiberZold сказал:

наверное это ещё зависит от того как ориентирована сама локация/плоскость на которую ставиться объект, потому что если сама плоскость или лока ориентирована не строго по осям в глобальной системе коорд-т

НЕТ! :)

"Вперед" - это ведь ВСЕГДА, понятие в локальной системе координат объекта. Не зависит и не может оно зависеть от локации, где объект находится.

Только от общепринятых (в данном конкретном движке, игре, игровой студии) дефиниций.

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

До этого "вперед" это просто общепринятое вперед, одинаковое для любых объектов в этом движке.

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

Ссылка на комментарий
  19.12.2023 в 23:04, Zander_driver сказал:

"Вперед" - это ведь ВСЕГДА, понятие в локальной системе координат объекта. Не зависит и не может оно зависеть от локации, где объект находится.

так ты сам себе противоречишь если говоришь, что ВПЕРЁД это локальное понятие, а потом что оно не может зависеть от локации:) когда мы говорим вперёд то по логике имеем ввиду вперёд относительно чего-то, в глобальном понимании это не имеет смысла, как представь объект, который летает в космосе, в глобальной системе коорд-т, да он может подвинуться типа вперёд (двинуть по оси z например), но это не имеет никакого смысла, потому что там нет ни лева/права, верха/низа, вперёд/назад, это всё приобретает смысл только относительно ещё какого-то объекта или плоскости, так же как ты можешь идти вперёд по улице в своём городе строго прямо и на север по компасу) но это вперёд относительно поверхности Земли, в глобальной системе коорд-т ты можешь в этом момент двигаться по вектору между осями z, y, x одновременно, который ещё и меняет направление в течении дня, т.к. Земля ещё движется вокруг Солнца и своей оси, так что когда говоришь вперёд это локально и зависит от локации, глобальное вперёд может и существует, но не имеет смысла на практике.

  • Жуть! 1
Ссылка на комментарий
  19.12.2023 в 23:26, CiberZold сказал:

так ты сам себе противоречишь

Хорошо.

Где можно прочесть составленный вами учебник векторной математики? Или как называется написанный вами 3D-движок, действующий по вашим правилам пространственной геометрии?

Очень необычно. Хочу ознакомиться для расширения кругозора.

@CiberZold Ну или как вариант.

Прочитай сам какой-то приличный учебник по теме. Или вникни как работает 3D движок любой приличный, хоть даже X-Ray. Чтобы пурги не нести.

  • Согласен 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.

Ссылка на комментарий
  19.12.2023 в 23:32, Zander_driver сказал:

3D-движок, действующий по вашим правилам пространственной геометрии?

я же не говорю что движок работает не так, понятно что движок работает по глобальной системе, он же не может подстраиваться под каждую локацию, я говорю о том что это малоудобно практически, человек хочет подвинуть объект вперёд на локации относительно самой локации, относительно других объектов, и по твоему совету двигает по оси Z типа вперёд, уменьшая эти коорд-ты, а у него по факту, этот объект по твоему совету, двигается не вперёд, а вправо и назад например, потому что так ориентирована локация, и что ему дело до твоего движка и теоретических рассуждений:biggrin:

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

Ну что тут можно сказать.

Не изучайте в школе математику, физику, геометрию. В том числе трехмерную. И тогда мир вокруг вас будет наполнен магией и волшебством. Кому-то может быть, так и прикольнее. :pardon::crazy2:

  • Нравится 1
  • Согласен 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.

Ссылка на комментарий
  19.12.2023 в 22:10, Zander_driver сказал:

У каждого 3д-объекта можно взять условно направление "вперед" - обычно это положительное направление по одной из осей локальных координат этого объекта

Просто в игре у объектов, расположенных совершенно по-разному - один на стене, другой на потолке - может быть вектор с одинаковым значением direction. Как будто бы direction это вращение вокруг какой-то своей оси координат, изначально заданной углами вращения в глобальной системе координат.

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

@naxac когда в рюкзаке 2 спальника, то компрессионый мешок все равно спавниться постоянно 

Изменено пользователем Colder
  • Согласен 1
Ссылка на комментарий

FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...of chernobyl ru\gamedata\scripts\bind_stalker.script:2: attempt to index global 'xr_motivator' (a nil value)
 

stack trace:
 

Всем привет, я пытался совместить 2 скрипта для того чтобы сталкеры и играли на губной гармошке и травили байки с историями у костра. Также добавил скрипт от Bak, который респавнит арты, файлы которые были изменены:

bind_stalker, se_zones,xr_motivator,xr_kamp. Если надо скину проблемные файлы.

 

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

@Алекс Мутный поищи Script Syntax Checker, возможно где-то рабочие ссылки остались. Или воспользуйся Lua плагином к Notepad++ от Charsi: https://disk.yandex.ru/d/UIMIb8_8vZtMD

У тебя явно ошибка синтаксиса в скрипте xr_motivator образовалась после слияния, раз он не загружается. Может скобку какую не закрыл или лишний end вставил.

Upd: нашёлся какой-то архив с чекером. https://disk.yandex.ru/d/TeUbiQ0sGjqW-w

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

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

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

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

Подскажите как правильно прочитать строку из ltx файла ввиде:

[item]
item_1

item_2

item_3

item_4

...

...

  Показать

 

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

@Colder 

function read_list(section, ini)
	if not ini then
		ini = system_ini()
	end
	local t = {}
	for i = 0, ini:line_count(section) - 1 do
		local result, id, value = ini:r_line(section, i, "", "")
		if result then
			t[id] = value
		end
	end
	return t
end

local t = read_list("item", ini_file("items\\settings\\txr_list.ltx"))
ключи таблицы - твои предметы

 

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

Подскажите что делаю не так? Пытаюсь вывести вес в ящике. Когда выкладываешь/берешь все работает. Закрываешь/открываешь ящик вес сбрасываеться по 0.

  сам скрипт (Показать)

 

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

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

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

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

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

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

Войти

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

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

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