Как сценарий lua может вызвать функцию, которую он не импортировал? - PullRequest
0 голосов
/ 12 апреля 2020

Чтобы было ясно, это не как я делаю X? Смущаюсь Х не рабочий вопрос. Это да, я делаю X, я не понимаю, почему работает X вопрос. Я очень плохо знаком с языками сценариев, и я пытаюсь сделать несколько сценариев для сервера для действительно старой игры, Gothi c 2. Нет необходимости вдаваться в подробности, но я понял, что мои сценарии вызывают все эти функции (что Я копирую вставку со страницы вики серверной платформы), и все они просто запускаются. В моих скриптах нет операторов 'require X'. Как интерпретатор Lua видит эти функции?

1 Ответ

2 голосов
/ 12 апреля 2020

Lua не похож на Python или C или на другие языки, где каждый файл живет в своем собственном юниверсе, почти полностью отделенном от других файлов, с единственными связями между файлами, созданными явным запросом. В Lua любой идентификатор, который не представляет локальный в области использования этого идентификатора, представляет доступ к глобальной таблице среды. И эта таблица работает так же, как и любая другая таблица в Lua: вы обращаетесь к именованному ключу в этой таблице.

Следовательно, любое значение, доступное через эту глобальную среду в то время, когда оператор Lua является Выполненный может использоваться в этом операторе.

Если среда C, на которой выполняется ваш сценарий Lua, прикрепляет набор функций в глобальной среде, то любой сценарий Lua, который он запускает, может получить доступ к ним. Это, вероятно, то, что происходит в этой игре.

...