Trinitycore Вопрос об API, доступных для сценариев LUA - PullRequest
0 голосов
/ 27 сентября 2019

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

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

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

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

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

Поэтому я подумал сделать скрипт lua на стороне сервера, который принимает [zonecoordinateX] [zonecoordinate 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

...