Jump to content
Korean Random

Kotyarko_O

Premium Member
  • Content Count

    6,110
  • Joined

  • Last visited

  • Days Won

    49

Posts posted by Kotyarko_O


  1. 9 minutes ago, pipje2001 said:

    @Kotyarko_O Alright done that, but how do i get the mod to load the saved settings?

    It`s already done. Here: https://bitbucket.org/The_IzeBerg/modssettingsapi/src/0570eaea89ae85d3817422aa6487bd17eebb6530/mod_modsettingsexample.py#lines-113

    There is global var "settings", which contains modified settings if it has been modified in modSettingApi window and it`s cache exists, or default settings otherwise (https://bitbucket.org/The_IzeBerg/modssettingsapi/src/0570eaea89ae85d3817422aa6487bd17eebb6530/mod_modsettingsexample.py#lines-90)

     

    Don`t forget to refresh global var "settings" when new settings applyed:

    def onModSettingsChanged(linkage, newSettings):    
        if linkage == modLinkage:
            global settings
            settings = newSettings

     


  2. 8 minutes ago, pipje2001 said:

    how do i get the value from the textinput into my own mod? and how can i run a function in my mod when i press apply in the settings menu?

    When apply button pressed, event "onModSettingsChanged" is performed. In thatfunction you can do what you need to do. For example:

    def onModSettingsChanged(linkage, newSettings):    
        if linkage == modLinkage:
            setNewSettings(newSettings)
    
    def setNewSettings(settings):
        print settings['textInput']

    I`m not sure that "settings['textInput']" is correct. You need to test it. I don`t know what exactly contains "newSettings"-argument.


  3. 1 hour ago, pipje2001 said:

    - how do you know if the tank is on fire?

    from gui.Scaleform.daapi.view.meta.DamagePanelMeta import DamagePanelMeta
    
    isVehInFire = False
    
    old_setFireInVehicleS = DamagePanelMeta.as_setFireInVehicleS
    
    def new_setFireInVehicleS(self, isInFire):
        global isVehInFire
        isVehInFire = isInFire
    
    DamagePanelMeta.as_setFireInVehicleS = new_setFireInVehicleS

     

    2 hours ago, pipje2001 said:

    - how do you know if modules are hit? and which module is hit?

    Example: https://bitbucket.org/Kotyarko_O/xvm.py_macro/src/19fbaa0b1c298ccc87bd20a2b0dfce320ef981e4/repairControl/repairControl.py#lines-260

     

    2 hours ago, pipje2001 said:

    - and how can you make a settings window in the game?

    Guide: https://kr.cm/f/t/25477/c/279913/ (a bit outdated).

    Example: https://bitbucket.org/Kotyarko_O/modpack_updatesannouncer-moder/src/master/


  4. 11 hours ago, pipje2001 said:

    But i only want this function to run once at a time so i use this method to check if the tread is already running but it "forgets" that its running so the next time i get shot it just runs it again which kinda breaks my lights XD

    Because every time you get damaged in this condition (fcurHp/fmaxHp <= 0.1), you create another thread and checks it.

    First of all, "LH" must be a global var. So the code must be like:

    LH = None
    
    ...
    
    if fcurHp/fmaxHp <= 0.1:
        global LH
        if not (LH and LH.is_alive()):
            LH = threading.Thread(target=LowHp)
            LH.start()
            print("LH_Start")

     


  5. 29 minutes ago, pipje2001 said:

    is it possible to get the currunt hp and max hp of the tank you are playing at that moment?

    Sure:

    from BigWorld import player
    from PlayerEvents import g_playerEvents
    from Vehicle import Vehicle
    
    maxHp = None
    curHp = None
    
    def setMaxHp():
        global maxHp
        plVeh = player().getVehicleAttached()
        maxHp = plVeh.typeDescriptor.maxHealth
    
    def new_onHealthChanged(self, newHealth, attackerID, attackReasonID):
        old_onHealthChanged(self, newHealth, attackerID, attackReasonID)
        
        if not self.isPlayerVehicle:
            return
        
        global curHp
        curHp = newHealth
    
    def reset():
        global maxHp, curHp
        maxHp = None
        curHp = None
    
    g_playerEvents.onAvatarBecomePlayer += setMaxHp
    #
    old_onHealthChanged = Vehicle.onHealthChanged
    Vehicle.onHealthChanged = new_onHealthChanged
    #
    g_playerEvents.onAvatarBecomeNonPlayer += reset

    May be mistakes\errors, didn`t test it.

     

    29 minutes ago, pipje2001 said:

    is there somewhere where i can find information about an ingame settings window for my own mod? like some populair mods have?

    https://bitbucket.org/P0LIR0ID/wot-modslist/src/master/

    https://bitbucket.org/The_IzeBerg/modssettingsapi/src/master/ (https://kr.cm/f/t/48259/)

    https://kr.cm/f/t/25477/c/279913/

     

    Almost all of this utils have only russian description, unfortunasdljsklfjdfkh (can`t remember all letters in this word).


  6. 1 hour ago, pipje2001 said:

    But i guess i have to use onHealthChanged but i have no idea how.

    Like this:

    from Vehicle import Vehicle
    from random import randint
    from time import sleep
    
    def _set_brightness(value):
        b.set_light(4, 'bri', value, transitiontime=10)
        b.set_light(5, 'bri', value, transitiontime=10)
    
    def new_onHealthChanged(self, newHealth, attackerID, attackReasonID):
        old_onHealthChanged(self, newHealth, attackerID, attackReasonID)
        
        if not self.isPlayerVehicle:
            return
        
        #make light randomly flashes for 10 times
        for _ in range(10):
            _set_brightness(randint(0, 254))
            sleep(0.1)
        
        #restore brightness to default
        _set_brightness(254)
    
    old_onHealthChanged = Vehicle.onHealthChanged
    Vehicle.onHealthChanged = new_onHealthChanged

     


  7. 19 minutes ago, hintlog said:

    Доброй ночи, извините что долго отвечал, нет в обычном рандоме, обратил внимание на такой глюк, не дает выстрелить в полушотного и тут же его добирает союзник, либо сразу либо через доли секунды. Такое впечатление что скрипт за ранее знает что это труп))) Было много раз, задержка по пингу у меня? пинг средний 40-50

    А, это нормально. Скрипт действительно знает об уничтожении чуть-чуть заранее... заранее вас =) Как бы странно это не прозвучало. Если по простому: когда вы, как человек, только можете видеть трассер\эффект выстрела, сервер уже успел обсчитать попадание\пробитие\урон\уничтожение и отправил результат обратно клиенту, он обработал и уже готов к отрисовке соответствующего исхода. Просто кто-то выстрелил раньше вас =)
    Скорость выполнения вышеперечисленных действий напрямую зависит от пинга. 40-50 это когда вы обращаете на него внимание, прыгнуть может в любой момент, и момент уничтожения - не исключение.


  8. 3 minutes ago, xZirus said:

    Конфиги я использую собственные и при выходе каждой новой версии приходится перелопачивать ВСЕ конфиги для адаптации (как бы так подразумевается).

    Зачем? Любые изменения, затрагивающие конфиг, указываются в чейнджлогах.

    Скачали новую версию, посмотрели список изменений, предпринимаете определённые действия.

     

    7 minutes ago, xZirus said:

    А пока рождается идеальный вариант, можно ли хоть чуть чуть упростить жизнь, а именно, не все конфиги подвергаются редактированию, т.е. из базовых 47 файлов изменению подвергаются допустим 20, а оставшиеся 27 как были базовыми так и остаются, так вот можно ли сделать так чтобы в папку с собственным конфигом нужно было переносить (копировать) не все 47 файлов, а только те которые меняются, а остальные по умолчанию брались бы из дефолтной папки.

    Можно. И всегда можно было.

    Все конфиги, в которые вы не вносите изменений, просто удаляете. Удаляете на них ссылку (в @xvm.xc, battle.xc, battleLabelsTemplates.xc и т.д.). Все недостающие в конкретном конфиге настройки будут браться из дефолта - конфига, вшитого в мод.

    Если есть конфиг, в котором вам нужна всего одна опция, оставляйте только её и удаляйте все ненужные - механика та же и все удалённые будут браться из дефолта.

    • Upvote 2

  9. 19 minutes ago, HEKPOMAHT said:

    По нормальному нужно иметь возможность задавать свой размер поля.

    Чтобы хоть изменить размер поля, флешку придётся редактировать и таскать с аддоном, не вариант.

     

    18 minutes ago, ktulho said:

    Может в названии окна?

    Вариант.


  10. 12 minutes ago, HEKPOMAHT said:

    Подскажи, мы ограничены в размере поля или можно "width","height" добавить?

    Аддон не добавляет текстовое поле, а изменяет имеющееся (то, в котором указывается имя карты и режим боя). По сути, в размерах не ограничены - поле с автосайзом (могу ошибаться). Но добавление в данном случае это: для ширины - добавить пробелов или tabstops, для высоты - использовать "\n". То есть, кастомизация ниоч.

    Но если есть идеи для более удачного расположения, можно влезть в какое-то другое поле =) В текущем виде можно подобрать tabstops и вывести показатель по центру окна, над текстом с результатом боя.


  11. 1 hour ago, HEKPOMAHT said:

    если нажать на "подробнее" в центре уведомлений - постоянно крутит шестерня "извините, подр. недоступны...", при повторном нажатии: "сбор информации..." ну и нужно перезапускать клиент. Если окно появилось непосредственно после окончания боя - тогда норм.

    Поправил, сделал уровень кешируемым.

    Зависать при ошибках больше не будет.

    • Upvote 1

  12. 1 hour ago, HEKPOMAHT said:

    в 1.4.1 переделали окно результатов боя.

    Ух-ты. А в патчноуте об этом не вспомнили. Да и тени тексту хоть какой-то тоже не хватает - забыли, судя по скрину =)

    Поставлю CT, сделаю новую версию аддона.

    • Upvote 1

  13. 9 hours ago, SicFunzler said:

    2019-03-02 03:07:37.040: ERROR:   File "res_mods/configs/xvm/py_macro\xvm\damageLog.py", line 290, in updateData
    2019-03-02 03:07:37.041: ERROR:     if (_stat.resp is not None) and (attacker['name'] in _stat.resp['players']):
    2019-03-02 03:07:37.041: ERROR: KeyError: 'players'

    Maybe @ktulho will give advice.

     

    @SicFunzler , please, attach logs as files further. And what about in-battle stats, attach full xvm.log (game client must be closed before you take this file).

×
×
  • Create New...