AlexLuzifer 0 Опубликовано 23 Июля 2015 Поделиться Опубликовано 23 Июля 2015 @UnLoaded, ХМ.. Надо попробовать так! Вот теперь вопрос по X-Ray extensiions, я создал файл и написал в нем function actor_binder:key_pressed(37) .... end Но ничего не происходит. Вопрос первый - его надо было указать как то в биндер сталкере? Вопрос второй - Можно ли функцию назвать по своему? Ссылка на комментарий
TIGER_VLAD 361 Опубликовано 23 Июля 2015 Поделиться Опубликовано 23 Июля 2015 @AlexLuzifer, Регистрировать функцию actor_binder:key_pressed(DIK) нужно в bind_stalker . Ты колбэк в reinit() и net_destroy() добавлял? Ссылка на комментарий
AlexLuzifer 0 Опубликовано 23 Июля 2015 Поделиться Опубликовано 23 Июля 2015 @TIGER_VLAD, Да добавил! Ссылка на комментарий
RayTwitty 492 Опубликовано 23 Июля 2015 Поделиться Опубликовано 23 Июля 2015 (изменено) Я не пойму, а в ЗП нету отловли отпускания и удержания?? Нету. Ни в одном из оригинальных движков(ТЧ\ЧН\ЗП) нет коллбэка на действия с клавиатурой. Он про ХЕ говорил. 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 Изменено 23 Июля 2015 пользователем Shadows Ссылка на комментарий
AlexLuzifer 0 Опубликовано 23 Июля 2015 Поделиться Опубликовано 23 Июля 2015 , В бинд сталкере я добавил все что там написано(реинит и нет_дестрой). Я не пойму функцию "function actor_binder:key_pressed(dik)" писать в биндерсталкере? Или можно в любом новом скриптовом файле то что мне и нужно как раз. И еще название функции обязательно должно быть "actor_binder:key_pressed(dik)"? Ссылка на комментарий
RayTwitty 492 Опубликовано 23 Июля 2015 Поделиться Опубликовано 23 Июля 2015 Я не пойму функцию "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 Ссылка на комментарий
AlexLuzifer 0 Опубликовано 23 Июля 2015 Поделиться Опубликовано 23 Июля 2015 , О) Спасибо! Теперь понятно! Ссылка на комментарий
makdm 37 Опубликовано 23 Июля 2015 Поделиться Опубликовано 23 Июля 2015 (изменено) Всем привет! Не знаю куда написать, поэтому пишу сюда.( В случае чего модераторы меня поправят ) Проблема такая. Установлен билд мода на ЗП. Есть скрипт - 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 Даже лишних движений на клавиатуре не делал, а только сейв\лоад. И всё - нет такого файла для движка. Кто-нибудь сталкивался с таким эпизодом в модинге, когда скрипт, который только что работал, вдруг пропал для движка? Где копать? Изменено 23 Июля 2015 пользователем makdm 1 Ссылка на комментарий
Карлан 1 049 Опубликовано 23 Июля 2015 Поделиться Опубликовано 23 Июля 2015 @makdm, "вдруг пропал" - такого не было, но вот невидимость была, это у меня при перемене всей скриптовой системы вылазило, поправил как я помню каким-то добавочным префетчем по ключу через _G. Ссылка на комментарий
makdm 37 Опубликовано 23 Июля 2015 Поделиться Опубликовано 23 Июля 2015 (изменено) Проблема с жестким диском ? Не у меня одного. Ещё у тестера такая же проблема. Движок просто не видит файл в папке scripts Изменено 23 Июля 2015 пользователем makdm Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 23 Июля 2015 Поделиться Опубликовано 23 Июля 2015 Скрипт до того как-то использовался ? Самой первой строчкой скрипта пишем какую-нибудь переменную в _G, а потом проверяем ее. 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
makdm 37 Опубликовано 24 Июля 2015 Поделиться Опубликовано 24 Июля 2015 Раскопал я этот "парадокс". Вообщем дело было так: При сохранении игры происходит спавн объекта и в его 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 Ссылка на комментарий
UnLoaded 313 Опубликовано 24 Июля 2015 Поделиться Опубликовано 24 Июля 2015 При сохранении игры происходит спавн объекта и в его STATE часть нет-пакета сохраняются данные. При загрузке, данные считываются из STATE части нет-пакета объекта, а сам объект удаляется. А в чем смысл такого, кхм... извращения ? Ссылка на комментарий
makdm 37 Опубликовано 24 Июля 2015 Поделиться Опубликовано 24 Июля 2015 В том, что нет-пакет ГГ не вмещает в себя все сохраняемые таблицы переменных, используемых в моде. А в чём тут извращение? Есть другой способ? Тогда зачем разрабы Сталкера всё это проделывают в методах save и load в биндере актора? @UnLoaded, если ты про то, что зачем нужен спавн и удаление, то это привычка защиты "от дурака". Вдруг, кому-то ( например мне ), где-то в середине игры придёт в голову добавить скрипт и пройтись по всем объектам и отделить нужное от мусора, а сам мусор отправить "в топку". Вот чтобы объект не оказался в "мусорке" я , таким образом его и защитил. Хотя, можно в начале игры добавить объект и работать с ним постоянно. Возможно перестраховка, но мне так спится лучше. Ссылка на комментарий
UnLoaded 313 Опубликовано 24 Июля 2015 Поделиться Опубликовано 24 Июля 2015 Хотя, можно в начале игры добавить объект и работать с ним постоянно. Ну тогда, лично мне пришла-бы в голову мысля о том, чтоб не создавать некий фейк-объект для разгрузки pstor актера, а использовать для этого уже существующий. К примеру того-же Сидора или Бармена, если конечно по сюжету не планируется их "изъятие" из бытия. Есть другой способ? Куча(ну может мал-мал куча) всяких хранилищ, о которых чуть ли не на каждой странице базар-вокзал, придуманных для хранения всего, без утыкания в ограничение размера одного нет-пакета. Ссылка на комментарий
Карлан 1 049 Опубликовано 24 Июля 2015 Поделиться Опубликовано 24 Июля 2015 В том, что нет-пакет ГГ не вмещает в себя все сохраняемые таблицы переменных, используемых в моде. Спешите видеть! Человек из прошлого в треде!!! Ну тогда, лично мне пришла-бы в голову мысля о том, чтоб не создавать некий фейк-объект для разгрузки pstor актера, а использовать для этого уже существующий. К примеру того-же Сидора или Бармена, если конечно по сюжету не планируется их "изъятие" из бытия. Некто все засовывал в лампочки, но это было еще в бородатом году, когда я еще "не родился" даже. Ребята, давайте уже юзать get_stored_vars(), я где-то полгода назад еще о его успехах писал. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 24 Июля 2015 Поделиться Опубликовано 24 Июля 2015 (изменено) alife():release( self, true ) - это - гениально, да. В результате получаем зависший скрипт.Что до пресловутого нетпакета, то в той "солянке" с ее вечно "переполняющимся" пакетом, после сноса явного мусора этот самый пакет и до 200 байтов дотянуть ни как не может. И это еще task_manager остался, который по-хорошему тоже надо полностью снести.P.S. "А как ?" - а вот подумать, нужен ли этот мусор вообще, типа хранения в pstor актора id всех заспавненных объектов, например, или эти id таки не нужны. Ну и если что-то надо для каких-то других объектов - у этих других есть, например, custom data, ага. Изменено 24 Июля 2015 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Zander_driver 10 331 Опубликовано 24 Июля 2015 Поделиться Опубликовано 24 Июля 2015 Кто-нибудь сталкивался с таким эпизодом в модинге, когда скрипт, который только что работал, вдруг пропал для движка? Где копать? В частности такое бывает если у нас рушится 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. Ссылка на комментарий
makdm 37 Опубликовано 24 Июля 2015 Поделиться Опубликовано 24 Июля 2015 Спасибо за ответы! По-ржал от души! Знаете, чем отличаются американские форумы от русских? На американском форуме задаёшь вопрос - все пытаются тебе помочь. На русском - при ответе на вопрос, все начинаются мериться своими .... познаниями. Вообще-то вопросы были не про хранение переменных, а немного о другом: 1.Почему при обработке 62 объектов игра идёт стабильно без вылетов и всё в игре работает так, как задумано разработчиком? 2.Почему при спавне 63-го объекта - движок "не видит" отдельный файл в папке Scripts??? 1 2 Ссылка на комментарий
Marafon6540 754 Опубликовано 24 Июля 2015 Поделиться Опубликовано 24 Июля 2015 63 раза Магия чисел. А вот это число (63) - было где-то прописано? Почему именно 63? Задаю вопрос совсем по другой причине, но там тоже присутствует именно 63. Трилогия Апокалипсис. Упавшая звезда. Честь наемника. v. 1.2 УЗЧН v.1.3 + ОГСРх64 Последний сталкер v. 1.2 ПС v. 1.3 + ОГСРх64 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти