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

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

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


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

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

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

 

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

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

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


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

@macron, так у тебя скрипт неверный :(. Ща накатаю.

function delete_bad_objects() --// на save callback
	local changer = vector():set(116.57, -0.09, 518.79) --// тут можешь писать прямо obj:position() где obj - твой ченджер
	local dist
	for i=1,65534 do
		local obj = level.object_by_id(i)
		if obj then 
			dist = changer:distance_to(obj:position()) 
			if dist < 4 then --// не трогай, радиус на чаэс примерно такой
				local sobj = alife():object(i)
				if sobj then
					alife():release(sobj, true)
				end
			end
		end
	end
end

Будет проблема с большими объектами, так как сравнивается по центрам, так что смотри сам, можно дополнительно проверять секцию и регулировать радиус удаления.

Если не покатит, то отпиши когда родителя обретают, я костылем подопру ;).

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

 

 

  makdm писал(а):
а что мешает при спавне объекта проверить координаты спавна и если они в зоне левел-ченджера, то сдвинуть спавн за пределы зоны перехода вглубь локации?

Вылетает не из-за координат, а из-за использования id от левелчейнжера в качестве parent_id. Кстати, визуально эти объекты (пара артов, несколько антирадов) в том месте я так и не нашел.

 

@Карлан, я вставил новый текст вместо старого, но лучше не стало. Боюсь, проблема серьезная, требует непосредственного профессионального подхода/тестирования. Решать такие вопросы сейчас через меня - примерно то же самое, как пытаться чинить компьютер по телефону. :) Если здесь есть истинные фанаты OLR (в чем сильно сомневаюсь), конечно обращайтесь, материал предоставлю, а так - только время зря потратим. Всем спасибо за участие.

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

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

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

@macron, Почистите лс, что бы можно было вам писать сообщения.
P.s Извините за такой флуд, пост под снос.

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

Ну у меня есть мысль, можно же получить этот самый parent_id?

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

 

 

  vampirnik77 писал(а):
Почистите лс

ok

 

 

 

  Карлан писал(а):
расскажи когда они родителя обретают

Глюко-объекты рождаются в процессе игры, "в зависимости от расположения звезд на небе". Наиболее подвержены им ЧАЭС и Янтарь. Вот конфиги ЧАЭС из распакованного алспавна и битого сейва, если интересно. Нужные секции можно найти по поиску

 

116.575942993164, -0.0990743637084961, 518.794067382813

 

http://rghost.ru/6yLdDMshh

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

@Карлан, Я просто боюсь ерись сморозить, ну да ладно. Можно ли так, перед сохранением проверить не совпдает ли parent_id объекта с id левелчейнджера и если совпадает то удалять объект?
 

  • Нравится 1
Ссылка на комментарий
  Карлан писал(а):
да по барабану когда рождаются, ты выясни когда родителем лч становится

На то, чтобы хоть как-то научиться распаковывать олровские сейвы и на их основе установить связь битых сейвов с левелчейнжерами ушел год. К тому времени, когда ты получишь от меня новый ответ, скорее всего, он будет уже неактуален. :wacko:

 

Пока отвечу так: объекты породила Зона.

 

 

  vampirnik77 писал(а):
Можно ли так, перед сохранением проверить не совпдает ли parent_id объекта с id левелчейнджера и если совпадает то удалять объект?

Тоже вариант. Но пока даже без проверок объекты  удалять не получается.

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

@macron, просто выведи в лог sobj.parent_id у объектов до сейва, и после лоада.

 

 

 

  macron писал(а):
Тоже вариант.

Видимо я слишком завуалированно излагаю мысли :(. Его я тоже рассматривал, но не первоочередно, и для него тоже надо знать когда парентом становится лч.

 

 

Я по прежнему реквестирую знахаря.

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

 

 

  Карлан писал(а):
просто выведи в лог sobj.parent_id у объектов до сейва, и после лоада

Вот последний bind_stalker.script. Можешь сам добавить туда, о чем пишешь, если это то что нужно... Говорю же, не всегда врубаюсь, о чем вы, скриптеры, толкуете. :)  А если и врубаюсь, могу неделю изучать/экспериментировать с последовательностью расположения какой-нибудь скобки.

 

http://rghost.ru/7tJpxtFrS

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

@macron, скриптов я не писал уже давно, перекрестимся что ничего не напутал, замени свой сейв на этот:

 

  Показать

 

Ссылка на комментарий
  Карлан писал(а):
замени свой сейв на этот:

Ok.

При использовании старого сейва в котором есть левелчейнжер - глухо виснет при попытке сохраниться, наверное пытается грохнуть левелчейнжер. При использовании переделанного сейва (без левелчейнжера) сейвится нормально, но в логе ничего интересного. Только ! Unknown command: parent_id[lvl14_stancia_space_restrictor].

 

http://rghost.ru/8SXL6J5Lw

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

@macron, а разве имя нужного объекта неизвестно? Зачем эти извраты с измерением расстояния до позиции?

Изменено пользователем Shadows
Ссылка на комментарий
  Shadows писал(а):
а разве имя нужного объекта неизвестно?

Имя, наверное, может быть любое. Как и количество объектов (хотя, обычно в пределах 10-15).Известны лишь координаты (идентичны координатам левелчейнжера) и то, что берут его ID в качестве PARENT_ID. Тут как бы задача получить универсальную удалялку (в будущем - по одной универсальной удалялке на каждый левелчейнжер конкретного уровня и для каждого уровня + добавить имена самих левелчейнжеров в исключения, чтобы их тоже не затерло).

 

ЗЫ: для экспериментов с конкретным сейвом, имена, конечно, известны. Недавно ltx из сейва выкладывал.

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

@macron, вот такой скрипт попробуй

 

  Показать

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

@makdm, так а смысл то какой? Если релиз не работает в фо, то тогда надо попробовать вайл, это как минимум. Например некоторые функции для работы с таблицами тоже в циклах фо того. Но это все теория, а знатоков тут таки нет :(. Ты просто один цикл на три умножил, к тому же зачем перебирать все 65534 для идентификации лч, когда у каждого есть сид, мне так же не ясно.

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

 

 

  macron писал(а):
по одной универсальной удалялке на каждый левелчейнжер

А комп ты тоже каждый день новый себе берешь? по компу на день работы, а то на второй день он не годится же, почему-то.

 

 

 

  makdm писал(а):
if sobj.parent_id == v then remove_sobj[ sobj.id ] = sobj

Вот до этого момента все норм.

Сам этот момент - ахтунг полнейший. Не надо быть специалистом, чтобы понять бредовость засовывания ссылки на юзердату - в таблицу, и потом в цикле for пытаться еще что то с этой юзердатой делать.

  tk (Показать)
  • Спасибо 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.

Ссылка на комментарий
  Zander_driver писал(а):
Сам этот момент - ахтунг полнейший. Не надо быть специалистом, чтобы понять бредовость засовывания ссылки на юзердату - в таблицу, и потом в цикле for пытаться еще что то с этой юзердатой делать.

 

@Zander_driver,  вот, честное слово, не понял тут ахтунга.

Всё работает, как часы. Можешь сам проверить.

 

Хотя можешь и не проверять, а открыть файл bind_smart_terrain.script и в методе net_spawn увидишь

 

db.add_smart_terrain( self.se_smart_terrain )

 

Затем открой файл db.script.  Дальше, надеюсь всё и так ясно.

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

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

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

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

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

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

Войти

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

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

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