Construction Set dauereffekt bei Trank

Ich bin mir ziehmlich sicher das das man das dann nur mit einen Script machen kann oder du setzt die dauer auf 999999999999999999999...... dann würde ja praktisch auch dauerhaft halten.
 
1. Man kann maximal 999.999 Sekunden einstellen. Du kannst zwar mehr Zahlen eingeben, aber die werden ignoriert.
2. Mit dem Script ist das gar nicht so einfach. Denn das Trinken von Tränken (oder das Essen von Zutaten) kann man nicht so einfach abfragen. Aber mit einigen Hilfskonstruktionen kann man das umgehen:

Da brauchst dazu ein Script, dass du auf den Trank legst und ein weiteres globales Script.

Auf den Trank kommt:

Code:
begin my_trankscript

short OnPCEquip
short PCSkipEquip
short doOnce

set PCSkipEquip to 1

if ( OnPCEquip == 1 )
if ( doOnce == 0 )
set doOnce to 1
set OnPCEquip to 0
Player->AddSpell "my_dauerhafter_effekt"
StartScript "my_global_trankend_script"
endif
endif

end

Das globale Script sieht so aus:
Code:
begin my_global_trankend_script

short state

if ( state == 0 )
set state to 1
if ( Player->GetItemCount "my_trank" >= 1 )
Player->RemoveItem "my_trank" 1
endif
endif

if ( state == 1 )
StopScript "my_global_trankend_script"
endif

end
 
Global heißt, dass das Script nirgendwo drauf liegt. Es ist einfach ein Script ohne das es einen Träger gibt. Deswegenheißt es global. (es kann von jedem Objekt aufgrufen werden, per StartScript). Wichtig ist bei solchen Scripten, dass man sie auch immer "von Hand" beenden muss. Also irgendwo muss ein StopScript-Befehl existieren.
 
Ich tät's anders machen.
Nimm ein Misc_Item, z.B. ein leere Skooma-Ampulle nenn sie um in
"meine_Flasche" oder so, so das Du eine eigene Flasche hast.
Dann erstelle einen neuen Zauber, Typ Eigenschaft mit dem von Dir gewünschten Effekt, ich nenn es mal hier "Lange_Wirkung".

Mach an die Pulle (mis-Item!) ein Script, etwa so:

begin DauerTrankscript

short OnPCEquip
short jetztTrinken

if ( jetztTrinken == 0 )
set jetztTrinken to OnPCEquip
return
endif

if ( MenuMode )
return
endif

if ( Player-> Getspell "lange_Wirkung" == 0 )
; mehrmals die gleiche Eigenschaft geht ja nicht
; käme auch nur vor wenn es mehrere dieser Flaschen gibt
playsound "swallow"
player-> addspell "lange_Wirkung"
messagebox "Ihr steht nun für immer unter dem Einfluss von lange Wirkung"
player-> RemoveItem "meine_Flasche" 1
endif

end

Auf die gleiche Weise könntest Du auch ein Gegenmittel erstellen, einfach eine weitere neue Flasche machen und statt "if ( Player-> Getspell "lange_Wirkung" == 0 )"

if ( Player-> Getspell "lange_Wirkung" == 1 )
und statt Addspell RemoveSpell einsetzen...
 
Zuletzt bearbeitet:
Du solltest statt Eigenschaft-Fähigkeit nehmen.
Eigenschaft wäre nur einmal am Tag einsetzbar, und das ist glaub ich nicht im Sinne des Erfinders :lol:
mfg erc
 
oaky und wie macht man das wen man den Trank getrunken hat das sich dann eine Tür öffnet bzw eine Wand verschwindet^^
 
@Rene: Du kannst den Scriptträger in dem ihm aufliegenden Script nicht entfernen. Deswegen meine komplizierte Konstruktion.

@SidtheDark:

Du schreibst unter das hinzufügen der Fähigkeit einfach noch den Befehl für das Verschwinden:
"my_wand"->Disable
 
@Rene: Du kannst den Scriptträger in dem ihm aufliegenden Script nicht entfernen. Deswegen meine komplizierte Konstruktion.

ach ja. klar da war was....

mach also ein zweites Script das nur so aussieht:

begin leereFlascheWegnehmen

player->RemoveItem "Spezialgetränk" 1
stopscript leereFlascheWegnehmen

end

und ins andere Script statt der Zeile

Player->RemoveItem ...


müssten diese 3:

if ( Scriptrunning "leereFlascheWegnehmen == 0 )
startscript "leereFlascheWegnehmen"
endif