NemesiS 0 Posted July 6, 2017 Делаю так: channelID = chatManager.battleTeamChannelID if channelID is not 0: BigWorld.player().broadcast(channelID, 'Hello') не получаю никаких ошибок, но и сообщение тоже не вылазит. И еще вроде кириллицей шлется как то по другому? И как написать в общий чат? Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #396802 Posted July 6, 2017 (edited) @NemesiS, не изобретай велосипед, клац. И вообще советую поискать по форуму, как раковому, так и по корейке, кто использует гитхаб, и почитать там сорцы модов. Элементарных вопросов будет намного меньше. common_controller = getBattleChatControllers()[2] if common_controller is not None and common_controller.canSendMessage()[0]: message = u'Хелло ворлд! Это должно быть скомпилено в кодировке исходника utf-8 или закодировано через \x00\x01 и т.д. в кодировке utf-8 и сохранено как бинарная строка (тогда энкодер ниже в коде на отправку не требуется). Почему utf-8? В отличие от всякого разного остального шлака вроде windows-1251 поддерживаются все языки и символы. Это не говоря уже о том, что сообщения пересылаются в utf-8 кодировке бинарными строками. И вообще, вся эта огромная строка, написанная на одной строке или с переносами улетит в чат. Причем должна появиться там на русском, а не кракозябликами.' common_controller.sendMessage(message.encode('utf-8'))З.Ы. В общий чат получится написать только если в него писать технически можно (если картоха дает добро), ибо я слышал что блокировали его, но м.б. уже разлочили, не в курсах. Edited July 6, 2017 by GPCracker 1 Quote Share this post Link to post Short link Share on other sites
NemesiS 0 #396848 Posted July 6, 2017 (edited) Да в общий чат писать не получается, поэтому и ошибок нет. message = 'Жопа!' common_controller.sendMessage(message.encode('utf-8')) Выдает кракозябры. message = 'Жопа!'.encode('utf-8') common_controller.sendMessage(message) тоже кракозябры. Закодировать тоже не вариант, текст в конфиге хочу хранить. И еще клиент выдает что то типа "Message suspended for 0,5 sec" когда посылаю первый раз, со второго раза посылается. Edited July 6, 2017 by NemesiS Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #398764 Posted July 24, 2017 (edited) Выдает кракозябры.1. Забыл мааааленькую буквочку `u` перед определением строки. Эта буквочка как раз таки принципиальна здесь. Почитай про типы строк в питоне.2. В начале файла (если ты компилишь и кидаешь в клиент) нужно написать # -*- coding: utf-8 -*-и одну строку после этого оставить пустойподробности прописаны тут. Либо брать отладчик, который понимает unicode. 3. Сначала попробуй писать в командный чат, потом просто заменишь контроллер на общий вместо командного. 4. Как вариант второго варианта можно попробовать сначала закодировать строку в бинарную, а потом уже отправлять через отладчик, но уже тогда без кодирования при отправке. Кстати, что используешь для тестов? Компилишь файл и в клиент кидаешь? Или отладчиком пользуешься? Edited July 24, 2017 by GPCracker Quote Share this post Link to post Short link Share on other sites
Serfer_78 2 #401702 Posted August 27, 2017 @NemesiS, не изобретай велосипед, клац. И вообще советую поискать по форуму, как раковому, так и по корейке, кто использует гитхаб, и почитать там сорцы модов. Элементарных вопросов будет намного меньше. common_controller = getBattleChatControllers()[2] if common_controller is not None and common_controller.canSendMessage()[0]: message = u'Хелло ворлд! Это должно быть скомпилено в кодировке исходника utf-8 или закодировано через \x00\x01 и т.д. в кодировке utf-8 и сохранено как бинарная строка (тогда энкодер ниже в коде на отправку не требуется). Почему utf-8? В отличие от всякого разного остального шлака вроде windows-1251 поддерживаются все языки и символы. Это не говоря уже о том, что сообщения пересылаются в utf-8 кодировке бинарными строками. И вообще, вся эта огромная строка, написанная на одной строке или с переносами улетит в чат. Причем должна появиться там на русском, а не кракозябликами.' common_controller.sendMessage(message.encode('utf-8'))З.Ы. В общий чат получится написать только если в него писать технически можно (если картоха дает добро), ибо я слышал что блокировали его, но м.б. уже разлочили, не в курсах. А можно ли таким способом отправить сообщение в командный чат с помощью сокетов? Например как нибудь так.. from gui import SystemMessages import socket #данные сервера UDP_IP = '127.0.0.1' UDP_PORT = 10020 udp_socket = socket.socket(AF_INET, SOCK_DGRAM).bind( (UDP_IP,UDP_PORT) ) data, adress = udp_socket.recvfrom(1024) if not data : udp_socket.close() common_controller = getBattleChatControllers()[2] if common_controller is not None and common_controller.canSendMessage()[0]: message = data common_controller.sendMessage(message.encode('utf-8')) udp_socket.close() Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #401703 Posted August 27, 2017 Например как нибудь так..1. Как минимум меня смущает тот факт, что сообщение приходит по сокетам в бинарном виде... зачем тогда его кодировать? (encode('utf-8') не требуется, сообщение при передаче должно быть изначально закодировано) 2. Организация чтения из сокета. Больно нестабильно. Советов и примеров толковых правда дать не могу, ибо сам толком не вникал, как это наиболее правильно делать, но так, как реализовал это на примере ты... слишком многое не учтено, адрес отправителя, обработка исключений, отправка большого сообщения и т.д. 1 Quote Share this post Link to post Short link Share on other sites
Serfer_78 2 #401713 Posted August 27, 2017 (edited) 1. Как минимум меня смущает тот факт, что сообщение приходит по сокетам в бинарном виде... зачем тогда его кодировать? (encode('utf-8') не требуется, сообщение при передаче должно быть изначально закодировано) 2. Организация чтения из сокета. Больно нестабильно. Советов и примеров толковых правда дать не могу, ибо сам толком не вникал, как это наиболее правильно делать, но так, как реализовал это на примере ты... слишком многое не учтено, адрес отправителя, обработка исключений, отправка большого сообщения и т.д. "но так, как реализовал это на примере ты.." Та нет это только псевдокод, набросок для понимания вопроса)) Я уже почти разобрался как данные передавать в клиент, вот только осталось прикрутить это дело к чату, но пока не разобрался как правильно отправлять стандартное сообщение в командный чат.. Спасибо за быстрый ответ. Мечтаю общий чат вернуть хотя бы посредством доп софта, с общим прикольнее было.. )) Edited August 27, 2017 by Serfer_78 Quote Share this post Link to post Short link Share on other sites