Quest bedingungen

04/10/2017 14:25 Delta371#1
hey elitepvpers.
gibt es ne möglichkeit mit einem when oder if satz die quest zu starten wenn ich zb für den queststart 10 items benötige und gerade das 10. einsammle?
bisher hab ich es nur geschafft mit login oder levelup etc.
PHP Code:
quest NewQuest begin
    state start begin
        when login begin
            
if pc.count_item(50050)>=5 then 
PHP Code:
quest NewQuest begin
    state start begin
        when login with pc
.count_item()>= begin 
aber ich suche eine möglichkeit das die quest sofort STARTET wenn ich das item habe nicht erst nach jedem erneuten einloggen
zb so
PHP Code:
quest NewQuest begin
    state start begin
        when pc
.get_count_item(50050)>=10 begin 
aber wenn ich das mache werde ich mit fehlern zugebommt
04/10/2017 16:01 rollback#2
Es gibt einen take Trigger, der war in der letzten Version in der ich es getestet habe (34k) leider nicht funktionisfähig. Man kann da einen kleinen Umweg über einen loop_timer gehen, das ist allerdings besonders in Kombination mit pc.count_item (was das komplette Inventar durchsucht) nicht gut für die Performance.
04/10/2017 19:54 std::max#3
Solltest du einen neuen Trigger wollen für Quests musst du leider schon mit dem Source arbeiten.

Dafür musst du in questmanager.cpp in CQuestManager::Initialize dein neues Event registrieren.
Das Event selbst musst du in quest.h hinzufügen.

Jetzt eventuell noch in char_item.cpp unter CHARACTER::PickupItem stellen raussuchen an welchen
ein Item aufgehoben wird. Dort kann kannst du dann HandleReceiveAllEvent aus questnpc.cpp aufrufen
Dann sollte dein block auszuführen sein.

Den questcompiler (qc) musst du natürlich auch anpassen ...

Das ganze soll nur dir nur eine Idee geben wie es funktionieren kann und ist so nicht 1:1 umsetzbar.
04/11/2017 07:48 Nectix#4
[Only registered and activated users can see links. Click Here To Register...]

#closed