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

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

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


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

 
 

Stalkerin. Там есть много хороших статей касательно данной темы.
Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения.

 

Справочное руководство по языку Lua 5.1
https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ru
Справочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены.

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

 

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

 

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

 

Вопросы которые будут удалятся, следовательно их задавать не нужно:
-- Где находится та или иная функция?
Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;
-- Как сделать что-то/то-то?
С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;
-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.
-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.
Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов?
В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос.

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


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

Я понимаю, что уже надоел, но последний вопрос на сегодня: Возможно ли сделать новое условие для каллбека через скрипты? И если возможно, то как его зарегистрировать? 

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

Мне всегда нравились такие вопросы. Бамбарбия - твой выход, у меня фатал эррор :(. "На сегодня дров достаточно, учите матчасть."(с)

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

@Карлан, не-не, я уже одной ногой в отпуске, на 2 недели оставляю раздел на тебя и остальных дровосеков. ;)

 

Но перед уходом на правах модератора призываю всех участников темы к постам по существу, без перекидывания топорами и личных выпадов!

 

+: dc или кто-нибудь ещё из ответственных, этот мой пост и всё лишнее выше под снос, плз, когда сочтёте нужным.

Изменено пользователем Kirgudu
  • Спасибо 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.

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

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

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

Штатных функций для проигрывания без онлайного объекта в сталке нет, но можно попытаться через дополнительные библиотеки для луа запустить какой-нибудь mp3-трек прямо в плеере фоном. Помнится в каком-то билде, амбиент-музыка на локацях именно так и была реализована))
Ссылка на комментарий

Как-нибудь можно обнулить parent_id у объекта? Вот есть объект gluk_object.  Надо что-то типа gluk_object.parent_id == 0.

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

@macron, от парентов вообще бывает трип, лично мне так и не удалось, делал задержку аж до 5 секунд. Реквестирую знатоков. "Обнуленный" парент это кстати 65534 (показатель бесхозности), 0 - это актор.

Ссылка на комментарий
"Обнуленный" парент это кстати 65534 (показатель бесхозности), 0 - это актор.

Поэкспериментировал с перепаковкой сейва. Если у глючных объектов ставить parent_id = 0, то они действительно появляются в инвентаре актора. Обычно это арты и антирады, так что нормально. А если им ставить 65534, то еще при загрузке такого сейва идет вылет 001B:036AF2D9 xrGame.dll. Вообще, изначально планировалось удалять эти объекты согласно немного доработанному варианту того скрипта, что недавно обсуждали. Сама схема работоспособна, но конкретно удаление не срабатывает ни через amk.remove_item(gluk_object), ни через alife():release(gluk_object, true). Может, хоть обнуление parent_id сработает.

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

@macron, бесхозность = валяние на земле. Не сработает, вот я к чему. Попробуй добавь проверку на серверный объект, удаляем то как никак его. 

local obj=level.object_by_id(i)
local sobj=alife():object(i)
if sobj then
--//...
end
  • Спасибо 1
Ссылка на комментарий

 

 

alife():release(gluk_object, true).

А в функцию вообще серверный объект передается, или что?

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

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

Возможно целесообразно сделать drop_item, дальше запустить level.add_call и как только parent_id ==  65355, то  удалит его.

У меня кстати в таком случае проблем не было.

Хотя, мне не понятна до конца проблема "рождения" глючных объектов и в чём их "глюк".

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

@makdm, На сколько я понял, проблема в том, что бывает такое, что у "глючного" объекта совпадают координаты с левелченджером и это вызывает вылет при загрузке сейва.

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

 

 

На сколько я понял, проблема в том, что бывает такое, что у "глючного" объекта совпадают координаты с левелченджером

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

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

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

@vampirnik77, как ты сделал сей дивный вывод (мне правда интересно)? Погляди причину под капотом, а то воюешь с ветряками.

Изменено пользователем Карлан
Ссылка на комментарий
На сколько я понял, проблема в том, что бывает такое, что у "глючного" объекта совпадают координаты с левелченджером и это вызывает вылет при загрузке сейва.

Да, координаты совпадают. Но вылетает из-за того, что эти объекты еще ставят себе id от левелчейнжера в качестве parent_id.

 

Я почему-то такого у себя никогда не видел...

В OLR заспавнено очень много "всякой дряни" и физики. Возможно, из-за нехватки ID или еще чего, игра иногда дурит.

 

В общем, вот что сейчас вышло. Объекты в нужной точке в момент сейва так и не удаляются. Если исправить больше нечего, забьем. Вроде в далеком будущем в новой версии обещали многое движком исправить. В test.txt сам текст + полный bind_stalker.script на всякий случай.

http://rghost.ru/6qN89Tfr8

Изменено пользователем macron
Добавлено Dennis_Chikin,

Короче, тебе надо не удаление при сохранении, а удаление при загрузке.

https://dl.dropboxusercontent.com/u/27871782/xl_offline.script - что-то типа такого (см. с конца)

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

 

 

из-за нехватки ID

В таком случае происходит простой и незамысловатый вылет not enough ids.

 

 

 

Объекты в нужной точке в момент сейва так и не удаляются

читаем: нормальные методы нахождения нужных объектов и их удаления так и не были применены. но если самому ковыряльщику уже ненадо, то забьем в самом деле...

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

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

 

 

Да, координаты совпадают

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

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

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

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

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

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

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

Войти

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

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

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