Construction Set Skriptthread zum Construction Set

scn ZweiteArena

Short Once
Float fQuestDelaytime

Begin GameMode

Set fQuestDelayTime to 0.001

If Once == 0
If Arsan.getDead == 1
If KarGurz.getDead == 1
If Rylil.getDead == 1
If Askash.getDead == 1
If Miranda.getDead == 1
SetStage 00EineZeiteArena 20
Set Once to 1
Endif
Endif
Endif
Endif
Endif
Endif

End




Hab ihn so eingegben es passiet aber nix.
 
Hallo,
Scriptanfrage:
Ich bräuchte ein Script das Quests Resetet so das es möglich ist den Quest zu wiederholen,
ist das möglich? Wenn ja, sagt doch bitte wie, ich das anstelle.
 
scn ZweiteArena

Short Once
Float fQuestDelaytime

Begin GameMode

Set fQuestDelayTime to 0.001

If Once == 0
If Arsan.getDead == 1
If KarGurz.getDead == 1
If Rylil.getDead == 1
If Askash.getDead == 1
If Miranda.getDead == 1
SetStage 00EineZeiteArena 20
Set Once to 1
Endif
Endif
Endif
Endif
Endif
Endif

End




Hab ihn so eingegben es passiet aber nix.

Was du eventuell probieren könntest wäre, dass du auf die NPCs so ein Skript legst:
Code:
scn NPCScript

Begin onDeath player

set <Quest-ID>.count to (<Quest-ID>.count + 1)

end

Und das Questskript sieht dann so aus:
Code:
scn QuestScript

short count
short once
float fQuestDelayTime

Begin GameMode

if fQuestDelayTime != 0.001
 set fQuestDelayTime to 0.001
endif

if once == 0
 if count == 5 ;Anzahl der Personen
  setStage <Quest-ID> <Stage>
  set once to 1
 endif
endif

end


@Jama: Sollte es eigentlich; probieren schadet bestimmt nicht.
 
Du müsstest natürlich auch alle anderen Variablen, die im Laufe der Quest benutzt/verändert werden resetten, sowie im Verlauf der Quest getötete NPCs wiederbeleben, Gegenstände an den richtigen Ort schieben, etc., etc.
Da ich nicht weiß, wie umfangreich die Quest ist, bzw. aus wie vielen und welchen Komponenten sie besteht, kann ich dir dazu nicht wirklich mehr sagen...
 
Okay dann muss ich es anderes machen, wie speichere ich den Rang einer Gilde in eine Variable um in später wiederzubekommen?
Ich will zwischenzeitlich die Gilde verlassen und süäter den Rang zurück bekommen.
 
Begin-Block
short rank
short once
If once == 0
set rank to NPCID.getfactionrank FACTION
set once to 1
endif
end

Das mus vor dem Rauswurf passieren da sonst rank -1 ist !
 
Zuletzt bearbeitet:
oh stimmt sry !
Am besten du machst Rank als Quest-Variable du weißt ja wie das geht oder ? Oder als Global was ich aber nicht machen würde und dann natürlich short rank aus dem Script nehmen !

QuestVariable machen:

Neues Script machen : Typ = Quest

scn blablabla

short rank

abspeichern-> Dem Quest das Script geben (es muss ja kein wircklicher Quest sein ;))

Im Script anstelle von set rank to...
set QUESTID.rank to ...
screiben und die Deklaration short rank rauslöschen !

Später wenn der Npc wieder in die Gilde zurückkommt:

ActorID.setfactionrank FACTION QUESTID.rank
 
Zuletzt bearbeitet:
Ne nicht wirklich!:oops:

Edit: Habs immer noch nich ganz verstanden, schreib mir mal die Scripts so zusammen, das ich sie nur noch einfügen brauche!
 
Zuletzt bearbeitet:
Die kann man nicht so einfach einfügen (versteht sich glaub ich von selbst ) für FACTION deine Gilde , Für NPCID der Npc der rausgeht (bei dir glaub ich player oder ?)

Script 1 (Das Script für die QuestVariable)

scn Quest1SCRIPT
short rank

ScriptTyp Quest einstellen !

Dann gehst du auf character -> quests -> New -> Id: Quest1 oder wahlweise ->
Script -> Quest1SCRIPT selektieren

Script 2 (Das Script wo du rausgehst):


scn RauswurfScript

Begin OnActivate/OnLoad/OnDeath/gamemode [wahlweise]

short once

If once == 0

set QuestID.rank to NPCID.getfactionrank FACTION (in unserem falle also: set Quest1.rank to NPCID.getfactionrank FACTION)
set once to 1

endif
end

Script3 (wenn man wieder in die gilde kommt)

scn WIEDERDASCRIPT

Begin gamemode/OnLoad/ wahlweise

short once
If once == 0
NPCID.setfactionrank FACTION Quest1.rank
set once to 1
endif
end
nicht zu vergessen die Bedingungen einzufügen wann das passieren soll !
 
Zuletzt bearbeitet:
Um es mal zu erläutern: Du kannst auf eine Quest-Variable (eine Variable, die in einem Questskript deklariert ist) zugreifen, indem du "<Quest-ID>.Variable" benutzt. Damit kannst du umgehen wie mit jeder anderen Variable auch; also kannst du sie mit "if ..." abfragen und mit "set ... to ..." setzen.

Edit: Wenn du aus der Gilde raus willst, musst du "setFactionRank <Faction> -1" benutzen. Du solltest den Rang in der Faction allerdings vorher in einer Variable speichern, weil sonst "-1" gespeichert wird.
 
Zuletzt bearbeitet:
achso du willst aus der Gilde noch raus stimmt ja:

Am besten machst du dass mit Dialogen (s.u)
scn RauswurfScript

Begin gamemode

short once

If once == 0

set QuestID.rank to NPCID.getfactionrank

set once to 1

endif

If once==1

NPCID.setfactionrank Faction -1

set once to 2

endif

end

Denk dran sowie das Script hier steht funktioniert es nicht du wirst sofort rausgeschmissen ! Du musst noch eine Bedingung einfügen wann es passiert sonst läuft es in jedem Frame !

Mit Dialogen:
ins ResultScript unter dem Dialog ! :

set QuestID.rank to NPCID.getfactionrank
NPCID.setfactionrank Faction -1
Message "%.of" QuestID.rank

wenn die Nachricht oben nicht -1 ist dann sollte es klappen...
Wenn da %.of oder ähnliches steht gib mal in die Konsole ein
show QUESTID.rank und guk ob das dein Faction rank war...

Hast du dich schon durch die Tutorials gearbeitet ?
Mach das mal hat mir damals auch sehr geholfen...
 
Zuletzt bearbeitet:
Das mit dem Rauwurf, hat ja alles geklappt das Script dafür hab ich selber geschrieben (besteht aus zwei Zeilen:-D),
auch die Dialoge gehen nur ich bekomm halt den Rang nicht wieder und bleibe Anfänger!