-
Content Count
6,110 -
Joined
-
Last visited
-
Days Won
49
Posts posted by Kotyarko_O
-
-
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
-
1 minute ago, pipje2001 said:it should be in one file?
Yes. Or, as an option, and if your mod\code\project may be large, it can be like package (https://docs.python.org/3/tutorial/modules.html#packages).
-
12 minutes ago, pipje2001 said:because settings in the mod_modsettings.py don't change
So you provide your settings in separate mod, am i right? If so, it isn`t correct.
-
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.
-
4 minutes ago, pipje2001 said:but i can't find where the settings are saved and how is can access them from my own mod...
-
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?
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/
-
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")
-
3 minutes ago, pipje2001 said:onAvatarBecomeNonPlayer
It`s ok. This is "leave battle" event.
-
14 minutes ago, pipje2001 said:AttributeError: 'PlayerAvatar' object has no attribute 'playerVehicleID'
My bad. Try to use "onAvatarReady" instead of "onAvatarBecomePlayer".
-
-
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).
-
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
-
Я вот уже обновлял... ну ладно.
-
-
19 minutes ago, hintlog said:Доброй ночи, извините что долго отвечал, нет в обычном рандоме, обратил внимание на такой глюк, не дает выстрелить в полушотного и тут же его добирает союзник, либо сразу либо через доли секунды. Такое впечатление что скрипт за ранее знает что это труп))) Было много раз, задержка по пингу у меня? пинг средний 40-50
А, это нормально. Скрипт действительно знает об уничтожении чуть-чуть заранее... заранее вас =) Как бы странно это не прозвучало. Если по простому: когда вы, как человек, только можете видеть трассер\эффект выстрела, сервер уже успел обсчитать попадание\пробитие\урон\уничтожение и отправил результат обратно клиенту, он обработал и уже готов к отрисовке соответствующего исхода. Просто кто-то выстрелил раньше вас =)
Скорость выполнения вышеперечисленных действий напрямую зависит от пинга. 40-50 это когда вы обращаете на него внимание, прыгнуть может в любой момент, и момент уничтожения - не исключение. -
3 minutes ago, xZirus said:Конфиги я использую собственные и при выходе каждой новой версии приходится перелопачивать ВСЕ конфиги для адаптации (как бы так подразумевается).
Зачем? Любые изменения, затрагивающие конфиг, указываются в чейнджлогах.
Скачали новую версию, посмотрели список изменений, предпринимаете определённые действия.
7 minutes ago, xZirus said:А пока рождается идеальный вариант, можно ли хоть чуть чуть упростить жизнь, а именно, не все конфиги подвергаются редактированию, т.е. из базовых 47 файлов изменению подвергаются допустим 20, а оставшиеся 27 как были базовыми так и остаются, так вот можно ли сделать так чтобы в папку с собственным конфигом нужно было переносить (копировать) не все 47 файлов, а только те которые меняются, а остальные по умолчанию брались бы из дефолтной папки.
Можно. И всегда можно было.
Все конфиги, в которые вы не вносите изменений, просто удаляете. Удаляете на них ссылку (в @xvm.xc, battle.xc, battleLabelsTemplates.xc и т.д.). Все недостающие в конкретном конфиге настройки будут браться из дефолта - конфига, вшитого в мод.
Если есть конфиг, в котором вам нужна всего одна опция, оставляйте только её и удаляйте все ненужные - механика та же и все удалённые будут браться из дефолта.
- 2
-
19 minutes ago, HEKPOMAHT said:По нормальному нужно иметь возможность задавать свой размер поля.
Чтобы хоть изменить размер поля, флешку придётся редактировать и таскать с аддоном, не вариант.
18 minutes ago, ktulho said:Может в названии окна?
Вариант.
-
12 minutes ago, HEKPOMAHT said:Подскажи, мы ограничены в размере поля или можно "width","height" добавить?
Аддон не добавляет текстовое поле, а изменяет имеющееся (то, в котором указывается имя карты и режим боя). По сути, в размерах не ограничены - поле с автосайзом (могу ошибаться). Но добавление в данном случае это: для ширины - добавить пробелов или tabstops, для высоты - использовать "\n". То есть, кастомизация ниоч.
Но если есть идеи для более удачного расположения, можно влезть в какое-то другое поле =) В текущем виде можно подобрать tabstops и вывести показатель по центру окна, над текстом с результатом боя.
-
1 hour ago, HEKPOMAHT said:если нажать на "подробнее" в центре уведомлений - постоянно крутит шестерня "извините, подр. недоступны...", при повторном нажатии: "сбор информации..." ну и нужно перезапускать клиент. Если окно появилось непосредственно после окончания боя - тогда норм.
Поправил, сделал уровень кешируемым.
Зависать при ошибках больше не будет.
- 1
-
13 minutes ago, ktulho said:так и не поправил
Ага.
Перезалил.
- 1
-
Обновлено.
- Добавлена отдельная версия для 1.4.1CT.
- Добавлен расчёт среднего уровня (спасибо @Budyx69).
-
1 hour ago, HEKPOMAHT said:в 1.4.1 переделали окно результатов боя.
Ух-ты. А в патчноуте об этом не вспомнили. Да и тени тексту хоть какой-то тоже не хватает - забыли, судя по скрину =)
Поставлю CT, сделаю новую версию аддона.
- 1
-
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).
-
14 minutes ago, SicFunzler said:arg='getYByOffset(55, -45)'
It seems you have updated "repairControl" addon (https://kr.cm/f/t/36840/c/449226/) and obsolete config.
Change all "getYByOffset" to "getYWOffset".
- 1
some questions about modmaking
in ActionScript & Python
Posted
Sure. If i can help, i will.
Further discussion may be offtopic in thread so named. Change it to "Some questions about modmaking".