[Question] Kampfgaul-Quest

02/19/2011 22:59 king7total#1
Hallo epvper,

Ich übe mich seit heute im schreiben von Quests.
Habe nun eine Quest fertig geschrieben aber diese ist fehlerhaft und läuft nicht durch das "make.sh" durch.

Ich schätze mal es geht um die Abfrage bzw das zählen der Muscheln wieviele Vorhanden sind und ob sie da sind dann die state folge darauf und wenn nicht dann diese. Ich hoffe ihr könnt mir helfen. Hier die Quest.

Code:
quest erstequestkg begin
	state run begin
		when login or levelup with pc.get_level() ==35  begin
			set_state(information)
		end
	end
	state information begin
		  when letter begin
			send_letter ("Kampfgaul")
		end
		when button or info begin
			say_title("Kampfgaul")
			say ("")
			say ("Du hast Level 35 erreicht,")
			say	("nun ist es dir erlaubt ein Pferd zu nutzen.")
			say	("Melde dich beim Stallburschen")
			say	("Er wird dir ein Pferd übergeben")
			say	("Jedoch musst du ihm 5 Muscheln bringen")
			say ("")
			set_state (gotostallbursche)
		end
	end
	state gotostallbursche begin
		  when letter begin
			local v=find_npc_by_vnum(20349)
			if 0==v then
			else
				target.vid("__TARGET__", v, "Geh zum Stallburschen")
			end
		end
		when letter begin
			send_letter("Zum Stallburschen! Los!")
		end
		when button or info begin
			say_title("Zum Stallburschen! Los!")
			say ("Gehe zum Stallburschen")
			say ("")
		end
		when __TARGET__.target.click begin
			target.delete("__TARGET__")
			say ("Stallbursche :")
			say ("")
			say ("Du bist also der junge Abenteurer,")
			say ("der mein bestes Pferd erhalten soll.")
			say ("Nun gut.")
			say ("Im gegenzug dafür verlange ich 5 Muscheln")
			say ("Ich verhandele nicht!")
			say_item_vnum(27987)
			say	("")
			local s = select("Ich habe die Muscheln","Elender Abzocker!")
			if s=1 then
				set_state(fünfmuscheln)
				pc.setqf("collect_count",0) 
				pc.setqf("drink_drug",0) 
			else
				say("Was?!?!")
				say("Ich ein Abzocker?!")
				say("Dann beantrag doch Harz IV!")
				clear_letter()
				q.done()
			end
		end
	end
	state fünfmuscheln
		when letter begin
			send_letter("Der Tausch")
			say ("Du hast meine Muscheln?")
			say ("Hurra, Herrlich")
			when pc.count_item(27987)==0 then
				say ("Du hast garkeine Muscheln!")
				say	("Du willst mich übers Ohr hauen!")
				say ("Hau ab!")
			else
			when pc.count_item(27987)==5 then
				set_state(tausch)
				clear_letter()
				q.done
			end
		end
	end
	state tausch
		when letter begin
			send_letter("Kampfgaul erhalten!")
			say ("Nun gut ein fairer Handel")
			say ("Hier ist dein Pferd")
			say ("Behandele es immer gut!")
			horse.set_level(11)
			horse.summon()
			horse.ride()
			item.remove(27987,5)
			pc.give_item2(50052)
			pc.give_item2(50055,200)
			clear_letter
			set_state(__COMPLETE__)		
		end
	end
	state __COMPLETE__ begin
	end
end

MfG
02/19/2011 23:02 0x4D617276#2
poste es in dem sticky thread!
02/19/2011 23:04 'Blutwolf#3
Quote:
Originally Posted by king7total View Post
say ("Du bist also der junge Abenteurer,")
say ("der mein bestes Pferd erhalten soll.")
say ("Nun gut.")
say ("Im gegenzug dafür verlange ich 5 Muscheln")
say ("Ich verhandele nicht!")
say_item_vnum(27987)

Da musste doch nur 1ne Muschel geben?!
02/19/2011 23:06 .Delta#4
Quote:
Originally Posted by .Amphion View Post
Da musste doch nur 1ne Muschel geben?!
:D das zeigt nur das Icon und den Itemnamen in der Quest an und hat nichts mit der Anzahl zu tun
02/19/2011 23:06 lfcmaus#5
du solltest stets den fehle rmit angeben der im vpc auftaucht
und setze questes pls in php format
ist einfach schöner und übersichtlicher anzusehen

PHP Code:
when pc.count_item(27987)==0 then
zu 
if pc.count_item(27987) < 0 then

when pc
.count_item(27987)==5 then
zu
if pc.count_item(27987) >=5 then


                say    
("Du willst mich übers Ohr hauen!")
hat das eingerückte nen bestimmten sin?
des gehört da nicht hin

dann hier
.:

            
local s select("Ich habe die Muscheln","Elender Abzocker!")
            if 
== 1 then //2 == bei if anweisungen unter einem local
                
set_state(fünfmuscheln)
                
pc.setqf("collect_count",0
                
pc.setqf("drink_drug",0
            else
                
say("Was?!?!")
                
say("Ich ein Abzocker?!")
                
say("Dann beantrag doch Harz IV!")
                
clear_letter()
                
q.done()
            
end

            say    
("")
wieder sowas eingerückte
das mir jetzt so beim ersten drüber schaun aufgefallen
02/19/2011 23:09 'Blutwolf#6
Quote:
Originally Posted by Delta619 View Post
:D das zeigt nur das Icon und den Itemnamen in der Quest an und hat nichts mit der Anzahl zu tun
Sry, habe keine Ahnung von Quest´s :) Dachte nur.
02/19/2011 23:15 .Delta#7
king7total
Du machst dir die Sache viel zu kompliziert und machst für jede Sache nen neuen state.
PHP Code:
quest erstequestkg begin
    state run begin
        when login 
or levelup with pc.get_level() >=35  begin
            set_state
(information)
        
end
    end
    state information begin
          when letter begin
            send_letter
("Kampfgaul")
        
end
        when button 
or info begin
            say_title
("Kampfgaul")
            
say("")
            
say("Du hast Level 35 erreicht,")
            
say("nun ist es dir erlaubt ein Pferd zu nutzen.")
            
say("Melde dich beim Stallburschen")
            
say("Er wird dir ein Pferd übergeben")
            
say("Jedoch musst du ihm 5 Muscheln bringen")
            
say("")
            
set_state(gotostallbursche)
        
end
    end
    state gotostallbursche begin
        when letter begin
            local v
=find_npc_by_vnum(20349)
            if 
0==v then
            
else
                
target.vid("__TARGET__"v"Geh zum Stallburschen")
            
end
        end
        when letter begin
            send_letter
("Zum Stallburschen! Los!")
        
end
        when button 
or info begin
            say_title
("Zum Stallburschen! Los!")
            
say("Gehe zum Stallburschen")
            
say("")
        
end
        when __TARGET__
.target.click begin
            target
.delete("__TARGET__")
            
say("Stallbursche :")
            
say("")
            
say("Du bist also der junge Abenteurer,")
            
say("der mein bestes Pferd erhalten soll.")
            
say("Nun gut.")
            
say("Im gegenzug dafür verlange ich 5 Muscheln")
            
say("Ich verhandele nicht!")
            
say_item_vnum(27987)
            
say("")
            
local s select("Ich habe die Muscheln","Elender Abzocker!")
            if 
== 1 then
                say
("Du hast meine Muscheln?")
                
say("Hurra, Herrlich")
                if 
pc.count_item(27987) <= 5 then
                    say
("Du hast garkeine Muscheln!")
                    
say("Du willst mich übers Ohr hauen!")
                    
say("Hau ab!")
                    return
                
end
                
if pc.count_item(27987) >= 5 then
                    say 
("Nun gut ein fairer Handel")
                    
say ("Hier ist dein Pferd")
                    
say ("Behandele es immer gut!")
                    
horse.set_level(11)
                    
horse.summon()
                    
horse.ride()
                    
pc.remove_item(279875)
                    
pc.give_item2(500521)
                    
pc.give_item2(50055200)
                    
set_state(__COMPLETE__)
                
end
            
elseif == 2 then
                say
("Was?!?!")
                
say("Ich ein Abzocker?!")
                
say("Dann beantrag doch Harz IV!")
                return
            
end
        end
    end
    state __COMPLETE__ begin
    end
end 
schau mal meine Version davon an (hab nicht getestet darum ka ob die geht)
02/19/2011 23:20 'Blutwolf#8
Schön das du dir die Mühe machst.

Hast nen THX verdient :)
02/19/2011 23:22 king7total#9
Quote:
Originally Posted by Delta619 View Post
king7total
Du machst dir die Sache viel zu kompliziert und machst für jede Sache nen neuen state.
PHP Code:
quest erstequestkg begin
    state run begin
        when login 
or levelup with pc.get_level() >=35  begin
            set_state
(information)
        
end
    end
    state information begin
          when letter begin
            send_letter
("Kampfgaul")
        
end
        when button 
or info begin
            say_title
("Kampfgaul")
            
say("")
            
say("Du hast Level 35 erreicht,")
            
say("nun ist es dir erlaubt ein Pferd zu nutzen.")
            
say("Melde dich beim Stallburschen")
            
say("Er wird dir ein Pferd übergeben")
            
say("Jedoch musst du ihm 5 Muscheln bringen")
            
say("")
            
set_state(gotostallbursche)
        
end
    end
    state gotostallbursche begin
        when letter begin
            local v
=find_npc_by_vnum(20349)
            if 
0==v then
            
else
                
target.vid("__TARGET__"v"Geh zum Stallburschen")
            
end
        end
        when letter begin
            send_letter
("Zum Stallburschen! Los!")
        
end
        when button 
or info begin
            say_title
("Zum Stallburschen! Los!")
            
say("Gehe zum Stallburschen")
            
say("")
        
end
        when __TARGET__
.target.click begin
            target
.delete("__TARGET__")
            
say("Stallbursche :")
            
say("")
            
say("Du bist also der junge Abenteurer,")
            
say("der mein bestes Pferd erhalten soll.")
            
say("Nun gut.")
            
say("Im gegenzug dafür verlange ich 5 Muscheln")
            
say("Ich verhandele nicht!")
            
say_item_vnum(27987)
            
say("")
            
local s select("Ich habe die Muscheln","Elender Abzocker!")
            if 
== 1 then
                say
("Du hast meine Muscheln?")
                
say("Hurra, Herrlich")
                if 
pc.count_item(27987) <= 5 then
                    say
("Du hast garkeine Muscheln!")
                    
say("Du willst mich übers Ohr hauen!")
                    
say("Hau ab!")
                    return
                
end
                
if pc.count_item(27987) >= 5 then
                    say 
("Nun gut ein fairer Handel")
                    
say ("Hier ist dein Pferd")
                    
say ("Behandele es immer gut!")
                    
horse.set_level(11)
                    
horse.summon()
                    
horse.ride()
                    
pc.remove_item(279875)
                    
pc.give_item2(500521)
                    
pc.give_item2(50055200)
                    
set_state(__COMPLETE__)
                
end
            
elseif == 2 then
                say
("Was?!?!")
                
say("Ich ein Abzocker?!")
                
say("Dann beantrag doch Harz IV!")
                return
            
end
        end
    end
    state __COMPLETE__ begin
    end
end 
schau mal meine Version davon an (hab nicht getestet darum ka ob die geht)
Danke, ich fang grad erst an also das ist meine erste Quest vor 1 stunde angefangen. Leider funktioniert deine Version immernoch nicht.
02/19/2011 23:23 .Delta#10
dann sag mal was vpc/putty für ne Fehlermelldung liefer.
Oder add mich in Sykpe oder icq
02/19/2011 23:24 'Blutwolf#11
Deine Quest Funktioniert zwar nicht, aber es ist ein Guter Vorschlag das Gaul mit Muscheln zu Uppen :)

@ king7total
02/19/2011 23:25 king7total#12
Quote:
Originally Posted by Delta619 View Post
dann sag mal was vpc/putty für ne Fehlermelldung liefer.
Oder add mich in Sykpe oder icq
Code:
segmentation fault (core dumped)
Das sagt putty
02/19/2011 23:27 .Delta#13
Quote:
Originally Posted by king7total View Post
Code:
segmentation fault (core dumped)
Das sagt putty
richtig in Hongkong list eingetragen?
also die letzte Zeile ne Freizeile usw.

Das ist bei mir dann meistens die Ursache für segmentation fault
02/19/2011 23:27 'Blutwolf#14
core dumped ist immer ein schlechtes zeichen.
02/19/2011 23:27 lfcmaus#15
er findet deine quest nicht/
ignoriert diese

Quote:
Originally Posted by .Amphion View Post
core dumped ist immer ein schlechtes zeichen.
welche rolle spielst du hier in dem Thread?
posthunter?