Allgemein
News
News-Archiv
Partner
Netzwerk
Banner
Header
Media
Downloads
Impressum

The Elder Scrolls
Arena
Daggerfall
Spin-offs
Romane
Jubiläum
Reviews
Welt von TES
Lore-Bibliothek
Namens-
generator

FRPGs

Elder Scrolls Online
Allgemein
Fraktionen
Charakter
Kargstein
Technik
Tamriel-
Manuskript

Media

Skyrim
Allgemein
Lösungen
Tipps & Tricks
Steam-Kniffe
Review
Media
Plugins & Mods

Oblivion
Allgemein
Lösungen
Tipps & Tricks
Technik
Charakter
Media
Plugins & Mods
Kompendium

Morrowind
Allgemein
Lösungen
Tipps & Tricks
Media
Plugins & Mods

Foren
The Elder Scrolls Online
Hilfe & Diskussion

Skyrim
Hilfe & Diskussion
Plugins & Mods

Ältere TES-Spiele
TES-Diskussion
Oblivion-Plugins
Morrowind-Plugins

Community
Taverne zum Shalk
Adventures of Vvardenfell
Tales of Tamriel
Ergebnis 1 bis 8 von 8

Thema: 3 Scripting-Fragen

  1. #1

    3 Scripting-Fragen

    Hallo^^
    1. Kann ich in einem Script eine Abfrage machen, ob ein Ziel zur Undead-Categorie gehört?
    2. Kann ich einem NPC per Scriptbefehl ein Script hinzufügen lassen?
    3. Warum funktioniert das Script hier nicht? oO

    Zitat Zitat
    scn zzzskeletonaltarscript

    short button
    short necro

    begin onactivate

    Messagebox "Was für ein Skelett wollt ihr beschwören?[Skelette sind gute Nah- und Fernkämpfer mit hoher Waffenresistenz und einer Schwäche gegen Magie]" "Skelett [1 Knochenstaub]"

    Set necro to GetButtonPressed


    if necro == 0
    if (IsActionRef Player) && ( player.getitemcount Bonemeal ==1 )
    player.placeatme ZZZnecroskeleton1 1

    elseif

    message "Ihr habt nicht genug Ressourcen"

    endif

    end
    mfg Asgar
    Geändert von Lord Asgar (19.12.2007 um 16:50 Uhr)

  2. #2
    Hm, zu 3.

    Soweit ich mit meinen beschränkten Script-Kenntnissen Recht habe, muss nach jeder Bedingung eine Reaktion folgen, oder eine zweite Bedingung. Das heißt das Problem liegt hier:

    Zitat Zitat
    if necro == 0
    if (IsActionRef Player) && ( player.getitemcount Bonemeal ==1 )
    player.placeatme ZZZnecroskeleton1 1
    Edit: Warte mal, da gibt's noch einige andere unstimmigkeiten in deinem Script. Hier mal eine überarbeitete Version (Die warscheinlich auch nicht funktionieren wird):

    Code:
    scn zzzskeletonaltarscript
    
    short necro
    
    begin onactivate
    Messagebox "Was für ein Skelett wollt ihr beschwören?[Skelette sind gute Nah- und Fernkämpfer mit hoher Waffenresistenz und einer Schwäche gegen Magie]", "Skelett [1 Knochenstaub]"
    end
    
    begin GameMode
        Set necro to GetButtonPressed
             if necro == 0 && player.getitemcount Bonemeal > 0
             player.placeatme ZZZnecroskeleton1 1
             player.removeitem Bonemeal 1
        endif
             if necro == 0 &&  player.getitemcount Bonemeal < 0
             Message "Ihr habt nicht genug Ressourcen"
    endif
    
    end
    Geändert von Zetter (19.12.2007 um 17:34 Uhr)

  3. #3
    Hallo.

    1.) Das kannst Du über die Faction machen. Alle Untoten sind Mitglied in der Faction UndeadFaction und das kannst Du mit GetInFaction abfragen.

    2.) Nein, das geht nicht.

    3.) Das Script muss wie folgt lauten (sofern ich die MessageBox richtig interpretiere)
    PHP-Code:
    scn zzzskeletonaltarscript

    short button
    short necro

    begin onactivate

    if ( necro == )
        if ( 
    IsActionRef Player == )
            
    Messagebox "Was für ein Skelett wollt ihr beschwören?[Skelette sind gute Nah- und Fernkämpfer mit hoher Waffenresistenz und einer Schwäche gegen Magie]" "Skelett [1 Knochenstaub]" "Abbrechen"
            
    set necro to 1
        
    endif
    endif

    End

    Begin GameMode

    if ( necro == )
        
    Set button to GetButtonPressed
        
        
    if ( button == )
            if ( 
    Player.GetItemCount Bonemeal >= )
                
    Player.PlaceAtMe ZZZnecroskeleton1 1
                Player
    .RemoveItem Bonemeal 1
                set necro to 0
            
    else
                
    Message "Ihr habt nicht genug Ressourcen"
                
    set necro to 0
            
    endif
        elseif ( 
    button == )
            
    set necro to 0
        
    endif
    endif

    End 
    EDIT:
    Ja, da fehlte das Endif. Ein kleiner Schusselfehler.
    Geändert von Rung (19.12.2007 um 17:23 Uhr)

  4. #4
    Zitat Zitat von Rung Beitrag anzeigen
    Hallo.

    1.) Das kannst Du über die Faction machen. Alle Untoten sind Mitglied in der Faction UndeadFaction und das kannst Du mit GetInFaction abfragen.

    2.) Nein, das geht nicht.

    3.) Das Script muss wie folgt lauten (sofern ich die MessageBox richtig interpretiere)
    PHP-Code:
    scn zzzskeletonaltarscript

    short button
    short necro

    begin onactivate

    if ( necro == )
        if ( 
    IsActionRef Player == )
        
    Messagebox "Was für ein Skelett wollt ihr beschwören?[Skelette sind gute Nah- und Fernkämpfer mit hoher Waffenresistenz und einer Schwäche gegen Magie]" "Skelett [1 Knochenstaub]" "Abbrechen"
        
    set necro to 1
    endif

    End

    Begin GameMode

    if ( necro == )
        
    Set button to GetButtonPressed
        
        
    if ( button == )
            if ( 
    Player.GetItemCount Bonemeal >= )
                
    Player.PlaceAtMe ZZZnecroskeleton1 1
                Player
    .RemoveItem Bonemeal 1
                set necro to 0
            
    else
                
    Message "Ihr habt nicht genug Ressourcen"
                
    set necro to 0
            
    endif
        elseif ( 
    button == )
            
    set necro to 0
        
    endif
    endif

    end 
    1. Schade, gibt es wirklich keine andere Möglichkeit, einem NPC ein Script zu verpassen, außer direkt im CS? Sonst ist mein Plan, Vampirkinder erschaffen zu können, dahin oO
    2. Okay^^
    3. Er wittert einen mismatched begin/end block in Zeile Acht

  5. #5
    Andere Script-Frage, für die ich nicht extra einen neuen Fred aufmachen wollte xD
    Kann ich in einem Spell folgendes machen?
    Mit Spellbeginn wird dem Spieler ein Spell hinzugefügt. Nach genau einer Stunde (Hier liegt mein Problem, was muss ich machen, damit er nach genau einer Stunde den Effekt ausführt?) wird der Spell wieder entfernt und der Spieler castet automatisch einen Spell, der all sein Mana raubt^^

  6. #6
    Ich würd das mit der Abfrage GetCurrentTime machen.


    Code:
    scn LoseMagickaScript
    
    long MagickaValue
    float StartTime
    ref Caster
    
    Begin ScriptEffectStart
     set Caster to GetSelf
    ;if ( Caster == Player )           ;falls der Zauber nur für den Spieler wirken soll diese Zeile einfach entkommentieren
     set StartTime to GetCurrentTime
     if ( ( StartTime + 1 ) >= 24 )      ;evtl. auch nur > 24 (statt >= 24). Kommt darauf an, ob Oblivion mit 0 Uhr, oder mit 24 Uhr arbeitet. Ich gehe hier von 0 Uhr aus.
      set StartTime to ( StartTime - 24 )
     endif
    ;endif           ;falls der Zauber nur für den Spieler wirken soll diese Zeile einfach entkommentieren
    End
    
    Begin ScriptEffectUpdate
    ;if ( Caster == Player )           ;falls der Zauber nur für den Spieler wirken soll diese Zeile einfach entkommentieren
     if ( GetCurrentTime >= ( StartTime + 1 ) )
    ; set MagickaValue to ( -1 * ( GetActorValue Magicka ) )
    ; ModActorValue2 Magicka MagickaValue
      AddSpell [Dein Spell der das Magicka abzieht]          ;alternativ die OBSE-Befehle entkommentieren, diese Zeile auskommentieren (; davor setzen) und das direkt in diesem Skript erledigen lassen
      Cast [Dein Spell der das Magicka abzieht] Caster
      RemoveSpell [Dein Spell der das Magicka abzieht]
      RemoveSpell [ID dieses Spells]
     endif
    ;endif           ;falls der Zauber nur für den Spieler wirken soll diese Zeile einfach entkommentieren
    End
    Geändert von Low Post (20.12.2007 um 17:05 Uhr)

  7. #7
    So ganz verstehe ich deine Comments nicht^^
    Ja, der Zauber soll nur auf den Spieler wirken, muss man dann was ändern?
    Jop, afair arbeitet Oblivion mit 0 uhr
    OBSE-Befehle? Ich möchte möglichst ohne auskommen^^
    Und wo gebe ich jetzt an, wo der Spieler den Spell bekommt, der ihm 500 auf Magicka bringt? oO

  8. #8
    Kommentare:
    Alles hinter einem ; (bis zum Zeilenende) wird als Kommentar gewertet und beim Compilieren/"auslesen" im Spiel nicht beachtet.
    Wenn ich jetzt von entkommentieren Spreche meine ich, dass man den ; am Anfang der Zeile (nur den) löscht.
    Wenn ich auskommentieren Sage meine ich, dass man an den Anfang der Zeile einen ; setzt, damit die Zeile von CS & Spiel ignoriert wird.


    Zauber:
    Du erstellst einen neuen Zauber und gibst ihm den Effekt Magicka entziehen/Magicka wiederherstellen/Magicka festigen.
    [Dein Spell der das Magicka abzieht] erstetzt du im Script dann mit der ID des Zaubers.


    [ID dieses Spells] ersetzt du mit der ID des Zaubers/der Eigenschaft mit diesem Skripteffekt.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •