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

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

Есть конструкция проверки валидности версии игры

Вот конструкция:

if tonumber(_G.main_menu.get_main_menu():GetGSVer()) <= 1.0004 then
...
elseif tonumber(_G.main_menu.get_main_menu():GetGSVer()) == 1.0005 then
...
elseif tonumber(_G.main_menu.get_main_menu():GetGSVer()) == 1.0006 then
...
end

;)

 

А, может я неверно понял? Проверка не версии движка, а патче-фиксов мода? Тогда ищи в этой теме примеры использования pstor_store / pstor_retrieve .

Изменено пользователем Eugen81
 

10.png

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

@Zander_driver, на чистом ТЧ 1.0006 smart_terrain.check_script нормально работает.

 

Но printf из первой строчки скрипта не вызывался, компиляция не выполнялась, и даже не пыталась начаться.

Совсем не очевидно. Добавь к примеру такой же printf в _g.script.

 

Мне просто интересно, что вообще я мог такого сделать, чтобы это происходило. Какая может быть причина... есть у кого нибудь предположения?

Вроде это ты переколбашивал smart_terrain.script. Причина в этом :)

 

Удали геймдату, проверь чудо-чудное на чистом ТЧ 1.0004+RvP.


Подарки

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

     

     

    Вроде это ты переколбашивал smart_terrain.script. Причина в этом :) Удали геймдату, проверь чудо-чудное на чистом ТЧ 1.0004+RvP.

    Да это понятно. Я как бы интересуюсь, какого рода действия в принципе могут породить вот такой баг - отказ движка читать файл.

    Чистый ТЧ и не требовался, поставил вчерашний smart_terrain.script вместо сегодняшнего, и все пошло.

    Буду по одной строчке из нового в вчерашний переносить, пока не выясню в чем дело)

     

     

     

    проверка версии движка для своего мода...

    Тогда что там собственно, оптимизировать? вызов одной функции, почти ничего не ест.

    Еще одна горе-оптимизация?

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

    Обращение к smart_terrain.script может происходить до окончательной компиляции _g.script, и по крайней мере ТОЧНО происходит до появления валидного alife(), работающей КОНСОЛИ (Sic !), назначения кучи clsid и прочих чудес, включая полное определение пространства game.

     

    Да, в какой именно момент подхватывается RvP, и начинает работать printf() - тебе только автор скажет.

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

    причина в клсидах оказалась)

    там у меня табличка была. вида [clsid.что-то там] = что нибудь. ну и видимо на момент компиляции smart_terrain.script они еще были равны nil - что и приводило к разнообразным чудесам, следствиям рухнувшего namespace.

    Перенес формирование таблицы в функцию которая вызывается чуть попозже - и все заработало.

    А при обращении из колбека старта игры, printf из самого smart_terrain не срабатывал потому что файл компилировался раньше. Я это не сразу заметил, что эти сообщения просто в другом месте лога были.

     

    Вообще кстати говоря, не первый раз замечаю такое. Если в скриптах, к которым обращение идет до полной сборки _g.script, сотворить что-то, что обычно приводит к вполне понятным вылетам (там то в такой-то строке nil вместо того что мы хотели) например, то вот в этом случае вылет как правило будет неочевидный, неинформативный, и зачастую с руганью на что-то совсем другое.

    • Полезно 1

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

    А вот для этого, собственно, и система принудительной инициализации: по тому что иначе получившееся спагетти через n кругов или начинает ссылаться на самое себя, или хотеть того, чего к этому времени быть не может.

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

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

    Не соответствует правилам.

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

    @CRAZY_STALKER666, сохранение и загрузка флага это тоже вызовы, при любой реализации. Причем скорее всего более ресурсоемкие, чем вызов функции возвращающей версию движка.

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

    Всем привет, решил попробовать сделать скриптовой инвентарь, такая проблема: вывожу список предметов в инвентаре на GUI, вроде работает, но через пару секунд вылетает без лога. Перепроверял весь код, но не пойму где ошибка. Может ли кто-нибудь из опытных скриптеров глянуть? Ссылка:
    https://yadi.sk/d/3906kj0gs39UM

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

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

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

    Подскажите пожалуйста как совместить два колбека :

        self.object:set_callback(callback.use_object, self.use_object, self)
        self.object:set_callback(callback.use_object, self.use_inventory_item, self)

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

    @Sla-Sla, Ну надо же.

    Вообще, список предметов это еще не инвентарь. А по вашей проблеме, dsh исчерпывающий ответ дал. Подробнее вам никто и не скажет ;)

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

    Всем спасибо, уже разобрался с вылетом, но теперь новая трабла: строки с секциями повторяются несколько раз, вот скрин, на нем видно. Никто не знает способ исправления?

    098d11ce4cc28dabcccfd1ed4d27444e5b7a0524

    @Zander_driver, еще не инвентарь, но с чего-то надо же начать))

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

    Смотри алгоритм формирования этих данных, проверяй где какие данные чему равны. В "сборочном цехе" есть полезная функция для вывода в лог значений любого типа, я при разработке всяческих сложных систем, интерфейсов, постоянно ее применял и применяю. В любом месте кода можно взять и вывести в лог что угодно, посмотреть - там то что должно быть, или что-то другое? Бери и пользуйся, разбирайся, что и где работает не так, и почему.

    Изменено пользователем Zander_driver

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

     

     

    строки с секциями повторяются несколько раз, вот скрин, на нем видно. Никто не знает способ исправления?

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

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

    @UnLoaded, не только с патронами такая фигня, еще с бинтом.


    Остальные предметы выводятся одной строкой, как и задумано.

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

    Остальные предметы выводятся одной строкой, как и задумано.

    Наверное их просто по одной штуке, а бинта два? :) Купи у Сидора два ПМа.

    Подарки

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

    @Sla-Sla, если разберешься, то вот тут вот:

     

    https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/scripts/dsh_rukzak.script

     

    скриптовый рюкзак. Тоже в виде списка показывает содержимое себя в одной вкладке и содержимое инвентаря ГГ в другой. Примерно то, что тебе нужно.

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

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

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

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

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

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

    Войти

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

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

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

    AMK-Team.ru

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