Jump to content


[DISKUSSION / HILFE / TIPPS] Modding Generell FMOD / Python / Flash / Grafik / XML usw.

Modding Hilfe Tipps Python SWF Flash XML Tools

  • Please log in to reply
242 replies to this topic

_Kriegstreiber_ #1 Posted 16 April 2014 - 10:41 AM

    Major General

  • Player
  • 4356 battles
  • 5,026
  • [G-M-C] G-M-C
  • Member since:
    10-21-2012

Hallo Community,

 

da mir, wie vielen anderen wohl, das ständige per PN auf den Senkel geht hier mal eine Ebene, wo wir über alles sabbeln können.

Seien es Python Scripte / Probleme mit Updates oder Moddinghilfen, der Thread hier soll ein Überbegriff für alle Modder sein,

und Hilfen für solche, die es werden wollen. Ich werde hier im Eingangspost auch ein Sammelsorium an nützlichen Tips anlegen,

sowie die wichtigsten Tools mal posten. Folgt alles im Laufe des Tages.

 

Tools Download Folder

 

Gruss, KT.


Edited by _Kriegstreiber_, 16 April 2014 - 11:20 AM.


_Kriegstreiber_ #2 Posted 16 April 2014 - 10:45 AM

    Major General

  • Player
  • 4356 battles
  • 5,026
  • [G-M-C] G-M-C
  • Member since:
    10-21-2012

Da kloppe ich gleich mal die erste Anfrage rein hier :

 

An alle Python Götter, ich bräuchte nochmals ein wenig Hilfe von euch. Es geht um folgendes:

 

Ich habe locastan etwas beklaut, sprich ich nutze im WWIIHWA ja seit jeher seinen Battletimer. Nun habe ich gesehen das er den auch in seinem

UT Anouncer Python script hat. Also habe ich gedacht, zupfe ich mir mal den Battletimer da raus, den Anouncer brauche ich nicht.

 

Allerdings scheint irgendetwas zu fehlen, bzw. es funktioniert nicht. Ich poste hier mal das komplette Script von mir:

http://pastebin.com/QCaJNxQz

 

Das Python Log:

 

Block Quote

   BigWorld Release Client (compiled at 11:02:44 Apr 11 2014) starting on Wed Apr 16 09:25:36 2014

Checking ./res_mods/0.9.0: mods found
[SUCCESS] KT Engines Mode Switcher: WWIIHWA Engines v.2.0 TEST#1 succesfully executed.
[NOTE] KT Engines Mode Switcher: WoT Client version: v.0.9.0 #649
[NOTE] KT Engines Mode Switcher: 0.9.x based Engines activated.
[INFO] KT Engines Mode Switcher: PreLoad Sound set to: True
[INFO] KT Engines Mode Switcher: Gears Sound set to: True
[INFO] KT Engines Mode Switcher: Treads Rotation Sound set to: True
[SUCCESS] Script Loader PRO v1.03 initialized
[INFO] Script Loader PRO current scripts folder: (./scripts/client/mods)
[SUCCESS] WWIIHWA Turret Traverse XML found and executed.
[SUCCESS] WWIIHWA Turret Traverse Mod v1.561 loaded ...
[EXECUTED] Script: TurretTraverse.pyc
[NOTE] WWIIHWA Ambiente v3.5 succesfully loaded.
[EXECUTED] Script: WWIIHWA.pyc
[NOTE] (scripts/client/post_processing/__init__.py, 275): The quality = 0 was selected.
[NOTE] (scripts/client/post_processing/__init__.py, 275): The quality = 0 was selected.
[SPACE] Loading space: spaces/04_himmelsdorf
[ERROR.GUI] (scripts/client/gui/Scaleform/Flash.py, 261): TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at scaleform.clik.core::UIComponent/onDispose()
    at scaleform.clik.core::UIComponent/dispose()
    at net.wg.infrastructure.base::AbstractView/as_dispose()
    at net.wg.infrastructure.base.meta.impl::LoaderManagerMeta/viewLoadedS()
    at net.wg.infrastructure.managers::LoaderManager/onSWFLoaded()
Traceback (most recent call last):
  File "WWIIHWA.py", line 112, in newsetArenaTime
  File "WWIIHWA.py", line 86, in checktime
  File "WWIIHWA.py", line 79, in stopSounds
AttributeError: 'NoneType' object has no attribute 'stop'

[EXCEPTION] (scripts/common/Event.py, 34):
Traceback (most recent call last):
  File "scripts/common/Event.py", line 32, in __call__
  File "scripts/client/gui/Scaleform/Battle.py", line 818, in __onSetArenaTime
  File "WWIIHWA.py", line 112, in newsetArenaTime
  File "WWIIHWA.py", line 86, in checktime
  File "WWIIHWA.py", line 79, in stopSounds
AttributeError: 'NoneType' object has no attribute 'stop'

 

Sry aber ich bin da echt ratlos . Also hätte ich 2 Bitten:

 

1. Kann man den Battletimer so zurechtbauen das er funktioniert ?

2. Kanns man eine Routine einfügen, das wenn sein UT Anouncer Mod drauf ist, diese Geschichte nicht geladen wird ?

    Ich habs mir so vorgestellt: Da ist ja die XML beim Anouncer. Python schaut ob die existiert, wenn ja dann soll das in etwa so aussehen:

 

Block Quote

if CFG['battletimer'] is True and g_locastan_detect False:

 

ist ansich simpel ich brauche nur ein True / False Result. Leider reicht mein Skill nicht aus um ein (if exist file) umzusetzen. Ich weiss nicht ob da ein:

 

Block Quote

    LOC_UT_ANOUNCER= ResMgr.openSection('UT_announcer.xml')
    if LOC_UT_ANOUNCER is not None:

           g_locastan_detect = True

 

 

ausreicht. Falls ja vergesst Punkt 2.

 

Mit bestem Gruss und Hoffnung auf Hilfe,

 

KT


Edited by _Kriegstreiber_, 16 April 2014 - 10:50 AM.


_Z3R00_ #3 Posted 16 April 2014 - 10:49 AM

    Lance-corporal

  • Player
  • 14826 battles
  • 62
  • [SKILL] SKILL
  • Member since:
    07-28-2013
lol jetzt haben wir 2 verdammt egal ich probiere meinen irgendwie zu schließen. Danke KT

_Kriegstreiber_ #4 Posted 16 April 2014 - 10:51 AM

    Major General

  • Player
  • 4356 battles
  • 5,026
  • [G-M-C] G-M-C
  • Member since:
    10-21-2012
Habe ich gar net mitgekriegt :)^^ Egal, besser 2 wie keiner hrhr.

_Z3R00_ #5 Posted 16 April 2014 - 10:53 AM

    Lance-corporal

  • Player
  • 14826 battles
  • 62
  • [SKILL] SKILL
  • Member since:
    07-28-2013
Okay, wir können uns ja die Arbeit teilen :D da ich denke grade jetzt (wie du schon gesagt hast) wird vieles reinkommen.

_Z3R00_ #6 Posted 16 April 2014 - 11:07 AM

    Lance-corporal

  • Player
  • 14826 battles
  • 62
  • [SKILL] SKILL
  • Member since:
    07-28-2013
KT hast ne PN sry or Doppelpost :D

DarkMo #7 Posted 16 April 2014 - 02:23 PM

    Lieutenant

  • Beta Tester
  • 16994 battles
  • 1,701
  • Member since:
    11-30-2010
subba geschichte :D bin ich gespannt, was draus wird.

Gandalphmz #8 Posted 16 April 2014 - 05:03 PM

    Sergeant

  • Player
  • 27385 battles
  • 202
  • Member since:
    01-11-2013
SEHR Interessant, vielleicht hilft es das Modden etwas besser zu verstehen.

DarthDragoon #9 Posted 18 April 2014 - 09:24 AM

    Private

  • Player
  • 44058 battles
  • 27
  • [PA-PI] PA-PI
  • Member since:
    07-02-2011

Wenn wir schon beim Modden sind :) Ich habe eine Frage, ich nutze zwei verschiedenen Flasherstellungsprogramme, zum einen Macro Mediaflash designer (großes Paket) und en anderes, jetzt will ich das Predator Crosshair machen, dummerweise geht mein altes net, zwar ist das Fadenkreuz ansich mittig, aber alles andere ist linksbündig -.- was muss ich da genau ändern?

 

mir wäre es sogar lieber, wenn ich die Crosshairs so einfügen kann, das ich gleich mehrere zur Auswahl hab und das über einstellungen auch nach belieben ändern kann, damals gabs einen modder der es gemacht hatte, aber den gibts ja net mehr, welche parameter brauch ich und lohnt es sich überhaupt? das über das einstellungsmenü zu machen?



toraganer #10 Posted 21 April 2014 - 04:45 AM

    Private

  • Player
  • 49100 battles
  • 11
  • [DLA] DLA
  • Member since:
    08-22-2013

auf die schnelle würd ich sagen das du in  79 einen Fehler hast

(File "WWIIHWA.py", line 79, in stopSounds
AttributeError: 'NoneType' object has no attribute 'stop')

ist auch kein wunder in zeile 57 deklarierst du eine variable:

(pa.snd3min = None)

im nächsten try setzt du sie offensichtlich

und in der routine stopSounds() soll die variable ein object sein mit einer methode  stop

(     pa.snd3min.stop()  ) ist leider nirgends declariert

 

deine pa.snd3min hat nur diese funktionen/variablen in etwa

['__add__',
'__class__',
'__contains__',
'__delattr__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__getitem__',
'__getnewargs__',
'__getslice__',
'__gt__',
'__hash__',
'__init__',
'__le__',
'__len__',
'__lt__',
'__mod__',
'__mul__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__rmod__',
'__rmul__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'_formatter_field_name_split',
'_formatter_parser',
'capitalize',
'center',
'count',
'decode',
'encode',
'endswith',
'expandtabs',
'find',
'format',
'index',
'isalnum',
'isalpha',
'isdigit',
'islower',
'isspace',
'istitle',
'isupper',
'join',
'ljust',
'lower',
'lstrip',
'partition',
'replace',
'rfind',
'rindex',
'rjust',
'rpartition',
'rsplit',
'rstrip',
'split',
'splitlines',
'startswith',
'strip',
'swapcase',
'title',
'translate',
'upper',
'zfill']

 

jedoch keine 'stop'

 

 

mir ist aufgefallen das du in zeile 120

(    pa.snd3min = Sound(CFG['3mins']) )

stehen hast da wird deine variable vielleicht zum object und dannach hast du dann deine stop() funktion

 

ich hoffe ich war dir eine kleine hilfe

 

 

PS:wenn in zukunft was ähnliches hast versuch (nach und)  vor der fehlerzeile dir über print das object ausgeben zu lassen

z.B.

 

print "##  dir()  ###############"
print dir()

print "##  dir(pa)  ###############"
print dir(pa)

print "##  dir(pa.snd3min)  ###############"
print dir(pa.snd3min)
print "#################"

 

 

 

 


Edited by toraganer, 21 April 2014 - 12:48 PM.


OldSkool #11 Posted 21 April 2014 - 05:30 AM

    Colonel

  • WGL PRO Player
  • 58645 battles
  • 3,541
  • [SKILL] SKILL
  • Member since:
    09-22-2010

View Post_Kriegstreiber_, on 16 April 2014 - 11:41 AM, said:

Hallo Community,

 

da mir, wie vielen anderen wohl, das ständige per PN auf den Senkel geht hier mal eine Ebene, wo wir über alles sabbeln können.

Seien es Python Scripte / Probleme mit Updates oder Moddinghilfen, der Thread hier soll ein Überbegriff für alle Modder sein,

und Hilfen für solche, die es werden wollen. Ich werde hier im Eingangspost auch ein Sammelsorium an nützlichen Tips anlegen,

sowie die wichtigsten Tools mal posten. Folgt alles im Laufe des Tages.

 

Tools Download Folder

 

Gruss, KT.

 

Das Angebot mit dem Forum steht noch? ;-)

 

http://board.statswhore.net/



justarustyspoon #12 Posted 21 April 2014 - 10:59 AM

    Corporal

  • Player
  • 11843 battles
  • 164
  • Member since:
    10-20-2012

View Post_Kriegstreiber_, on 16 April 2014 - 11:45 AM, said:

 

2. Kanns man eine Routine einfügen, das wenn sein UT Anouncer Mod drauf ist, diese Geschichte nicht geladen wird ?

    Ich habs mir so vorgestellt: Da ist ja die XML beim Anouncer. Python schaut ob die existiert, wenn ja dann soll das in etwa so aussehen:

 

 

ist ansich simpel ich brauche nur ein True / False Result. Leider reicht mein Skill nicht aus um ein (if exist file) umzusetzen. 

 

Ich würde es mit den Python-Boardmitteln so machen:

Block Quote

import os.path

[...]

ut_announcer_detected = os.path.isfile("UT_announcer.xml")

 

 

 



budyx69 #13 Posted 21 April 2014 - 12:39 PM

    Colonel

  • Player
  • 34093 battles
  • 3,841
  • [D-S-S] D-S-S
  • Member since:
    02-25-2013

Hallo KT,

 

es wäre eine Hilfe wenn mal eine Auflistung der versch. pyc Dateien (die von verschiedenen Mods genutzt werden) und wofür die da sind.

 

Ich meine da im besonderen:

 

control_modes.pyc

__init__.pyc

CameraNode.pyc

 

ich weiß nie ob ich diese überschreiben darf oder nicht.

 

budyx69

 

 



_Kriegstreiber_ #14 Posted 22 April 2014 - 04:08 AM

    Major General

  • Player
  • 4356 battles
  • 5,026
  • [G-M-C] G-M-C
  • Member since:
    10-21-2012

control_modes.pyc  == Serverside Crosshair / NoScroll Mod (Koshnaranek)

__init__.pyc == Initialisierungs Datei für den Modloader.

CameraNode.pyc == Modloader (ermöglicht das Laden eigener Scripts).



mytank_de #15 Posted 24 April 2014 - 07:08 PM

    Sergeant

  • Player
  • 14923 battles
  • 286
  • Member since:
    02-10-2012

Hey Leute,

 

zuerst: sry Kriegstreiber. ich selber habe dich auch schon angeschrieben, und es tut mir sehr leid wenn ich dich damit gestört habe :confused:

 

Nun etwas anderes:

Ich beschäftige mich schon länger mit den Themen Modding und Programmieren. Da ich aber gerne Programmiere und gleichzeitig auch noch für W.o.T Modden will, würde ich gern die Phyton-Programmierung ein wenig erlernen - die ja in W.o.T gebraucht wird -. Darum wollte ich euch jetzt fragen, ob ihr mir sagen könnt, was ich genau brauche um mit phyton zu programmieren?

EDIT: ein will ich noch hinzufügen: in den normalen Dateien der Fahrzeuge (z.b packages\american.pkg\irgendeinezahl_hellcat) gibt es bei z.b. "Normal" lod 0 - 4. das "lod" "Level of Detail" heißt weis ich, aber es gibt doch nur 4 Detailstuffen, warum dann 5 ordner mit verschiedenen detailobjekten?

 

MFG mytank_de :hiding:


Edited by mytank_de, 24 April 2014 - 08:18 PM.


DOC73 #16 Posted 24 April 2014 - 07:17 PM

    Lieutenant

  • Clan Commander
  • 25775 battles
  • 1,945
  • Member since:
    06-11-2011

View Postbudyx69, on 21 April 2014 - 01:39 PM, said:

Hallo KT,

 

es wäre eine Hilfe wenn mal eine Auflistung der versch. pyc Dateien (die von verschiedenen Mods genutzt werden) und wofür die da sind.

 

Ich meine da im besonderen:

 

control_modes.pyc

__init__.pyc

CameraNode.pyc

 

ich weiß nie ob ich diese überschreiben darf oder nicht.

 

budyx69

 

 

 

 

Hi,

 

für einige MODS die ich Sammle und bereit stelle, habe ich einen Thread erstellt, wo und welche Dateien von den MODS genutzt werden.

 

Schaut mal hier:

http://www.wot-doc73.de/viewforum.php?f=29

 

Gruß


Edited by DOC73, 24 April 2014 - 07:18 PM.


_Kriegstreiber_ #17 Posted 01 May 2014 - 07:15 PM

    Major General

  • Player
  • 4356 battles
  • 5,026
  • [G-M-C] G-M-C
  • Member since:
    10-21-2012

So Python Götter. Ich habe eine Aufgabe für euch.

 

Das Ziel: Die BaseCaptureSirene soll konfigurierbar gemacht werden. Zu finden ist die ganze Geschichte in der Battle.pyc.

Leider kann man die battle.pyc nicht richtig dekompilieren, also muss das ganze via Wrapper gemacht werden.

 

Meine Idee: Entweder die Konstante _BASE_CAPTURE_SOUND_NAME_ALLY via XML editierbar machen oder diese Funktion Wrappen:

 

Zeile 837:

Block Quote

    def __playCaptureSound(self, team):
        arena = getattr(BigWorld.player(), 'arena', None)
        if arena is not None and arena.period == constants.ARENA_PERIOD.AFTERBATTLE:
            return
        else:
            snd = self.__captureSounds.get(team)
            if snd is None:
                try:
                    isAllyTeam = True if team == BigWorld.player().team else False
                    if isAllyTeam:
                        snd = FMOD.playSound(_BASE_CAPTURE_SOUND_NAME_ALLY)
                        self.__captureSounds[team] = snd
                except Exception:
                    LOG_CURRENT_EXCEPTION()
 
            return

 

Letzteres habe ich so versucht:

 

Block Quote

try:
    from gui.scaleform import battle

    OLD_playCaptureSound = battle.TeamBasesPanel._TeamBasesPanel__playCaptureSound

    def NEW_playCaptureSound(self, team):
        OLD_playCaptureSound(self, team)
        snd = FMOD.playSound(CFG['BaseCaptureSiren'])

    battle.TeamBasesPanel._TeamBasesPanel__playCaptureSound = NEW_playCaptureSound
except:
    import sys
    print '[WWIIHWA] Error: Script exception in', sys.exc_info()

 

Leider erfolglos. Am liebsten wäre mir die erste Sache, also die globale Konstante ändern. Leider weiss ich nicht wie ich das genau anstellen muss.

 

Ich bin um jede Hilfe dankbar.



CS2001 #18 Posted 01 May 2014 - 10:44 PM

    Corporal

  • Player
  • 19208 battles
  • 184
  • Member since:
    09-25-2011

View Post_Kriegstreiber_, on 01 May 2014 - 08:15 PM, said:

Leider erfolglos. Am liebsten wäre mir die erste Sache, also die globale Konstante ändern. Leider weiss ich nicht wie ich das genau anstellen muss.

 

Ich bin um jede Hilfe dankbar.


Imho sieht der Import falsch aus.

 

Probier es mal so, habs aber in Ermangelung einer Sounddatei nicht getestet:

Block Quote

try:
   from gui.scaleform.battle import _BASE_CAPTURE_SOUND_NAME_ALLY
   print _BASE_CAPTURE_SOUND_NAME_ALLY
   _BASE_CAPTURE_SOUND_NAME_ALLY = "bla"
   print _BASE_CAPTURE_SOUND_NAME_ALLY

except:
   import sys
   print '[WWIIHWA] Error: Script exception in', sys.exc_info()

 

ansonsten dürfte dein oberes Beispiel auch funktionieren, wenn du den Import in from gui.scaleform.battle import TeamBasesPanel umänderst.

Dementsprechend natürlich auch OLD_playCaptureSound = TeamBasesPanel._TeamBasesPanel__playCaptureSound und TeamBasesPanel._TeamBasesPanel__playCaptureSound = NEW_playCaptureSound

 

nochmal ein kleines edit: dein oberes Beispiel hätte das Problem, dass du erst den original Code aufrufst, wo der Capture Sound ja bereits abgespielt wird und danach deinen eigenen abspielst. Müsstest also evtl die ganze Funktion rüberkopieren.

 


Edited by CS2001, 01 May 2014 - 10:50 PM.


_Kriegstreiber_ #19 Posted 02 May 2014 - 01:07 PM

    Major General

  • Player
  • 4356 battles
  • 5,026
  • [G-M-C] G-M-C
  • Member since:
    10-21-2012

Block Quote

ansonsten dürfte dein oberes Beispiel auch funktionieren, wenn du den Import in from gui.scaleform.battle import TeamBasesPanel umänderst.

 

Leider nicht, das war ja mein erster Versuch. Komischerweise bekomme ich nur durch das importieren der battle.pyc schon die ersten Python Log fehler.

Also sowas mysteriöses hatte ich noch nie gehabt :(.

 

Werde aber mal das mit der Konstante nochmal probieren. Rückmeldung folgt und danke schonmal für die Hilfe.

 

So folgendes, es funktioniert leider nicht :(

 

Python Log:

Spoiler

 

Wie man sieht, der Wrapper funzt, trotzdem das alte tröten von base_capture_1. Es ist mir unerklärlich.

 

 

 

Was mich wundert ist, muss ich die geänderte Konstante nicht irgendwie wieder zurückschicken.

 

Also quasi sowas = gui.scaleform.battle._BASE_CAPTURE_SOUND_NAME_ALLY = New_BaseCaptureSiren ?

 


Edited by _Kriegstreiber_, 02 May 2014 - 01:17 PM.


4lCapwn #20 Posted 03 May 2014 - 11:00 PM

    Captain

  • Player
  • 31424 battles
  • 2,003
  • [PSOP] PSOP
  • Member since:
    09-22-2011

vllt musst du die variable vorm schreiben explizit als global deklarieren? kenne mich mit python auch nicht so prächtig aus...

hast du mal das probiert:

import gui.scaleform.battle

battle._BASE_CAPTURE_SOUND_NAME_ALLY = ...

 

morgen bin ich wieder an meinem rechner, dann kann ichs mal testen wenn ich zeit find, bildschirmtastatur suckt :/







Also tagged with Modding, Hilfe, Tipps, Python, SWF, Flash, XML, Tools

1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users