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

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

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

  1. Dennis Chikin

    Dennis Chikin Модератор

    253
    78
    3 мар 2019
    Мужской
    Добавил, пока для чисто соляночной версии (которая без всякого ненужного) проверку на то, есть-ли там, где находися, level vertex, или нет. Тупо по дистанции, 0.7
    Код:
    local lv_old1, lv_old2 = "n/a", "n/a"
    function show_pos()
    ...
        local lvid = actor:level_vertex_id()
       if pos:distance_to( level.vertex_position( lvid ) ) >= 0.71 then lvid = "n/a"
       else lvid = tostring( lvid )
       end
    
       if lvid ~= lv_old1 then
           if lv_old1 ~= "n/a" then lv_old2 = lv_old1 end
           lv_old1 = lvid
       end
         
       info_static1:SetText(
           string.format( "%.03f %.03f %.03f, lvid: %s (%s), gvid: %d",
           pos.x, pos.y, pos.z, lvid, lv_old2, actor:game_vertex_id() )
       )
    
    Пробовал перемещаться по диагонали - хм, нету никаких "дырок" при проверке. Вполне в это самое 0.7 вписываемся. В общем, меня устраивает. Посмотрю, стоит ли этим и ограничиться, или надо что-то добавить - например, поиск ближайшего, но пока так. Разумеется, никаких квадратиков, кружочков и прочего рисовать нигде не буду.
     
    Последнее редактирование: 1 окт 2019
  2. Dennis Chikin

    Dennis Chikin Модератор

    253
    78
    3 мар 2019
    Мужской
    "Адаптационное":

    Не забываем, что если какой-нибудь Пушкин Александр Сергеич не озаботился где-то определить функцию log(),
    Вам придется сделать это самостоятельно. Например, вписать в самое начало файла что-то типа такого:
    Код:
    function log( s )
       if s then
           get_console():execute( "load ~~~ " .. string.sub( s, 1, 180 ) )
           get_console():execute( "flush" )
       end
    end
    
    Ну и с правлеными движками у нас нонеча модно обрезать пару-тройку функций LUA, например, ipairs().
    В этом случае нужно использовать просто pairs(), хотя это будет медленно и печально.

    Ну так а что делать, если некоторых представителей илити с "крутыми" переразогнанными до испускания дыма компами жутко раздражает, что the bydlo может играть в те же игры, что и они? Я, правда, "небыдлософт" просто сношу. Илитке - илитковое, а нормальным людям там делать нечего.


    Получение классов для заполнения:
    function nuh_na_vse() выдает в лог сведения о ВСЕХ объектах, находящихся в цилиндре с радиусом 5 метров вокруг актора.
    В консоли/логе после вызова видим строчку, где первыми идут имя предмета, секция, id и класс. Соответственно, предмет можно опознать по имени и секции, а вот класс - это то, что надо внести в соответсвующие таблицы функии function reinit() вместо числовых значений, потерявших актуальность, или мнемоник, которых в каком-то конкретном моде просто нет.
    Кроме этого там же можно получить sid и spawn_id, например, для функций восcтановления дохлых/глючных/пропавших неписей или предметов/объектов, и координаты, например, для поиска нужных объектов в многоэтажных строениях/подземках. Именно для такого поиска радиус и ограничен 5-и метрами.
    Впрочем, кому надо больше - может изменить if obj.position:distance_to_xz( pos ) < 5 then на то, что надо.

    Также выводятся начальные строки "логики" для тех объектов, у которых она есть. - достаточно для опознания, а там можно уже другим способом вытащить.
     
    Последнее редактирование: 4 ноя 2019
    DrDron нравится это.

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