NemesiS Posted July 6, 2017 Share Posted July 6, 2017 Делаю так: channelID = chatManager.battleTeamChannelID if channelID is not 0: BigWorld.player().broadcast(channelID, 'Hello') не получаю никаких ошибок, но и сообщение тоже не вылазит. И еще вроде кириллицей шлется как то по другому? И как написать в общий чат? @ Quote Link to comment Short link Share on other sites More sharing options...
GPCracker Posted July 6, 2017 Share 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 Link to comment Short link Share on other sites More sharing options...
NemesiS Posted July 6, 2017 Author Share 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 Link to comment Short link Share on other sites More sharing options...
GPCracker Posted July 24, 2017 Share Posted July 24, 2017 (edited) Выдает кракозябры.1. Забыл мааааленькую буквочку `u` перед определением строки. Эта буквочка как раз таки принципиальна здесь. Почитай про типы строк в питоне.2. В начале файла (если ты компилишь и кидаешь в клиент) нужно написать # -*- coding: utf-8 -*-и одну строку после этого оставить пустойподробности прописаны тут. Либо брать отладчик, который понимает unicode. 3. Сначала попробуй писать в командный чат, потом просто заменишь контроллер на общий вместо командного. 4. Как вариант второго варианта можно попробовать сначала закодировать строку в бинарную, а потом уже отправлять через отладчик, но уже тогда без кодирования при отправке. Кстати, что используешь для тестов? Компилишь файл и в клиент кидаешь? Или отладчиком пользуешься? Edited July 24, 2017 by GPCracker @ Quote Link to comment Short link Share on other sites More sharing options...
Serfer_78 Posted August 27, 2017 Share 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 Link to comment Short link Share on other sites More sharing options...
GPCracker Posted August 27, 2017 Share Posted August 27, 2017 Например как нибудь так..1. Как минимум меня смущает тот факт, что сообщение приходит по сокетам в бинарном виде... зачем тогда его кодировать? (encode('utf-8') не требуется, сообщение при передаче должно быть изначально закодировано) 2. Организация чтения из сокета. Больно нестабильно. Советов и примеров толковых правда дать не могу, ибо сам толком не вникал, как это наиболее правильно делать, но так, как реализовал это на примере ты... слишком многое не учтено, адрес отправителя, обработка исключений, отправка большого сообщения и т.д. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Serfer_78 Posted August 27, 2017 Share Posted August 27, 2017 (edited) 1. Как минимум меня смущает тот факт, что сообщение приходит по сокетам в бинарном виде... зачем тогда его кодировать? (encode('utf-8') не требуется, сообщение при передаче должно быть изначально закодировано) 2. Организация чтения из сокета. Больно нестабильно. Советов и примеров толковых правда дать не могу, ибо сам толком не вникал, как это наиболее правильно делать, но так, как реализовал это на примере ты... слишком многое не учтено, адрес отправителя, обработка исключений, отправка большого сообщения и т.д. "но так, как реализовал это на примере ты.." Та нет это только псевдокод, набросок для понимания вопроса)) Я уже почти разобрался как данные передавать в клиент, вот только осталось прикрутить это дело к чату, но пока не разобрался как правильно отправлять стандартное сообщение в командный чат.. Спасибо за быстрый ответ. Мечтаю общий чат вернуть хотя бы посредством доп софта, с общим прикольнее было.. )) Edited August 27, 2017 by Serfer_78 @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.