Monstrofil 70 #485766 Posted July 23, 2020 25 минут назад, Dragon armor сказал: Их нетути. Только парсинг. Вот например есть строка из baseapp.o хм, реально нет куска видимо скопировать не успели :) Quote Share this post Link to post Short link Share on other sites
DrWeb7_1 181 #485767 Posted July 23, 2020 5 минут назад, Dragon armor сказал: Кроме файлов entity_description и *.o, ещё где-нибудь упоминание найдёшь? Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #485769 Posted July 23, 2020 @DrWeb7_1 А исходников всё те же два файла. Нет примеров использования. У меня очень запутанный парсинг def-файлов. Чего только названия функций стОят по 50+ символов длиной. Сейчас пытаюсь понять, можно куда-то эту секцию просто добавить, чтобы номера сообщений сдвинуть. Может поможет. Просто сдвинуть по количеству TempProperties, чтобы посмотреть на результат, не заработало. Quote Share this post Link to post Short link Share on other sites
DrWeb7_1 181 #485776 Posted July 23, 2020 Вот, кстати, в документации BigWorld описывается настройка XMPP-сервера. Ей ведь можно следовать для настройки оного для работы с эмулятором сервера игры или всё же есть некоторая куча собственных ухищрений? Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #485803 Posted July 24, 2020 18 часов назад, DrWeb7_1 сказал: или всё же есть некоторая куча собственных ухищрений Вот даже не знаю. Немного ознакомился с XMPP, похоже, они все друг с другом совместимы. Т.е. нужно взять любой сервер и посмотреть, что клиент будет отправлять ему. Что там по настройке в документации? Можешь скинуть или скрин показать. С сетевыми пакетами получается огромная проблема. У меня сделано не правильно. До какой-то степени, всё работает. Но с индексацией есть ошибка. Это всё настолько запутано, что непонятно, для чего так сделано. Например, назначение индексов для методов. Было так: читается файл def и по-порядку идут индексы. А теперь: всё также, но в конце сортировка по длине сообщения (от количества аргументов). И после этого назначение индекса. При этом, ещё и флаги используются (Exposed), назначение которых уже не помню. Хотел сделать, чтобы просто работало, а получается, нужно углубляться. У меня также ошибка в назначении диапазона для методов из def. Просто не помню, почему взял константами, видимо, не разобрался на тот момент. А диапазоны расчитываются в зависимости он начального количества предопределённых методов (это те, что в клиенте прописаны, а не в скриптах, типа логина и с десяток других). Да и тут у меня неправильно. Использую все 4 (property, client, base, cell), а надо по 2 на логин и сервер. А ещё и для арены надо как-то. Четыре раза переписывал/дописывал/исправлял. Три разных реализации используется сейчас в моих инструментах. И ещё раз надо, хоть и не всё заново, но фундаментальную часть, основу переписать. Quote Share this post Link to post Short link Share on other sites
DrWeb7_1 181 #485804 Posted July 24, 2020 2 минуты назад, Dragon armor сказал: Можешь скинуть или скрин показать. Могу всю PDF-ку целиком скинуть. howto_xmpp.pdf Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #485806 Posted July 24, 2020 @DrWeb7_1 Сейчас посмотрю. Надо, наверное, ангаром немного заняться, там проверял, методы вызываются правильно. А арену немного на потом скинуть. Quote Share this post Link to post Short link Share on other sites
blueferret 14 #486005 Posted July 30, 2020 On 7/19/2020 at 9:59 AM, DrWeb7_1 said: As disgusting as it sounds, I'm more of a web page layout designer. HTML, CSS3, PHP - I understand this. Somehow I began to understand Python 3.8 (using the discord.py library for creating bots for Discord as an example). I am fluent in PHP and webdev languages as well as nodeJS and JavaScript... all of which are NOT used in this mod :/ I've also created several Discord bots using NodeJS for a large server with 30 000 members in it. I am their primary/head developer if this helps :) Quote Share this post Link to post Short link Share on other sites
Plotnik5252ru 13 #486155 Posted August 2, 2020 24.07.2020 в 18:04, Dragon armor сказал: @DrWeb7_1 Сейчас посмотрю. Надо, наверное, ангаром немного заняться, там проверял, методы вызываются правильно. А арену немного на потом скинуть. Ну что нашёл? Как успехи вообще. Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #486831 Posted August 9, 2020 @Plotnik5252ru Никаких успехов. С Windows не так-то и много серверов xmpp. Единственный прмемлемый сервер - это jabberd2. С заявленной поддержкой Windows у меня ушло несколько дней, чтобы исправить все ошибки этой заявленной поддержки. Похоже, что несколько лет никто не притрагивался к той части проекта. Отсутствующие или переименованные файлы - это малое из того, что пришлось доделывать. Ну и да, скомпилированных бинарников нет, типа надо - сделай сам. Или, скорее всего, никому под Windows не надо. Далее непреодолимо сейчас, это заставить это поделие понимать тег ![CDATA[]]. И вот тут уже бессилен. Опять столкнулся с проблемой, которую решаю уже с момента моего последнего сообщения здесь. В одном месте нашёл, добавил специальный обработчик прямо в код, потому что эта хрень, видили те, не хочет знать о чём-то другом, чтобы можно было через плагины расширить функциональность. Но это не помогло, потому что где-то в недрах этого недоразумения опять происходит парсинг сообщения до отправки, но уже через другую копию парсера (со своим набором колбеков, парсер expat кстати), а не ту, которая используется в первом случае. И этот тег режится, остаётся только то, что в скобках указано, а не всё, как должно быть. А после того, как удастся преодолеть это, меня ждёт ещё дважды возможность поискать, где-же ещё надо добавить костылей, чтобы, наконец-то, сообщение отправилось клиенту в том виде, в котором мне надо, а не в котором эта мразь отправляет. Мммм, как увлекательно. Quote Share this post Link to post Short link Share on other sites
DrWeb7_1 181 #486832 Posted August 9, 2020 3 минуты назад, Dragon armor сказал: ![CDATA[]] Кажется, я такое в RSS-рассылках видел, чтобы аккуратно HTML-теги изолировать. А зачем оно тут? Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #486838 Posted August 9, 2020 @DrWeb7_1 Таким образом расширен протокол. Клиент отправляет запрос вида <iq id='...' type='get' from='...' xmlns='jabber:client'> <query xmlns='http://wargaming.net/xmpp#storage'> <list name='contact-notes'> <set xmlns='http://jabber.org/protocol/rsm'> <max>100</max> </set> </list> </query> </iq> И ожидает ответ <iq type='result' id='...' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client'> <query xmlns='http://wargaming.net/xmpp#storage'> <list name='contact-notes'> <set xmlns='http://jabber.org/protocol/rsm'> <count><![CDATA[0]]></count> </set> </list> </query> </iq> Quote Share this post Link to post Short link Share on other sites
DrWeb7_1 181 #486841 Posted August 9, 2020 47 минут назад, Dragon armor сказал: И ожидает ответ А как выглядит ответ со вставленным сообщением тогда? Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #486842 Posted August 9, 2020 @DrWeb7_1 У меня их немного. Вот ещё один. <presence to='...' from='...' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client'> <priority><![CDATA[0]]></priority> <wgexts-client xmlns='http://wargaming.net/xmpp#client'> <game-host><![CDATA[login.p7.worldoftanks.net:20014]]></game-host> </wgexts-client> <c ver='1LpOuB49QCQE6BcZoAF5tBoALdg=' node='http://camaya.net/gloox' hash='sha-1' xmlns='http://jabber.org/protocol/caps'/> <wgexts xmlns='http://wargaming.net/xmpp#v2'> <extra xmlns='http://wargaming.net/xmpp#extra-attributes'/> <userid><![CDATA[1234567890]]></userid> <nickname><![CDATA[...]]></nickname> <ban-info/> <moderator/> </wgexts> </presence> Ещё можешь файл client\messenger\proto\xmpp\extensions\ext_constants.py посмотреть и поискать по фразам из него в скриптах. Quote Share this post Link to post Short link Share on other sites
blueferret 14 #486848 Posted August 9, 2020 CDATA = compiled data. CDATA should be the same thing as compiled XML. @Dragon armorI'm also about to begin a C++ college course tomorrow for fall semester. Hopefully I will be of more help then Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #486849 Posted August 9, 2020 4 минуты назад, blueferret сказал: CDATA = compiled data. CDATA should be the same thing as compiled XML. I know. The problem is that jabberd2 doesn't understand this tag. Quote Share this post Link to post Short link Share on other sites
DrWeb7_1 181 #486850 Posted August 9, 2020 3 минуты назад, Dragon armor сказал: The problem is that jabberd2 doesn't understand this tag. Рубрика "тупые вопросы": допустим, если я попробую поднять XMPP-сервер на отдельной виртуальной машине (да хоть Ubuntu Server), а затем эмулятору сервера скормить IP-адрес этой виртуалки, на которой крутится этот сервер, то теоретически оно может заработать? Или обязательно наличие XMPP-сервера на машине, где запущен эмулятор игровой составляющей? Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #486858 Posted August 10, 2020 8 часов назад, DrWeb7_1 сказал: Рубрика "тупые вопросы" Вопрос, на самом деле, не тупой. Да, так можно. И на данный момент достаточно будет указать ip адрес или домен в настройках, которые передаёт эмулятор клиенту. Смотри xmpp_connections в скриптах эмулятора. Там в двух местах надо поправить. У меня на локальной машине, потому что так удобнее для отладки. Но ничего не мешает сделать удалённый сервер. Единственное, нужно будет сделать какой-то интерфейс по взаимодействию эмулятора и xmpp. С сообщением requestToken разобрался, что отправлять на его запрос - знаю. По сути, на это сообщение сервер отправляет логин (который является id клиента, пробовал другой, отличный от того, что присваивается клиенту, так клиент его не принимает) и пароль для подключения. Так что для тестовых целей можно прописать прямо в файле. Мне помнится, у тебя он есть (AccountAuthTokenProvider.py который). Напиши там что-то такое: def requestToken(self, requestID, tokenType): print 'requestToken {}, {}'.format(requestID, tokenType) if tokenType == TOKEN_TYPE.XMPPCS: self.client.onTokenReceived(requestID, tokenType, cPickle.dumps({'token': 12345, 'databaseID': 1}, 2)) И импорт добавь: import cPickle from constants import TOKEN_TYPE И можешь экспериментировать. Тебе в ЛС могу скинуть, что у меня есть по дампу трафика xmpp (кстати, огромная удача, что у меня есть дамп в одном единственном файле, просто случайно захватился, а иначе гадай, что там надо было бы клиенту). 'xmpp_alt_connections': [], 'xmpp_bosh_connections': [], 'xmpp_connections': [('127.0.0.1', 5222)], 'xmpp_enabled': True, 'xmpp_host': '127.0.0.1', 'xmpp_muc_enabled': False, 'xmpp_muc_services': [], 'xmpp_port': 5222, 'xmpp_resource': 'wot' xmpp_host - это после @ будет идти. Логин вида [email protected]. xmpp_resource - это после слеша будет вида [email protected]/wot или всё, что больше нравится. Адресов можно указать много больше одного. Но клиент, понятное дело, только к одному будет подключен. 8 часов назад, blueferret сказал: I'm also about to begin a C++ college course tomorrow for fall semester. In fact, all my knowledge of c(++) was obtained without education. My education is not even close to programming. You don't need a lot of knowledge, just the basics. Quote Share this post Link to post Short link Share on other sites
Plotnik5252ru 13 #486863 Posted August 10, 2020 2 часа назад, Dragon armor сказал: Вопрос, на самом деле, не тупой. Да, так можно. И на данный момент достаточно будет указать ip адрес или домен в настройках, которые передаёт эмулятор клиенту. Смотри xmpp_connections в скриптах эмулятора. Там в двух местах надо поправить. У меня на локальной машине, потому что так удобнее для отладки. Но ничего не мешает сделать удалённый сервер. Единственное, нужно будет сделать какой-то интерфейс по взаимодействию эмулятора и xmpp. С сообщением requestToken разобрался, что отправлять на его запрос - знаю. По сути, на это сообщение сервер отправляет логин (который является id клиента, пробовал другой, отличный от того, что присваивается клиенту, так клиент его не принимает) и пароль для подключения. Так что для тестовых целей можно прописать прямо в файле. Мне помнится, у тебя он есть (AccountAuthTokenProvider.py который). Напиши там что-то такое: def requestToken(self, requestID, tokenType): print 'requestToken {}, {}'.format(requestID, tokenType) if tokenType == TOKEN_TYPE.XMPPCS: self.client.onTokenReceived(requestID, tokenType, cPickle.dumps({'token': 12345, 'databaseID': 1}, 2)) И импорт добавь: import cPickle from constants import TOKEN_TYPE И можешь экспериментировать. Тебе в ЛС могу скинуть, что у меня есть по дампу трафика xmpp (кстати, огромная удача, что у меня есть дамп в одном единственном файле, просто случайно захватился, а иначе гадай, что там надо было бы клиенту). 'xmpp_alt_connections': [], 'xmpp_bosh_connections': [], 'xmpp_connections': [('127.0.0.1', 5222)], 'xmpp_enabled': True, 'xmpp_host': '127.0.0.1', 'xmpp_muc_enabled': False, 'xmpp_muc_services': [], 'xmpp_port': 5222, 'xmpp_resource': 'wot' xmpp_host - это после @ будет идти. Логин вида [email protected]. xmpp_resource - это после слеша будет вида [email protected]/wot или всё, что больше нравится. Адресов можно указать много больше одного. Но клиент, понятное дело, только к одному будет подключен. In fact, all my knowledge of c(++) was obtained without education. My education is not even close to programming. You don't need a lot of knowledge, just the basics. Вижу работа ещё кипит. 2 часа назад, Dragon armor сказал: Вопрос, на самом деле, не тупой. Да, так можно. И на данный момент достаточно будет указать ip адрес или домен в настройках, которые передаёт эмулятор клиенту. Смотри xmpp_connections в скриптах эмулятора. Там в двух местах надо поправить. У меня на локальной машине, потому что так удобнее для отладки. Но ничего не мешает сделать удалённый сервер. Единственное, нужно будет сделать какой-то интерфейс по взаимодействию эмулятора и xmpp. С сообщением requestToken разобрался, что отправлять на его запрос - знаю. По сути, на это сообщение сервер отправляет логин (который является id клиента, пробовал другой, отличный от того, что присваивается клиенту, так клиент его не принимает) и пароль для подключения. Так что для тестовых целей можно прописать прямо в файле. Мне помнится, у тебя он есть (AccountAuthTokenProvider.py который). Напиши там что-то такое: def requestToken(self, requestID, tokenType): print 'requestToken {}, {}'.format(requestID, tokenType) if tokenType == TOKEN_TYPE.XMPPCS: self.client.onTokenReceived(requestID, tokenType, cPickle.dumps({'token': 12345, 'databaseID': 1}, 2)) И импорт добавь: import cPickle from constants import TOKEN_TYPE И можешь экспериментировать. Тебе в ЛС могу скинуть, что у меня есть по дампу трафика xmpp (кстати, огромная удача, что у меня есть дамп в одном единственном файле, просто случайно захватился, а иначе гадай, что там надо было бы клиенту). 'xmpp_alt_connections': [], 'xmpp_bosh_connections': [], 'xmpp_connections': [('127.0.0.1', 5222)], 'xmpp_enabled': True, 'xmpp_host': '127.0.0.1', 'xmpp_muc_enabled': False, 'xmpp_muc_services': [], 'xmpp_port': 5222, 'xmpp_resource': 'wot' xmpp_host - это после @ будет идти. Логин вида [email protected]. xmpp_resource - это после слеша будет вида [email protected]/wot или всё, что больше нравится. Адресов можно указать много больше одного. Но клиент, понятное дело, только к одному будет подключен. In fact, all my knowledge of c(++) was obtained without education. My education is not even close to programming. You don't need a lot of knowledge, just the basics. Интересно а для новичков в которые не шарят как да что будет гайд как сделать и что качать чтобы сервак заработал? https://m.vk.com/topic-104837919_38808801 прочекайте там вроде про движок может что полезное есть Quote Share this post Link to post Short link Share on other sites
DrWeb7_1 181 #486919 Posted August 10, 2020 (edited) Завернул XMPP-сервер на виртуалку с Debian 9, в качестве сервера выбрал ejabberd. Пока что-то не получается... 'xmpp_alt_connections': [], 'xmpp_bosh_connections': [], 'xmpp_connections': [('192.168.99.136', 5222)], 'xmpp_enabled': True, 'xmpp_host': '192.168.99.136', 'xmpp_muc_enabled': False, 'xmpp_muc_services': [], 'xmpp_port': 5222, 'xmpp_resource': 'wot' AccountAuthTokenProvider.py выглядит точно так же, как ты написал в предыдущем сообщении, @Dragon armor . Edited August 10, 2020 by DrWeb7_1 Quote Share this post Link to post Short link Share on other sites