[SERVICE] Die Questkontrolle

04/21/2015 20:38 Nick#11401
Quote:
Originally Posted by C-3PO. View Post
Type auf 18
Quest´s neuladen ->Ingame:
/reload
/reload q
#tested

Code:
quest bt begin  
	state start begin  
		when 50134.use begin  
			if pc.get_job() == 0 then 
				local b = {50401,50402,50403,50403,50404,50416,50417,50418,50419,50420}
				local rb = number(1, table.getn(b)) 
				pc.give_item2(b[rb], 1) 
				pc.remove_item(50134) 
			elseif pc.get_job() == 1 then 
				local b = {50431,50432,50433,50434,50435,50446,50447,50448,50449,50550}
				pc.give_item2(b[rb], 1) 
				pc.remove_item(50134) 
			elseif pc.get_job() == 2 then 
				local b = {50461, 50462, 50463, 50464, 50465, 50466,50476, 50477, 50478, 50479, 50480, 50481}
				pc.give_item2(b[rb], 1) 
				pc.remove_item(50134) 
			elseif pc.get_job() == 3 then 
				local b = {50491, 50492, 50493, 50494, 50495, 50496,50506, 50507, 50508, 50509, 50510, 50511}
				pc.give_item2(b[rb], 1) 
				pc.remove_item(50134) 
			end
			chat("Du hast " ..item.get_name().. " geöffnet.")
		end  
	end 
end
Die Variable rb würde nil entsprechen, sollte der Charakter kein Krieger sein. Du müsstest rb demnach über der Abfrage definieren.


lg
04/21/2015 21:13 .Various#11402
Quote:
Originally Posted by .JayZoN View Post
Die Variable rb würde nil entsprechen, sollte der Charakter kein Krieger sein. Du müsstest rb demnach über der Abfrage definieren.


lg
Ja, hab ich vergessen überall reinzupacken & da mein Testchar ein Krieger ist, ist es mir natürlich nicht aufgefallen :)
04/22/2015 12:06 Reigen#11403
Joa, ich mal wieder ^^

Bei folgender Quest bekomme ich bloss die Meldung, dass ein Fehler vorhanden ist. Allerdings will der Compiler nicht ausspucken wo und was für ein Fehler es ist.

PHP Code:
quest eventhelper begin
    state start begin
        when 9004.chat
."Player Events" begin
            say
("Hello, I am the Eventhelper and I am")
            
say("helping the players with Events. You")
            
say("can choose between 3 little Events,")
            
say("which will only work for you. This will")
            
say("cost you 500.000 Yang. The Event will")
            
say("run for 2 hours!")
            
say("")
            
say_reward("Do you want to start an Event?")
            
local s1=select("Yes!","Cancel")
            if 
s1 == 1 then

                
if pc.gold<500000 then
                    say
("You don't have 500.000 Yang")
                    return
                
end
                
                
if event_time.timer > 0 then
                    say
("There is still an Event active!")
                    
say("Come back later.")
                    return
                
end
            
                say
("Start following Event now:")
                
local s2=select("Metin Spawn","50% EXP","Double Bosskill,"Cancel")
                if s2 == 1 then
                    
                    if pc.get_level() > 80 then
                        say("
This Event is limited for Level 1-80.")
                        say("
Please select another Event.")
                        return
                    end
                    
                    timer("
event_time", 60*120)
                    pc.changegold(-500000)
                    say("
You can now Drop Metin-Stone-Scrolls")
                    say("
from every Monster with not more than")
                    say("
10 Level difference from your own level.")
                        when kill with not npc.is_pc() begin
                        local moblevel = mob_level[npc.get_race()]
                        local drops = {
                        ---Item id, min level, max level, drop chance
                            {71080,1,20,10},        --- Metin Easy 10% drop chance
                            {71081,21,50,10},        --- Metin Middle 10% drop chance
                            {71082,51,80,10}        --- Metin Hard 10% drop chance
                        }
                        for i = 1, table.getn(drops) do
                                if pc.get_level() >= (drops[i][2]) and pc.get_level() <= (drops[i][3]) then
                                    if pc.get_level() >= moblevel-10 and pc.get_level() <= moblevel+10 then
                                        if number(1,1000) >= (1000-drops[i][4]) then
                                            game.drop_item_with_ownership(drops[i][1], 1)
                                        end
                                    end
                                end
                        end
                    end
                end    
                if s2 == 2 then
                    timer("
event_time", 60*120)
                    pc.changegold(-500000)
                    affect.add_collect(apply.EXP_DOUBLE_BONUS, 50, 120)
                end
                if s2 == 3 then
                    timer("
event_time", 60*120)
                    pc.changegold(-500000)
                    when 691.kill begin
                        game.drop_item_with_ownership(71036, 1)
                    end
                    when 2091.kill begin
                        game.drop_item_with_ownership(71038, 1)
                    end
                    when 2206.kill begin
                        game.drop_item_with_ownership(71040, 1)
                    end
                    when 1901.kill begin
                        game.drop_item_with_ownership(71041, 1)
                    end
                    when 2091.kill begin
                        game.drop_item_with_ownership(71038, 1)
                    end
                    when 1306.kill begin
                        game.drop_item_with_ownership(71043, 1)
                    end
                    when 1092.kill begin
                        game.drop_item_with_ownership(71042, 1)
                    end                
                end
                if s2 == 4 then
                    return
                end
            else
                return
            end
        end
        when event_time.timer begin
            send_letter("
Event ended")
            when button or info begin 
               say_title("
Event ended") 
               say("") 
               say("
The Event has now ended. If you want") 
               say("
to start a new Event, go to the Event") 
               say("
Helper and start a new Event, for") 
               say("
for 500.000 Yang.") 
               say("") 
            end
        end
    end
end 
04/22/2015 12:36 rollback#11404
Quote:
Originally Posted by Reigen View Post
Joa, ich mal wieder ^^

Bei folgender Quest bekomme ich bloss die Meldung, dass ein Fehler vorhanden ist. Allerdings will der Compiler nicht ausspucken wo und was für ein Fehler es ist.

PHP Code:
quest eventhelper begin
    state start begin
        when 9004.chat
."Player Events" begin
            say
("Hello, I am the Eventhelper and I am")
            
say("helping the players with Events. You")
            
say("can choose between 3 little Events,")
            
say("which will only work for you. This will")
            
say("cost you 500.000 Yang. The Event will")
            
say("run for 2 hours!")
            
say("")
            
say_reward("Do you want to start an Event?")
            
local s1=select("Yes!","Cancel")
            if 
s1 == 1 then

                
if pc.gold<500000 then
                    say
("You don't have 500.000 Yang")
                    return
                
end
                
                
if event_time.timer > 0 then
                    say
("There is still an Event active!")
                    
say("Come back later.")
                    return
                
end
            
                say
("Start following Event now:")
                
local s2=select("Metin Spawn","50% EXP","Double Bosskill,"Cancel")
                if s2 == 1 then
                    
                    if pc.get_level() > 80 then
                        say("
This Event is limited for Level 1-80.")
                        say("
Please select another Event.")
                        return
                    end
                    
                    timer("
event_time", 60*120)
                    pc.changegold(-500000)
                    say("
You can now Drop Metin-Stone-Scrolls")
                    say("
from every Monster with not more than")
                    say("
10 Level difference from your own level.")
                        when kill with not npc.is_pc() begin
                        local moblevel = mob_level[npc.get_race()]
                        local drops = {
                        ---Item id, min level, max level, drop chance
                            {71080,1,20,10},        --- Metin Easy 10% drop chance
                            {71081,21,50,10},        --- Metin Middle 10% drop chance
                            {71082,51,80,10}        --- Metin Hard 10% drop chance
                        }
                        for i = 1, table.getn(drops) do
                                if pc.get_level() >= (drops[i][2]) and pc.get_level() <= (drops[i][3]) then
                                    if pc.get_level() >= moblevel-10 and pc.get_level() <= moblevel+10 then
                                        if number(1,1000) >= (1000-drops[i][4]) then
                                            game.drop_item_with_ownership(drops[i][1], 1)
                                        end
                                    end
                                end
                        end
                    end
                end    
                if s2 == 2 then
                    timer("
event_time", 60*120)
                    pc.changegold(-500000)
                    affect.add_collect(apply.EXP_DOUBLE_BONUS, 50, 120)
                end
                if s2 == 3 then
                    timer("
event_time", 60*120)
                    pc.changegold(-500000)
                    when 691.kill begin
                        game.drop_item_with_ownership(71036, 1)
                    end
                    when 2091.kill begin
                        game.drop_item_with_ownership(71038, 1)
                    end
                    when 2206.kill begin
                        game.drop_item_with_ownership(71040, 1)
                    end
                    when 1901.kill begin
                        game.drop_item_with_ownership(71041, 1)
                    end
                    when 2091.kill begin
                        game.drop_item_with_ownership(71038, 1)
                    end
                    when 1306.kill begin
                        game.drop_item_with_ownership(71043, 1)
                    end
                    when 1092.kill begin
                        game.drop_item_with_ownership(71042, 1)
                    end                
                end
                if s2 == 4 then
                    return
                end
            else
                return
            end
        end
        when event_time.timer begin
            send_letter("
Event ended")
            when button or info begin 
               say_title("
Event ended") 
               say("") 
               say("
The Event has now ended. If you want") 
               say("
to start a new Event, go to the Event") 
               say("
Helper and start a new Event, for") 
               say("
for 500.000 Yang.") 
               say("") 
            end
        end
    end
end 
kann man alleine am syntax highlighting erkennen ;)
04/22/2015 13:10 Reigen#11405
Quote:
Originally Posted by definitely not Sensenmann View Post
kann man alleine am syntax highlighting erkennen ;)
So schlecht geschrieben? Naja vielleicht setz ich mich am Abend nochmal ran. Weil momentan seh ich grad den Fehler nicht.
04/22/2015 13:13 MaxChri#11406
Quote:
Originally Posted by Reigen View Post
So schlecht geschrieben? Naja vielleicht setz ich mich am Abend nochmal ran. Weil momentan seh ich grad den Fehler nicht.
Die Metin Syntax ist auch fürn Ar***. Wenn man zuvor mit anderen Sprachen zu tun hatte und sich dann Metin reinzieht, denkt man erstmal wtf wo ist die Logik xD
04/22/2015 13:42 Reigen#11407
Naja so richtig auskennen tu ich mich in keiner Sprache. Kann mir vielleicht jemand anderes helfen?
04/22/2015 13:49 KΛIƬӨ#11408
Quote:
Originally Posted by Reigen View Post
Naja so richtig auskennen tu ich mich in keiner Sprache. Kann mir vielleicht jemand anderes helfen?
Du kannst nicht in nem If ( Block ? ) einen When Trigger reinpacken.
04/22/2015 14:11 rollback#11409
Quote:
Originally Posted by MaxChri View Post
Die Metin Syntax ist auch fürn Ar***. Wenn man zuvor mit anderen Sprachen zu tun hatte und sich dann Metin reinzieht, denkt man erstmal wtf wo ist die Logik xD
Metin Syntax? Du meinst C++, Python und LUA
04/22/2015 14:27 MaxChri#11410
Quote:
Originally Posted by definitely not Sensenmann View Post
Metin Syntax? Du meinst C++, Python und LUA
Ich meine die Syntax von der Sprache.
Syntax = Aufbau
04/22/2015 14:44 rollback#11411
Quote:
Originally Posted by MaxChri View Post
Ich meine die Syntax von der Sprache.
Syntax = Aufbau
Ich weiss schon was Syntax heisst, nur es hat sich so angehört als wenn du denkst, Metin hätte eine eigene Sprache
04/22/2015 15:32 #'.Rayzor™#11412
Quote:
Originally Posted by definitely not Sensenmann View Post
Ich weiss schon was Syntax heisst, nur es hat sich so angehört als wenn du denkst, Metin hätte eine eigene Sprache
Er meinte, wenn man Python, Lua, C++ etc. schon so gelernt hat, ohne
das in Metin2 ein zusetzten, aber dann sieht, wie es in Metin2 genutzt wird,
wird einem schlecht bzw. man denkt sich "wtf" so wie er es halt meint.
04/22/2015 22:40 Reigen#11413
Habe jetzt die Quest so umgeschrieben wie es mir empfohlen wurde (keine When Trigger in IF-Blöcken) Dennoch erhalte ich nach wie vor einen Fehler - Doch keine genaue Fehlermeldung. Es wird nichtmal die Zeile des Fehlers ausgegeben :O

PHP Code:
quest eventhelper begin
    state start begin
        when 9004.chat
."Player Events" with pc.get_level() > 0 begin
            say
("Hello, I am the Eventhelper and I am")
            
say("helping the adventurers with Events. You")
            
say("can choose between 3 little Events,")
            
say("which will only work for you. This will")
            
say("cost you 500.000 Yang. The Event will")
            
say("run for 2 hours!")
            
say("")
            
say_reward("Do you want to start an Event?")
            
local s1=select("Yes!","Cancel")            
            if 
s1 == 1 then
                
if pc.gold<500000 then
                    say
("You don't have 500.000 Yang")
                    return
                
end                
                
if event_time.timer > 0 then
                    say
("There is still an Event active!")
                    
say("Come back later.")
                    return
                
end            
                say
("Start following Event now:")
                
local s2=select("Metin Spawn","50% EXP","Double Bosskill,"Cancel")                
                if s2 == 1 then    
                    if pc.get_level() > 80 then
                        say("
This Event is limited for Level 1-80.")
                        say("
Please select another Event.")
                        return
                    end    
                set_state(MetinDropp)
                end                
                if s2 == 2 then
                    set_state(50exp)
                end                
                if s2 == 3 then
                    set_state(Bosskill)
                end                
                else
                    return
                end
            else
                return
            end
        end
    end
    state MetinDrop begin
        timer("
event_time", 60*120)
        pc.changegold(-500000)
        say("
You can now Drop Metin-Stone-Scrolls")
        say("
from every Monster with not more than")
        say("
10 Level difference from your own level.")
        when kill with not npc.is_pc() begin
            local moblevel = mob_level[npc.get_race()]
            local drops = {
            ---Item id, min level, max level, drop chance
            {71080,1,20,10},        --- Metin Easy 10% drop chance
            {71081,21,50,10},        --- Metin Middle 10% drop chance
            {71082,51,80,10}        --- Metin Hard 10% drop chance
            }
            for i = 1, table.getn(drops) do
                if pc.get_level() >= (drops[i][2]) and pc.get_level() <= (drops[i][3]) then
                    if pc.get_level() >= moblevel-10 and pc.get_level() <= moblevel+10 then
                        if number(1,1000) >= (1000-drops[i][4]) then
                            game.drop_item_with_ownership(drops[i][1], 1)
                        end
                    end
                end
            end
        end
        when event_time.timer begin
            set_state(End_of_Event)
        end
    end
    state 50exp begin
        timer("
event_time", 60*120)
        pc.changegold(-500000)
        affect.add_collect(apply.EXP_DOUBLE_BONUS, 50, 120)
        when event_time.timer begin
            set_state(End_of_Event)
        end
    end
    state Bosskill begin
        timer("
event_time", 60*120)
        pc.changegold(-500000)
        when 691.kill begin
            game.drop_item_with_ownership(71036, 1)
        end
        when 2091.kill begin
            game.drop_item_with_ownership(71038, 1)
        end
        when 2206.kill begin
            game.drop_item_with_ownership(71040, 1)
        end
        when 1901.kill begin
            game.drop_item_with_ownership(71041, 1)
        end
        when 2091.kill begin
            game.drop_item_with_ownership(71038, 1)
        end
        when 1306.kill begin
            game.drop_item_with_ownership(71043, 1)
        end
        when 1092.kill begin
            game.drop_item_with_ownership(71042, 1)
        end
        when event_time.timer begin
            set_state(End_of_Event)
        end
    end
    state End_of_Event begin
        send_letter("
Event ended")
        when button or info begin 
        say_title("
Event ended") 
        say("")
        say("
The Event has now ended. If you want") 
        say("
to start a new Event, go to the Event")
        say("
Helper and start a new Event, for")
        say("
for 500.000 Yang.")
        say("")
    end
end 
04/22/2015 22:56 rollback#11414
Du kannst in einer state nicht direkt mit befehlen starten, erst muss ein trigger kommen
04/23/2015 00:15 Reigen#11415
etwa so?

PHP Code:
quest eventhelper begin
    state start begin
        when 9004.chat
."Player Events" begin
            say
("Hello, I am the Eventhelper and I am")
            
say("helping the adventurers with Events. You")
            
say("can choose between 3 little Events,")
            
say("which will only work for you. This will")
            
say("cost you 500.000 Yang. The Event will")
            
say("run for 2 hours!")
            
say("")
            
say_reward("Do you want to start an Event?")
            
local s1=select("Yes!","Cancel")            
            if 
s1 == 1 then
                
if pc.gold<500000 then
                    say
("You don't have 500.000 Yang")
                    return
                
end                
                
if event_time.timer > 0 then
                    say
("There is still an Event active!")
                    
say("Come back later.")
                    return
                
end            
                say
("Start following Event now:")
                
local s2=select("Metin Spawn","50% EXP","Double Bosskill,"Cancel")                
                if s2 == 1 then    
                    if pc.get_level() > 80 then
                        say("
This Event is limited for Level 1-80.")
                        say("
Please select another Event.")
                        return
                    else
                        pc.changegold(-500000)
                        timer("
event_time", 60*120)
                        set_state(MetinDropp)
                    end
                end
                if s2 == 2 then
                    pc.changegold(-500000)
                    timer("
event_time", 60*120)
                    affect.add_collect(apply.EXP_DOUBLE_BONUS, 50, 120)
                    set_state(50exp)
                end                
                if s2 == 3 then
                    pc.changegold(-500000)
                    timer("
event_time", 60*120)
                    set_state(Bosskill)
                end                
            end
        end
    end
    state MetinDropp begin
        when login or levelup begin
            send_letter("
Metin Dropp Event")
            when button or info begin
                say("
You can now Drop Metin-Stone-Scrolls")
                say("
from every Monster with not more than")
                say("
10 Level difference from your own level.")
            end
        end
        when kill with not npc.is_pc() begin
            local moblevel = mob_level[npc.get_race()]
            local drops = {
            ---Item id, min level, max level, drop chance
            {71080,1,20,10},        --- Metin Easy 10% drop chance
            {71081,21,50,10},        --- Metin Middle 10% drop chance
            {71082,51,80,10}        --- Metin Hard 10% drop chance
            }
            for i = 1, table.getn(drops) do
                if pc.get_level() >= (drops[i][2]) and pc.get_level() <= (drops[i][3]) then
                    if pc.get_level() >= moblevel-10 and pc.get_level() <= moblevel+10 then
                        if number(1,1000) >= (1000-drops[i][4]) then
                            game.drop_item_with_ownership(drops[i][1], 1)
                        end
                    end
                end
            end
        end
        when event_time.timer begin
            set_state(FinishEvent)
        end
    end
    state 50exp begin
        when login or levelup begin
            send_letter("
EXP Event")
            when button or info begin
                say("
Your EXP are raised up to 50% for 2 hours")
                say("")
            end
        end
        when event_time.timer begin
            set_state(FinishEvent)
        end
    end
    state Bosskill begin
        when login or levelup begin
            send_letter("
Double Bosskill Event")
            when button or info begin
                say("
On most Bossmonsters you can now drop")
                say("
a Call-Scroll which can be used to summon")
                say("
the same Bossmonster again.")
            end
        end                
        when 691.kill begin
            game.drop_item_with_ownership(71036, 1)
        end
        when 2091.kill begin
            game.drop_item_with_ownership(71038, 1)
        end
        when 2206.kill begin
            game.drop_item_with_ownership(71040, 1)
        end
        when 1901.kill begin
            game.drop_item_with_ownership(71041, 1)
        end
        when 2091.kill begin
            game.drop_item_with_ownership(71038, 1)
        end
        when 1306.kill begin
            game.drop_item_with_ownership(71043, 1)
        end
        when 1092.kill begin
            game.drop_item_with_ownership(71042, 1)
        end
        when event_time.timer begin
            set_state(FinishEvent)
        end
    end
    state FinishEvent begin
        when login or levelup begin
            send_letter("
Event ended")
            when button or info begin 
            say_title("
Event ended") 
            say("")
            say("
The Event has now ended. If you want") 
            say("
to start a new Event, go to the Event")
            say("
Helper and start a new Event, for")
            say("
for 500.000 Yang.")
            say("")
            set_state(start)
        end
    end
end 
Immernoch gleicher Fehler beim compilen