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 20 von 43

Thema: 2 probleme mit meinem Skript

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    es geht
    und ich hatte schon fast aufgegeben^^"

    jetzt bleibt nur noch das problem das der Skript nicht funktioniert wenn ein NPC die rüssi trägt

  2. #2
    Füge doch mal folgendes zu Testzwecken in den Gamemode-Block ein:
    Code:
    if ( ( Actor.GetIsReference Player ) == 0 ) && ( IsFormValid Actor )
    	Print ( Actor.GetName ) + " (" + ( Actor.GetFormIDString ) + ") als Container im Gamemode-Block."
    endif

    Wenn der Gamemode-Block läuft (und sich das Item nicht im Inventar des Spielers befindet) sollte das deine Konsole zuspammen: <Name> (<FormID>) als Container im Gamemode-Block.
    Wenn da nichts erscheint läuft der Gamemode-Block einfach nicht.
    Geändert von Low Post (16.08.2009 um 14:10 Uhr)

  3. #3
    ok ich habe das ma gleich am anfang des blocks eingefügt
    und die konsole wure mit folgendem immer wieder zugespamt

    Error in script b5000eed
    Attempting to call a function on a NULL reference or base object
    Error in script b5000eed
    An expression failed to evaluate to a valid result

    dabei spielte es keine rolle ob ich oder ein npc die rüssi hatte

    kleine frage am rande zu setEquippedCurrentHealth

    was für eine slot id muss ich eigendlich angeben wen ich z.B. eine rüssi wie das Arenagewand nehmen will?

  4. #4
    Oh, sorry. Hab eine Abfrage vergessen.
    Script wurde editiert.

    Zitat Zitat
    was für eine slot id muss ich eigendlich angeben wen ich z.B. eine rüssi wie das Arenagewand nehmen will?
    Seit der neuesten OBSE-Beta (v0018 Beta 3) reicht es aus einen Slot anzugeben, der von der Rüstung verwendet wird. Davor könntest du noch 18 ausprobieren, aber da das Arenagewand auch noch die Füße und Hände besetzt (IIRC) wird das nicht funktionieren.

    Einzige Möglichkeit wäre dann SetCurrentHealth, wofür das Item aber z.B. außerhalb des Inventars (da als Referenz) beeinflusst werden muss. Außerdem wurde das auch erst mit o.g. Beta eingefügt.

  5. #5
    ok die konsole wird nicht zugespamt

    ich habe jetzt allerdings noch ein problem bemerkt

    wenn ich das spiel lade u die rüssi schon an habe wird der begin onEquipp block ja nicht ausgeführt darum habe ich die befehle in den block ma in den gamemod block übernommen und mit einer doonce variable versehen

    siehe hier
    PHP-Code:
    scn aaarmorbrokenb

    short doonce
    short init
    short next
    short EquipDelay
    long objecthealth
    ref Actor

    Begin GameMode
    if ( ( Actor.GetIsReference Player ) == ) && ( IsFormValid Actor )
        Print ( 
    Actor.GetName ) + " (" + ( Actor.GetFormIDString ) + ") als Container im Gamemode-Block."
    endif
     if 
    init == && doonce == 0
        set Actor to getcontainer
        set init to 1
                set doonce to 1
    endif
        if 
    init == 1
            
    if getCurrentHealth getObjectHealth >= && getCurrentHealth getObjectHealth <= 0.75
                message 
    "Rüstung ist beschädigt!"
                
    set next to 1
                set objecthealth to getCurrentHealth
                Actor
    .addItem aamodiamelionbroken 1
                set init to 0
                set EquipDelay to 1
            
    endif
        elseif 
    next == 1
            
    if EquipDelay >= 1
                set EquipDelay to EquipDelay 
    1
            
    elseif EquipDelay == 0
                set next to 0
                Actor
    .UnEquipItem aamodiamelion
                Actor
    .EquipItem aamodiamelionbroken
                Actor
    .setEquippedCurrentHealth objecthealth 2
                removeMe
            
    endif
        endif
    end 
    allerdings funktioniert das nur wenn die rüstung dem entsprechend beschädigt ist und ich das spiel Speicher,neu starte und dann lade
    beim normalem laden (ohne game ausmachen oder cell wechsel funktioniert das nicht
    Geändert von Orios das auge (16.08.2009 um 15:02 Uhr)

  6. #6
    Zitat Zitat
    ok die konsole wird nicht zugespamt
    Bedeutet: entweder hat kein NPC das im Inventar, oder der Gamemode-Block läuft dann einfach nicht ab.



    Zum Script:
    Die Variablen werden eigentlich gespeichert, also sollte es nicht nötig sein das zu ändern.
    Falls du aber unbedingt willst würde ich dir GetEquipped empfehlen.

  7. #7
    zu 1. nein ich habe mir einen x beliebigen Npc ausgesucht und ihn das teil ins inventar geklatscht (kann ich durch ein mod) und in der konsole ist nix erschienen

    zu 2. nee der effeckt ist der gleiche als wenn ich doonce ganz weglasse was bedeuted das ganz viele aamodiamelionbroken im inventar auftauchen aber nicht ausgerüsted werden (die rüstung die angelegt ist bleibt aber auch angelegt)
    Geändert von Orios das auge (16.08.2009 um 16:52 Uhr)

  8. #8
    1.: Da kann man leider nicht großartig etwas dran ändern.

    2.) Hab mir dein Script jetzt nicht angesehen, aber probier mal das hier:
    Code:
    scn aaarmorbrokenc
    
    short next
    short EquipDelay
    long objecthealth
    ref Actor
    
    Begin GameMode
    	if Actor == 0
    		set Actor to GetContainer
    	elseif ( Actor.GetEquipped aamodiamelion ) && ( next == 0 )
    		if getCurrentHealth / getObjectHealth >= 0 && getCurrentHealth / getObjectHealth <= 0.75
    			message "Rüstung ist beschädigt!"
    			set next to 1
    			set objecthealth to getCurrentHealth
    			Actor.addItem aamodiamelionbroken 1
    			set EquipDelay to 1
    		endif
    	elseif next == 1
    		if EquipDelay >= 1
    			set EquipDelay to EquipDelay - 1
    		elseif EquipDelay == 0
    			set next to 0
    			Actor.UnEquipItem aamodiamelion
    			Actor.EquipItem aamodiamelionbroken
    			Actor.setEquippedCurrentHealth objecthealth 2
    			removeMe
    		endif
    	endif
    end

  9. #9
    zu 1. heist das jetzt das ich npc´s doch keine dellen in die rüstung kloppen kann?

    zu 2. thx das hat funktioniert
    Geändert von Orios das auge (16.08.2009 um 18:15 Uhr)

  10. #10
    Zumindest nicht auf diese Art.
    Vermutlich müsstest du den Weg über Eigenschaften mit ScriptEffekt gehen, oder du regelst gleich alles in einem QuestScript.

  11. #11
    ok Scripteffeckt wäre schlecht da der Skript ja auch bei verzauberten sachen funktionieren soll

    Könntest du mir das mit den Quest Skript vieleicht genauer erklären
    sry das ich so blöd frage aber hatte mit Quest´s noch nicht viel am Hut

  12. #12
    Um ein QuestScript wirst du nie herumkommen. Entweder um den NPCs die Eigenschaft hinzuzufügen (macht übrigens keinen Unterschied, ob die Rüstung verzaubert wurde oder nicht), oder um den Effekt gleich dort zu erledigen.



    QuestScripts unterscheiden sich von sonstigen Scripten nur darin, dass sie keine Referenz haben (sprich: wenn eine Funktion einen CallingActor benötigt muss der angegeben werden), sie mittels StopQuest/StartQuest gestoppt/gestartet werden können und mittels der (lokalen) Variable fQuestDelayTime kontrolliert wird, wie oft ein Gamemode/Menumode-Block läuft.
    Ansonsten ist so ziemlich alles gleich: stelle den Typ auf Quest, erstelle eine neu Quest und füge dein Script als das Script der Quest ein. Hin und wieder ist es auch sinnvoll den Haken bei SetGameEnabled zu entfernen (hier wahrscheinlich nicht).

Berechtigungen

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