[SERVICE] Die Questkontrolle

04/20/2015 03:45 Reigen#11371
@ K.A.K.A.S.H.I
Ich hoffe das ist das was du gesucht hast.

PHP Code:
quest drop begin
    state start begin
        
function ab()
            
local ju = {
                --
mob-id--min-level--max-level---item-anzahl---prozent---item-id's----prozentuale veränderung pro level
                {101,     1,         10,             3,        50,30,20,    19, 20, 21,        1},
            }
            return ju
        end
        when kill with not npc.is_pc() begin
            local boni,lck,per,luck,bsp = 0,0,0,0,hdf.ab()
            for i = 1, table.getn(bsp)+1, 1 do
                if npc.get_race() == bsp[i][1] then
                    if pc.get_level() >= bsp[i][2] and pc.get_level() <= bsp[i][3] then
                        boni = (bsp[i][2] - pc.get_level()) * (-1)
                        boni = boni * bsp[i][bsp[i][4]*2+5]
                        luck = number(1,bsp[i][4])
                        luck = luck + 4 + bsp[i][4]
                        lck = luck - bsp[i][4]
                        per = 100 - bsp[i][lck] + boni
                        lck = number(1,100)
                        if lck > per then
                            pc.give_item2(bsp[i][luck], 1)
                        end
                    end
                end
            end
        end
    end
end 
04/20/2015 07:03 rollback#11372
Quote:
Originally Posted by K.A.K.A.S.H.I View Post
Ich habe ein Problem mit meiner quest ich wollte es so einstellen damit man, wenn man das Monster tötet, das bestimmte Item droppt natürlich soll eingestellt werden, wie oft das Item gedroppt wird und wie hoch die Chance ist aber irgendwie geht die quest nicht wäre nett, wenn jemand den Fehler beheben könnte.

Code:
quest azraeldrop begin 
    state start begin 
        when 2598.kill begin 
            game.drop_item_with_ownership(50125, 1, 1) 
        end 
    end 
end
Code:
quest azraeldrop begin 
	state start begin 
		when kill with npc.get_race() == 2598 and number(1, 100) <= 1 begin 
			game.drop_item_with_ownership(50125, 1) 
		end 
	end 
end
04/20/2015 12:26 MaxChri#11373
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 
s == 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 
04/20/2015 12:47 rollback#11374
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 
s == 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 
Was für ein Fehler kommt denn?

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")
			if select("yes", "no") == 2 then return end
			local msg = ""
			for i = 1, 10 do
				say("Gib deinen Bugreport ein.")
				say("Wenn du fertig bist, gib beim nächsten Eingabefeld")
				say("nichts ein.")
				say("")
				say("Verbleibende Zeichen: "..(300-((i-1)*30)))
				say("")
				say_title("Aktueller Text:")
				say(msg)
				input = input()
				if input == "" then break end
				msg = msg..input
			end
			say_title("Text:")
			say(msg)
			if select("Absenden", "Abbrechen") == 2 then return end
			file = io.open ("locale/germany/quest/bug_report/"..pc.get_name()..".txt","w")
			file:write("Report: "..msg)
			file:close()
			-- say_title("Reported")
		end
	end
end
04/20/2015 13:04 MaxChri#11375
Quote:
Originally Posted by definitely not Sensenmann View Post
Was für ein Fehler kommt denn?

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")
			if select("yes", "no") == 2 then return end
			local msg = ""
			for i = 1, 10 do
				say("Gib deinen Bugreport ein.")
				say("Wenn du fertig bist, gib beim nächsten Eingabefeld")
				say("nichts ein.")
				say("")
				say("Verbleibende Zeichen: "..(300-((i-1)*30)))
				say("")
				say_title("Aktueller Text:")
				say(msg)
				input = input()
				if input == "" then break end
				msg = msg..input
			end
			say_title("Text:")
			say(msg)
			if select("Absenden", "Abbrechen") == 2 then return end
			file = io.open ("locale/germany/quest/bug_report/"..pc.get_name()..".txt","w")
			file:write("Report: "..msg)
			file:close()
			-- say_title("Reported")
		end
	end
end
In der Console kommt der Fehler: Error occured on compile report.quest
04/20/2015 19:07 YoungBIG#11376
Hallo habe Problem mit der Quest sie loaded ganz normal aber der Counter Ingame zählt nicht und somit hat die Quest kein Ende kann mir jemand helfen ?

04/21/2015 00:51 K.A.K.A.S.H.I#11377
Quote:
Originally Posted by definitely not Sensenmann View Post
Code:
quest azraeldrop begin 
	state start begin 
		when kill with npc.get_race() == 2598 and number(1, 100) <= 1 begin 
			game.drop_item_with_ownership(50125, 1) 
		end 
	end 
end
Irgendwie droppt man nichts ich bin Level 250 und droppe nichts.
04/21/2015 09:18 .Various#11378
Quote:
Originally Posted by K.A.K.A.S.H.I View Post
Irgendwie droppt man nichts ich bin Level 250 und droppe nichts.
Du hast da eine 1 zu 100 Chance drin, da ist es schwer das Item zu droppen.
Code:
number(1, 100) <= 1
Hier stellst du die Chance ein. Es wird eine zufällige Zahl zwischen 1 und 100 gewählt, wenn die dann kleiner oder gleich 1 ist, dann wird das Item gedroppt. Die Droppchance liegt also bei 1%, machst du <= 20 liegt sie bei 20% usw.

Quote:
Originally Posted by YoungBIG View Post
Hallo habe Problem mit der Quest sie loaded ganz normal aber der Counter Ingame zählt nicht und somit hat die Quest kein Ende kann mir jemand helfen ?

Ungetestet!

Code:
quest pvm begin
	state start begin
		when login or levelup with pc.level >= 1 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("")
			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("")
			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?")
			local s = select("Ja","Nein")
			if s == 2 then
				say("Hmm schade, ich dachte du wärst ein Kämpfer.")
				return
			else
				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
	end
	state kill begin
		when letter begin
			send_letter("Anfänger Jagdquest")
		end
		when info or button 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("id_"..ids[i])!=0 then
					killed_all = 1
					break
				end
			end
			if killed_all = 0 then
				set_state(finish)
			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?")
			local s=select("Aufjedenfall","Nein behalt sie")
			if s== 2 then
				clear_letter()
				set_state(finish)
			else
				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,6 0*60*24*365*60) -----¡V60¦~
				affect.add_collect(apply.MAX_HP,1000,60*60*24*365* 60) -----¡V60¦~
				pc.change_money(5000000)
				pc.give_item2(19, 10)
				clear_letter()
				set_state(finish)
			end
		end
	end
	state finish begin
	end
end
04/21/2015 15:23 Reigen#11379
Hat jetzt zwar nicht direkt was mit Quests zu tun, aber eigentlich schon ^^

PHP Code:
DELETE quest.* FROM quest where quest.dwPID NOT IN (select pid1,pid2,pid3,pid4 from player_index); 
Operand should contain 1 column(s)
04/21/2015 15:34 KΛIƬӨ#11380
Quote:
Originally Posted by Reigen View Post
Hat jetzt zwar nicht direkt was mit Quests zu tun, aber eigentlich schon ^^

PHP Code:
DELETE quest.* FROM quest where quest.dwPID NOT IN (select pid1,pid2,pid3,pid4 from player_index); 
Operand should contain 1 column(s)
FROM player.quest
04/21/2015 15:40 rollback#11381
Bei einem delete statement gibt man keine columns an

Code:
delete from Player.quest where dwpid not in(select...);
04/21/2015 15:41 Reigen#11382
Wie lösche ich dann alle Questflags von Spielern, die nicht existieren?
04/21/2015 15:46 KΛIƬӨ#11383
Quote:
Originally Posted by Reigen View Post
Wie lösche ich dann alle Questflags von Spielern, die nicht existieren?
Code:
 delete = mysql_query("DELETE * FROM player.quest ;")
Nicht sicher ob ich Recht habe.
04/21/2015 15:48 rollback#11384
Quote:
Originally Posted by Reigen View Post
Wie lösche ich dann alle Questflags von Spielern, die nicht existieren?
Delete from player.quest where dwpid not in(select id from player.player);



Quote:
Originally Posted by DYSKaito View Post
Code:
 delete = mysql.query("DELETE * FROM player.quest ;")
Nicht sicher ob ich Recht habe.
3 Fehler in einer Zeile :rolleyes:
04/21/2015 16:00 EpiicZz#11385
Quote:
Originally Posted by C-3PO. View Post
Du hast da eine 1 zu 100 Chance drin, da ist es schwer das Item zu droppen.
Code:
number(1, 100) <= 1
Hier stellst du die Chance ein. Es wird eine zufällige Zahl zwischen 1 und 100 gewählt, wenn die dann kleiner oder gleich 1 ist, dann wird das Item gedroppt. Die Droppchance liegt also bei 1%, machst du <= 20 liegt sie bei 20% usw.



Ungetestet!

Code:
quest pvm begin
	state start begin
		when login or levelup with pc.level >= 1 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("")
			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("")
			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?")
			local s = select("Ja","Nein")
			if s == 2 then
				say("Hmm schade, ich dachte du wärst ein Kämpfer.")
				return
			else
				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
	end
	state kill begin
		when letter begin
			send_letter("Anfänger Jagdquest")
		end
		when info or button 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("id_"..ids[i])!=0 then
					killed_all = 1
					break
				end
			end
			if killed_all = 0 then
				set_state(finish)
			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?")
			local s=select("Aufjedenfall","Nein behalt sie")
			if s== 2 then
				clear_letter()
				set_state(finish)
			else
				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,6 0*60*24*365*60) -----¡V60¦~
				affect.add_collect(apply.MAX_HP,1000,60*60*24*365* 60) -----¡V60¦~
				pc.change_money(5000000)
				pc.give_item2(19, 10)
				clear_letter()
				set_state(finish)
			end
		end
	end
	state finish begin
	end
end
syntax error : [string "killnot npc . is_pc ( )"]:5: unexpected symbol near `,'
anfang.quest:98:Error occured on compile anfang.quest