2016-12-02 6 views
1

В World of Warcraft Vanilla Lua Addon Development, как я могу вызвать HTTP-вызов для получения данных? Если нет, как я могу получить данные из веб-источника в игру во время игры?WoW Lua - Получить данные по URL-адресу (Vanilla)

У меня такое чувство, что ответ трагически короткий, но хотелось бы задать вопрос и ответить на Stack Overflow. Мое исследование оказалось недостаточным, и я помню, как я делал некоторые LUA в 2007 году и был разочарован.

+0

Причина Downvote? – Suamere

+0

Я поможем вам. * upvoted * – user7393973

ответ

3

Ну, трагически короткий - это преуменьшение. Вы просто не можете. Не было никаких API-интерфейсов, которые напрямую взаимодействовали с соединениями, не говоря уже о создании любых, не говоря уже о произвольных URL-адресах.

Большинство из них просто транслируют игровые события, происходящие из соединения игры, а ближайшая вещь, которую вы можете получить в «потоке данных», - это дополнительные чат-каналы. Но поскольку боты нарушают ToS, вы не сможете сделать учетную запись, которая отвечает на запросы вашего аддона.


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

Общая идея заключается в том, что ваш аддон будет иметь открытый ключ (как при шифровании), и вы (только вы) задержите закрытый ключ. Ваш аддон отправляет сообщение всем подключенным одноранговым узлам, которые хранят его в скрещенных разрешениях SavedVariables, и вы надеетесь, что кто-то будет иметь символы в нескольких сферах. После входа в систему клиентский аддон будет транслировать свой последний пакет (все еще зашифрованный) на канал аддона этого домена, и, надеюсь, через неделю или около того вы можете получить обновленную информацию для всех клиентов.

Недостатком является то, что вы получите только уведомления «push», клиент не сможет отправить вам какие-либо данные *.

Это, или вы могли бы выпустить патч для аддона на Curse: P


Но постойте!

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

Кроме того, вы даже можете связаться с разработчиками сервера, чтобы предоставить вам API, который отправляет сообщения на соответствующий канал админ-админа (вам нужно будет спросить).

Конечно, если вы притворитесь, что сделаете свой аддон-агностик, вместо того, чтобы адаптироваться к определенному серверу, вы вернетесь к квадрату.


  * Если вы действительно посвящены, чтобы это произошло, потому что это тонна работы.

+0

Спасибо Kroltan. Atlas Loot позволяет вам «запрашивать сервер», чтобы получить информацию о предмете, учитывая некоторые условия. Я просмотрел весь этот код и не могу найти ничего, что на самом деле вызывает сервер. Если бы это было так, я хотел бы знать, где бы я мог перехватить его на моем личном сервере и закодировать обработчик, чтобы попасть в другую конечную точку. Я предполагаю, что Atlas Loot действительно просто запрашивает некоторые данные, которые встроены в клиент, и никогда не покидает ПК пользователя. – Suamere

+0

@Suamere Я не особенно знаком с Atlas, но, похоже, они просто упаковывают базу данных с аддоном в виде удобной структурированной таблицы Lua. Что касается частного сервера, у вас может быть специальный канал чата и общение с аддоном через сообщения чата. Слушайте сообщения в определенном формате и передавайте ответы, помеченные адресатом. – Kroltan

0

В ванильном WoW нет веб-API. В игре есть виджет веб-браузера, хотя и очень ограниченный в использовании.

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

+0

Это не отвечает на вопрос, но я не могу не упомянуть об обходной идее. Хотя целью было бы легко переносить возможности на другие частные серверы, если они захотят. Чем меньше изменений на стороне сервера мне нужно сделать, тем лучше. Но я легко могу представить некоторые базовые изменения, которые я мог бы проверить на своем собственном сервере при разработке этого, и это может быть минималистичным. – Suamere