Nirn.de

Gast

Thema: Probleme mit doonce bei OnActivate scripts  (Gelesen 1909 mal)

  • Bettler
    • Neuling
Hallo zusammen,
Ich bin nun neu hier im Forum und warte gleich mit einem Problem auf:
Ich habe ein script geschrieben das auf einem siehelstein liegt (neue Editor-ID, neue Ref-ID und alles)
Dieser befindet sich in einem interior turm.
Dazu habe ich eine eigene oblivion-Exterior-Welt gebaut von der aus man den Turm betreten kann.
Wenn man den siegelstein anklickt soll man am anfang eine bestimmte waffe erhalten und dann rausgeported werden (zu einem speziell benannten X-Marker draußen vor dem tor in der Tamtiel worldspace).
Wenn man dann erneut durchs Tor schreitet (habe ich auch so vorgesehen dass das geht), wieder zum Sigillum Sanguis vordringt und erneut den Siegelstein aktiviert soll man nun nur einen gelevelten Siegelstein erhalten (und zwar ab jetzt jedes Mal wenn man ihn anklickt) und dann wieder rausgeported werden.
Sähe bis dahin so aus:

scn AAATamrielSigilAddChangingScript

Short doonce

Begin OnActivate
If IsActionRef player == 1; hab ich auch schonmal weggelassen. Daran kanns nicht liegen
   if doonce == 0
      Player.additem AAATamrielDaedrischeGeißel 1 ; das ist die waffe
      Player.moveto AAATamrielOblivionWorldSigilTeleportRef ; das ist der X-Marker draußen vorm Tor
      set doonce to 1 ; die Waffe soll man nur einmal erhalten
    elseif doonce == 1
       Player.additem LL1SigilStone6Transcend 1
       Player.moveto AAATamrielOblivionWorldSigilTeleportREF
    endif
endif
end

Nun sollte man meinen beim ersten Mal erhält man die Waffe und bei allen weiteren Aktivierungen das Leveled item.
Aber stattdessen passiert etwas ganz merkwürdiges: Ab dem zweiten Mal aktivieren erhalte ich entweder gar kein Item oder ich bekomme immer noch eine Waffe, als ob er doonce nicht auf 1 gesetzt hätte.

Versteht jemand von Euch das? Ich bin mit meinen Ausprobierereien wirklich am Ende

Vielen Dank schon einmal im Voraus
und lieben Gruß
Symbiarch



  02.08.2012, 07:46
  • Offline


  • Legionär
    • Legion
Des Rätsels Lösung findest du im CS-Wiki:
Zitat
If this function is used to move the player, it will also act as a Return function -- no following lines of the script will be processed.

Also, ganz einfach den MoveTo-Befehl ganz ans Ende vom jeweiligen Befehlsblock setzen, dann sollte es klappen.

Code
scn AAATamrielSigilAddChangingScript

Short doonce

Begin OnActivate
If IsActionRef player == 1
   if doonce == 0
      set doonce to 1
      Player.additem AAATamrielDaedrischeGeißel 1
      Player.moveto AAATamrielOblivionWorldSigilTeleportRef
    elseif doonce == 1
       Player.additem LL1SigilStone6Transcend 1
       Player.moveto AAATamrielOblivionWorldSigilTeleportREF
    endif
endif
end
  02.08.2012, 08:19
  • Offline


  • Bettler
    • Neuling
Vielen Dank für den Tipp ich werde mich mal dran setzen und den moveto-Befehl ans Ende des Blocks setzen. Heute später weiß ich dann obs funktioniert.
By the way: Das war eigentlich nur die verkürzte Version des Scripts.
Schlussendlich soll bei jedem weiteren Aktivieren der Doonce-Zähler immer um 1 höher gesetzt werden bis auf 4. Danach geht er wieder auf 1.
Sieht im Endeffekt dann so aus:
If doonce == 0
   Player.additem [Waffe] 1
   ...
   Set doonce to 1
   Player.moveto [X-Marker]
Elseif doonce == 1
   player.additem [Siegelstein] 1
   ...
   Set doonce to 2
   Player.moveto [X-Marker]
Elseif doonce == 2
   player.additem [Siegelstein] 1
   ...
   Set doonce to 3
   Player.moveto [X-Marker]
Elseif doonce == 3
   Player.additem [Siegelstein] 1
   ...
   Set doonce to 1
   Player.moveto [X-Marker]
Endif
End

Das heißt nach dem vierten mal geht alles wieder auf die zweite Variante zurück.
Die zweite variante ist die, wo man die Waffe schon erhalten hat.
Von da an gibt es nur noch Siegelsteine und man wird eben rausgeported. Ob das umschreiben wie oben beschrieben funktioniert poste ich wie gesagt später noch.

Nun zu dem ominösen Teil mit dem "..."
Dort ist natürlich der Teil mit dem player.additem und dem moveto-Befehl angesiedelt.
Aber:
Dann will ich das ein paar Statics, Container, LeveledCreatures und Activator (alle persistant Reference und eigene Ref-ID gedisabled werden und ein paar andere die zuvor initially disabled gesetzt werden enabled werden.
Die nun enabledten werden beim nächsten Mal anklicken wieder gedisabled und wieder durch andere ersetzt.
Wie gesagt geschieht das 3 mal und dann wird alles auf die Variante 2 zurückgesetzt und der Zirkel kann wieder von vorn beginnen, nur eben dass die variante mit der Waffe ausgespart wird.
Meine frage nun: könnte das enablen/disablen der Umgebungs-Objekte das Script ggf. auch stören?

Und nochmals vielen Dank für den Tipp :-)

  02.08.2012, 11:15
  • Offline


  • Bettler
    • Neuling
Habs jetzt nochmal ausgetestet und es hat funktioniert auch mit den enable/disable-Befehlen. Vielen Dank nochmal dafür :)
lg
Symbiarch
  02.08.2012, 20:30
  • Offline


  • Reisender
    • Neuling
Die mod klingt interessant :)
Wirst du die auch irgendwo veröffentlichen?
“Run when you can, walk when you have to, crawl if you must; just never give up.” – Dean Karnazes
  03.08.2012, 21:11
  • Offline


  • Bettler
    • Neuling
also die Mod ist riesig.
Sie umfasst ein komplettes Balancing, komlett veränderte Städte, einen Lich Mod.
Eine Nekromanten-Sekte, eine Schwarzmagier-Sekte die at Random mit Blut zaubern, Sithis, Merhunes Dagon. Man kann der Mythischen Morgenröte beitreten und Dagon beschwören.
Es gibt nen riesen Haufen neuer Artefakte und so weiter.
Einen komplett veränderten Vampirismus in Oblivion.
und... und... und..
also es gibt fast nichts was nicht geändert oder erweitert ist. aber ich schreibe immer weiter daran, also mal sehen ;)
  10.08.2012, 19:33
  • Offline


  • Reisender
    • Neuling
Klingt gut :) Kannst ja deine Fortschritte hier dann und wann mal veröffentlichen, mich würds interessieren  :D
“Run when you can, walk when you have to, crawl if you must; just never give up.” – Dean Karnazes
  10.08.2012, 19:46
  • Offline