[SERVICE] Die Questkontrolle

07/28/2012 19:07 Fever1234#6391
ja wen man auf der catacomb map ist

Kriegergeist habs raus trostem danke
07/28/2012 19:32 sero61#6392
--------------------------------------------------------------------

MEIN PROBLEM IST sobald ich den NPC anklicke Passiert nichts ! muss ich was in der DB ändern?? On_klick ist auf 1(DB)
07/28/2012 19:50 Fever1234#6393
problem gelöst :D

sero du musst den npc auf on_click 0 stellen
07/28/2012 21:46 xXKimariXx#6394
@sero61 , nimm die hier, hab sie verbessert bei dir konnte man auch ohne die Perlen den VIP-Status erlangen.

PHP Code:
quest vip begin
    state vip begin
        when 20095.chat
."Willst du ein VIP sein?" begin
            say_title
("Hey Jo!")
            
say("")
            
say("Du gut aussehender mit starken Armen und")
            
say("einem knackigem Po willst doch bestimmt")
            
say("einen Premium Status erwerben oder?")
            
say_reward("Es Kostet dich:")
            
say_reward("5x Weiße Perlen")
            
say_reward("5x Blaue Perlen")
            
say_reward("5x Rote Perlen")
            
say("")
            
say_title("Bist du dir sicher?")
            
            
local s = select("Ja", "Nein")
            
            if 
s == 1 then
                
if pc.count_item(27994) == 5 and pc.count_item(27993) == 5 and pc.count_item(27992) == 5 then
                    pc
.remove_item(27994, 5)
                    
pc.remove_item(27993, 5)
                    
pc.remove_item(27992, 5)
                    
pc.give_item2(70017, 1)
                else
                
chat("Du hast nicht alle Items!")
                
end
            
else
                return
            
end
        end
    end
end 
07/28/2012 22:10 Poppitz#6395
PHP Code:
quest vip begin
    state start begin
        when 20095.chat
."Willst du ein VIP sein?" begin
            say_title
("Hey Jo!")
            
say("")
            
say("Du gut aussehender mit starken Armen und")
            
say("einem knackigem Po willst doch bestimmt")
            
say("einen Premium Status erwerben oder?")
            
say_reward("Es Kostet dich:")
            
say_reward("5x Weiße Perlen")
            
say_reward("5x Blaue Perlen")
            
say_reward("5x Rote Perlen")
            
say("")
            
say_title("Bist du dir sicher?")
            
            
local s = select("Ja", "Nein")
            
            if 
s == 1 then
                
if pc.count_item(27994) == 5 and pc.count_item(27993) == 5 and pc.count_item(27992) == 5 then
                    pc
.remove_item(27994, 5)
                    
pc.remove_item(27993, 5)
                    
pc.remove_item(27992, 5)
                    
pc.give_item2(70017, 1)
                else
                
chat("Du hast nicht alle Items!")
                
end
            
else
                return
            
end
        end
    end
end 
1. state muss "start" heißen.
07/28/2012 22:17 plechito#6396
Okey, i fixed the error, but timer doesn't work.
Thanks for answer.


Code:
quest lo2olympiada begin
	state start begin
    when 20002.take with item.vnum == 50153 begin
			say_title("Ah-Yu")
			say("Ahoj bojovníku,")
			say("našla jsem cestu do")
			say("dávno ztraceného města.")
			say("V tomot krásném městě můžeš ")
			say("vyhrát spoustu Yangů.")
			say("Chceš tam tedy vstoupit?")
			say("")
				local s=select("První mapa", "Druhá mapa", "Třetí mapa", "Ne")
					if s==1 then
						pc.warp(2401000,1613900)
          if pc.count_item (22010) >= 1 then 
          pc.remove_item(22010, 200)
				    timer("plechito_konec", 900) 
         end 
					elseif s==2 then
						pc.warp(2401000,1613900)
          if pc.count_item (22010) >= 1 then 
          pc.remove_item(22010, 200)
				    timer("plechito_konec", 900) 
         end 
					elseif s==3 then
						pc.warp(2401000,1613900)
          if pc.count_item (22010) >= 1 then 
          pc.remove_item(22010, 200)
				    timer("plechito_konec", 900) 
         end 
          end 
		end

		when plechito_konec.timer begin
      pc.warp(1805000, 905000)
     end

		when logout with pc.get_map_index() == 91 begin
      pc.warp(1805000, 905000)
     end
  end
end
07/28/2012 22:23 Kriegergeist^^#6397
müsste so gehen.
HTML Code:
quest lo2olympiada begin
	state start begin
		when 20002.take with item.vnum == 50153 begin
			say_title("Ah-Yu")
			say("Ahoj bojovníku,")
			say("našla jsem cestu do")
			say("dávno ztraceného města.")
			say("V tomot krásném městě můžeš ")
			say("vyhrát spoustu Yangů.")
			say("Chceš tam tedy vstoupit?")
			say("")
		local s=select("První mapa", "Druhá mapa", "Třetí mapa", "Ne")
		if s==1 then
			pc.warp(2401000,1613900)
        	if pc.count_item (22010) >= 1 then 
        		pc.remove_item(22010, 200)
      			end 
		elseif s==2 then
			pc.warp(2401000,1613900)
        	if pc.count_item (22010) >= 1 then 
         		pc.remove_item(22010, 200)
			end 
		elseif s==3 then
			pc.warp(2401000,1613900)
		if pc.count_item (22010) >= 1 then 
			pc.remove_item(22010, 200)
				end
			end
		end

		when plechito_konec.timer begin
			pc.warp(1805000, 905000)
			end

		when login with pc.get_map_index() == 91 begin
			timer("plechito_konec", 900) 
		end

		when logout with pc.get_map_index() == 91 begin
		pc.warp(1805000, 905000)
		end
	end
end
MfG
Kriegergeist^^
07/28/2012 23:09 Kevke1996#6398
Was ist hier dran Falsch :rtfm:
bei VPC bekomme ich die Nachricht:
PHP Code:
hallenrun.quest:26:Abort trap (core dumped) 
PHP Code:
quest hallenrun begin 
    state start begin 
        when 30101.
use begin 
            pc
.warp(999900,999900) 
        
end 
        when 8026.kill with pc
.get_map_index() == INDEX 
            d
.new_jump_all(184, 1012003 , 1015915) 
            
d.notice("Willkommen in der Halle der Hexe!") 
            
d.notice("zerstört alle Metin Ma-An's!") 
            
d.regen_file("data/dungeon/hallenrun_regen.txt") 
        
end 
        when 8027.kill with pc
.get_map_index() == INDEX 
        local a 
=d.getf("count") + 1 
            d
.setf("count", a) 
        if 
a == 15 then 
            d
.notice("Killt nun den Anführer!") 
            
d.spawn_mob(1192, 121, 134) 
        
end 
    end 
        when 1192.kill with pc
.get_map_index() == INDEX 
            d
.notice("Ihr habt die Herausforderungen der Halle der Hexe erfolgreich beendet!") 
            
d.notice("Ihr könnt euch nun eine Belohnung bei Seon-Hae abhohlen!") 
            
d.kill_all() 
            
d.spawn_mob(20095, 121, 134) 
        
end 
        when 20095.chat
."Belohnung" with pc.in_dungeon begin 
            say_title
("Seon-Hae:") 
            
say("Du hast es geschafft:") 
            
say("Du hast den Wasserdrachen,:") 
            
say("den Roten Drachen und:") 
            
say("Die Eishexe besiegt.:") 
            
say("Du bekommst folgendes:") 
            
say("50.000.000Yang") 
            
say("5.000 Rangpunkte") 
                
pc.change_money(50000000) 
            
pc.change_alignment(5000) 
            
wait() 
            
warp_to_village() 
        
end 
    end 
end 
Danke im Voraus
07/28/2012 23:39 Kriegergeist^^#6399
müsste eigentlich jetzt richtig sein
HTML Code:
quest hallenrun begin 
    state start begin 
        when 30101.use begin 
            pc.warp(999900,999900) 
        end 
        when 8026.kill with pc.get_map_index() == INDEX begin
            d.new_jump_all(184, 1012003 , 1015915) 
            d.notice("Willkommen in der Halle der Hexe!") 
            d.notice("zerstört alle Metin Ma-An's!") 
            d.regen_file("data/dungeon/hallenrun_regen.txt") 
        end 
        when 8027.kill with pc.get_map_index() == INDEX begin
        local a = d.getf("count") + 1 
        local b = d.getf("count")
            d.setf("count", a) 
        if b == 15 then 
            d.notice("Killt nun den Anführer!") 
            d.spawn_mob(1192, 121, 134) 
        end 
    end 
        when 1192.kill with pc.get_map_index() == INDEX begin
            d.notice("Ihr habt die Herausforderungen der Halle der Hexe erfolgreich beendet!") 
            d.notice("Ihr könnt euch nun eine Belohnung bei Seon-Hae abhohlen!") 
            d.kill_all() 
            d.spawn_mob(20095, 121, 134) 
        end 
        when 20095.chat."Belohnung" with pc.in_dungeon begin 
            say_title("Seon-Hae:") 
            say("Du hast es geschafft:") 
            say("Du hast den Wasserdrachen,:") 
            say("den Roten Drachen und:") 
            say("Die Eishexe besiegt.:") 
            say("Du bekommst folgendes:") 
            say("50.000.000Yang") 
            say("5.000 Rangpunkte") 
                pc.change_money(50000000) 
            pc.change_alignment(5000) 
            wait() 
            warp_to_village() 
        end 
    end 
end
Finde sonst keine Fehler

MfG
Kriegergeist^^
07/29/2012 00:11 .NighT™#6400
Quote:
Originally Posted by Kevke1996 View Post
Was ist hier dran Falsch :rtfm:
bei VPC bekomme ich die Nachricht:
PHP Code:
hallenrun.quest:26:Abort trap (core dumped) 
PHP Code:
quest hallenrun begin 
    state start begin 
        when 30101.
use begin 
            pc
.warp(999900,999900) 
        
end 
        when 8026.kill with pc
.get_map_index() == INDEX 
            d
.new_jump_all(184, 1012003 , 1015915) 
            
d.notice("Willkommen in der Halle der Hexe!") 
            
d.notice("zerstört alle Metin Ma-An's!") 
            
d.regen_file("data/dungeon/hallenrun_regen.txt") 
        
end 
        when 8027.kill with pc
.get_map_index() == INDEX 
        local a 
=d.getf("count") + 1 
            d
.setf("count", a) 
        if 
a == 15 then 
            d
.notice("Killt nun den Anführer!") 
            
d.spawn_mob(1192, 121, 134) 
        
end 
    end 
        when 1192.kill with pc
.get_map_index() == INDEX 
            d
.notice("Ihr habt die Herausforderungen der Halle der Hexe erfolgreich beendet!") 
            
d.notice("Ihr könnt euch nun eine Belohnung bei Seon-Hae abhohlen!") 
            
d.kill_all() 
            
d.spawn_mob(20095, 121, 134) 
        
end 
        when 20095.chat
."Belohnung" with pc.in_dungeon begin 
            say_title
("Seon-Hae:") 
            
say("Du hast es geschafft:") 
            
say("Du hast den Wasserdrachen,:") 
            
say("den Roten Drachen und:") 
            
say("Die Eishexe besiegt.:") 
            
say("Du bekommst folgendes:") 
            
say("50.000.000Yang") 
            
say("5.000 Rangpunkte") 
                
pc.change_money(50000000) 
            
pc.change_alignment(5000) 
            
wait() 
            
warp_to_village() 
        
end 
    end 
end 
Danke im Voraus
Hab jetzt nur einen groben Fehler gefunden, da du auch nur den unnötigsten Teil der Fehlermeldung gepostest hast, aber versuchs mal so:
PHP Code:
quest hallenrun begin 
    state start begin 
        when 30101.
use begin 
            pc
.warp(999900,999900) 
        
end 
        when 8026.kill with pc
.get_map_index() == INDEX begin
            d
.new_jump_all(184, 1012003 , 1015915) 
            
d.notice("Willkommen in der Halle der Hexe!") 
            
d.notice("zerstört alle Metin Ma-An's!") 
            
d.regen_file("data/dungeon/hallenrun_regen.txt") 
        
end 
        when 8027.kill with pc
.get_map_index() == INDEX begin
        local a 
=d.getf("count") + 1 
            d
.setf("count", a) 
        if 
a == 15 then 
            d
.notice("Killt nun den Anführer!") 
            
d.spawn_mob(1192, 121, 134) 
        
end 
    end 
        when 1192.kill with pc
.get_map_index() == INDEX begin
            d
.notice("Ihr habt die Herausforderungen der Halle der Hexe erfolgreich beendet!") 
            
d.notice("Ihr könnt euch nun eine Belohnung bei Seon-Hae abhohlen!") 
            
d.kill_all() 
            
d.spawn_mob(20095, 121, 134) 
        
end 
        when 20095.chat
."Belohnung" with pc.in_dungeon begin 
            say_title
("Seon-Hae:") 
            
say("Du hast es geschafft:") 
            
say("Du hast den Wasserdrachen,:") 
            
say("den Roten Drachen und:") 
            
say("Die Eishexe besiegt.:") 
            
say("Du bekommst folgendes:") 
            
say("50.000.000Yang") 
            
say("5.000 Rangpunkte") 
                
pc.change_money(50000000) 
            
pc.change_alignment(5000) 
            
wait() 
            
warp_to_village() 
        
end 
    end 
end 
Falls der Fehler immer noch besteht, schreib bitte die vollständige Fehlermeldung.
07/29/2012 01:04 Kevke1996#6401
erstmal Danke das ihr mir noch so spät zurückschreibt.

Ich habe die Quest jetzt geändert und bekomme auch keine fehlermeldung aber sie funktioniert trotzdem noch nicht

Ich möchte das wenn ich das item 30101 benutze (ist ein Ring) auf die map
(gm_guild_build 83200 0) (heisst glaube ich so) teleportiert werde.

Das funktioniert alles super

Auf der map steht 1 roter drache (2291)

Ich möchte das wenn ich diesen drachen getötet habe das alle auf dieser Map
in die nächste mal teleportiert werden (Halle der krieger in den SV:gm_guild_castle 999900 999900 ) das funktioniert leider nicht.

also kurz: Ich werde auf die Map gm_guild_build teleportiert ##Klappt
Ich töte den drachen und alle werden auf die nächste map teleportiert ## Klappt nicht

hier die quest
PHP Code:
quest hallenrun begin  
    state start begin  
        when 30101.
use begin  
            pc
.warp(83200,0)  
        
end  
        when 2291.kill with pc
.get_map_index() == 200 begin 
            d
.new_jump_all(191, 999900 , 999900)  
            
d.notice("Willkommen in der Halle der Hexe!")  
            
d.notice("zerstört alle Metin Ma-An's!")  
            
d.regen_file("data/dungeon/hallenrun_regen.txt")  
        
end  
        when 8027.kill with pc
.get_map_index() == 191 begin 
        local a 
=d.getf("count") + 1  
            d
.setf("count", a)  
        if 
a == 15 then  
            d
.notice("Killt nun den Anführer!")  
            
d.spawn_mob(1192, 121, 134)  
        
end  
    end  
        when 1192.kill with pc
.get_map_index() == 191 begin 
            d
.notice("Ihr habt die Herausforderungen der Halle der Hexe erfolgreich beendet!")  
            
d.notice("Ihr könnt euch nun eine Belohnung bei Seon-Hae abhohlen!")  
            
d.kill_all()  
            
d.spawn_mob(20095, 121, 134)  
        
end  
        when 20095.chat
."Belohnung" with pc.in_dungeon begin  
            say_title
("Seon-Hae:")  
            
say("Du hast es geschafft:")  
            
say("Du hast den Wasserdrachen,:")  
            
say("den Roten Drachen und:")  
            
say("Die Eishexe besiegt.:")  
            
say("Du bekommst folgendes:")  
            
say("50.000.000Yang")  
            
say("5.000 Rangpunkte")  
                
pc.change_money(50000000)  
            
pc.change_alignment(5000)  
            
wait()  
            
warp_to_village()  
        
end  
    end  
end 
ich hoffe ihr könnt mir helfen sitze schon etwas länger da drann

und sry wenn ich rechtschreibfehler eingebaut habe ich werde langsam müde :rtfm:
07/29/2012 02:26 Mijago#6402
- Stimmt MID 200?
- versuche statt
when 2291.kill with pc.get_map_index() == 200 begin
das:
when kill with npc.get_race() == 2291 and pc.get_map_index() == 200 begin
07/29/2012 02:35 Stamm1994#6403
Quote:
Originally Posted by 554 View Post
Eigendlich sollte dir ein Tipp helfen, da du ja anscheinend halbwegs questen kannst:
-Spielerbezogene Timer brechen bei Logouts ab, und da Teleporte von der Quest ähnlich (bzw. in manchen Teilen exakt) wie ein Logout behandelt wird, bricht der 60 Sekunden-Timer ab.

Daraus ergibt sich natürlich ein "Bug":
-> Man ist auf der Farmmap, loggt aus, loggt ein -> Timer weg, unbegrenztes farmen

Weiße was, ich schreib dir die Quest eben, editiere sie dann rein...

EDIT: hier, sollte klappen... hoffe ich x'D
PHP Code:
quest vipmap begin
    state start begin
        when 60001.
use begin
            say_title
("VIP-Farmmap Zutritt (1 Stunde)")
            
say("VIP-Farmmap zutritt")
            
say("Diese Karte ist sehr selten sie bringt dich")
            
say("auf die VIP farmmap aber nur für 1 Stunde")
            
say("Willst du wirklich dorthin?")
            
local s = select("Ja!", "..Nein")
            if 
s == 1 then
                pc
.setqf("timeleft", 60) -- hier die Stunde/Wert eintragen
                pc
.warp(8483300, 10000)
            else
                return
            
end
        end
        
        when login begin
            
if pc.get_map_index() == FARMMAPINDEX then
                pc
.setqf("time", get_time())
                
timer("checktime", pc.getqf("timeleft"))
            else
                
pc.setqf("timeleft", 60) -- hier selben(!) Wert wie oben eintragen
            end
        end
        
        when checktime
.timer begin
            warp_to_village
()
        
end
        
        when logout with pc
.get_map_index() == FARMMAPINDEX begin
            pc
.setqf("timeleft", 60 - (get_time() - pc.getqf("time"))) -- hier selben(!) Wert wie oben eintragen, also die 60 editieren
        end
    end
end 
die quest funktioniert immer noch nicht
in Virtual box beim ausführen der make.py
keine fehler
aber wenn ich das item use teleportiert das item mich hin
aber nichtmehr zurück nach angegebener zeit

bitte helft mir -.-

Quote:
Originally Posted by Kevke1996 View Post
erstmal Danke das ihr mir noch so spät zurückschreibt.

Ich habe die Quest jetzt geändert und bekomme auch keine fehlermeldung aber sie funktioniert trotzdem noch nicht

Ich möchte das wenn ich das item 30101 benutze (ist ein Ring) auf die map
(gm_guild_build 83200 0) (heisst glaube ich so) teleportiert werde.

Das funktioniert alles super

Auf der map steht 1 roter drache (2291)

Ich möchte das wenn ich diesen drachen getötet habe das alle auf dieser Map
in die nächste mal teleportiert werden (Halle der krieger in den SV:gm_guild_castle 999900 999900 ) das funktioniert leider nicht.

also kurz: Ich werde auf die Map gm_guild_build teleportiert ##Klappt
Ich töte den drachen und alle werden auf die nächste map teleportiert ## Klappt nicht

hier die quest

when 8027.kill with pc.get_map_index() == 191 begin
local a =d.getf("count") + 1
d.setf("count", a)
if a == 15 then
d.notice("Killt nun den Anführer!")
d.spawn_mob(1192, 121, 134)
end
end
when 1192.kill with pc.get_map_index() == 191 begin
d.notice("Ihr habt die Herausforderungen der Halle der Hexe erfolgreich beendet!")
d.notice("Ihr könnt euch nun eine Belohnung bei Seon-Hae abhohlen!")
d.kill_all()
d.spawn_mob(20095, 121, 134)
end
ROT MAKIERT ist da nicht ein end zuviel?
07/29/2012 02:39 Kevke1996#6404
die 200 stimmt

ich habe das mal geändert
PHP Code:
versuche statt 
when 2291.kill with pc
.get_map_index() == 200 begin 
das
:
when kill with npc.get_race() == 2291 and pc.get_map_index() == 200 begin 
hatt aber auch nicht geklappt ich werde immer noch nicht nach dem ich den drachen getötet habe aus der map teleportiert

@ Stamm1994
wenn ich das end wegmache bekomme ich wieder eine fehlermeldung in vpc wenn ich es da lasse aber nicht also denke ich mal das es dahin muss^^

hier noch die quest
07/29/2012 09:04 Mijago#6405
Lösche mal die Nullen hinter 9999 9999
d.new_jump_all Funktioniert nach folgendem Schema:
PHP Code:
d.new_jump_all(MID, X,Y) 
wobei X sich so zusammensetzt:
Kooridinate der Map (bei DT zB 2048) plus den lokalen X-Wert . (Und das OHNE die doppelnullen!)
Bei y Das selbe, nur mit den Y-Werten.


lg Mijago
Wenn die Kooridinaten nicht stimmen, will der Metin2 Core oft auch nicht porten :D