Archiv verlassen und diese Seite im Standarddesign anzeigen : 3 Scripting-Fragen
Lord Asgar
19.12.2007, 15:46
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
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
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:
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):
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
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)
scn zzzskeletonaltarscript
short button
short necro
begin onactivate
if ( necro == 0 )
if ( IsActionRef Player == 1 )
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 == 1 )
Set button to GetButtonPressed
if ( button == 0 )
if ( Player.GetItemCount Bonemeal >= 1 )
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 == 1 )
set necro to 0
endif
endif
End
EDIT:
Ja, da fehlte das Endif. Ein kleiner Schusselfehler.
Lord Asgar
19.12.2007, 16:20
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)
scn zzzskeletonaltarscript
short button
short necro
begin onactivate
if ( necro == 0 )
if ( IsActionRef Player == 1 )
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 == 1 )
Set button to GetButtonPressed
if ( button == 0 )
if ( Player.GetItemCount Bonemeal >= 1 )
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 == 1 )
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
Lord Asgar
19.12.2007, 21:18
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^^
Low Post
19.12.2007, 23:31
Ich würd das mit der Abfrage GetCurrentTime (http://cs.elderscrolls.com/constwiki/index.php/GetCurrentTime) machen.
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
Lord Asgar
20.12.2007, 09:52
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
Low Post
20.12.2007, 16:07
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.
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.