Construction Set Skriptthread zum Construction Set

:eek: Tja, dann solltest du das lieber nicht beibehalten. Aber das CS hat das Script mit der Änderung ohne Klagen gespeichert?

Ich hab nochmal ne Version des Scripts aufgeschrieben (das von Gildur abgeändert), von der ich nicht weiß, ob sie richtig ist (auch nicht, ob du sie schon probiert hast), die du mal probieren kannst:

Code:
scn KnochenVerwertenSCRIPT

short button

Begin OnEquip
Messagebox "Was wollt ihr mit dem Knochen anstellen?" "Pfeil herstellen" "Zermahlen" "Nichts"
End

Begin MenuMode
set button to getbuttonpressed
if button == 0
If player.getItemCount [WerkzeugID] >= 1
[COLOR="Red"]player.removeitem [KnochenID] 1[/COLOR]
player.additem [PfeilID] 1
Else
Messagebox "Ihr habt leider nicht das benötige Werkzeug in eurem Besitz."
Endif
Elseif button == 1
If player.GetItemCount [ZermahlwerkzeugID] >= 1
[COLOR="Red"]player.removeitem [KnochenID] 1[/COLOR]
player.addItem [zermahlenerKnochenID] 1
Else
Messagebox "Ihr habe leider nicht das benötigte Werkzeug in eurem Besitz."
Endif
End

Das, was ich farbig gemacht habe, hast du wohl beim letzten Versuch der in einem Absturz endete geschrieben oder? Außerdem war in Gildurs Script am Ende zweimal "endif", ich weiß nicht ob du das auch so übernommen hattest.
Probiers doch nochmal in beiden Varianten (mit und ohne dem roten). Keine Ahnung, ob das CS da vielleicht schon meckert.
 
hm bei deinem skript meckert er...
in dieser zeile
Elseif button == 1 (18)

sagt er:
Mismatched if/else/endif block starting in line 18

und danach direkt die meldung
mismatched if/then/else block
auch in line 18

ne idee warum??
 
Es fehlt ein edif vor dem End. Also quasi:

Code:
scn KnochenVerwertenSCRIPT

short button

Begin OnEquip
Messagebox "Was wollt ihr mit dem Knochen anstellen?" "Pfeil herstellen" "Zermahlen" "Nichts"
End

Begin MenuMode
set button to getbuttonpressed
if button == 0
If player.getItemCount [WerkzeugID] >= 1
player.removeitem [KnochenID] 1
player.additem [PfeilID] 1
Else
Messagebox "Ihr habt leider nicht das benötige Werkzeug in eurem Besitz."
Endif
Elseif button == 1
If player.GetItemCount [ZermahlwerkzeugID] >= 1
player.removeitem [KnochenID] 1
player.addItem [zermahlenerKnochenID] 1
Else
Messagebox "Ihr habe leider nicht das benötigte Werkzeug in eurem Besitz."
Endif
[COLOR="Red"]endif[/COLOR]
End

PS: er hat über das If player.GetItemCount [ZermahlwerkzeugID] >= 1 gemeckert, leider vertut der sich manchmal in der Zeile.
 
also ich habs hinbekommen das ich knochenmehl machen kann. musste das removeitem und additem austauschen.
Nur wenn ich pfeile herstellen will stürzt oblivion ab.
Und die nachricht das mir das werkzeug fehlt kommt in ner endlosschleife
 
Zuletzt bearbeitet:
Zauber abfragen

Hi,
ich versuche gerade, Zauber vom Spieler zu entfernen und diese später wieder hinzuzufügen.
Das stelle ich mir so vor:
  1. Überprüfen, ob der Spieler den Zauber hat
  2. Zauber entfernen->Player.RemoveSpell SpellID
  3. Zauber wieder hinzufügen->Player.AddSpell SpellID
Das Problem ist die Überprüfung. Ich muss schließlich wissen, ob der Spieler den Zauber xy hatte, bevor ich ihn hinzufüge. Wäre ja blöd, wenn ich auf Glück dem Spieler alle Zauber zur Verfügung stelle.
Ich habe einen Ansatz über Variablen aber keine Ahnung, wie ich Zauber abfragen kann.
Wenn ich es wüsste, könnte ich ne short z.B. auf 1 setzten und diese vor dem Hinzufügen abfragen.
 
Ich weiß, aber es geht dummerweise um eine Mod und das Team möchte auf OBSE verzichten.
 
Mit oder ohne OBSE?

Mit, ganz einfach:
Da hat es den Befehl "Hasspell", mit dem das einfach zu prüfen ist.

Wenn nicht, dnan musst du einen kleinen Workaround machen, hier der WIki Auszug:


Im trying to locate a script that returns a short of boolean type response ( or any response at all ) if the indicated pc/npc possesses a certain spell.
RemoveSpell returns 1 if the spell was removed successfully and 0 if the target doesn't have the spell. So you can do this:
if ( target.removeSpell someSpell ) ; target has spell

target.addSpell someSpell ; reverse the side effect of above line

endif

Sprich:
Beim entfernen des Zaubers läuft gleichzeitig eine Prüfung ab, welche prüft ob der Zauber erfolgreich entfernt wurde. Wenn ja wird die Variable auf 1 gestellt. Diese kannst du dann abfragen und den Wert dann in eine deiner Variablen eintragen, sodass du später darauf zugreifen kannst.
 
  • Like
Reaktionen: 1 Person
Entschuldigung, dass ich doof nachfrage. Sieht das dann so aus?

If ( Player.RemoveSpell SpellId )
Player.AddSpell SpellId
EndIf

Falls ja, dickes Danke(den Button drück ich noch).
Aber: Ihr müüst euch das so vorstellen.
Spieler kommt in eine Zelle->Zauber vorhanden?->Merken und Entfernen
...viel später...
Spieler verlässt Zelle->war Zauber vorhanden?->Wenn Ja hinzufügen

Das könnte ich doch über eine zusätzliche Variable lösen, oder?

If ( Player.RemoveSpell SpellId )
Set myvar To 1
EndIf

Und später:

If ( myvar == 1 )
Player.AddSpell SpellId
EndIf

Ich würde es ja testen, aber ich hab grad keine Möglichkeit, ein CS zu starten.
 
du könntest es sogar so machen:

Beim betreten
Code:
set myVar to Player.RemoveSpell [SpellID]

und dann beim verlassen
Code:
if ( myVar )
 Player.AddSpell [SpellID]
endif
 
  • Like
Reaktionen: 1 Person
Ich habe auch noch mal zwei Fragen.
Die erste ist: Wie müsste das Skript lauten, um den Player in eine Kreatur zu verwandeln.
Die zweite lautet: Könnte man, durch ein Skript, dem Player das fliegen gestatten und wenn ja wie müsste es lauten.

Ich bedanke mich schon einmal für die Hilfe.:)
 
Ich habe auch noch mal zwei Fragen.
Die erste ist: Wie müsste das Skript lauten, um den Player in eine Kreatur zu verwandeln.
Die zweite lautet: Könnte man, durch ein Skript, dem Player das fliegen gestatten und wenn ja wie müsste es lauten.

Ich bedanke mich schon einmal für die Hilfe.:)
Zum Verwandeln: Verarsche Oblivion. Beschwöre eine Kreature (PlaceAtMe ID)
und setze den Player auf Invisible. Allerdings benötigst Du noch ein Steuerungsskript, dass dir so schnell niemand geben wird, da es einfach zu aufwändig ist.

Zum Fliegen: Schon mal was von Levitation gehört? Gib dem Spieler nen andauernden Effekt.
 
Hi,
ich habe eine skript-idee, aber das tutorial war mir zu kompliziert (habe herausgefunden, dass es die undankbarste arbeit im cs ist, die es gibt [soll keine beleidigung sein]):
man könnte doch ein skript für masken (z.b. eine überarbeitete graufuchs-maske) erstellen, mitdem man bei einem verbrechen, dass man begeht während man die maske trägt NUR das kopfgeld hat, während man die maske trägt (auch andersherum: bei einem verbrechen ohne maske hat man denn das kopfgeld nur, wenn man die maske nicht trägt)!
klingt overmoddet (was es vllt. auch ist^^) aber es ist nützlich für assas und diebe!
(kann man ja in eine mehr oder weniger schwere quest verpacken)!!
meldet euch bei interesse bei mir, pls.!! ;-)
 
Wenn ich das richtig verstanden habe, dann brauchst du dafür kein Script, das ist nämlich auch im Originalspiel so ;)
Wenn du mit der Maske des Graufuchses ein Verbrechen begehst und sie danach ausziehst, verfolgt dich niemand mehr :)

Mfg
 
hallo erstmal

bin grad an nem mod dran und breuchte einen skript der bewirken soll das wenn man mit dem schwert auf dem der skript liegt schlägt das ein feuerball herausfliegt (oder ein anderer zeuber) aber es auch immer noch im nahkampf schaden macht geht dass?????

mfg
Waaat
 
hallo erstmal

bin grad an nem mod dran und breuchte einen skript der bewirken soll das wenn man mit dem schwert auf dem der skript liegt schlägt das ein feuerball herausfliegt (oder ein anderer zeuber) aber es auch immer noch im nahkampf schaden macht geht dass?????

mfg
Waaat
Wie wäre es mit dem Cast-Befehl?
Code:
Begin OnHit
SchwertID.Cast ZauberId Ziel
End

Allerdings weiß ich grad nicht, ob es OnHit in Oblivion überhaupt gibt. Und wie Du das mit dem Ziel machen sollst, weiß ich auch nicht. Vielleicht kannst Du es weglassen.
Oder schau dir einfach mal verzauberte Gegenstände im CS an, grad die Zauberstäbe. Die werfen doch oft mit Feuerbällen um sich. Evtl. Kannst Du da etwas übernehmen.