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

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

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

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

function actor_binder:key_pressed(37)

....

end

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

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

@AlexLuzifer, Регистрировать функцию actor_binder:key_pressed(DIK) нужно в bind_stalker . Ты колбэк в reinit() и net_destroy() добавлял?

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

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

Нету.

 

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

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

 

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
Ссылка на комментарий

Всем привет!

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

 

 

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

Есть скрипт  - 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
Ссылка на комментарий

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

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

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

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

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

 

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

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

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

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

При сохранении игры происходит спавн объекта и в его 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, вот это пока для меня осталось непонятным.
Ссылка на комментарий

 

 

При сохранении игры происходит спавн объекта и в его 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
Ссылка на комментарий

 

 

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

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

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

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

 

 

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

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

Мод, где не бывает одинаковых путей - Судьба Зоны. На базе модифицированного движка OGSR Engine.

В пределах 2022 года я завершаю все разработки на базе движка X-Ray. Гайды по сделанному будут написаны, наработки по СЗ на базе X-Ray будут либо опубликованы, либо переданы тем людям кто этого заслуживает.

Дальнейшая разработка и реализация моих идей будет происходить на движке Unreal Engine. И где-то в пределах 2022 года, об этом совершенно точно, будут новости.

 

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

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

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

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

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

 

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

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

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

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

 

 

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

 

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

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

Присоединиться к обсуждению

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

Гость
К сожалению, ваш пост содержит слова, запрещенные в нашем сообществе. Пожалуйста, измените ваш текст так, чтобы в нем не оставалось слов, указанных ниже. Помните, что публикация вами даже видоизмененного запрещенного слова может нарушать законодательство РФ и Правила форума.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

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

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

AMK-Team.ru

×
×
  • Создать...