[Utility]Funktionen

Dieses Thema im Forum "[Skyrim] Creation Kit" wurde erstellt von Quad2Core, 8. März 2013.

  1. Quad2Core

    Quad2Core Abenteurer

    Ich dachte mir einfach mal, dass es ganz sinnvoll wäre eine kleine Sammlung von Funktionen zu erstellen, welche nützlich für die Arbeit mit Skripten werden könnten.
    Die meisten unten aufgelisteten Funktionen benötigen SKSE und falls dies nicht der Fall sein sollte sind die betroffenen Funktionen mit einer comment line ähnlich dieser: ";NO SKSE" markiert.
    Desweiteren plane ich für jede Funktionen ein kleines Beispiel, für besseres Verständniss hinzuzufügen.

    Keyword Function GetCostliestMagicEffectKeyword(Spell S, int KeywordIndex = 0) Global
    Code:
    Keyword Function GetCostliestMagicEffectKeyword(Spell S, int KeywordIndex = 0) Global
        if (S)
            int Index = S.GetCostliestEffectIndex()
            MagicEffect mEffect = S.GetNthEffectMagicEffect(Index)
            if (mEffect)
                return mEffect.GetNthKeyword(KeywordIndex)
            else
                return None    
            endif
        else
            ;
        endif
    EndFunction
    Code:
    Spell Property Zauber Auto
    Keyword Property A Auto
    Keyword K = GetCostliestMagicEffectKeyword(Zauber)
    If A == K
        debug.messagebox("Der teuerste MagicEffect des Zaubers hat den selben Keyword wie die Keyword Property")
    EndIf
    bool Function Spell_MagicEffectHasKeyword(Spell S, Keyword K) Global
    Code:
    bool Function Spell_MagicEffectHasKeyword(Spell S, Keyword K) Global
        if (S)
            int index = 0
            int max = S.GetNumEffects()
            While(index < max)
                MagicEffect mEffect = S.GetNthEffectMagicEffect(Index)
                if mEffect.HasKeyword(K)
                    return True
                EndIf
                index +=1    
            endWhile
            return False
        else
            ;
        endif
    EndFunction
    Code:
    Spell Property Zauber Auto
    Keyword Property A Auto
    
    if (Spell_MagicEffectHasKeyword(Zauber, A) == True)
        debug.Messagebox("Der Zauber besitzt Keyword A!")
    Else
        debug.Messagebox("Der Zauber besitzt NICHT keyword A!")    
    endif
    String Function GetAssociatedSkillFromSpell(Spell akSource) Global
    Code:
    String Function GetAssociatedSkillFromSpell(Spell akSource) Global
    if (akSource)
        int Index = akSource.GetCostliestEffectIndex()
        MagicEffect mEffect = akSource.GetNthEffectMagicEffect(Index)
        if (mEffect)
            return mEffect.GetAssociatedSkill()
        else
            ;
        endif
    endif    
    EndFunction
    Code:
    Spell Property MySpell Auto
    if GetAssociatedSkillFromSpell(MySpell) == "Destruction"
        debug.messagebox("MySpell is a destruction spell!")
    else
        debug.messagebox("MySpell is NOT a destruction spell!")    
    endif
    bool Function IsOneHandedWeaponEquipped(Actor Player = None) Global ;NO SKSE
    {Wenn der Actor nicht angegeben wird bezieht sich die Funktion auf den Spieler (leider nicht getestet sollte aber klappen)}
    Code:
    bool Function IsOneHandedWeaponEquipped(Actor Player = None) Global ;No SKSE
    if (Player == None)
        Player = Game.GetPlayer()
    endif
        if ((Player.GetEquippedItemType(0) >= 1) && (Player.GetEquippedItemType(0) <= 4)) || ((Player.GetEquippedItemType(1) >= 1) && (Player.GetEquippedItemType(1) <= 4))            
            return True    
        else
            return False
        EndIf    
    EndFunction
    Code:
    Actor Property MyActor Auto
    if (IsOneHandedWeaponEquipped(MyActor) == True)
        debug.messagebox("MyActor benutzt eine einhändige Waffe!")
    Else
        debug.Messagebox("MyActor benutzt KEINE einhändige Waffe!")
    endif
    if (IsOneHandedWeaponEquipped() == True)
        debug.Messagebox("Der Spieler benutzt eine einhändige Waffe!")
    endif
    bool Function IsTwoHandedWeaponEquipped(Actor Player = None) Global ;NO SKSE
    {Wenn der Actor nicht angegeben wird bezieht sich die Funktion auf den Spieler (leider nicht getestet sollte aber klappen)}
    Code:
    bool Function IsTwoHandedWeaponEquipped(Actor Player = None) Global ;NO SKSE
    if (Player == None)
        Player = Game.GetPlayer()
    endif
        if ((Player.GetEquippedItemType(0) >= 5) && (Player.GetEquippedItemType(0) <= 6)) || ((Player.GetEquippedItemType(1) >= 5) && (Player.GetEquippedItemType(1) <= 6))
            return True        
        else
            return False    
        EndIf
    EndFunction
    Code:
    Actor Property MyActor Auto
    if (IsTwoHandedWeaponEquipped(MyActor) == True)
        debug.messagebox("MyActor benutzt eine zweihändige Waffe!")
    Else
        debug.Messagebox("MyActor benutzt KEINE zweihändige Waffe!")
    endif
    if (IsTwoHandedWeaponEquipped() == True)
        debug.Messagebox("Der Spieler benutzt eine zweihändige Waffe!")
    endif
    int Function Actor_UsesArmorWithKeywordAsString(Actor Player, String S) Global
    Code:
    int Function Actor_UsesArmorWithKeywordAsString(Actor Player, String S) Global
    int min = 0
    Armor Boots = Player.GetWornForm(0x00000080) as Armor
    Armor Cuirass = Player.GetWornForm(0x00000004) as Armor
    Armor Gauntlets = Player.GetWornForm(0x00000008) as Armor
    Armor Helmet = Player.GetWornForm(0x00000001) as Armor
    Armor Shield = Player.GetWornForm(0x00000200) as Armor
    if (Boots.HasKeywordString(S))
        min += 1
    endif
    if Cuirass.HasKeywordString(S)
        min += 1
    EndIf
    if Gauntlets.HasKeywordString(S)
        min += 1
    EndIf
    if Helmet.HasKeywordString(S)
        min += 1
    EndIf
    if Shield.HasKeywordString(S)
        min += 1
    EndIf
    return min
    EndFunction
    Code:
    If Actor_UsesArmorWithKeywordAsString(Game.GetPlayer(), "ArmorHeavy") >= 3
        debug.messagebox("Der großteil der benutzten Rüstung des Spielers ist schwere Rüstung!")
    EndIf

    Alle angegebnen Funktionen sind vollkommen frei zuverwenden. Falls ihr selber eine Funktion mit der Modding Community teilen wollt, schreibt diese doch entweder hier in den thread und/oder mir per PM, dann werde ich diese Funktion der Liste hinzufügen. Ich hoffe es hilft jemanden weiter :).
     
    Zuletzt bearbeitet: 9. März 2013
  2. Werbung (Nur für Gäste)
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden