[SERVICE] Die Questkontrolle

04/21/2015 16:10 KΛIƬӨ#11386
Quote:
Originally Posted by definitely not Sensenmann View Post
Delete from player.quest where dwpid not in(select id from player.player);





3 Fehler in einer Zeile :rolleyes:
_ angegeben. Die Query wird doch in Strings getan ? Ob man bei DELETE ein column NICHT angeben darf war mir unbewusst.
04/21/2015 16:11 leas2144#11387
Tag miteinander ich habe eine Frage bezüglich eines Quests. Er soll je nach rasse aus einer Truhe die passenden Fb´s ausgeben.

Mein Versuch:

Code:
quest bt begin 
    state start begin 
        when 50134.use begin 
	    chat("Du hast " ..item_name(item.vnum).. " geöffnet.") 
	    if pc.job() == 0 then
			local b = {
				50401, 50402, 50403, 50403, 50404,			-- Krieger
				50416, 50417, 50418, 50419, 50420}
			local rb = number(1, table.getn(b))
			pc.give_item2(b[rb], 1)
			pc.remove_item(item.vnum)
		elseif pc.job() == 1 then
			local b == {
				50431, 50432, 50433, 50434, 50435, 			-- NINJA
				50446, 50447, 50448, 50449, 50550}
			local rb = number(1, table.getn(b))
			pc.give_item2(b[rb], 1)
			pc.remove_item(item.vnum)
		elseif pc.job() == 2 then
			local b == {
				50461, 50462, 50463, 50464, 50465, 50466, 	-- SURA
				50476, 50477, 50478, 50479, 50480, 50481}
			local rb = number(1, table.getn(b))
			pc.give_item2(b[rb], 1)
			pc.remove_item(item.vnum)
		elseif pc.job() == 3 then
			local b == {
				50491, 50492, 50493, 50494, 50495, 50496,	-- SCHAMIE
				50506, 50507, 50508, 50509, 50510, 50511}
			local rb = number(1, table.getn(b))
			pc.give_item2(b[rb], 1)
			pc.remove_item(item.vnum)
        end 
    end
end
VB gibt mir die Information das in Zeile 10 nach Start bei der Zeichenfolge "==" ein Fehler ist ich wüsste aber nicht was falsch ist.

Danke schonmal :mofo:
04/21/2015 16:26 KΛIƬӨ#11388
Quote:
Originally Posted by leas2144 View Post
Tag miteinander ich habe eine Frage bezüglich eines Quests. Er soll je nach rasse aus einer Truhe die passenden Fb´s ausgeben.

Mein Versuch:

Code:
quest bt begin 
    state start begin 
        when 50134.use begin 
	    chat("Du hast " ..item_name(item.vnum).. " geöffnet.") 
	    if pc.job() == 0 then
			local b = {
				50401, 50402, 50403, 50403, 50404,			-- Krieger
				50416, 50417, 50418, 50419, 50420}
			local rb = number(1, table.getn(b))
			pc.give_item2(b[rb], 1)
			pc.remove_item(item.vnum)
		elseif pc.job() == 1 then
			local b == {
				50431, 50432, 50433, 50434, 50435, 			-- NINJA
				50446, 50447, 50448, 50449, 50550}
			local rb = number(1, table.getn(b))
			pc.give_item2(b[rb], 1)
			pc.remove_item(item.vnum)
		elseif pc.job() == 2 then
			local b == {
				50461, 50462, 50463, 50464, 50465, 50466, 	-- SURA
				50476, 50477, 50478, 50479, 50480, 50481}
			local rb = number(1, table.getn(b))
			pc.give_item2(b[rb], 1)
			pc.remove_item(item.vnum)
		elseif pc.job() == 3 then
			local b == {
				50491, 50492, 50493, 50494, 50495, 50496,	-- SCHAMIE
				50506, 50507, 50508, 50509, 50510, 50511}
			local rb = number(1, table.getn(b))
			pc.give_item2(b[rb], 1)
			pc.remove_item(item.vnum)
        end 
    end
end
VB gibt mir die Information das in Zeile 10 nach Start bei der Zeichenfolge "==" ein Fehler ist ich wüsste aber nicht was falsch ist.

Danke schonmal :mofo:
Code:
quest bt begin 
    state start begin 
        when 50134.use begin 
			chat("Du hast " ..item_name(50134).. " geöffnet.") 
			local b = ({
				{50401, 50402, 50403, 50403, 50404,			-- Krieger
				50416, 50417, 50418, 50419, 50420},
				{50431, 50432, 50433, 50434, 50435, 			-- NINJA
				50446, 50447, 50448, 50449, 50550},
				{50461, 50462, 50463, 50464, 50465, 50466, 	-- SURA
				50476, 50477, 50478, 50479, 50480, 50481},
				50491, 50492, 50493, 50494, 50495, 50496,	-- SCHAMIE
				50506, 50507, 50508, 50509, 50510, 50511}
			})[pc.get_job()+1]
			for __,i in pairs(b) do
				pc.give_item2(b,1)
				pc.remove_item(b)
			end
		end
	end
end
04/21/2015 16:50 leas2144#11389
Danke aber jetzt kommt in VB das er den befehl pairs nicht kennt.
04/21/2015 17:03 KΛIƬӨ#11390
Quote:
Originally Posted by leas2144 View Post
Danke aber jetzt kommt in VB das er den befehl pairs nicht kennt.
Füg in deiner Quest_Functions Datei mal pairs ein.
04/21/2015 17:26 MaxChri#11391
Kann mir auch wer bei meiner Quest helfen :( ? Hab die vorletzte Seite glaub ich gepostet *_*
04/21/2015 17:26 .Various#11392
Quote:
Originally Posted by EpiicZz View Post
syntax error : [string "killnot npc . is_pc ( )"]:5: unexpected symbol near `,'
anfang.quest:98:Error occured on compile anfang.quest
Code:
quest pvm begin
	state start begin
		when login begin
			set_state(information)
		end
	end
	state information begin
		when letter begin
			send_letter("Anfänger Jagdquest")
		end
		when info or button begin
			say_title("Anfänger Jagdquest")
			say("")
			say("Hallo Kämpfer deines Reiches!")
			say("Da du nun zu unserem Reich gehörst ")
			say("und ein Kandidat im Kampf gegen das")
			say("Feindliche Reich bist musst du dich")
			say("als erstes beweisen!")
			say("")
			wait()
			say("Deine Aufgabe:")
			say("")
			say_reward("Töte: 50 x Wildhund, 20 x Keiler, 15 x Bär,")
			say_reward("20 x Weißer-Eid Soldatin, 20 x Weißer-Eid Bogenschützin,")
			say_reward("30 x Wilder Ergebener, 30 x Schwarzwindsoldat,")
			say_reward("2 x Brutaler Hauptmann, 50 x Stolzer Ork")
			say_reward("und 50 x Schwarzer Ork")
			say("")
			wait()
			say("Deine Belohnung wenn du die Aufgabe absolviert hast:")
			say("")
			say("10% Stark gegen Monter (dauerhaft)")
			say("+1000TP (dauerhaft)")
			say("5.000.000 Yang")
			say("10 Truhen der Lehre")
			say("")
			say("Willst du die Aufgabe annhemen?")
			if select("Ja","Nein") == 2 then
				say("Hmm schade, ich dachte du wärst ein Kämpfer.")
				return
			end
			say("Okay, los gehts!")
			say_reward("Töte 50 x Wildhund")
			say_reward("Töte 20 x Keiler")
			say_reward("Töte 15 x Bär")
			say_reward("Töte 20 x Weißer-Eid Soldatin")
			say_reward("Töte 20 x Weißer-Eid Bogenschützin")
			say_reward("Töte 30 x Wilder Ergebener")
			say_reward("Töte 30 x Schwarzwindsoldat")
			say_reward("Töte 2 x Brutaler Hauptmann")
			say_reward("Töte 50 x Stolzer Ork")
			say_reward("Töte 50 x Schwarzer Ork")
			pc.setqf("kill_101",50)
			pc.setqf("kill_108",20)
			pc.setqf("kill_110",15)
			pc.setqf("kill_301",20)
			pc.setqf("kill_302",20)
			pc.setqf("kill_502",30)
			pc.setqf("kill_401",30)
			pc.setqf("kill_591",20)
			pc.setqf("kill_631",50)
			pc.setqf("kill_636",50)
			set_state(kill)
		end
	end
	state kill begin
		when letter begin
			send_letter("Anfänger Jagdquest")
		end
		when button or info begin
			ids = {101,108,110,301,302,502,401,591,631,636}
			say_title("Anfänger Jagdquest")
			say("Status:")
			say("")
			for i=1, table.getn(ids), 1 do
				say_reward("Du musst "..mob_name(ids[i]).." noch "..pc.getqf("kill_"..ids[i]).."x töten.")
			end
		end
		when kill with not npc.is_pc() begin
			ids = {101,108,110,301,302,502,401,591,631,636}
			for i=1, table.getn(ids), 1 do
				if npc.get_race() == (ids[i]) then
					if pc.getqf("kill_"..ids[i]) > 0 then
						pc.setqf("kill_"..ids[i], (pc.getqf("kill_"..ids[i])-1))
					end
				end
			end
			killed_all = 0
			for i=1, table.getn(ids), 1 do
				if pc.getqf("kill_"..ids[i]) ~= 0 then
					killed_all = 1
					break
				end
			end
			if killed_all == 0 then
				set_state(fertig)
			end
		end
	end
	state fertig begin
		when letter begin
			send_letter("Aufgabe abgeschlossen!")
		end
		when info or button begin
			say_title("Aufgabe abgeschlossen!")
			say("Du hast es geschafft")
			say("Ich dachte schon du schaffst es nicht")
			say("Du bist wirklich Gut. (Ab Level 50 gibt es eine weitere Quest.)")
			wait()
			say("Natürlich willst du deine Belohnung oder?")
			if select("Aufjedenfall","Nein behalt sie") == 2 then return end
			say_reward("10% Stark gegen Monter (dauerhaft)")
			say_reward("+1000TP (dauerhaft)")
			say_reward("5.000.000 Yang")
			say_reward("10 Truhen der Lehre")
			affect.add_collect(apply.ATT_BONUS_TO_MONSTER,10, 60*60*24*365*60)
			affect.add_collect(apply.MAX_HP,1000, 60*60*24*365*60)
			pc.change_money(5000000)
			pc.give_item2(19, 10)
			clear_letter()
			set_state(finish)
		end
	end
	state finish begin
	end
end
04/21/2015 17:29 Reigen#11393
Quote:
Originally Posted by leas2144 View Post
Tag miteinander ich habe eine Frage bezüglich eines Quests. Er soll je nach rasse aus einer Truhe die passenden Fb´s ausgeben.

Mein Versuch:

Code:
quest bt begin 
    state start begin 
        when 50134.use begin 
	    chat("Du hast " ..item_name(item.vnum).. " geöffnet.") 
	    if pc.job() == 0 then
			local b = {
				50401, 50402, 50403, 50403, 50404,			-- Krieger
				50416, 50417, 50418, 50419, 50420}
			local rb = number(1, table.getn(b))
			pc.give_item2(b[rb], 1)
			pc.remove_item(item.vnum)
		elseif pc.job() == 1 then
			local b == {
				50431, 50432, 50433, 50434, 50435, 			-- NINJA
				50446, 50447, 50448, 50449, 50550}
			local rb = number(1, table.getn(b))
			pc.give_item2(b[rb], 1)
			pc.remove_item(item.vnum)
		elseif pc.job() == 2 then
			local b == {
				50461, 50462, 50463, 50464, 50465, 50466, 	-- SURA
				50476, 50477, 50478, 50479, 50480, 50481}
			local rb = number(1, table.getn(b))
			pc.give_item2(b[rb], 1)
			pc.remove_item(item.vnum)
		elseif pc.job() == 3 then
			local b == {
				50491, 50492, 50493, 50494, 50495, 50496,	-- SCHAMIE
				50506, 50507, 50508, 50509, 50510, 50511}
			local rb = number(1, table.getn(b))
			pc.give_item2(b[rb], 1)
			pc.remove_item(item.vnum)
        end 
    end
end
VB gibt mir die Information das in Zeile 10 nach Start bei der Zeichenfolge "==" ein Fehler ist ich wüsste aber nicht was falsch ist.

Danke schonmal :mofo:
Also du hast einmal "end" vergessen. Ausserdem heisst die Funktion pc.get_job und nicht pc.job ^^

Versuch mal:
PHP Code:
quest bt begin 
    state start begin 
        when 50134.
use begin 
            chat
("Du hast " ..item_name(item.vnum).. " geöffnet."
            if 
pc.get_job() == 0 then
                local b 
= {
                    
5040150402504035040350404,            -- Krieger
                    50416
50417504185041950420}
                
local rb number(1table.getn(b))
                
pc.give_item2(b[rb], 1)
                
pc.remove_item(item.vnum)
            elseif 
pc.get_job() == 1 then
                local b 
= {
                    
5043150432504335043450435,             -- NINJA
                    50446
50447504485044950550}
                
local rb number(1table.getn(b))
                
pc.give_item2(b[rb], 1)
                
pc.remove_item(item.vnum)
            elseif 
pc.get_job() == 2 then
                local b 
= {
                    
504615046250463504645046550466,     -- SURA
                    50476
5047750478504795048050481}
                
local rb number(1table.getn(b))
                
pc.give_item2(b[rb], 1)
                
pc.remove_item(item.vnum)
            elseif 
pc.get_job() == 3 then
                local b 
= {
                    
504915049250493504945049550496,    -- SCHAMIE
                    50506
5050750508505095051050511}
                
local rb number(1table.getn(b))
                
pc.give_item2(b[rb], 1)
                
pc.remove_item(item.vnum)
            
end
        end 
    end
end 
Quote:
Originally Posted by C-3PO. View Post
Code:
quest pvm begin
	state start begin
		when login begin
			set_state(information)
		end
	end
	state information begin
		when letter begin
			send_letter("Anfänger Jagdquest")
		end
		when info or button begin
			say_title("Anfänger Jagdquest")
			say("")
			say("Hallo Kämpfer deines Reiches!")
			say("Da du nun zu unserem Reich gehörst ")
			say("und ein Kandidat im Kampf gegen das")
			say("Feindliche Reich bist musst du dich")
			say("als erstes beweisen!")
			say("")
			wait()
			say("Deine Aufgabe:")
			say("")
			say_reward("Töte: 50 x Wildhund, 20 x Keiler, 15 x Bär,")
			say_reward("20 x Weißer-Eid Soldatin, 20 x Weißer-Eid Bogenschützin,")
			say_reward("30 x Wilder Ergebener, 30 x Schwarzwindsoldat,")
			say_reward("2 x Brutaler Hauptmann, 50 x Stolzer Ork")
			say_reward("und 50 x Schwarzer Ork")
			say("")
			wait()
			say("Deine Belohnung wenn du die Aufgabe absolviert hast:")
			say("")
			say("10% Stark gegen Monter (dauerhaft)")
			say("+1000TP (dauerhaft)")
			say("5.000.000 Yang")
			say("10 Truhen der Lehre")
			say("")
			say("Willst du die Aufgabe annhemen?")
			if select("Ja","Nein") == 2 then
				say("Hmm schade, ich dachte du wärst ein Kämpfer.")
				return
			end
			say("Okay, los gehts!")
			say_reward("Töte 50 x Wildhund")
			say_reward("Töte 20 x Keiler")
			say_reward("Töte 15 x Bär")
			say_reward("Töte 20 x Weißer-Eid Soldatin")
			say_reward("Töte 20 x Weißer-Eid Bogenschützin")
			say_reward("Töte 30 x Wilder Ergebener")
			say_reward("Töte 30 x Schwarzwindsoldat")
			say_reward("Töte 2 x Brutaler Hauptmann")
			say_reward("Töte 50 x Stolzer Ork")
			say_reward("Töte 50 x Schwarzer Ork")
			pc.setqf("kill_101",50)
			pc.setqf("kill_108",20)
			pc.setqf("kill_110",15)
			pc.setqf("kill_301",20)
			pc.setqf("kill_302",20)
			pc.setqf("kill_502",30)
			pc.setqf("kill_401",30)
			pc.setqf("kill_591",20)
			pc.setqf("kill_631",50)
			pc.setqf("kill_636",50)
			set_state(kill)
		end
	end
	state kill begin
		when letter begin
			send_letter("Anfänger Jagdquest")
		end
		when button or info begin
			ids = {101,108,110,301,302,502,401,591,631,636}
			say_title("Anfänger Jagdquest")
			say("Status:")
			say("")
			for i=1, table.getn(ids), 1 do
				say_reward("Du musst "..mob_name(ids[i]).." noch "..pc.getqf("kill_"..ids[i]).."x töten.")
			end
		end
		when kill with not npc.is_pc() begin
			ids = {101,108,110,301,302,502,401,591,631,636}
			for i=1, table.getn(ids), 1 do
				if npc.get_race() == (ids[i]) then
					if pc.getqf("kill_"..ids[i]) > 0 then
						pc.setqf("kill_"..ids[i], (pc.getqf("kill_"..ids[i])-1))
					end
				end
			end
			killed_all = 0
			for i=1, table.getn(ids), 1 do
				if pc.getqf("kill_"..ids[i]) ~= 0 then
					killed_all = 1
					break
				end
			end
			if killed_all == 0 then
				set_state(fertig)
			end
		end
	end
	state fertig begin
		when letter begin
			send_letter("Aufgabe abgeschlossen!")
		end
		when info or button begin
			say_title("Aufgabe abgeschlossen!")
			say("Du hast es geschafft")
			say("Ich dachte schon du schaffst es nicht")
			say("Du bist wirklich Gut. (Ab Level 50 gibt es eine weitere Quest.)")
			wait()
			say("Natürlich willst du deine Belohnung oder?")
			if select("Aufjedenfall","Nein behalt sie") == 2 then return end
			say_reward("10% Stark gegen Monter (dauerhaft)")
			say_reward("+1000TP (dauerhaft)")
			say_reward("5.000.000 Yang")
			say_reward("10 Truhen der Lehre")
			affect.add_collect(apply.ATT_BONUS_TO_MONSTER,10, 60*60*24*365*60)
			affect.add_collect(apply.MAX_HP,1000, 60*60*24*365*60)
			pc.change_money(5000000)
			pc.give_item2(19, 10)
			clear_letter()
			set_state(finish)
		end
	end
	state finish begin
	end
end
Wenn der Fehler in der anfang.quest ist, wieso postet du dann pvm.quest? :D

Quote:
Originally Posted by MaxChri View Post
Heii Community,

ich habe eine Quest gefunden, die einen Report IG aufnehmen kann und dann abspeichert.
Ich habe sie bereits ein wenig verändert aber bei mir wird immer ein Error angezeigt.
Weiß vielleicht wer woran das liegen könnte?

PHP Code:
quest bug_report begin
    state start begin
        when login begin
            send_letter
("Report")
        
end
        when button 
or info begin
            say_title
("Bug-Report")
            
say("Fehler melden")
            
local s select("yes""no")
            if 
== 1 then
                input 
input()
                
file io.open ("locale/germany/quest/bug_report/"..pc.get_name()..".txt","w")
                
file:write("Report: "..input)
                
file:close()
                -- 
say_title("Reported")
            
end
        end
    end
end 
Also wenn ich die Quest auf meinem Server compiliere bekomme ich keinen Fehler...
04/21/2015 17:40 .Various#11394
Quote:
Originally Posted by Reigen View Post
Wenn der Fehler in der anfang.quest ist, wieso postet du dann pvm.quest? :D
[Only registered and activated users can see links. Click Here To Register...]

Ne okay, Spaß beiseite. Also die quest heißt bei ihm nur anfang.quest, also in seinem Questordner. Darum schmeißt der Compiler da den Fehler. :)
04/21/2015 17:43 Reigen#11395
xDDD bin ich dumm ^^ Sorry
04/21/2015 18:28 leas2144#11396
gemacht getan jetzt nimmt VB es and aber ingame wird die truhe nicht geöfnet und sie verschwindet auch nicht.
Sry das ich dich so stresse
04/21/2015 18:30 Reigen#11397
Quote:
Originally Posted by leas2144 View Post
gemacht getan jetzt nimmt VB es and aber ingame wird die truhe nicht geöfnet und sie verschwindet auch nicht.
Sry das ich dich so stresse
Klingt jetzt vielleicht doof aber kann ja jedem mal passieren - Hast du den "Typ" des items in der DB auf 18 gestellt ? (Falls nicht, denk an den "/reload proto"-GM Befehl)
04/21/2015 18:43 leas2144#11398
OMG du bist mein Held wie konnte ich das vergessen XD

EDIT: Geht immer noch nicht Typ ist auf 18 was könnte ich vergessen haben ?

Hab den GM befehl benutzt.

Vielleicht ist es wichtig es sind die Invoice Files und ich hab gerade bemerkt das oberorktruhe usw auch nicht aufgehen.
04/21/2015 19:21 .Various#11399
Quote:
Originally Posted by leas2144 View Post
OMG du bist mein Held wie konnte ich das vergessen XD

EDIT: Geht immer noch nicht Typ ist auf 18 was könnte ich vergessen haben ?

Hab den GM befehl benutzt.

Vielleicht ist es wichtig es sind die Invoice Files und ich hab gerade bemerkt das oberorktruhe usw auch nicht aufgehen.
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
04/21/2015 20:16 Reigen#11400
^ this

Die Oberorktruhe (und wahrscheinlich auch alle anderen) gehen nicht auf weil es nicht in special_item_drop.txt definiert ist (sofern die Truhen auf Type 23 gesetzt sind)