Trigger betreten = Quest Stage erhöhen

nawiat

Neuankömmling
Hey Leute,

ich bin es mal wieder XD
Ich hoffe das stört nicht, aber ihr seit das einzigste Forum wo ich nachfragen kann.

Ich will das meine Quest Stage erhöht wird wenn ich in den Trigger laufe.
habe es hier her:

http://www.creationkit.com/Complete_Example_Scripts

bei den Unterthema:

A Trigger That Detectes When The Player Enters

So habe ich es versucht in meinen Trigger:

Code:
ScriptName Quest_erhoehen Extends ObjectReference
 
Actor Property PlayerREF Auto ; Least 'costly' way to refer to the player
 
Event OnTriggerEnter(ObjectReference akActionRef)
    If akActionRef == PlayerREF ; This condition ensures that only the player will trigger this code
        111Ruggar111.setStage(20)
    EndIf
EndEvent

aber das scheint nicht zu gehen, das ist die Fehlermeldung:

Starting 1 compile threads for 1 files...
Compiling "Quest_erhoehen"...
C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\Quest_erhoehen.psc(7,5): required (...)+ loop did not match anything at input 'Ruggar111'
No output generated for Quest_erhoehen, compilation failed.

Batch compile of 1 files finished. 0 succeeded, 1 failed.
Failed on Quest_erhoehen

kann mir jemand bitte helfen.
^^ danke schonmal.

[h=1][/h]
 
Du musst die Quest erst, wie du es beim Spieler gemacht hast, als Property deklarieren. In deinem Fall:

Code:
Quest Property 111Ruggar111 auto

Diese füllst du dann mit deiner Quest.
 
Danke für die Antworten :)
und danke "Mythischer Morgenrot", kann ja sein das es nervt, weil ich jeden Tag nach was Frage :D
aber danke Leute und echt gutes Forum ^^
 
Starting 1 compile threads for 1 files...
Compiling "Quest_erhoehen"...
C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\Quest_erhoehen.psc(6,19): variable PlayerREF is undefined
No output generated for Quest_erhoehen, compilation failed.

Batch compile of 1 files finished. 0 succeeded, 1 failed.
Failed on Quest_erhoehen

Das kommt jetzt! ich glaube das playerREF gibt es nicht, aber durch was muss ich es erstezen ?
 
Du hast wahrscheinlich die Player-Property mit der Quest-Property ersetzt, da es immernoch Zeile 6 ist. Du brauchst beide Properties.

Code:
ScriptName Quest_erhoehen Extends ObjectReference
 
Actor Property playerRef auto
Quest Property 111Ruggar111 auto
 
Event OnTriggerEnter(ObjectReference akActionRef)
    If akActionRef == playerRef
        111Ruggar111.setStage(20)
    EndIf
EndEvent
 
  • Like
Reaktionen: nawiat
ahaa ;D danke sehr.

Edit:

Wie kann ich dazu noch abfragen, es darf erst auf 20 gesetzt werden wenn die Quest Stage 10 schon erreicht hat?
davor darf der Trigger nicht reagieren.
 
Zuletzt bearbeitet:
Code:
ScriptName Quest_erhoehen Extends ObjectReference
 
Actor Property playerRef auto
Quest Property 111Ruggar111 auto
 
Event OnTriggerEnter(ObjectReference akActionRef)

    if(akActionRef == playerRef) && (111Ruggar111.getCurrentStageID() == 10)
        111Ruggar111.setStage(20)
    endif
    
EndEvent
 
kleines Update.
Ich abe den Skript benutzt und habe gehofft das er geht, aber er geht nicht.
Die Stage bleibt auf 10 und nichts passiert beim durchlaufen :/
hat jemand eine Idee warum ?
 
? wie das. Ist das nicht alles schon drinnen ?
sry ich bin wirklich ein Noob im Skripten, kannst du es mir erklären ?
^^

Der Player der es Aktiviert soll ich sein.
Und die Quest heißt aaa_Ruggar_aaa
 
Bitte, wisst ihr wie der eigene Actor, also den, den ich Spiele, in Papyrus bezeichent wird ?
--> Player <--

Fuer den einmaligen Gebrauch
Game.GetPlayer()

1000 mal schneller ist jedoch das Propertie mit dem Namen
PlayerREF

Code:
ScriptName Quest_erhoehen Extends ObjectReference
 
Actor Property [B]PlayerREF [/B]auto
Quest Property aaaRuggar111 auto
 
Event OnTriggerEnter(ObjectReference akActionRef)

    if( akActionRef == [B]PlayerREF [/B]&& aaaRuggar111.getCurrentStageID() == 10)
        aaaRuggar111.setStage(20)
    endif
    
EndEvent
 
Zuletzt bearbeitet:
  • Like
Reaktionen: 1 Person
Probiers mal so:
Code:
ScriptName Quest_erhoehen Extends ObjectReference

Actor Property [B]PlayerREF [/B]auto
Quest Property aaaRuggar111 auto

Event OnTriggerEnter(ObjectReference akActionRef) 
    Debug.Notification("Current stage:" + aaaRuggar111GetCurrentStageID())
    if( akActionRef == [B]PlayerREF [/B]&& aaaRuggar111.getCurrentStageID() == 10)
      aaaRuggar111.setStage(20)
    endif
EndEvent

Dann siehst Du wenigstens mal, ob der Stage in dem moment wirklich 10 ist.

Außerdem ist auch noch ein Denkfehler möglich:
Obtains the highest completed stage in this quest.
Quelle
Demnach liefert die Funktion den höchsten abgeschlossenen Stage. Das ist aber im seltensten Fall der momentan aktive!
Der momentan aktive Stage wird laut der verlinkten Seite mit GetStage() ermittelt! Und das ist vermutlich, was Du wirklich willst.
 
Also mit deinen skript dort oben, zeigt er mir beim reinlaufen:
Curent stage: 10

also müsste es doch gehen oder nicht ?
aber warum ?
danke aber für deine Antwort schonmal :)
 
@ Dice:

Code:
int Function GetStage()  
    return GetCurrentStageID()
EndFunction


@ Nawiat: Öffne das Property-Fenster wie in den Bildern des Links gezeigt und drücke "Auto-Fill All". Du musst die Property der Quest im Skript genauso nennen, wie ihre Editor-ID lautet, damit das bei ihr auch funktioniert. Wenn du deine Quest also aaaRuggaraaa genannt hast, solltest du sie im Skript auch so nennen, so sparst du dir das Suchen im Property-Fenster und kannst sie automatisch füllen lassen.