DB: Quests mit Phasechange?

01/04/2013 02:12 klosierung#1
Guten Morgen liebe Comm...


Ich probiere seit Stunden Quests zu erstellen ,welche beim Annehmen die Spieler in eine definierte Phase setzt, und bei Bedarf beim Abgeben/Annehmen wieder in eine definierte Phase setzt.


Ich kenne mich bestens mit SAI/ _scripts tabellen aus, aber ich habe nichts passendes gefunden.

Im SAI hätte smart_Event 47 und Smart_action 44 Sinn gemacht. Jedoch müsste ich dann davon ausgehen: Spieler bleibt in einer normalen Phase und Npc verschwinden/tauchen auf nach Bedarf (GOB wiederum nicht).


Bitte um hilfe wie man das macht. Danke!
01/05/2013 17:35 °"Crazy"°#2
spell_area ist das Stichwort. Dort einfach den Spell der Phase (.loo sp phase) und Start- und Endquest eingeben, so hast du den Benutzer in eine andere Phase versetzt. :)
01/06/2013 16:23 klosierung#3
Ouuu dankeschöön :D

Jetzt ist meine Frage noch; sind die Spells den Phasen zugeteilt?
Sprich Spell1 = Phase 1, Spell 2 =Phase 2?
01/07/2013 14:08 °"Crazy"°#4
Ich versteh gerade deine Frage nicht.

Wenn du in der spell_area als beispiel folgendes eingibst:
Code:
@phasespell := ''; -Spell der Phase
@area := ''; -Area, .gps InGame
@startquest := ''; -Queststart
@endquest := ''; -QuestEnde

INSERT INTO spell_area (spell, area, quest_start, quest_end) VALUES (@phasespell, @area, @startquest, @endquest);
Dann kannst du dadurch kontrollieren, wer in welche Phase durch welche Quest kommt. Sollte er sie abbrechen oder den die completen, wo wird er automatisch rausgeportet, es sei denn, du macht die Endquest anders.


Hier noch etwas Interessantes (EInfach aus der wiki genommen):

Quest Status mask conversion mask
QUEST_STATUS_NONE = 0 (1 << 0) 1
QUEST_STATUS_COMPLETE = 1 (1 << 1) 2
QUEST_STATUS_UNAVAILABLE = 2 (1 << 2) NOT USED
QUEST_STATUS_INCOMPLETE = 3 (1 << 3) 8
QUEST_STATUS_AVAILABLE = 4 (1 << 4) NOT USED
QUEST_STATUS_FAILED = 5 (1 << 5) 32
QUEST_STATUS_REWARDED = 6 (1 << 6) 64

Solltest du nun was ändern wollen, kannst du auch die mask conversion nehmen. Jedenfalls soll es lt. Wiki funktionieren.

Nehmen wir an, du möchtest 0, 1 und 3 zusammenlegen. Wären laut mask die 11. Es gibt eine weitere möglichkeit, die sich wie folgt zusammensetzt:

Code:
UPDATE spell_area SET `quest_end_status`=(1 << 0)|(1 << 1)|(1 << 3) WHERE `spell`=XXXXX AND `area`=YYYY;

Andernfalls könnte man folgendes auch setzen:

Code:
UPDATE spell_area SET `quest_end_status`= 11 WHERE `spell`=XXXXX AND `area`=YYYY;

Somit hast du 2 Varianten, die Spieler aus dem Phasing zu holen. Möchtest du die im Phasing weiterhin behalten, so musst du nur die richtigen Werte an die richtigen Stellen schreiben.


Viel Spaß mit dem Phasing.

MfG
01/07/2013 23:30 klosierung#5
Also ich habs probiert..

INSERT INTO `spell_area` (`spell`, `area`, `quest_start`, `quest_end`, `aura_spell`, `racemask`, `gender`, `autocast`, `quest_start_status`, `quest_end_status`) VALUES (70193, 5002, 30003, 30003, 0, 0, 2, 0, 64, 11);

Jetzt funktioniert das nicht, der eingetragene Spell sollte die Spieler in die Phase 2048 setzen, wenn sie die Quest 30003 annehmen und rausnehmen, wenn sie die quest abgeben.
01/08/2013 15:07 °"Crazy"°#6
Eventuell mal folgendes machen:

Code:
UPDATE spell_area SET aura_spell = 70193 WHERE spell = 70193 AND area = 5002;
MfG
01/09/2013 01:04 Legora#7
Wenn du TC 4.3.4 benutzt kannst du auch Phase Definitions verwenden.
Ansonsten musst du bei spell_area noch den autocast auf 1 setzten.