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

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

@UnLoaded, ХМ.. Надо попробовать так!

Вот теперь вопрос по X-Ray extensiions, я создал файл и написал в нем 

function actor_binder:key_pressed(37)

....

end

Но ничего не происходит. Вопрос первый - его надо было указать как то в биндер сталкере? Вопрос второй - Можно ли функцию назвать по своему?

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

Я не пойму, а в ЗП нету отловли отпускания и удержания??

Нету.

 

Ни в одном из оригинальных движков(ТЧ\ЧН\ЗП) нет коллбэка на действия с клавиатурой.

Он про ХЕ говорил.

 

function actor_binder:key_pressed(37)

Почему бы просто не скопипастить код из моего поста?

 

function actor_binder:key_pressed(dik)
       if dik == DIK_keys.DIK_K then
              if not get_hud():GetCustomStatic("статик") then
                     get_hud():AddCustomStatic("статик")
              else
                     get_hud():RemoveCustomStatic("статик")
              end
       end
end
Изменено пользователем Shadows
Ссылка на комментарий

, В бинд сталкере я добавил все что там написано(реинит и нет_дестрой). Я не пойму функцию "function actor_binder:key_pressed(dik)" писать в биндерсталкере? Или можно в любом новом скриптовом файле то что мне и нужно как раз. И еще название функции обязательно должно быть "actor_binder:key_pressed(dik)"?

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

Я не пойму функцию "function actor_binder:key_pressed(dik)" писать в биндерсталкере?

Ясен пень, там же написано куда писать код.

 

Или можно в любом новом скриптовом файле то что мне и нужно как раз.

 

function actor_binder:key_pressed(dik)
       if dik == DIK_keys.DIK_K then
              твой_скрипт.твоя_функция()
       end
end

function твоя_функция()
       if not get_hud():GetCustomStatic("статик") then
              get_hud():AddCustomStatic("статик")
       else
              get_hud():RemoveCustomStatic("статик")
       end
end
  • Нравится 1
Ссылка на комментарий

Всем привет!

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

 

 

Проблема такая. Установлен билд мода на ЗП.

Есть скрипт  - gamedata\scripts\ui_mod_elements.script

Апдейт происходит в биндере ГГ.

В один прекрасный момент ( после нахождение игрока в зоне 28 дней, когда сыграно больше половины игры ) после сейв/лоад практически на "ровном месте" получаем вылет

 

attempt to index global 'ui_mod_elements' (a nil value) 

 

Причём никакие правки в мод не вносились.

 

Начинаю проверять в методе апдейт в биндере актора:

 

if _G["ui_mod_elements"] then

ui_mod_elements.allspawn_editor_update()

else

--вывод на экран, что нет такого файла

end

 

Результат: Двигало в упор не видит файл ui_mod_elements.script в папке gamedata\scripts

 

Ну не существует для него такого файла, хотя сам файл присутствует.

У меня есть даже "прикольная" сохранка. Загрузился - движок обрабатывает файл ui_mod_elements.script

Даже лишних движений на клавиатуре не делал, а только сейв\лоад. И всё -  нет такого файла для движка.

Кто-нибудь сталкивался с таким эпизодом в модинге, когда скрипт, который только что работал, вдруг пропал для движка? Где копать?

 

 

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

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

Ссылка на комментарий
Проблема с жестким диском ?

Не у меня одного. Ещё у тестера такая же проблема. Движок просто не видит файл в папке scripts

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

Скрипт до того как-то использовался ?

 

Самой первой строчкой скрипта пишем какую-нибудь переменную в _G, а потом проверяем ее.

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

Раскопал я этот "парадокс".

Вообщем дело было так:

При сохранении игры происходит спавн объекта и в его STATE часть нет-пакета сохраняются данные.

При загрузке, данные считываются из STATE части нет-пакета объекта, а сам объект удаляется.

Это я так думал. Но удаление объекта не происходило, т.к. я пытался сделать вот такой финт ушами:

 

function se_store_obj:STATE_Read(packet, size)
cse_alife_dynamic_object.STATE_Read(self, packet, size)
 
-- Вынесено в объект из пакета ГГ
    release_body_manager.get_release_body_manager():load(packet)
    sr_psy_antenna.load(packet)
    sim_board.load(packet)
    xr_sound.actor_load(packet)
    xr_statistic.load(packet)
 
    alife():release( self, true )
 
end
Т.е. пытался удалить сам объект прямо внутри метода STATE_Read
 
Таким образом в игре накопилось 62 объекта, в которые записывались данные при сохранении и считывались 62 раза при загрузке.
При 63-м сейв\лоад движок начал терять файл в папке scripts
Я удалил вот это безобразие alife():release( self, true ) и всё пошло как по маслу ( за исключением того, что при загрузке и сохранке движок писал/считывал 63 раза одно и то же в пакеты разных объектов )
Ладно это поправимо. Вынес айдишники объектов в таблицу и затем удалил.
 
Но почему движок делал 62 попытки удалить объекты и это "проскакивало", а на 63 объекте "стал запинаться" и терять файл в папке scripts, вот это пока для меня осталось непонятным.
  • Полезно 1
Ссылка на комментарий

 

 

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

А в чем смысл такого, кхм... извращения :huh:  ?

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

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

А в чём тут извращение? Есть другой способ?

Тогда зачем разрабы Сталкера всё это проделывают в методах save и load в биндере актора?


@UnLoaded,  если ты про то, что зачем нужен спавн и удаление, то это привычка защиты "от дурака".

Вдруг, кому-то ( например мне ), где-то в середине игры придёт в голову добавить скрипт и пройтись по всем объектам и отделить нужное от мусора, а сам мусор отправить "в топку".

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

Возможно перестраховка, но мне так спится лучше. :D

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

 

 

Хотя, можно в начале игры добавить объект и работать с ним постоянно.

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

 

 

 

Есть другой способ?

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

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

 

 

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

Спешите видеть! Человек из прошлого в треде!!!

 

 

 

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

Некто все засовывал в лампочки, но это было еще в бородатом году, когда я еще "не родился" даже.

 

Ребята, давайте уже юзать get_stored_vars(), я где-то полгода назад еще о его успехах писал.

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

alife():release( self, true ) - это - гениально, да. В результате получаем зависший скрипт.
Что до пресловутого нетпакета, то в той "солянке" с ее вечно "переполняющимся" пакетом, после сноса явного мусора этот самый пакет и до 200 байтов дотянуть ни как не может. И это еще task_manager остался, который по-хорошему тоже надо полностью снести.


P.S. "А как ?" - а вот подумать, нужен ли этот мусор вообще, типа хранения в pstor актора id всех заспавненных объектов, например, или эти id таки не нужны. Ну и если что-то надо для каких-то других объектов - у этих других есть, например, custom data, ага.

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

 

 

Кто-нибудь сталкивался с таким эпизодом в модинге, когда скрипт, который только что работал, вдруг пропал для движка? Где копать?

В частности такое бывает если у нас рушится namespace, например мы где-то (помоему вообще неважно где) записали что-то в таблицу по несуществующему ключу.

local t = {}
local k = nil
t[k] = 10

И что-то где то перестанет быть видимым, вызывая причудливые последствия.

 

 

А в чём тут извращение? Есть другой способ?

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

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

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

Спасибо за ответы! По-ржал от души! 

Знаете, чем отличаются американские форумы от русских?

На американском форуме задаёшь вопрос - все пытаются тебе помочь.

На русском  - при ответе на вопрос, все начинаются мериться своими .... познаниями.

 

Вообще-то вопросы  были не про хранение переменных, а немного о другом:

1.Почему при обработке 62 объектов игра идёт стабильно без вылетов и всё в игре работает так, как задумано разработчиком?

2.Почему при спавне 63-го объекта - движок "не видит" отдельный файл в папке Scripts???

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

 

 

63 раза
Магия чисел. А вот это число (63) - было где-то прописано? Почему именно 63?

 

Задаю вопрос совсем по другой причине, но там тоже присутствует именно 63.

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

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

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

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

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

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

Войти

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

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

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