1. Для общения на форуме, в чате или личной переписке наличие аватара ОБЯЗАТЕЛЬНО!

Показометр (ака "котик")

Тема в разделе "Диетическая Солянка 2016", создана пользователем Dennis Chikin, 15 мар 2019.

  1. Dennis Chikin

    Dennis Chikin Модератор

    94
    39
    3 мар 2019
    Мужской
    Поскольку изначально был соляночным инструментом, пущай будет здесь.
    Текущая версия: https://drive.google.com/open?id=1o62K-KPVjcJNFwAjG76pK9ogVzXHOcsa (2019-03-24)
    В диетсоли оно называется cheat.script + test_tools.script (и, да, спавнер в ем тоже есть, только без менюшек красивых).

    Сам файл независимый, то есть, подключать его можно в любой мод в любое место, изменения надо будет вносить под конкретные конфиги, и под конкретный движок (у ОГСЕ и его клонов сдвинуты clsid относительно оригинала). Какие-либо файлы не затрагиваются, кроме тех, откуда вы сами будете добавлять вызов.

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

    Подробности буду разбирать в следующих постах (на этой неделе у меня состояние полного нестояния.
     
    Последнее редактирование: 23 мар 2019
  2. Dennis Chikin

    Dennis Chikin Модератор

    94
    39
    3 мар 2019
    Мужской
    Важно: в распространенных в настоящее время сборках вызов осуществляется не вполне корректно.
    То есть, если используется, скажем, ui_main_menu.script, то после вызовов вида
    elseif dik == DIK_keys.DIK_P then
    pokazometr.show_actor_position()
    следует дописать, к примеру
    if game_is_running() then console:execute( "main_menu off" ) end
    - чтобы менюшка сама закрывалось, и не было двойных нажатий.

    А то Петренка, например, таким случайным двойным нажатием был испуган на столько, что котами аэрофлота летать теперь отказывается категорически. ;)
     
    basil нравится это.
  3. Dennis Chikin

    Dennis Chikin Модератор

    94
    39
    3 мар 2019
    Мужской
    Котик обновлен до актуальной рабочей версии.

    Обещанный разбор, что там к чему, и как куда прикручивать:

    function enable( v ) -- разрешает/запрещает динамически сообщения, в настоящее время нужно для показа координат и реального fps. Вызывать из актора при net_spawn() с параметром true, из net_destroy() - false.
    Если не вызвать enable( true ) - показ координат будет однократным, если вызвать enable( true ) и не сделать при переходе между локациями/перезагрузке enable( false ) - будет вылет с невменяемым логом.

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

    function reinit() -- опять же надо для универсальности и независимости от "неправильного момента вызова". Вызывается из всех прочих функций, которым это надо.
    Если игра не стартовала - ни она, ни все остальные функции ничего не делают. Если игра запущена - частично сбрасывает ранее накопивщийся "мусор" и перезаписывает данные, которые будут нужны для остальных функций (часть которых может быть получена только после старта игры).
    Внутри необходимо заполнить соответствие мнемоник и классов, меток, партиклов и прочего, а также имена секций и уникальные имена нужных Вам объектов в с соответствии с конкретным модом и используемой версией движка.
    В ипостаси "котика", которая Pokazometr.script, все заполнено для ОП2.1; как получить значения классов - см. далее. Имена меток и партиклов можно найти в конфигах мода.

    clear_bad_objects() - в main_menu.script для ОП2.1 привязана к конопке F2. Можете переделать так, как Вам нравится.
    В настоящее время это сканнер классов объектов, объектов с кривыми именами и дублей.
    Выдает найденное в лог, удаляет ОП2.1 объекты с кривыми именами, помечает на карте и партиклами эти самые кривые объекты.

    В логе будут следующие записи:
    1. после строки clsid: - соответствие классов и имен секций. по имени секции в общем случае можно получить представление о классе, так, например, из строки 129: wpn_g36 можно сделать вывод, что 129 - класс автоматического оружия с подствольниками и прицелами, из строк вида 34: ros_bandit_respawn_3 и 34: bar_stalker_respawn_1 - то, что 34 - это сталкеры....
    Используйте для заполнения значений в reinit() для Вашего мода.

    2. bad gvid: - имена, классы и id объектов с кривыми координатами. Их необходимо удалить, если это не, к примеру, квестовые неписи. Иначе будете иметь странные вылеты. С неписями/монстрами все сложно - оставлять их в таком виде нельзя, удалять тоже нельзя. Попробуйте дождаться на локациях, где вылетов нет, пока они не попадут в более адекватные места.

    3. bad name: с объектом что-то явное не то, и лучше бы его удалить. Собственно, таки удаляются сразу, если сканнер не обнаружил потенциальную проблему от удаления.

    4. dup: - дубликаты объектов. Чреваты вылетами типа приснопамятного вылета в лабиринте в Мертвом Городе НС2010. Выдается имя, секция, класс, id и локация. Что с такими объектами делать - решайте сами. Возможно, допилю автоматическое удаление тех, для которых это выглядит безопасно.

    Продолжение следует.
     
    Последнее редактирование: 24 мар 2019

Поделиться этой страницей