Trinitycore Вопрос об API, доступных для скриптов LUA

Прежде всего, позвольте мне извиниться, если это неправильное место для размещения этого вопроса.

Я играю с сервером Single Player Project для 3.3.5. Я пытаюсь создать сценарий, который телепортирует игрока всякий раз, когда пользователь указывает на карту внутри игры.

Я изменил  аддон Carbonite, чтобы добавить элемент в контекстное меню карты, чтобы он отправлял команду gm[.go zonexy][3] [zonecoordinate X] [zonecoordinate Y].

Однако это очень хорошо работает с одной загвоздкой. Работает только для текущей зоны игрока. Я хочу, чтобы он работал для всех зон, которые я вижу на карте. Для этого мне нужен zoneId, расположенный в AreaTableID. (Это необязательный аргумент для команды.go zonexy)

Да хоть убей, я не могу понять, как получить текущий идентификатор карты на стороне клиента. Я просмотрел его и нашел только  GetCurrentMapZone(), который дает мне номер, с которым я действительно не знаю, что делать. И  GetRealZoneText(),  который возвращает имя зоны, на которую указывает курсор на карте. Это почти то, что мне нужно. Мне нужен идентификатор зоны, а не имя зоны. И  GetCurrentMapAreaID(),  который также дает мне mapID, но не соответствует нужному мне zoneID.

Поэтому я подумал создать lua-скрипт на стороне сервера, который берет [координату зоны X] [координату зоны Y] [имя зоны] от клиента и преобразует имя зоны в идентификатор зоны. Или, альтернативно, каким-то образом вычисляет zoneid из GetCurrentMapZone() и GetCurrentMapAreaID().

Однако я не нашел документации о том, какие API доступны в скрипте Lua. Я просмотрел несколько сценариев, которые поставлялись вместе с однопользовательским проектом. Один из них - "System_Group_commands.lua" (прилагается ниже), к которому я подключился. Я успешно передал информацию от клиента, но я не знаю, можно ли найти строковое имя зоны и получить ее идентификатор из AreaTableID из LUA. Кроме того, еще одна проблема в том, что я передаю координаты зоны. Но функция Player: Teleport в LUA требует абсолютных координат карты. Я посмотрел исходный код на C++ для функций Teleport и для функции.go zonexy, и мне кажется, что функция.go zonexy преобразует локальные координаты в глобальные. С помощью


Zone2MapCoordinates(x, y, zoneEntry->ID); //line 454 in cs_go.cpp attached below

Однако я не знаю, доступна ли эта функция сценариям LUA.

Я был бы очень признателен, если бы мне кто-нибудь помог. Может быть, есть простой способ получить идентификатор зоны со стороны клиента или что-то еще, что мне не хватает...

Спасибо

PS. Картинка стоит 1000 слов... Вот как это работает до сих пор. Было бы здорово распространить его на другие области карты.

System_Group_commands.lua cs_go.cpp

0 ответов

Другие вопросы по тегам