Construction Set Der Scriptthread

hoi..

ich möchte diesmal, dass der spieler von einem NPC ein Amulett entwendet. Im Spiel kann ich aber über Schleichen->Npc aktivieren kein Amulett im Inventar des NPC's finden. Ich habe seinen Begleiter beseitigt, seine Schleich-, Sicherheits- und Geschicklichkeitsfähigkeiten auf 0 und meine auf 100 (später sogar 1000) gesetzt, aber es passiert immernoch nichts. Jetzt kann ich nur seine Laterne stehlen.

Das Amulett habe ich auch schon doppelt ins Inventar gelegt, falls der NPC es doch anzieht, es ist aber immernoch nichts da.

An was kann man liegen, und kann man als Notlösung das Anlegen des Amuletts per Script verhindern? Ich versteh das nicht so ganz..
 
Pickpocketing ist eine der widerlichsten Sachen in Morrowind:

Player.Sneak > d100 + Victim.Sneak

ist die Prüfformel für ein erfolgreiches "Aktivieren" des Opferinventars ohne entdeckt zu werden. Hier hilft Chamäleon 100% ungemein.

Player.Security > d100 + fPickPocketMod * item Weight

ist die Prüfformel für jedes Item, das man sieht. Relevant ist also nur der SneakSkill des Opfers. Aber:

Selbst bei einem erfolgreichen Eindringen in das Opferinventar siehst du nicht alle Items. Objekte, die angelegt sind, kann man nicht sehen. Und bei den anderen entscheidet der Zufall ob du sie siehst. Bei jeder Interaktion mit dem Inventar eines Opfers (rausnehmen, reinlegen) wird neu geprüft, so kann es sein, dass man nach dem Nehmen eines Objekts ein anderes plötzlich nicht mehr sieht oder ein neues Objekt erscheint und jedes Mal werden die Prüfungen durchgeführt.

Ich bin mir nicht sicher, ob man Itens vom Tyo "Clothing" überhaupt stehlen kann. Habe das noch nie probiert und kann es auch nicht testen. Probiere das ganze mit einem Misc-Item als Amulett-Dummy, wenn es mit dem echten Amulett partout nicht geht. Wenn du das Ding dann sehen kannst, wäre mein Vorschlag, es im Inventar des Spielers bei erfolgreichem Diebstahl gegen das echte Amulett austauschen.
 
  • Like
Reaktionen: Senture
oha das hört sich ja scheußlich an..:-D
dann werde ich das ganze mal heute als misc item umbauen. Ich hab den Vorteil, dass das Amulett nicht getragen werden muss, sondern lediglich gestohlen und abgegeben wird.

Was ist denn bei deiner Formel mit d100 gemeint? Ich bin gerade etwas begriffsstutzig..
 
Hallo zusamen,
ich bräuchte mal wieder Hilfe. Ich möchte ein Schnitzmesser mit einem Script belegen. Bei Aktivierung des Messers soll zurerst per Schalterabfrage geklärt werden, ob man das Messer verwenden möchte oder aufnehmen. Wenn man "Verwenden" wählt, soll eine erneute Schalterabfrage erfolgen ("Pfeil herstellen" oder "Doch nicht"; bei beiden Wahloptionen soll das Messer am Ende im Inventar landen). Ich habe versucht, das Bittercup-Skript mit einer zusätzlichen Schalterabfrage zu bersehen, es funktioniert leider nicht.
Hier mal mein Skript:
begin _ly_working_knife


short button
short messageOn
short knifeuse
short button1
short opinionState



if ( MenuMode == 1 )
return
endif


if ( OnActivate == 1 )
Set messageOn to 2
endif

if ( messageOn == 0 )
return
endif

if ( messageOn == 2 )
MessageBox "Wollt Ihr das Schnitzmesser verwenden oder es aufnehmen?" "Verwenden" "Nehmen."
Set messageOn to 1
endif

if ( messageOn == 1 )
set button to GetButtonPressed
if ( button == 0 )
; drink it
Set knifeuse to 1
Set messageOn to 0
endif
if ( button == 1 )
; pick it up
Activate
Set messageOn to 0
return
endif
endif

; drink from the cup
if ( knifeuse == 1 )

if ( OnActivate == 0 )
if ( opinionState == 0 )
return
endif
endif

if ( opinionState == 0 )
MessageBox "Wollt Ihr aus Korkwurz und Lüferfedern Korkwurzpfeile schnitzen", "Ja", "Nein"
set opinionState to 1
endif

if ( opinionState == 1 )
set button1 to GetButtonPressed


if ( button1 == 0 )
if ( player->GetItemCount "ingred_racer_plumes_01" >= 1 )
if ( player->GetItemCount "ingred_corkbulb_root_01" >= 2 )
player->AddItem "corkbulb arrow" 40
player->RemoveItem "ingred_corkbulb_root_01" 2
player->RemoveItem "ingred_racer_plumes_01" 1
MessageBox "Ihr habt Korkwurzpfeile hergestellt"
else
Messagebox "Ihr habt nicht genügend Korkwurzel."
endif
else
Messagebox "Ihr habt keine Läuferfedern."
endif
set opinionState to 0
elseif ( button1 == 1 )
Activate
Set messageOn to 0
return
endif
return
endif

set knifeuse to 0

endif

end

Wäre nett, wenn mir jemand helfen könnte.
 
Uff... also das schreib ich dann lieber gleich neu :-D

Versuch's mal damit. Ist allerdings ungetestet, da ohne CS zusammengeklöppelt. Aber eigentlich müsste es funktionieren, wenn ich keinen groben Fehler gecoded habe.

Code:
begin _ly_working_knife
Short ControlVar
Short Button

IF ( MenuMode )
  return
ElseIF ( ControlVar == 0 )
  IF ( OnActivate )
    set ControlVar to 1
  EndIF
  return
EndIF

IF ( ControlVar == 1 )
  MessageBox "Wollt Ihr das Schnitzmesser verwenden oder es mitnehmen?", "Verwenden", "Mitnehmen"
  Set ControlVar to 10
ElseIF ( ControlVar == 2 )
  MessageBox "Wollt Ihr aus Korkwurz und Läuferfedern Korkwurzpfeile herstellen?", "Ja", "Nein"
  Set ControlVar to 20
EndIF

set Button to GetButtonPressed

IF ( Button < 0 )
  return

ElseIF ( Button == 0 )

  IF ( ControlVar == 10 )
    set ControlVar to 2
    return
  EndIF

  IF ( player->GetItemCount "ingred_racer_plumes_01" >= 1 )
    IF ( player->GetItemCount "ingred_corkbulb_root_01" >= 2 )
      player->AddItem "corkbulb arrow" 40
      player->RemoveItem "ingred_corkbulb_root_01" 2
      player->RemoveItem "ingred_racer_plumes_01" 1
      MessageBox "Ihr habt 40 Korkwurzpfeile hergestellt."
      [COLOR="#0000FF"]set ControlVar to 2[/COLOR]
      [COLOR="#0000FF"]return[/COLOR]
    Else
      MessageBox "Ihr habt nicht genügend Korkwurzeln."
    EndIF
  Else
    MessageBox "Ihr habt keine Läuferfedern."
  EndIF

EndIF

set ControlVar to 0
Activate

end
 
Zuletzt bearbeitet:
Als erstes Danke für die schnelle Hilfe. Das Skript läuft soweit ganz gut. Was mich nur ein wenig stört, ist folgendes:
Nach der ersten Schalterabfrage (Verwenden oder nicht) scheint das Skript zuerst abzufragen, ob die Materialien vorhanden sind (darauf komme ich, da bei fehlenden Zutaten die Messagbebox erscheint, dass Zutaten fehlen). Wenn sowohl Läuferfedern als auch Korkwurzel da sind, dann kommt erst die zweite Abfrage. Jetzt hätte ich das gerne anders rum, also erst zweite Abfrage und dann Überprüfung, ob die benötigten Zutaten vorhanden sind. Kann man das noch irgendwie ändern?
 
Das war eigentlich als Feature gedacht ._."

Ich habe das Script oben angepasst. Sollte nun so laufen wie gewollt. Die blau markierten Befehle erzeugen eine "Repeated Creation"-Loop, so dass man mehrere Potionen herstellen kann, ohne das Messer erst wieder wegwerfen zu müssen. Wenn dir das nicht gefällt, nimm die beiden Zeilen einfach raus.
 
  • Like
Reaktionen: Lyali
Hi, ich schon wieder. Mich hat etwas die Schalterwut gepackt. Ich möchte auf einen Activator ein Skript legen, welches zuerst eine Abfrage von 2 Wahlmöglichkeiten startet und dann je nach Wahl 7 weitere Wahlmöglichkeiten abfragt. Ich habe versucht £exas Script anzupassen, nur wenn ich dann den Activator aktiviere passiert nichts.

Hier mal das Script, wie es momentan aussieht (die Variablen LY...Var sind Global und sorgen nur dafür, ob man die Waffe im Schrank sieht (1) oder nicht (0)):
begin _ly_weapon_shelf

Short ControlVar
Short Button

IF ( MenuMode )
return
endif

IF ( OnActivate )
IF ( ControlVar == 0 )
set ControlVar to 1
EndIF
EndIF

IF ( ControlVar == 1 )
MessageBox "Wollt Ihr Waffen ablegen oder mitnehmen?", "Ablegen", "Mitnehmen"
Set ControlVar to 10
ElseIF ( ControlVar == 2 )
MessageBox "Welche Waffe soll abgelegt werden?", "Tomahawk", "Edles Langschwert", "Edles Breitschwert", "Edler Kriegshammer", "Machete", "Saufänger", "Keine"
Set ControlVar to 20
ElseIF ( ControlVar == 3 )
MessageBox "Welche Waffe soll mitgenommen werden?", "Tomahawk", "Edles Langschwert", "Edles Breitschwert", "Edler Kriegshammer", "Machete", "Saufänger", "Keine"
Set ControlVar to 30
EndIF

set Button to GetButtonPressed

IF ( Button < 0 )
return

ElseIF ( Button == 0 )

IF ( ControlVar == 10 )
set ControlVar to 2
return
EndIF

IF ( ControlVar == 20 )
IF ( player->GetItemCount "LY_tomahawk_ornate" >= 1 )
player->RemoveItem "LY_tomahawk_ornate" 1
set LYtomaVar to 1
MessageBox "Ihr habt den Tomahawk abgelegt."
else
MessageBox "Ihr besitzt diese Waffe nicht!"
EndIF
EndIf

IF ( ControlVar == 30 )
IF ( LYtomaVar == 1 )
player->AddItem "LY_tomahawk_ornate" 1
set LYtomaVar to 0
MessageBox "Ihr habt den Tomahawk mitgenommen."
else
MessageBox "Ihr besitzt diese Waffe nicht!"
EndIF
EndIf

ElseIF ( Button == 1 )

IF ( ControlVar == 10 )
set ControlVar to 3
return
EndIF

IF ( ControlVar == 20 )
IF ( player->GetItemCount "LY_isle_longsword" >= 1 )
player->RemoveItem "LY_isle_longsword" 1
set LYlswordVar to 1
MessageBox "Ihr habt das Langschwert abgelegt."
else
MessageBox "Ihr besitzt diese Waffe nicht!"
EndIF
EndIf

IF ( ControlVar == 30 )
IF ( LYlswordVar == 1 )
player->AddItem "LY_isle_longsword" 1
set LYlswordVar to 0
MessageBox "Ihr habt das Langschwert mitgenommen."
else
MessageBox "Ihr besitzt diese Waffe nicht!"
EndIF
EndIf

ElseIF ( Button == 2 )

IF ( ControlVar == 20 )
IF ( player->GetItemCount "LY_isle_broadsword" >= 1 )
player->RemoveItem "LY_isle_broadsword" 1
set LYbswordVar to 1
MessageBox "Ihr habt das Breitschwert abgelegt."
else
MessageBox "Ihr besitzt diese Waffe nicht!"
EndIF
EndIf

IF ( ControlVar == 30 )
IF ( LYbswordVar == 1 )
player->AddItem "LY_isle_broadsword" 1
set LYbswordVar to 0
MessageBox "Ihr habt das Breitschwert mitgenommen."
else
MessageBox "Ihr besitzt diese Waffe nicht!"
EndIF
EndIf

ElseIF ( Button == 3 )

IF ( ControlVar == 20 )
IF ( player->GetItemCount "LY_isle_hammer" >= 1 )
player->RemoveItem "LY_isle_hammer" 1
set LYhammerVar to 1
MessageBox "Ihr habt den Kriegshammer abgelegt."
else
MessageBox "Ihr besitzt diese Waffe nicht!"
EndIF
EndIF

IF ( ControlVar == 30 )
IF ( LYhammerVar == 1 )
player->AddItem "LY_isle_hammer" 1
set LYhammerVar to 0
MessageBox "Ihr habt den Kriegshammer mitgenommen."
else
MessageBox "Ihr besitzt diese Waffe nicht!"
EndIF
EndIf

ElseIF ( Button == 4 )

IF ( ControlVar == 20 )
IF ( player->GetItemCount "LY_isle_machete" >= 1 )
player->RemoveItem "LY_isle_machete" 1
set LYmachVar to 1
MessageBox "Ihr habt die Machete abgelegt."
else
MessageBox "Ihr besitzt diese Waffe nicht!"
EndIF
EndIf

IF ( ControlVar == 30 )
IF ( LYmachVar == 1 )
player->AddItem "LY_isle_machete" 1
set LYmachVar to 0
MessageBox "Ihr habt die Machete mitgenommen."
else
MessageBox "Ihr besitzt diese Waffe nicht!"
EndIF
EndIf

ElseIF ( Button == 5 )

IF ( ControlVar == 20 )
IF ( player->GetItemCount "LY_hunting_knife" >= 1 )
player->RemoveItem "LY_hunting_knife" 1
set LYhknifeVar to 1
MessageBox "Ihr habt den Saufänger abgelegt."
else
MessageBox "Ihr besitzt diese Waffe nicht!"
EndIF
EndIf

IF ( ControlVar == 30 )
IF ( LYhknifeVar == 1 )
player->AddItem "LY_hunting_knife" 1
set LYhknifeVar to 0
MessageBox "Ihr habt den Saufänger mitgenommen."
else
MessageBox "Ihr besitzt diese Waffe nicht!"
EndIF
EndIf

ElseIF ( Button == 6 )


EndIF

set ControlVar to 0

end

Wäre nett, wenn mir einer helfen könnte und dabei auch kurz erklärt, woran es gelegen hat, damit ich nicht bei der nächsten Schalterabfrage wieder nachfragen muss.
 
Gewöhn dir bitte an, Scripts in Code-Tags zu setzen und einzurücken. Andernfalls sind die Teile einfach scheusslich zu lesen. Der Fehler hier liegt im ersten Teil... wenn du mein Script anpasst, lass den Kopf wie er ist. Ich hab das mit der Verkettung von OnActivate und Steuervariable nicht grundlos so gesetzt. Des weiteren hier mein Vorschlag:

Code:
begin _ly_weapon_shelf
Short ControlVar
Short Button

IF ( MenuMode )
  return
ElseIF ( ControlVar == 0 )
  IF ( OnActivate )
    set ControlVar to 1
  EndIF
  return
EndIF

IF ( ControlVar == 1 )
  MessageBox "Wollt Ihr Waffen ablegen oder mitnehmen?", "Ablegen", "Mitnehmen", "Abbrechen"
  set ControlVar to 10
ElseIF ( ControlVar == -2 )
  MessageBox "Welche Waffe soll abgelegt werden?", "Tomahawk", "Edles Langschwert", "Edles Breitschwert", "Edler Kriegshammer", "Machete", "Saufänger", "Keine"
  set ControlVar to 20
ElseIF ( ControlVar == -1 )
  MessageBox "Welche Waffe soll mitgenommen werden?", "Tomahawk", "Edles Langschwert", "Edles Breitschwert", "Edler Kriegshammer", "Machete", "Saufänger", "Keine"
  set ControlVar to 30
EndIF

set Button to GetButtonPressed

IF ( Button < 0 )
  return

ElseIF ( ControlVar == 10 )[COLOR="#0000FF"] ;erste Menü-Ebene, smart Code[/COLOR]
  set ControlVar to ( Button - 2 )
  return

ElseIF ( Button == 0 )

  IF ( ControlVar == 20 )
    IF ( player->GetItemCount "LY_tomahawk_ornate" >= 1 )
      player->RemoveItem "LY_tomahawk_ornate" 1
      set LYtomaVar to 1
      MessageBox "Ihr habt den Tomahawk abgelegt."
    Else
      MessageBox "Ihr besitzt diese Waffe nicht!"
    EndIF
  Else
    IF ( LYtomaVar == 1 )
      player->AddItem "LY_tomahawk_ornate" 1
      set LYtomaVar to 0
      MessageBox "Ihr habt den Tomahawk mitgenommen."
    Else
      MessageBox "Ihr besitzt diese Waffe nicht!"
    EndIF
  EndIf

ElseIF ( Button == 1 )
[COLOR="#0000FF"][I]; [Code wie oben][/I][/COLOR]
ElseIF ( Button == 2 )
[COLOR="#0000FF"][I]; [Code wie oben][/I][/COLOR]
ElseIF ( Button == 3 )
[COLOR="#0000FF"][I]; [Code wie oben][/I][/COLOR]
ElseIF ( Button == 4 )
[COLOR="#0000FF"][I]; [Code wie oben][/I][/COLOR]
ElseIF ( Button == 5 )
[COLOR="#0000FF"][I]; [Code wie oben][/I][/COLOR]
EndIF

set ControlVar to 0

end
Button 6 in Menü-Ebene II benötigt keinen eigenen Block, da dort nur ein Reset der ControlVar vorgenommen würde. Das wird am Ende ohnehin gemacht, also kann man sich das schenken. Des weiteren wird Menu-Ebene I als erstes abgefangen, was den Restcode übersichtlicher macht. Füge die fehlenden Blöcke ein und das Script müsste funktionieren.

Ich gebe allerdings zu bedenken, dass es potentiell ein Item-Vernichter ist. Wenn der Spieler z.B. mehr als einen "Saufänger" besitzt, würde das Script beim ersten Ablegen wie gewollt funktionieren. Beim zweiten Ablegen würde die eventuelle zweite Waffe auch "abgelegt" und de facto zerstört - es wird nicht berücksichtigt, ob eine bestimmte Waffe bereits abgelegt wurde. Um das zu beheben, müsste das Script (oder die Global) entweder mitzählen, wie viele Waffen eines Typs der Spieler nacheinander abgelegt hat oder unterbinden, dass eine zweite Waffe des gleichen Typs erneut abgelegt wird.
 
Zuletzt bearbeitet:
Sorry wegen den Tabstopps. Da ich schon des öfteren während des Postschreibens aus dem Forum gekickt wurde, schreibe ich die Skripte immer erst auf dem Win-Editor und kopieren sie in den Spoilerbefehl. Werde in Zukunft darauf achten.

Was das Skript betrifft, es zeigt mir beim Anklicken des Activators (Mesh ist ein modifiziertes Original-Mesh) nicht mal die erste Wahlmöglichkeit. Ich klicke den Activator an und es tut sich rein gar nichtss (kein Absturz, keine Warnmeldung etc.). Muss ich den Activator auf References persist einstellen? Oder vielleicht was bei den globalen Variablen beachten (Habe sie als short kategorisiert mit Startwert 0)?

Edit: Ich habe das Skript gerade mal in einer neuen esp-Datei geschriebn und da funktioniert es. Kann es sein, dass ich mir bei meiner eigentlichen esp-Datei irgendwelche Skriptfunktionen zerschossen habe? Und wenn ja, kann ich das irgendwie beheben?
 
Zuletzt bearbeitet:
Gibt es eigentlich eine Möglichkeit die Aktuelle Position, sowie die aktuelle Cell des Spielers abzufragen, diese zu speichern und später wieder zu verwenden.
Hintergrund: Ich möchte, dass der Spieler nach einnahme eines Trankes in eine Interiorzelle teleportiert wird, dort bis zum ablauf eines Timers bleibt und danach wieder an die ursprüngliche Position zurückteleportiert wird.
Das einzige Problem, das ich eben habe, ist das ich zwar die Position des Spielers abfragen kann, aber nicht, in welcher Zelle er sich befindet.
 
Gibt es eigentlich eine Möglichkeit die Aktuelle Position, sowie die aktuelle Cell des Spielers abzufragen, diese zu speichern und später wieder zu verwenden.
Hintergrund: Ich möchte, dass der Spieler nach einnahme eines Trankes in eine Interiorzelle teleportiert wird, dort bis zum ablauf eines Timers bleibt und danach wieder an die ursprüngliche Position zurückteleportiert wird.
Das einzige Problem, das ich eben habe, ist das ich zwar die Position des Spielers abfragen kann, aber nicht, in welcher Zelle er sich befindet.

Dafür gibt es leider keine einfache Lösung. Wenn du nur eine bestimmte Anzahl von Innenzellen erlaubst, könntest du die über PCGetCell versuchen. Hier mein Eintrag aus der Scriptbefehlsreferenz zu diesem Befehl:

3.92 GetPCCell
GetPCCell, "Zellenname"
Liefert eine 1, wenn sich der Spieler in der angegebenen Zelle befindet. Der Zellenname muss existieren,
allerdings liefert die Funktion auch eine 1, wenn man sich in einer Zelle befindet, deren Name mit dem
angegebenen Zellennamen beginnt. So liefert zum Beispiel jede Interiorzelle in Balmora eine 1, wenn als
Zellenname Balmora angegeben wird.


Code:
if ( GetPCCell, "Balmora" == 1 )
if ( GetPCCell, "Balmora, Magiergilde" == 1 )
MessageBox, "Ihr befindet Euch in der Magiergilde von Balmora."
else
MessageBox, "Ihr befindet Euch irgendwo sonst in Balmora."
endif
endif
 
Tja, das ist leider zu wenig.
Übrigends danke für diese Liste, die hilft mir gewaltig und ja ich habe diesen Absatz gelesen und eben darin liegt das Problem. Ich möchte es aus jeder beliebigen Celle heraus können.
Mit Markieren und Rückkehr würds ja funktionieren, wenn ich den player dazu zwinge diese Zauber anzuwenden, aber dann würde eine etwaige bestehende Markierung gelöscht und das möchte ich nicht. Gibts da ne möglichkeit das löschen der ersten Markierung zu umgehen oder so.
Ich hab doch irgendwann mal von einer mod gehört, die es möglich macht bis zu fünf Orte zu markieren. Kann man das irgendwie adaptieren?
EDIT: Ah, hab mir die Mod rausgesucht. Der hat jede einzelne Zelle in sein Script aufgenommen, das ist mir zu viel für ne kleine Nebenquest.
Naja, sollte noch jemand ne andere möglichkeit finden, bitte her damit, ansonsten werd ichs wohl mit den Zaubern machen müssen.
 
Zuletzt bearbeitet:
Naja, sollte noch jemand ne andere möglichkeit finden, bitte her damit, ansonsten werd ichs wohl mit den Zaubern machen müssen.
Das Problem besteht darin, dass Morrowind dir vieles nicht erlaubt. So gibt es kein "GetCellName" und selbst wenn es das gäbe, fehlt die Möglichkeit, den String in einer Variablen zu speichern. Und selbst wenn das möglich wäre, würde der Befehl Player->PositionCell noch lange keine Variable als Zielzelle akzeptieren.

Ergo: Ohne Script Extender? Keine Chance.
 
  • Like
Reaktionen: Freelancer_T
Na dann werd ich mich mal rumspielen, mal sehen was ich hinbekomme^^
EDIT: Wenn der Spieler einen Trank trinkt, und in dem Moment ein Script ausgelöst werden soll, geht das?
Mit onactivate funktionierts nicht und onPCEquip ebenfalls nicht.
 
Zuletzt bearbeitet:
Ja... das ist bei Tränken so eine Sache ^^

Du kannst einen Trank mit einem Script belegen. Kein Problem. Leider gibt's da ein Problem. Egal ob du richtig scriptest oder nicht, OnPCEquip triggert bei Tränken nicht, weil sie (Scriptholder) zerstört werden, bevor das Script altiv werden kann. Um das zu machen, musst du nur verhindern, daß der Trank ausgerüstet wird, dann den Effekt manuell auslösen und den eigentlichen Trank mit einem Globalen Script aus dem Inventar entfernen. Ist 'ne ziemliche Fitzelei.
 
  • Like
Reaktionen: Freelancer_T
Eigentlich müsste es auch möglich sein, mit diesem Script das Aktivieren des Trankes abzufangen, und danach den Trank per Script zu trinken. Das Ganze läuft dann in etwa so:

Code:
begin my_magic_trank_script

short PCSkipEquip
short OnPCEquip
short state

if ( state == 0 )
  Set PCSkipEquip to 1
  set state to 1
elseif ( state == 1 )
  if ( OnPCEquip == 1 )
    set global_trank_getrunken to 1
    set PCSkipEquip to 0
    set OnPCEquip to 0
    set state to 2
  endif
elseif ( state == 2 )
  Player->Equip, "my_magic_trank", 1
endif

end
 
  • Like
Reaktionen: Freelancer_T
Das könnte funktionieren. Ich bin allerdings nicht sicher, wie der Compiler reagiert, wenn sich der aktive Scriptholder mittels Equip quasi im gleichen Frame selbst zerstört. Zudem kann es problematisch werden, wenn der Spieler aus welchem Grund immer zwei oder mehr der Tränke im Inventar herumträgt. Das Script kann, je nachdem welcher Trank für das equip ausgewählt würde, ggfs. auch versehentlich mehr als einen entfernen, es wäre sicherer die StatusVar vor dem Equip zu resetten - also nur für den Fall.
 
  • Like
Reaktionen: Freelancer_T