Jump to content
Korean Random

DIVlNATOR

User
  • Content Count

    10
  • Joined

  • Last visited

Community Reputation

5 Noob

Basic information

  • Gender
    Мужчина
  • City
    Сочи

Contacts

  1. @Ekspoint Спасибо.. Да недавно натолкнулся в исходниках night_dragon_on... Единственное я не понял как работать с кодировкой... В Orione данный фокус норм отрабатывал: string = 'Привет всем!'.decode('cp1251') string.encode("utf-8") После компиляции в названии окошка в боевом клиенте надпись типа "Ppp". В шапке файла стоит указание на кодировку файла... # -*- coding: utf-8 -*- Причем в клан чат пишется все по русски. Не знаю... Может смотрю в сторону того, что нужно найти как подгружаются файлы *.mo. Добавить свой файлик и из него уже забирать фразы.. Но думаю, что есть способ легче)))
  2. @StranikS_Scan Спасибо. Я понял уже... Прочитал про getAttr и setAttr. Попутно просто Python изучаю. Я вот так еще обернул в декоратор: # coding=utf-8 from gui.mods.autumn_core import AutumnEnum # Декоратор для замены методов обьявленного класса # # @Override(Class, 'method') # def test(self, *args) # class Override: __methodType = None __methodName = None __clazz = None MethodType = AutumnEnum(['FUNCTION', 'METHOD', 'STATICMETHOD']) @classmethod def __init__(cls, clazz, method_name, method_type=MethodType.FUNCTION): """ :type clazz: type :type method_name: str :type method_type: MethodType :return None """ cls.__clazz = clazz cls.__methodName = method_name cls.__methodType = method_type @classmethod def __call__(cls, *args, **kwargs): func = args[0] if type(func == 'function'): if cls.__methodType == Override.MethodType.METHOD: cls.__overrideMethod(func) elif cls.__methodType == Override.MethodType.STATICMETHOD: cls.__overrideStaticMethod(func) else: cls.__overrideMethod(func) @classmethod def __override(cls, new_method): if hasattr(cls.__clazz, cls.__methodName): if isinstance(getattr(cls.__clazz, cls.__methodName), property): setattr(cls.__clazz, cls.__methodName, property(new_method)) else: setattr(cls.__clazz, cls.__methodName, new_method) @classmethod def __overrideStaticMethod(cls, new_method): cls.__override(staticmethod(new_method)) @classmethod def __overrideMethod(cls, new_method): cls.__override(classmethod(new_method)) class Test(object): def test(self): return 1234 print Test.test() @Override(clazz=Test, method_name='test') def test2(): return 555 print Test.test()
  3. @Ekspoint Вроде разобрался... Но немного пока для меня это магия, что можно заменить метод инициализированного класса своим методом...
  4. @Ekspoint Спасибо... Еще вот так пробовал, но там нету сеттера: from messenger.storage import storage_getter, ChannelsStorage class ClanChannelCriteria(object): def filter(self, channel): return channel.getName() == '[SPCTE]' storage = storage_getter('channels')() if isinstance(storage, ChannelsStorage): channel = storage.getChannelByCriteria(ClanChannelCriteria()) print channel.getName()
  5. Добрый день товарищи... Python до этого не изучал, многое что не особо понятно после Java. Немного не пойму строчку из мода "mod_versus": old_getFullName = BWChannelEntity.getFullName 1) почему BWChannelEntyty - это статичный класс? 2) почему "getFullName" укзана как переменная, а не метод? 3) а. Если выполнить из PJOrion, то в первом случае исключение: *** NameError: name 'BWChannelEntity' is not defined *** *** <unbound method BWChannelEntity.getFullName> б. А если выполнить как BWChannelEntity.getFullName() то: *** TypeError: unbound method getFullName() must be called with BWChannelEntity instance as first argument (got nothing instead) 4) Я наверно не совсем понимаю как получить обьявленный ранее обьект и изменить его... В конечном итоге, я хочу получить: Найти окно клан-чата, и переименовать его
  6. Доброго времени суток сообщество! Недавно мне необходимо было поработать с WGPAPI, но для удобства работы с получением данных, я не нашел ни одной подходящей библиотеки написанной на Java (Либо плохо искал). Решил исправить это. Представляю вам свой небольшой проект: Java SDK для работы с Wargaming.net Public API Приступая к работе Перед началом работы с Wargaming.net Public API, ознакомьтесь с условиями использования и документацией. Далее вам необходимо зарегистрировать приложение. Для регистрации необходимо: Войти в кабинет разработчика Перейти в раздел "Мои приложения" Нажать "Добавить приложение" (На экране появится форма для регистрации приложения). Выбрать тип приложения. См. Типы приложений. Ввести название приложения (Когда произведён вход в приложение, его название будет отображено на странице «Сеансы» в «Личном кабинете» пользователя). Нажать "Добавить приложение" (На экране появится список добавленных приложений). После успешной регистрации приложения вы получите идентификатор приложения (Далее по тесту "application_id"), который является идентификатором вашего приложения для обращения к API. Для получения контента WG Public API регистрация приложения является обязательной. См. Использование application_id. Предварительные условия Java JDK 1.8 или новее Maven 3.3.9 или новее WgClientApi 1.0.0 или новее Зависимости проекта Расширение для WgApiClient использует: WgClientApi 1.0.0 или новее Документация проекта Документация проекта доступна тут. Установка Можно взять от сюда: Добавить в файл "pom.xml" вашего проекта следующую зависимость: <dependency> <groupId>io.github.divinator.wgapi</groupId>. <artifactId>wgapi-client-wot</artifactId> <version>LATEST_VERSION</version> </dependency> Использование Доступно несколько возможностей сконструировать обьект: Указать только "application_id" WgApiClient client = new WgApiClient("application_id"); Указать "регион" и "application_id" WgApiClient client = new WgApiClient(Region.RU, "application_id"); Указать "транспортный протокол", "регион" и "application_id" WgApiClient client = new WgApiClient(new NetHttpTransport(), Region.RU, "application_id"); Указание собственного транспортного протокола возможно потребуется в случае, если работа клиента будет осуществляться через Proxy-сервер. Далее необходимо инициализировать нужный "метод-блок", и у него вызвать нужный метод, с указанием параметров: AccountsMethod methodBlock = client.getMethodBlock(AccountsMethod.class); Map<String, AccountInformation> accountInfo = methodBlock.getAccountInfo("DIVlNATOR", null, null, null); Как вы успели уже заметить, в параметры метода можно передать значение "null". Переменные метода могут быть, как обязательные к заполнению, так и "null" (необязательные). Чтобы избавиться от "null", можно расширить нужный "метод-блок" и переопределить нужный метод. Возвращаемое значение у методов "метод-блока" может быть нескольких типов: <Entity> List <Entity> Map <String, Entity> Map <String, List <Entity>> Entity - это сущности Wargaming.net Public API (см. документацию) со своими методами. Далее описан процесс получения нужных данных из "Entity", на примере "AccountInformation" AccountInformation accountInformation = accountInfo.get("3999999"); accountInformation.getNickname(); accountInformation.getAccountId(); Лицензия Этот проект лицензируется в соответствии с лицензией Apache — подробности см. в файле LICENSE
  7. @Kotyarko_O@EkspointБольше нет способов отобразить web-страницу, не используя интерфейс встроенного браузера движка игры (Как я понял по коду. не работал с питоном, может не правильно интерпретирую синтаксис)? Например в JavaFX есть WebView и WebEngine (webkit). Что то типа открываем окно добавляем WebView c указанным URI.
  8. @Ekspoint На уровне сервера проверяется запрос??? ERROR: [WebBrowser] FAILED Url: https://www.google.ru/, Http code: 418, Browser error:None Как я понял из вики, возможно меняется протокол? Поэтому проэкт "VERSUS mod" закрылся?
×
×
  • Create New...