Begin IdV_DontPickup
; this goes to some book/scroll/paper whatever
; the original script was written by Dave Humphrey
; and on some note in his PI Dave's Furniture Store
;if ( OnActivate )
; Activate
;endif
; is the whole thing and will make any kind of book or scroll impossible to pickup
; but one will be stuck in some wired menumode that ends when hitting the inventory button (right mouse)
; the rest of the script was created by me and will prevent this effect
short io ; inventory open
if ( io )
Menutest
set io to Menumode
endif
if ( OnActivate )
if ( Menumode == 0 )
set io to 1
endif
Activate
endif
End
Begin IdV_CastDetect_Debug
short cost
short fail
short sch
float c
float d
float m
float r
if ( MenuMode ) ; cant cast in menumode
Return
endif
if ( CharGenState != -1 ) ; just in case...
Return
endif
if ( Player->GetSpellReadied == 0 ) ; cant cast with your hands down
Return
endif
set c to ( Player->GetMagicka ) ; current magicka
set d to ( m - c ) ; difference to old
set m to c ; safe current as old
; get the first (!) frame the cast sound plays
; thats the frame the magicka is removed
; assuming the sound matchs the school, the sch(ool) variable can be used later
; sounds can be changed in 'Gameplay, Magic Settings'
; Player->GetAlteration/Conjuration/Destruction/Illusion/Mysticism/Restoration
if ( Player->GetSoundPlaying "alteration cast" )
if ( sch == 0 )
set sch to 1
endif
elseif ( Player->GetSoundPlaying "conjuration cast" )
if ( sch == 0 )
set sch to 2
endif
elseif ( Player->GetSoundPlaying "destruction cast" )
if ( sch == 0 )
set sch to 3
endif
elseif ( Player->GetSoundPlaying "shock cast" )
if ( sch == 0 )
set sch to 3
endif
elseif ( Player->GetSoundPlaying "frost_cast" )
if ( sch == 0 )
set sch to 3
endif
elseif ( Player->GetSoundPlaying "illusion cast" )
if ( sch == 0 )
set sch to 4
endif
elseif ( Player->GetSoundPlaying "mysticism cast" )
if ( sch == 0 )
set sch to 5
endif
elseif ( Player->GetSoundPlaying "restoration cast" )
if ( sch == 0 )
set sch to 6
endif
elseif ( sch ) ; reset if it plays no longer
set sch to 0
set fail to 0
endif
; assuming you cant cast while the old sound still plays
; also runs the first time the script is started
if ( sch == 0 )
set r to 0
if ( d )
set r to ( d / GetSecondsPassed )
endif
Return
endif
if ( fail ) ; once we even know the spell failed, theres nothing left to do
Return
endif
; While the sound for spellcasting does not need to match the school,
; the failure sound will match it. Though we dont make any use of that.
if ( Player->GetSoundPlaying "Spell Failure Destruction" )
set fail to 1
elseif ( Player->GetSoundPlaying "Spell Failure Alteration" )
set fail to 1
elseif ( Player->GetSoundPlaying "Spell Failure Illusion" )
set fail to 1
elseif ( Player->GetSoundPlaying "Spell Failure Mysticism" )
set fail to 1
elseif ( Player->GetSoundPlaying "Spell Failure Restoration" )
set fail to 1
elseif ( Player->GetSoundPlaying "Spell Failure Conjuration" )
set fail to 1
endif
if ( fail )
if ( sch > 0 )
MessageBox "Nicht genug Mana"
else
MessageBox "Fehlzündung"
endif
endif
if ( sch < 1 ) ; the cast was already detected and its 'cost' calculated
Return
endif
set c to r ; this is just for debugging, see last MessageBox
if ( r )
set r to ( r * GetSecondsPassed )
endif
set d to ( d - r )
set cost to ( d + 0.5 ) ; kill rounding error, spellcost are non-negative integers
if ( cost < 0 )
set cost to 0
endif
MessageBox "Kosten: ~%g (%.3f) M. Regen: %.3f M/s. Korrektur: %.3f M", cost, d, c, r
set sch to -1
End
Jein.Kan man abfragen, ob der Spieler eine bestimmte Klasse ist?
ein script mit folgnder Wirkung soll auf einen Activator:
Sobald man sich dem Activator auf 512 Einheiten nähert soll ein bestimmter Sound abgespielt werden. Gleichzeitig soll der Bildschirm innerhalb von einer Sekunde schwarz werden. Sobald der Bildschirm komplett dunkel ist, tritt ein Transport mit den Koordinaten "5195, 5630, 15312, 270, 'MeineganzbestimmteZelle'" ein und das Tagebuch wird aktualisiert.
Danke schonmal, ich wette es ist wieder mal simpler als ich dachte. Meine Version hat jedenfalls nicht funktioniert. :roll:
Edit: Für die Ankunft.
Sobald man in der Zielzelle ankommt, soll ein weiterer bestimmter Sound abgespielt werden. Außerdem soll der Bildschirm wieder hell werden. Das ganze darf aber nur einmal passieren, weil man die Zielzelle auch schon vorher und auf anderen wegen betreten kann. Eventuell kann als "begrenzender Faktor" der Tagebucheintrag aus dem vorherigen Script herhalten...
begin my_local_script
short doonce
if ( doonce == 0 )
if ( GetDistance Player < 512 )
set doonce to 1
StartScript "my_global_script"
endif
endif
end
begin my_global_script
short state
float timer
if ( MenuMode == 1 )
return
endif
if ( state == 0 )
set state to 1
PlaySound "mysound1"
FadeOut 1
elseif ( state == 1 )
set timer to timer + GetSecondsPassed
if ( timer >= 1 )
set timer to 0
set state to 2
Player->PositionCell xpos ypos zpos zrot "mycell"
endif
elseif ( state == 2 )
set state to 3
PlaySound "mysound2"
Journal "myjournal" 100
FadeIn 1
else
StopScript "my_global_script"
endif
end
Hi, Ich brauche ein skript mit dem ich einen daedroth mit einer speziellen ID für 10 Sekunden lang beschwören kann.
Ich hab versucht das skript aus dem Mod "Scripted Summoning" umzuschreiben, allerdings bin ich nicht sonderlich gut im scripten weshalb es auch nicht funktioniert hat.
Wäre Nett wenn ihr mir helfen könntet
begin my_daedroth_global_script
short doonce
if ( Player->GetSpellEffects "my_daedroth_spell" == 1 )
if ( doonce == 0 )
set doonce to 1
PlaceAtPC "my_summon_daedroth" 1 128 0
Player->RemoveSpellEffects "my_daedroth_spell"
endif
else
if ( doonce == 1 )
set doonce to 0
endif
endif
end
begin my_summon_daedroth_script
short state
float timer
if ( state == 0 )
AIFollow Player 0 0 0 0
set state to 1
endif
if ( state == 1 )
set timer to timer + GetSecondsPassed
if ( timer >= 10 )
Disable
set state to 2
endif
endif
if ( state == 2 )
set state to 3
SetDelete 1
endif
end
Erstmal danke für deine Antwort.
Eigentlich müsste der Effekt des Zauber entfernt werden, aber ich habe es einmal mit dem Zaubereffekt "Beschworene Stiefel" versucht doch als ich den Zauber ingame ausprobiert habe ist nichts passiert also weder daedroth noch stiefel. Danach habe ich es mit dem Zaubereffekt "Clannbann beschwören" versucht doch ingame beschwöre ich dann einen ganz normalen Clannbann.
Ich habe das script mehrmals nach Fehlern durchsucht aber keinen gefunden.
Ich brauche eine Spezielle form eines Liftscripts für mein Projekt (siehe signatur)
Und zwar brauche ich eine Unsichtbare Plattform die, sobald der Player oder, wenn machbar, auch ein NPC drauf steht, hinauffährt, und sobald sie oben ist, und der Player/NPC nicht mehr drauf ist, nach ca. 5 sekunden verschwindet und unten wieder erscheint.
Die genauen positionen weiss ich nicht, einfach xxx schreiben
Edit: besser (aber sicher auch schwerer zu scripen)wäre noch:
Wenn der Player/NPC draufsteht gehts aufwärts bis zum ziel, wenn nicht färt er abwärts bis zum start
begin dg_platform_falle07
short doOnce
if ( GetStandingPC == 1 )
if ( GetPos Z >= 11900 )
if ( doOnce == 0 )
PlaySound "cent steam roar"
MessageBox "Die Plattform trägt Euch nicht."
set doOnce to 1
endif
MoveWorld z -200
return
endif
endif
if ( GetPos Z < 13400 )
if (doOnce==1)
set doOnce to 0
endif
MoveWorld z 75
endif
end
begin "MNC Dorusat teleport"
short state
if ( state == 0 )
if ( GameHour > 21 )
MNC_Amassos_Dorusat->PositionCell "Ebenherz, Dorusat Amassos Haus" 3980, 4170, 16018, 147
set state to 1
endif
endif
if ( state == 1 )
if ( GameHour > 7 )
if ( GameHour < 21 )
MNC_Amassos_Dorusat->PositionCell "Ebenherz, Hafenviertel" 20682 ,-111455, 715, 228
set state to 0
endif
endif
endif
end
NPCs sind immer persistant. Viel interessanter wäre, ob die ID Unique ist - aber davon gehe ich aus.ist der NPC ReferencePersist und hast du das Script gestartet?
NPCs sind immer persistant. Viel interessanter wäre, ob die ID Unique ist - aber davon gehe ich aus.
@Merc:
Das Script müßte eigentlich funktionieren... nur muß ich dich erst einmal fragen auf was du dieses Script gelegt hast. Liegt es auf der NPC? Falls ja, kann das nicht richtig funktionieren, da es nur innerhalb der AI-Reichweite ausgeführt wird bzw. nur, wenn du gerade in der Zelle stehst, in der sich die NPC befindet. Um sicher zu stellen, dass es in jedem Fall läuft, muß es zwingend als Globalscript laufen - oder du platzierst in den betroffenen Zielzellen (Kayanlage und Haus) je einen Aktivator, welcher dieses Script in etwas abgewandelter Form trägt.
Ja, ich hatte das Script auf den betreffenden NPC gelegt. Wenn ich als Global anlege, könnte ich doch noch mehr Teleports für weitere NPCS einbauen oder nicht? Dann müsste ich nur die Zeitvorgaben als Bedingung einstellen und würde mir die vielen einzelnenen Scripts sparen ( die NPCS sollen sowas wie ne Art Tagesverlauf haben)