Jump to content
Korean Random

Search the Community

Showing results for '"hello world"'.

  • Search By Author

Content Type


Forums

  • Games
    • Armored Warfare
    • War Thunder
    • World of Warplanes
    • World of Warships
    • World of Tanks
    • WoT Mods
    • Games
  • General
    • Live Streaming and Video Production
    • Game Development and Game Engines
    • Programming and Development
    • Software: OS, Drivers and other programs
    • Computers, Devices and Hardware
    • DIY & Hand-Made
    • Culture & Media
    • General Discussions / Chit-Chat
  • Korean Random
    • About Korean Random
  • Тестовый клуб's Раздел 1
  • Тестовый клуб's Раздел 2

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


City


Interests


Instagram


Nick


Skype

  1. @AndreasMelone Check out this thread. It has a lot of useful links to examples. Check search: "Hello World"
  2. я кошковод есть linux, не так всё просто %) и... говнища для компиляции swf в винде сама научилась подтягиваться? уважение винде, разве что верю, что возможно так и есть, но... те кто сталкивался с билдами стороннего знают что почти никогда так просто не бывает. (У мну "тяжелый" случай чтобы "просто попробовать" - линукс. Не со зла, просто так нравится). Хотя, тулзы для реверса swf прекрасно свиристели, когда имел радость их пользовать. Питон - из коробки "для народа" @yepev // offtop hello world не соберется у 99% пользователей винды, статистикой не обладаю, но *опой чую, хотя, казалось бы, что за люди без турбопаскаля то Даже если "Вы/вы/ты", уважаемый @yepev перечислите сборную _хотя бы (де)компиляторов/интерпретаторов для сборки xvm прям тут, без разбора муток travis - поклонюсь в ноги. Уверен, что адресату понятно. Сторонним читателям может и нет; готов развернуть детали чуть позже. Вкратце - данная болезнь есть у XVM, не вижу причин спорить (как и оснований у меня, скажем, требовать чтобы оно под никсами вообще работало). Готов, временами, помочь с совместимостью, это да. в очередной раз пролистнул... Верю, что работает. И ** точка Никаких обид; сам я, просто, имел насколько полезный, настолько и неприятный опыт общения с подобными "немыми" скриптами... Берегите печень! =) ~~~~~~~~ лютый оффтоп выше ~~~~~~~~ По проблеме отлючения "боевой" части XVM может кто сказать, есть знающие homo?
  3. Hi ! I try to make a simple "Hello world!" into the python.log. I can't do anything. The XFW loader don't find my package into C:\Games\World_of_Tanks_EU\res_mods\mods\packages. Also i tried to use the example on Gitlab -> https://gitlab.com/xvm/xfw/xfw-example-actionscript But it doesnt load either. It seems the documentation https://gitlab.com/xvm/xfw/xfw-documentation isn't updated because i saw XFW package declaration in JSON format. Anyone has a updated default template ? (i prefer python function overload as action script)
  4. Добавьте строку import BigWorld в начало модуля и будет ОК. Это древняя штука у них, появилась несколько лет назад после очередной оптимизации нативного пайтона. Научного объяснения этому я не знаю, но думаю это связано с памятью и областями видимости и исполнения кода. То что сам скрипт и обфускация кода тут не причем, это очевидно. Модуль без проблем работает в обычным пайтоне. # -*- coding: utf-8 -*- import BigWorld print('Hello world')
  5. Есть повторяемая проблема обфускации кода. Шаги: Иерархия папок: -modTest --res\scripts\client\gui\mods ---mod_test.py --meta.xml mod_test.py: # -*- coding: utf-8 -*- print('Hello world') Через PjOrion делаю Bytecode->Obfuscate->Compile py-file и выбираю mod_test.py >>> Obfuscating... Please wait the completion message! >>> Compile obfuscated file 'mod_test.py' [0.03 seconds] Собираю в .wotmod файл, кидаю в mods чистого клиент танков. Запускаю игру, в лог выводится /------------------------------------------------------------------------------------------\ WorldOfTanks(x86) 0.0.0.0 (compiled at 07:18:44 Jul 8 2021) starting on Sat Jul 31 02:15:09 2021 2021-07-31 02:15:09.864: INFO: [Config] Command line: C:/Games/World_of_Tanks_RU/win32/WorldOfTanks.exe "" 2021-07-31 02:15:11.778: INFO: [SOUND] Start loading Main task 2021-07-31 02:15:11.778: INFO: [SOUND] Start loading Mod task 2021-07-31 02:15:11.779: INFO: [Scaleform] Create Scaleform Manager... 2021-07-31 02:15:11.854: INFO: Scaleform initialized 2021-07-31 02:15:11.867: INFO: [Scaleform] Scaleform Manager created. 2021-07-31 02:15:11.867: INFO: Unbound initialized 2021-07-31 02:15:12.469: INFO: WOT-Transmission initialization completed! 2021-07-31 02:15:12.471: INFO: You are in the __main__ module, use a WOT-Transmission menu command to work with the client 2021-07-31 02:15:12.472: INFO: ===================================================================================== 2021-07-31 02:15:12.568: TRACE: monkeyPatchOpen: BWUtil.monkeyPatchOpen: Patching open() True 2021-07-31 02:15:12.570: INFO: [Config] Default encoding set to utf-8 2021-07-31 02:15:12.572: TRACE: revertPatchedOpen: BWUtil.revertPatchedOpen: Reverting open() 2021-07-31 02:15:12.610: INFO: [PY_DEBUG] Release Client - Content Type: sd 2021-07-31 02:15:12.610: INFO: [PY_DEBUG] Checking C:/Games/World_of_Tanks_RU/res_mods/1.13.0.1/: mods not found 2021-07-31 02:15:12.610: INFO: [PY_DEBUG] Checking C:/Games/World_of_Tanks_RU/mods/1.13.0.1/: mods found 2021-07-31 02:15:12.611: INFO: [PY_DEBUG] Mod package 'c:/games/world_of_tanks_ru/mods/1.13.0.1/mod.testmod_0.0.1.wotmod' loaded 2021-07-31 02:15:14.530: INFO: [Scaleform] Create GUI Component: 'empty' 2021-07-31 02:15:14.530: INFO: [Scaleform] Change Owner on GUI Component: 'empty' -> 'loading_screen.gui' 2021-07-31 02:15:14.542: INFO: [Scaleform] Create GUI Component: 'FlashGUIComponent' 2021-07-31 02:15:14.542: INFO: [Scaleform] Change Owner on GUI Component: 'FlashGUIComponent' -> 'gui/flash/gameLoadingApp.swf' 2021-07-31 02:15:14.543: INFO: [gui.Scaleform.game_loading] Build: RELEASE 07:18:44 Jul 8 2021. Version: 2.8.0 2021-07-31 02:15:14.544: INFO: [gui.Scaleform.game_loading] App Startup 2021-07-31 02:15:14.616: DEBUG: [helpers.uniprof.regions] Region is entered: label=offline.game_loading, color=0xCE2606 2021-07-31 02:15:14.730: INFO: [gui.Scaleform.game_loading] Registering graphics settings 2021-07-31 02:15:14.747: INFO: [gui.Scaleform.game_loading] Preloading Resources 2021-07-31 02:15:23.843: WARNING: [web.web_client_api] Do not use "required" and "default" at the same time! 2021-07-31 02:15:23.844: WARNING: [web.web_client_api] Do not use "required" and "default" at the same time! 2021-07-31 02:15:23.845: WARNING: [web.web_client_api] Do not use "required" and "default" at the same time! 2021-07-31 02:15:23.846: WARNING: [web.web_client_api] Do not use "required" and "default" at the same time! 2021-07-31 02:15:24.022: INFO: [Scaleform] Create GUI Component: 'FlashGUIComponent' 2021-07-31 02:15:24.022: INFO: [Scaleform] Change Owner on GUI Component: 'FlashGUIComponent' -> 'gui/flash/waitingTransitionsApp.swf' 2021-07-31 02:15:24.745: INFO: Hello world После чего игра крашится без каких либо дополнительных ошибок. Тот же самый мод скомпиленный без обфускации игру не крашит, hello world выводит В чём может быть проблема?
  6. Привет всем еще раз! Наверное надоел уже, так что простите) Для меня всегда самым сложным было настроить среду разработки и конфиги, когда чем-то новым начинаешь заниматься и ничего не понятно как-то невесело неделю разбираться во всём чтобы написать хоть что-то. Так что я до сих пор пытаюсь запустить под танками хоть какой-то код, и до сих пор безуспешно. Сформулировал еще несколько вопросов, буду рад если кто-то ответит: Старый hello world с форума закидываю в res_mods (со всеми папками) и происходит ничего. Понимаю что за 5 лет многое должно было измениться, возможно у кого-то есть актуальная версия? Есть ли вообще примеры готовых модов (чем меньше, тем лучше), кроме xvm, в .wotmod или структуре для закидывания в /res_mods, которые можно посмотреть? Пробовал с помощью ориона декомпилировать моды которыми раньше пользовался - все не работают. По поводу XFW так и не понял, он давно добавлен в клиент игры и можно уже писать код с его использованием, или нужно скачивать и компилировать вместе с ним? И если второе, то откуда же его можно скачать и какие именно файлы нужны. Нашел доку про .wotmod, там написано что минимум должно быть /package.wotmod/res /scripts /client /gui /mods /mod_example.pyс. Если этого достаточно, знает ли кто-то пример минимального .py файла, который можно скомпилировать в .pyc или наоборот, который можно так закинуть в .wotmod, чтобы что-то работало? Понимаю что вопросы могут казаться глупыми и очевидными, но у меня не работает ничего. Есть сорсы xvm, понятно как с их примером что-то написать, но я нигде на форуме на нашел простейшей инструкции типа Написать в mod_example.py print("Hello") Скомпилировать один файл в .pyc Закинуть этот файл в /res_mods/0.x.x.x/scripts/client/gui/mods После запуска игры в python.log появится сам текст Сижу, пытаюсь что-то найти, куда-то закинуть файл что-бы что-то работало, но не могу сделать то, что делается 2 минуты, потому что понятия не имею как эти базовые шаги надо делать
  7. Флэшки - это готовые flash-компоненты, чтобы проще было делать gui? Ну вот как-то до сих пор не нашёл, хотя весь день тут сижу) В том числе в ссылке только пример пайтон скрипта, но не написано что с ним делать чтобы он начал использоваться. В той же теме с примером hello world последнее сообщение как раз про пайтон остается не отвеченным уже больше года..
  8. Спрашиваю еще про hello world) В офф. примере (https://gitlab.com/xvm/xfw/xfw-example-actionscript) не понятно как и чем компилировать, написано только куда положить результат + только as3 В этом примере ( , первый ответ) есть и питон и as3 и написано чем компилить, но появляются следующие вопросы: В примере подключают wg.swf, но в примере XFW есть только другие файлы https://gitlab.com/xvm/xfw/xfw-example-actionscript/-/tree/master/swc. Это библиотека изменилась, или wg.swf надо брать где-то в другом месте? В примере используют FlashDevelop, это логично для as3 файлов, но не для py, особенно если в моде только py файлы. Это FlashDeveloper без проблем компилит и python тоже или с ним что-то отдельно нужно делать? В доке описана структура проекта (https://gitlab.com/xvm/xfw/xfw-documentation/-/blob/master/2.getting_started/index.rst), но совершенно не понятно где брать скелетон или хотя бы файлы самого xfw, которые используются как это всё компилить. Единственное, что похоже на xfw либу это https://gitlab.com/xvm/xfw/xfw-buildscript-library, но тут просто пара неизвестных файлов. Как вообще вы пишете свои моды? Где берете скелетон, как компилируете и тестируете? Как-то даже странно, что за столько лет существования форума нет (наверное) ни одного полноценного текстового примера или видоса про создание мода от установки нужных инструментов до проверки результата. Даже по установке модов наверное видосы есть)
  9. Например есть такой Hello World: https://gitlab.com/xvm/xfw/xfw-example-actionscript Полезный, потому что основан на XFW и по сути это готовый способ стартануть быстрее всего, не набивая шишки от незнания куда податься. Дока лежит тут: https://gitlab.com/xvm/xfw/xfw-documentation (самая свежая, но немного не удобочитаемая). И тут: https://xfw.readthedocs.io/ru/latest/ она же, но не уверен насчёт свежести. И немножко по практике можно почитать тут: Про некоторые остальные вопросы можно поскрести информацию тут: И ещё есть такой пример Hello World в ангарном окошке: Логи питона идут в python.log в папке с игрой. Ещё можно научить мод писать свой лог куда надо, как XVM пишет свой xvm.log .wotmod - это просто .zip архив. Т.е. в него нужно положить готовый мод с сохранением путей. Во время разработки не обязательно каждый раз всё ложить в .wotmod, можно держать файлики в res_mods. Да, в https://xfw.readthedocs.io/ru/latest/2.getting_started/index.html#id4 смотри информацию про структуру простейшего мода и далее по тексту.
  10. Всем привет! Решил недавно сделать мод, которому нужна сессионная статистика, гуглил, смотрел этот форум, но всё равно не нашёл ничего про "азы". Видел исходники xvm, но остаются открытыми например следующие вопросы: Насколько я понял, моды используют скрипты игры, которые можно посмотреть тут, но есть ли способ их подключения к PyCharm-у, кроме как писать мод в root папке? Как будут работать пути импортов в таком случае? В xvm есть import BigWorld,откуда он импортится и можно ли почитать его api? Тестирование мода возможно только итеративным процессом? А-ля дописал скрипт - скомпилировал - закинул в /mods/version - перезапустил игру? Куда пойдут логи модов и как можно их потом прочитать? Как итоговый .py скрипт нужно компилировать в .wotmod? Можно ли подключить мод как .py? В общем вопросы уровня как сделать hello world в этой всей системе инструментов, а дальше можно уже копипастить существующий код. Буду очень рад увидеть ссылки на подобные гайды (если я их просто не нашёл) или же ответы на вопросы выше. Заранее всем спасибо!
  11. from gui import SystemMessages from messenger import MessengerEntry from constants import PREBATTLE_TYPE from messenger.m_constants import PROTO_TYPE, LAZY_CHANNEL class CommonChannelCriteria(object): def filter(self, channel): return channel.getName() == LAZY_CHANNEL.COMMON ctrl = MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) ctrl.sendMessage(u"Hello World!".encode('utf-8'))
  12. Он тут совершенно не нужен.... from gui import SystemMessages def onAccountShowGUI(ctx): alert = 'Hello World!' SystemMessages.pushMessage(alert, type=SystemMessages.SM_TYPE.Warning) Все
  13. # -*- coding: utf-8 -*- from gui.SystemMessages import SM_TYPE from gui.SystemMessages import pushMessage from gui.Scaleform.daapi.view.lobby.LobbyView import LobbyView class EventHook(object): def __init__(self): self.__handlers = [] def __iadd__(self, handler): self.__handlers.append(handler) return self def __isub__(self, handler): if handler in self.__handlers: self.__handlers.remove(handler) return self def fire(self, *args, **keywargs): for handler in self.__handlers: handler(*args, **keywargs) def clearObjectHandlers(self, inObject): for theHandler in self.__handlers: if theHandler.im_self == inObject: self -= theHandler class HookMethod(object): def __init__(self): self.log = self.log_exception self.registerEvent = self.hook_decorator(self.register_event) self.overrideMethod = self.hook_decorator(self.override_method) self.overrideClassMethod = self.hook_decorator(self.override_classmethod) self.overrideStaticMethod = self.hook_decorator(self.override_staticmethod) def logtrace(self, func=None): import traceback, sys print '=' * 20 + ' [ekspointCore] - detected error start '.upper() + '=' * 20 if func: logging = [] etype, value, tb = sys.exc_info() co_filename = func.func_code.co_filename.replace('\\', '/') filename = co_filename.split('/')[co_filename.count('/')].replace('.pyc', '').replace('.py', '') if co_filename.count('/') else co_filename for scriptName in sys.modules.keys(): if filename in scriptName: scriptDir = str(sys.modules[scriptName]).split('from')[1].replace(' ', '').replace('>', '').replace("'", '') for values in traceback.format_exception(etype, value, tb): if func.func_code.co_filename in values: values = ' File "%s", line %d, in %s\n' % (scriptDir, tb.tb_lineno, func.func_code.co_name) logging.append(values) count = len(logging) - 1 logging[count] = logging[count].replace('\n', '') print ''.join(logging) else: traceback.print_stack() print '=' * 20 + ' [ekspointCore] - detected error stop '.upper() + '=' * 21 def event_handler(self, func, prepend, e, m, *a, **k): try: if prepend: e.fire(*a, **k) r = m(*a, **k) else: r = m(*a, **k) e.fire(*a, **k) return r except: self.logtrace(func) def override_handler(self, func, orig, *a, **k): try: return func(orig, *a, **k) except: self.logtrace(func) def log_exception(self, func): def exception(*a, **k): try: return func(*a, **k) except: self.logtrace(func) return exception def hook_decorator(self, func): def decorator1(*a, **k): def decorator2(handler): func(handler, *a, **k) return decorator2 return decorator1 def override(self, cls, method, newm): orig = getattr(cls, method) if type(orig) is not property: setattr(cls, method, newm) else: setattr(cls, method, property(newm)) def register_event(self, handler, cls, method, prepend = False): evt = '__event_%i_%s' % (1 if prepend else 0, method) if hasattr(cls, evt): e = getattr(cls, evt) else: newm = '__orig_%i_%s' % (1 if prepend else 0, method) setattr(cls, evt, EventHook()) setattr(cls, newm, getattr(cls, method)) e = getattr(cls, evt) m = getattr(cls, newm) l = lambda *a, **k: self.event_handler(handler, prepend, e, m, *a, **k) l.__name__ = method setattr(cls, method, l) e += handler def override_method(self, handler, cls, method): orig = getattr(cls, method) newm = lambda *a, **k: self.override_handler(handler, orig, *a, **k) newm.__name__ = method self.override(cls, method, newm) def override_staticmethod(self, handler, cls, method): orig = getattr(cls, method) newm = staticmethod(lambda *a, **k: self.override_handler(handler, orig, *a, **k)) self.override(cls, method, newm) def override_classmethod(self, handler, cls, method): orig = getattr(cls, method) newm = classmethod(lambda *a, **k: self.override_handler(handler, orig, *a, **k)) self.override(cls, method, newm) hookMethod = HookMethod() show = True @hookMethod.registerEvent(LobbyView, '_populate') @hookMethod.log def populate(self): global show if show: show = False pushMessage(u'<font color="#D042F3">Hello world</font>', SM_TYPE.GameGreeting) # если в классе то так class Hello(object): def __init__(self): self.show = True hookMethod.registerEvent(LobbyView, '_populate')(hookMethod.log(self.populate)) def populate(self, base_self): if self.show: self.show = False pushMessage(u'Mod Informations<br>Version 0.1<br>Site: koreanrandom.com', SM_TYPE.GameGreeting) Hello() Скомпилируешь и закинь файл .pyc в res_mods/версия_игры/scripts/client/gui/mods Правда это сообщение, если нужно с окном, то могу написать, главное ответь в теме,если актуально ещё
  14. Как правильно компилировать мод и чтобы он запускался только в ангаре? Сделал функцию и нужно чтобы она стартовала ток в ангаре, получился такой код: import locale import time from gui import SystemMessages from messenger import MessengerEntry from constants import PREBATTLE_TYPE from messenger.m_constants import PROTO_TYPE, LAZY_CHANNEL from Avatar import PlayerAvatar from Account import PlayerAccount while True: message = u'Hello World! All be back!' if(MessengerEntry.g_instance.gui._GUIDecorator__currentScope == 2): time.sleep(20) class CommonChannelCriteria(object): def filter(self, channel): return channel.getName() == LAZY_CHANNEL.COMMON ctrl = MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) ctrl.sendMessage(message.decode('ascii').encode('utf-8')) Но при загрузке, танки зависают, в чём может быть проблема?
  15. @dimank26 попробуйте так: import locale from gui import SystemMessages from messenger import MessengerEntry from constants import PREBATTLE_TYPE from messenger.m_constants import PROTO_TYPE, LAZY_CHANNEL message = u'Hello World' class CommonChannelCriteria(object): def filter(self, channel): return channel.getName() == LAZY_CHANNEL.COMMON ctrl = MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) ctrl.sendMessage(message.decode(locale.getdefaultlocale()[1]).encode('utf-8'))
  16. Правильно. А в коде обращаетесь к объекту messenger, которого нет: ctrl = messenger.MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) Попробуйте: ctrl = MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) PS Хотя посмотрел еще раз код. Попробуйте так: from gui import SystemMessages from messenger import MessengerEntry from constants import PREBATTLE_TYPE from messenger.m_constants import PROTO_TYPE, LAZY_CHANNEL message = u'Hello World' class CommonChannelCriteria(object): def filter(self, channel): return channel.getName() == LAZY_CHANNEL.COMMON ctrl = MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) ctrl.sendMessage(message.encode('utf-8'))
  17. MessengerEntry Код: import BigWorld from gui import SystemMessages from messenger import MessengerEntry from constants import PREBATTLE_TYPE from messenger.m_constants import PROTO_TYPE message = u'Hello World' class CommonChannelCriteria(object): def filter(self, channel): return channel.getName() == messenger.m_constants.LAZY_CHANNEL.COMMON ctrl = messenger.MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) ctrl.sendMessage(message.encode('utf-8'))
  18. Моды работыют, спс. Поможешь с PHP? Поможешь собрать подстанову? <html> <head> <title>PHP Test</title> </head> <body> <?php echo '<p>Hello World</p>'; ?> </body> </html> Пишет хрень. Hello World '; ?>
  19. Всем привет ! Можно пример "Hello World" ? К примеру в бою хочу наблюдать эту надпись в заданных координатах экрана (в % соотношении естесно) Что для этого нужно ? Только пайтон или же плюсом пойдут всякие XML, JSON ? Естественно мне потребуется доступ к GUI клиента - нужны классы/методы. val str = "hello world" GUI.print(str,x,y) К примеру GUI найден - какие дальнейшие действия после написания кода, куда его пихать, с чем ему взаимодействовать. Какие нужны зависимости для PyCharm или другой какой IDE для полноценной работы (создание игровых модов) P.S. Гуглом, похоже, пользоваться не умею :) Тут я нахожу скорее всего устаревшие ответы где указано что для доступа к классам/методам движка используются заглушки (этж не контролируемый гемор чесслово) + если избежать этого нужно преобрести BigWorld. В кабинете разработчика нашел только запросы с серверов для приложений. Вообщем я к чему: Если я создаю приложение под ведроид - мне требуется IDE (AS3), куча зависимостей, библиотек, доступ к стору и прочая лабуда. То есть если я напишу код на java/kotlin/c# и запущу на ведре то.... то я тупо не запущу :) потому что требуется все вышеперечисленное.
  20. @ribbed парсеру очень плохо от чего-то более сложного, чем hello world Markdown Рендер в Typora ansel_typora.pdf Рендер в wgmods https://wgmods.net/1942/
  21. Ну я понял, что я туп. Так можно мод в студию? Для личного общения могу оставить вайбер, чтоб объяснили умные люди, как написать мод для танков типа "hello world". Ни на что не претендую, охотно признаю ошибки, если таковые есть. Полазив немножко на этом сайте, совсем чуть-чуть (времени нет), я пока что нашёл только человека с ником GPCracker, кто реально что-то делает, может ещё Странник. Pavel3333 оставил ссылки на github, где много инглиша и опять-таки мало времени и желания на изучение инфы (всё равно ему спасибо, он по теме высказался). По крайней мере складывается ощущение, что вышеперечисленные люди дело делают, а не просто философствуют. А рассуждателей тут пруд пруди. Извиняюсь, если не прав.
  22. Пробовал по всякому, в примере ниже посылает первое сообщение и молчит, может что то не так делаю? def sendMessage(message): try: UPDSend.Data.put(message) except Exception as e: print('[Error] [{e} '.format(e=e)+']') sendMessage('Hello World!')
  23. Ваш "представитель игры" не является авторитетом. Он просто отписался. Повторюсь, это всё равно, что писать в Спортлото. По хорошему нужно было передать код в отдел анализа модов. А, ну как очередная закладка? Лучше сразу перебдеть. За четыре года в сфере модов, вы возможно научились писать <?php echo "Hello world"; но общаться с пользователями ваших модов не умеете. Это видно, когда пользователь, задает вам вопрос, о публикации мода а вы "а, я откудова знаю, у ниво спраси". Публиковать логи/скрины переписки с Спотлото не нужно :)
  24. This tool provides a command to setuptools for producing wotmod packages from setuptools based python projects. Use cases: Use setuptools to package Python packages (e.g. those found from PyPI) into wotmod packages, providing easier distribution of 3rd party libraries for game mods. Use setuptools to package game mods into wotmod packages. For installation instructions, usage and examples see the project in Github: https://github.com/jhakonen/setuptools-wotmod With my mod project, tessumod, getting more complex than I indented it to be, I have used several 3rd party libraries to make the code more manageable. Until recently, I have had those 3rd party libraries’s code committed to my mod’s code repository. But, one of those, pydash, fails to import if it doesn’t sit in PYTHONPATH. I have had pydash stored to scripts/client/gui/mods/tessumod/lib/pydash and then import it by changing sys.path before import. But, this was just so hacky thing to do and I was hopping to find a better way. I could have solved the problem if I put it to PYTHONPATH, e.g. scripts/common. This has a downside though; If another mod developer were to use the same library and install it to same PYTHONPATH, it would make both mods installations more difficult. And with the new wotmod format this causes a load conflict, making either my mod, or other developer’s mod incompatible with each other. But, then I thought what if I package that 3rd party library into its own wotmod package, keeping it separate from my mod's package? Thus restricting possible load conflicts to that 3rd party package. My mod might even continue to work if the other mod developer’s 3rd party library has compatible API / version. Those 3rd party libraries I needed had one in common. They used setuptools to package their libraries. Setuptools lets you, by default, package a python project to several types of formats, tar.gz, rpm, windows installer, and others and you can get more packagers from PyPI. Thus adding a packager command that creates a wotmod should not be an issue. And it wasn't; setuptools is extendable and making your own command and plugging it to setuptools wasn't difficult. As a result I ended up creating the setuptools-wotmod tool. For example how to package pydash to wotmod format see: https://github.com/jhakonen/setuptools-wotmod/tree/master/examples/pypi-package Or, for a more complete packaging example of the 3rd party libraries I use, see tessumod's repo: https://github.com/jhakonen/wot-teamspeak-mod/tree/9923a016766f4a6f6cfaddcefaab5f410bbe38bf/tessumod/deps Since I had the 3rd party libraries packaged with the tool, I finally used it to package the actual mod's implementation into a wotmod as well. Got rid of a few of my custom build scripts in the process as well. Didn't need to compile py files anymore either, as setuptools does that for me, which was nice. I've added a example hello world mod to demonstrate how to use setuptools to package it, here: https://github.com/jhakonen/setuptools-wotmod/tree/master/examples/helloworld-mod So what you think, would this be useful for you? Is there any functionality I should add? Or change?
  25. Во всех языках есть плюсы и минусы. В одном проекте может использоваться несколько языков одновременно. Начните с Hello World любого языка и по ходу событий в вашей голове (а это либо "ахтунг" либо "ниче так") поймете, что вам по душе и интелекту. Я сам Java любитель/копипастер, прочитал пару книг по яве и по андроиду, через месяц родил полноценное приложение. Ява в моем случае проще прилипапа к извилинам. После явы (хз почему, ибо должно быть наоборот) все остальные языки мне показались проще и сейчас я 50/50 во всех их шарю.
×
×
  • Create New...