Задать вопрос
  • Куда делась функция module?

    HabrSpar
    @HabrSpar
    Nightmare A, можно поискать lua 5.1 module polyfill или что-то такое. Его можно написать на чистом lua https://stackoverflow.com/a/16854537
    Написано
  • Куда делась функция module?

    HabrSpar
    @HabrSpar
    Её легко заменить. Удалили как раз по этой причине.

    Её основное действие, что она превращает весь файл в модуль. Все "типа глобальные" переменные объявленные в файле, будут внутри модуля.

    Классический пример:

    файл может называться как угодно

    module("mylib", package.seall)
    
    function myfunc()
        print("Hello world")
    end


    Как теперь:

    файл mylib.lua
    local M = {}
    
    function M.myfunc()
        print("Hello world")
    end
    
    return M


    package.seall навешивал метатаблицу, чтобы внутри файла были доступны глобальные функции, типа print.
    module ищет или регистрирует новую таблицу для модуля с именем первого аргумента. Далее она будет доступна через require.

    Если нужно также из любого файла создать модуль, то всё это делается через `package.loaded`
    Написано
  • Обмен сообщениями или информацией?

    HabrSpar
    @HabrSpar
    Алексей, _G по умолчанию является глобальным пространством, но это можно изменить. Я предположил, что запущенная игра всего одна, и в ней создаются изолированно объекты. Так реализовано в некоторых других играх. Увы, не могу понять что из себя представляет клиент, как работает игра и как работает создание объекта.

    Файл один из простых вариантов, но он не потокобезопасный. Если в файл напишут только один раз, то ок. но таким же образом можно и таблицу в Lua написать для всех объектов на чтение
  • Обмен сообщениями или информацией?

    HabrSpar
    @HabrSpar
    Алексей, что на счёт:

    _G.Test = nil
    
    function AI(myid)
        print(myid, _G.Test)
    
       _G.Test = myid
    end
  • Как правильно сделать расположение отображаемой плокости?

    HabrSpar
    @HabrSpar
    aselockd, в мультиплеерном режиме клиент вызывает эти функции дважды:
    1. Предсказывающая анимация. Вызывается моментально при нажатии и нужна, чтобы клиенту казалось, что действительно произошло моментально (хотя на самом деле пройдёт 10-30мс задержки пока клиент получит ответ от сервера)

    2. Клиент получит ответ от сервера, что действия зарегистрировано.

    Чтобы не срабатывал первый вызов, есть функция
  • Обмен сообщениями или информацией?

    HabrSpar
    @HabrSpar
    Алексей, древняя достаточно)

    Я бы попробовал так:

    Test = nil
    
    function AI(myid)
        print(Test)
        Test = myid
    end


    Если игра использует то же глобальное пространство, то переменная Test сначала будет nil, а при создании второго объекта выведет в консоль ID предыдущего объекта.
    Надеюсь, там есть консоль или место, куда выводить текст :-)
  • Обмен сообщениями или информацией?

    HabrSpar
    @HabrSpar
    Алексей, Странно, что логика находится у клиента. Может, всё проще? Может через глобальные переменные они смогут увидеть друг друга? Можно прислать документацию, возможно, там будет понятнее. Либо найти тематический форум этой игры