Noch eine Frage: (Warum ich das brauche ist hier nach zu lesen: http://www.scharesoft.de/joomla/foru...ad.php?t=34515
Ich würde gerne immer, wenn der Spieler seine Ausrüstung (Rüstung, Klamotten, Umhang,....) ändert ein Script laufen lassen. Wie lässt sich das bewerkstelligen ?
SCN ...
Ref Upper
Ref Lower
; und so weiter
Short UpperVar
Short LowerVar
; und so weiter
Short Step
Float fQuestDelayTime
Begin GameMode
If fQuestDelayTime != 0.001
set fQuestDelayTime to 0.001
set Step to 1
Endif
If Step == 1
set Upper to Player.GetEquippedObject 2
set UpperVar to 1
set Lower to Player.GetEquippedObject 3
set LowerVar to 1
; und so weiter
Endif
If Player.UnEquip Upper == 1 && Upper == 1
set Upper to 2
ElseIf Player.UnEquip Lower == 1 && Lower == 1
set Lower to 2
; und so weiter
Endif
End
SCN ...
Float fQuestDelayTime
Begin GameMode
set fQuestDelayTime to 0.001
If <Quest-ID-Des 1.Skripts>.Upper == 2
; Do Stuff / Das, was gemacht werden soll
set <Quest-ID-Des 1.Skripts>.Upper to 0
ElseIf <Quest-ID-Des 1.Skripts>.Lower == 2
; Do Stuff / Das, was gemacht werden soll
set <Quest-ID-Des 1.Skripts>.Lower to 0
; und so weiter
Endif
End
ScriptName NonLameResistances
long x
float y
float Norm
float z
long w
Begin OnEquip
player.ModActorValueC 52 500
set Norm to 20
set z to 1-Norm/100
set y to ((player.GetActorValueC 52)/Norm)
set x to -(player.GetActorValueC 52)+100-100*(pow z y)
player.ModActorValueC 52 x
set w to (player.GetActorValueC 52)
Message "Zauberabsorbtion: %.0f", w, 10
player.ModActorValueC 53 500
set Norm to 20
set z to 1-Norm/100
set y to ((player.GetActorValueC 53)/Norm)
set x to -(player.GetActorValueC 53)+100-100*(pow z y)
player.ModActorValueC 53 x
set w to (player.GetActorValueC 53)
Message "Zauberreflektion: %.0f", w, 10
player.ModActorValueC 59 500
set Norm to 20
set z to 1-Norm/100
set y to ((player.GetActorValueC 59)/Norm)
set x to -(player.GetActorValueC 59)+100-100*(pow z y)
player.ModActorValueC 59 x
set w to (player.GetActorValueC 59)
Message "Schadensreflektion: %.0f", w, 10
player.ModActorValueC 61 500
set w to (player.GetActorValueC 61)
if (w>0)
set Norm to 40
set z to 1-Norm/100
set y to ((player.GetActorValueC 61)/Norm)
set x to -(player.GetActorValueC 61)+100-100*(pow z y)
player.ModActorValueC 61 x
Message "Berechnet: %.0f", x, 10
set w to (player.GetActorValueC 61)
Message "Feuerresistenz: %.0f", w, 10
endif
player.ModActorValueC 62 500
set w to (player.GetActorValueC 62)
if (w>0)
set Norm to 40
set z to 1-Norm/100
set y to ((player.GetActorValueC 62)/Norm)
set x to -(player.GetActorValueC 62)+100-100*(pow z y)
player.ModActorValueC 62 x
set w to (player.GetActorValueC 62)
Message "Frostresistenz: %.0f", w, 10
endif
player.ModActorValueC 64 500
set w to (player.GetActorValueC 64)
if (w>0)
set Norm to 20
set z to 1-Norm/100
set y to ((player.GetActorValueC 64)/Norm)
set x to -(player.GetActorValueC 64)+100-100*(pow z y)
player.ModActorValueC 64 x
set w to (player.GetActorValueC 64)
Message "Magieresistenz: %.0f", w, 10
Endif
player.ModActorValueC 68 500
set w to (player.GetActorValueC 68)
if (w>0)
set Norm to 40
set z to 1-Norm/100
set y to ((player.GetActorValueC 68)/Norm)
set x to -(player.GetActorValueC 68)+100-100*(pow z y)
player.ModActorValueC 68 x
set w to (player.GetActorValueC 68)
Message "Schockresistenz: %.0f", w, 10
Endif
player.ModActorValueC 65 500
set w to (player.GetActorValueC 65)
if (w>0)
set Norm to 20
set z to 1-Norm/100
set y to ((player.GetActorValueC 65)/Norm)
set x to -(player.GetActorValueC 65)+100-100*(pow z y)
player.ModActorValueC 65 x
set w to (player.GetActorValueC 65)
Message "Waffenresistenz: %.0f", w, 10
EndIf
end
Hallo, ich habe dann auch noch eine kleine Frage. Kürzlich habe ich nach einem Script gesucht, das einen beim Laden eines jeglichen Spielstandes zu einem bestimmten Marker teleportiert.
Das sah so aus:
scn 000MinenTeleport
short once
begin GameMode
if (once == 0)
set once to 1
stopquest 00Erwachen
player.moveto Durinmarker
endif
end
Das hat auch funktioniert, nur leider werde ich JEDES Mal zum Marker teleportiert, wenn ich einen Spielstand lade. Das soll natürlich nicht passieren. Kann man scripten, dass das nur EINmal passiert? Und zwar beim ersten Laden eines Spielstandes, und danach nicht noch einmal?
Mit freundlichen Grüßen,
MadHatter
Denkt ihr 7 pow-Funktionen alle 10 Sekunden zähren sehr an der Performance ? Zusätzlich lege ich das Skript mit den Meldungen auf den Dietrich, damit man immer nachgucken kann wie resistent man gerade ist.
pow ist nicht Quadrieren. Es ist allgemein Exponieren, was sehr viiiel rechenlastiger ist.K.A., also 7 Quadrate pro 10 Sekunden gehen eigentlich klar denk ich, aber vlt. Solltest du 7 Scripts machen. Jedes für eine Resistenz-Art. Dann is es besser verteilt.
Du musst den Dietrich nicht wegwerfen, sondern nur anklicken. Dann steht links oben "Kann nicht ausgerüstet werden" und danach kommen die ganzen Resistenzen. Ich mag es halt wenn das Script auf nem Gegenstand liegt, denn dann kann man sich die Resistenzen anzeigen lassen, wenn man sie wirklich wissen will. Vielleicht kreiere ich einfach ein "Buch der wahren Resistenzen" oder so, auf das ich das Skript lege. Ist dann halt wieder die Frage wo man das herkriegt.Bitte, Bitte nicht der Dietrich! Soll ich den jedesmal abwerfen und aufheben???!
Mach doch "begin MenuMode" und dann noch die Nummer für Inventar-Menu dazu. Dann stehts immer, wenn man das Inventar öffnet. Alternativ mach nen Quest-Gegenstant als Item, der ne Message (oder MessageBox) erscheinen lässt.