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

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

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

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

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 ядер, 32 потока, 5.75 ГГц); 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 ядер, 32 потока, 5.75 ГГц); 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 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

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

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

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

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

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

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

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

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

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

098d11ce4cc28dabcccfd1ed4d27444e5b7a0524

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

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

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

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

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

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

 

 

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

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

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

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


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

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

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

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

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

 

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

 

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

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

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

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

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

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

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

Войти

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

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

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