Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 16:10

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[SERVICE] Die Questkontrolle

Discussion on [SERVICE] Die Questkontrolle within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old 02/05/2016, 11:19   #12166
 
.Delta's Avatar
 
elite*gold: 26
Join Date: Mar 2010
Posts: 3,765
Received Thanks: 2,661
naja im Prinzip hast du das schon,
du musst nur kleiner und größer vertauschen^^
.Delta is offline  
Old 02/05/2016, 16:32   #12167
 
elite*gold: 0
Join Date: Jan 2016
Posts: 14
Received Thanks: 0
Quote:
Originally Posted by .Delta View Post
naja im Prinzip hast du das schon,
du musst nur kleiner und größer vertauschen^^
Hab ich getan, aber ist immernoch nicht richtig.
Wenn der Spieler nicht genug Orkzähne hat erscheint jetzt der text aber wenn er alle Orkzähne hat dann kommt garkein text und man kann nicht abschließen/keine belohnung. Bitte um hilfe.

PHP Code:
quest Sammelquest begin
    state start begin
        when login 
or levelup with pc.get_level() >= 30 begin
            set_state
(start)
        
end
    end

    state start begin
        when letter begin
            local v 
find_npc_by_vnum(20381)
            if 
!= 0 then target.vid("__TARGET__"v"Sammelquest")
            
end
            send_letter
("Sammelquest")
        
end

        when button 
or info begin
            say_title
("Sammelquest")
            
say("")
            
say("Konfuzius sucht dich!")
            
say("")
            
say_reward("Sprich mit Konfuzius!")
            
say("")
        
end
        
        when __TARGET__
.target.click or 20381.chat."Sammelquest" begin
            target
.delete("__TARGET__")
            
say("Konfuzius:")
            
say("")
            
say("Bringe mir 5x Orkzahn.")
            
say("")
            
say_item_vnum(30006)
            
say("")
            
say("Belohnung:")
            
say("5.000.000 Yang")
            
say("1x Karotte")
            
say("")
            
say_reward("Finde 5x Orkzahn.")
            
say("")
            
set_state(collect_orcteeth
            
pc.setqf("collect_count",0
        
end 
    end 
    
    state collect_orcteeth begin 
        when letter begin 
            send_letter
("Sammelquest"
        
end 
        
        when button 
or info begin 
            say_title
("Sammelquest"
            
say(""
            
say("Finde 5x Orkzahn und bringe"
            
say("sie zu Konfuzius."
            
say(""
            
say_item_vnum(30006)  
            
say(""
        
end 
        
        when 20381.chat
."Sammelquest" with pc.count_item(30006)<5 begin 
            say
("Konfuzius:")
            
say("")
            
say("Ich benoetige 5x Orkzahn.")
            
say("Du hast nicht genug.")
            
say("")
        
end

        when 20381.chat
."Sammelquest" with pc.count_item(30006)>5 begin 
            say
("Konfuzius:"
            
say("")
            
say("Gut gemacht."
            
say("Du erhaelst deine Belohnung."
            
say(""
            
say("Belohnung:")
            
say("5.000.000 Yang")
            
say("1x Karotte")
            
say("")
            
pc.remove_item("30006"5
            
pc.change_money(5000000)
            
pc.give_item2(500551)
            
clear_letter()
            
set_state(__COMPLETE__)
        
end
    end

    state __COMPLETE__ begin
    end  
end 
Falo55 is offline  
Old 02/05/2016, 16:44   #12168
 
.Delta's Avatar
 
elite*gold: 26
Join Date: Mar 2010
Posts: 3,765
Received Thanks: 2,661
so wie du es momentan hast, würde der fall dass du genau 5 Orkzähne im Inventar hast nicht berücksichtigt werden.
Dein Freund ist:
PHP Code:
when 20381.chat."Sammelquest" with pc.count_item(30006) >= 5 begin 
PHP Code:
quest Sammelquest begin 
    state start begin 
        when login 
or levelup with pc.get_level() >= 30 begin 
            set_state
(start
        
end 
    end 

    state start begin 
        when letter begin 
            local v 
find_npc_by_vnum(20381
            if 
!= 0 then target.vid("__TARGET__"v"Sammelquest"
            
end 
            send_letter
("Sammelquest"
        
end 

        when button 
or info begin 
            say_title
("Sammelquest"
            
say(""
            
say("Konfuzius sucht dich!"
            
say(""
            
say_reward("Sprich mit Konfuzius!"
            
say(""
        
end 
         
        when __TARGET__
.target.click or 20381.chat."Sammelquest" begin 
            target
.delete("__TARGET__"
            
say("Konfuzius:"
            
say(""
            
say("Bringe mir 5x Orkzahn."
            
say(""
            
say_item_vnum(30006
            
say(""
            
say("Belohnung:"
            
say("5.000.000 Yang"
            
say("1x Karotte"
            
say(""
            
say_reward("Finde 5x Orkzahn."
            
say(""
            
set_state(collect_orcteeth)  
            
pc.setqf("collect_count",0)  
        
end  
    end  
     
    state collect_orcteeth begin  
        when letter begin  
            send_letter
("Sammelquest")  
        
end  
         
        when button 
or info begin  
            say_title
("Sammelquest")  
            
say("")  
            
say("Finde 5x Orkzahn und bringe")  
            
say("sie zu Konfuzius.")  
            
say("")  
            
say_item_vnum(30006)   
            
say("")  
        
end  

        when 20381.chat
."Sammelquest" begin  
            
if pc.count_item(30006) < 5 then
                say
("Konfuzius:"
                
say(""
                
say("Ich benoetige 5x Orkzahn."
                
say("Du hast nicht genug."
                return
            
end
            say
("Konfuzius:")  
            
say(""
            
say("Gut gemacht.")  
            
say("Du erhaelst deine Belohnung.")  
            
say("")  
            
say("Belohnung:"
            
say("5.000.000 Yang"
            
say("1x Karotte"
            
say(""
            
pc.remove_item("30006"5)  
            
pc.change_money(5000000
            
pc.give_item2(500551
            
clear_letter() 
            
set_state(__COMPLETE__
        
end 
    end 

    state __COMPLETE__ begin 
    end   
end 
.Delta is offline  
Old 02/06/2016, 01:02   #12169
 
Docinfo's Avatar
 
elite*gold: 200
Join Date: Jan 2013
Posts: 47
Received Thanks: 6
Bekomme immer compile fehler, bräuchte diese für alle Klassen als Start quest die sich sofort öffnet, wie diese Willkommensnachricht.


PHP Code:
quest firstlogin begin
 state start begin
  when login with pc
.getqf("firstlogin") == 0 begin
   pc
.setqf("firstlogin"1)
   
timer("firstlogin"3)
  
end
  when firstlogin
.timer begin
   say
("Ist es vorbei? Bin ich gestorben?")
   
say("Ist das hier das Paradies?")
   
say("Ein Stechen. Dazu das Gefühl von Wärme. Ich kenne")
   
say("diese Wärme. Es ist Blut. Warmes Blut.")   
   
say("Doch keine Erlösung. Doch kein Paradies. Vielleicht hat Naomi auch überlebt?")
   
say("Ich muss aufwachen.")
   
say("")
   
wait()
   
say("Das schulde ich ihr. Meine Sinne scheinen wieder zu funktionieren. Wellenrauschen.")
   
say("Die hohen Stimmen der Vögel.")
   
say("Und Sand, ich spüre definitiv Sand. Ich werde wütend. Das war unser Leben, wir haben ihnen nichts getan..")
   
say("Ich darf nicht abschweifen.")
   
say("Ich muss die Augen öffnen. Für Naomi.")
   
say("")
   
wait()
   
say("Strand, anscheinend eine Insel. 
   say("
Und WasserViel Wasser.")
   say("
Dorteine KisteIch sollte sie an mich nehmen.")
  end
 end
end 
Docinfo is offline  
Old 02/06/2016, 03:51   #12170
 
Chaosnightx3's Avatar
 
elite*gold: 0
Join Date: Jun 2012
Posts: 340
Received Thanks: 114
Quote:
Originally Posted by Docinfo View Post
Bekomme immer compile fehler, bräuchte diese für alle Klassen als Start quest die sich sofort öffnet, wie diese Willkommensnachricht.


PHP Code:
quest firstlogin begin
 state start begin
  when login with pc
.getqf("firstlogin") == 0 begin
   pc
.setqf("firstlogin"1)
   
timer("firstlogin"3)
  
end
  when firstlogin
.timer begin
   say
("Ist es vorbei? Bin ich gestorben?")
   
say("Ist das hier das Paradies?")
   
say("Ein Stechen. Dazu das Gefühl von Wärme. Ich kenne")
   
say("diese Wärme. Es ist Blut. Warmes Blut.")   
   
say("Doch keine Erlösung. Doch kein Paradies. Vielleicht hat Naomi auch überlebt?")
   
say("Ich muss aufwachen.")
   
say("")
   
wait()
   
say("Das schulde ich ihr. Meine Sinne scheinen wieder zu funktionieren. Wellenrauschen.")
   
say("Die hohen Stimmen der Vögel.")
   
say("Und Sand, ich spüre definitiv Sand. Ich werde wütend. Das war unser Leben, wir haben ihnen nichts getan..")
   
say("Ich darf nicht abschweifen.")
   
say("Ich muss die Augen öffnen. Für Naomi.")
   
say("")
   
wait()
   
say("Strand, anscheinend eine Insel. 
   say("
Und WasserViel Wasser.")
   say("
Dorteine KisteIch sollte sie an mich nehmen.")
  end
 end
end 
Erster Fix: say("Strand, anscheinend eine Insel")

Du hast vergessen den say zu schließen mit einem ") ^^
Chaosnightx3 is offline  
Old 02/06/2016, 14:08   #12171
 
Docinfo's Avatar
 
elite*gold: 200
Join Date: Jan 2013
Posts: 47
Received Thanks: 6
Quote:
Originally Posted by Chaosnightx3 View Post
Erster Fix: say("Strand, anscheinend eine Insel")

Du hast vergessen den say zu schließen mit einem ") ^^
Löst das problem auch nicht :P
Docinfo is offline  
Old 02/07/2016, 23:01   #12172
 
elite*gold: 0
Join Date: Jan 2010
Posts: 57
Received Thanks: 1
Hey folgendes Problem.

Ich versuche gerade in einer Quest ein Punktesystem hinzuzufügen. Bei bestimmten kills von Mobs sollen Punkte in eine spalte in der Player Tabelle addiert werden. Mein Problem ist das in jeder Variation immer nur 1 Punkt dazu addiert wird. Über Questflags will ich es nicht lösen kann aber alternativ darauf ausweichen.

PHP Code:
when kill with npc.get_race() == 3091 or 3191 or 3291 or 3491 or 3591 or 3691 or 3891 and not npc.is_pc() begin
              local p 
1
         local pvm_now 
tonumber(mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';")[1][1])
        
mysql_query("UPDATE player.player SET pvmpunkte = '"..pvm_now.."'+'"..p.."' WHERE name = '"..pc.get_name().."';")
        
end

        when kill with npc
.get_race() == 3391 or 3791 and not npc.is_pc() begin
               local px 
15
          local pvm_now 
tonumber(mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';")[1][1])
          
mysql_query("UPDATE player.player SET pvmpunkte='"..pvm_now.pvmpunkte[1]+px.."' WHERE name ='"..pc.get_name().."';")
         
end

         when kill with npc
.get_race() == 6091 or 6191 and not npc.is_pc() begin
               local pxy 
25
          local pvm_now 
mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';"
          
mysql_query("UPDATE player.player SET pvmpunkte = pvmpunkte+25 WHERE name = '"..pc.get_name().."' LIMIT 1")
         
end 
Jede der drei Variationen funktioniert aber es wird nur ein Punkt addiert.
youtube9 is offline  
Old 02/08/2016, 11:23   #12173
 
Docinfo's Avatar
 
elite*gold: 200
Join Date: Jan 2013
Posts: 47
Received Thanks: 6
Hey, erstmal zur Funktion der Quest.

Kurz und knapp(wie es sein sollte):
Nach Charactererstellung:

Questrolle die zu NPC X führt
NPC X gibt Quest an Spieler
Spieler erledigt 5Metins,1 Eoten (Boss), sucht 5 Schatzkarten
Spieler erhlt Info's in der Questrolle links, wieviele noch fehlen
(Karten,Mobs)
Spieler kehrt zu NPC X zurück
Wird Teleportiert je nach Reich.

Ausführliche Funktion:

Darin enthalten sind natürlich fehler, die behoben werden sollen.
Das wären dann diese.

Fehler in der Quest:

Die Quest:
Docinfo is offline  
Old 02/08/2016, 12:12   #12174

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Quote:
Originally Posted by youtube9 View Post
Hey folgendes Problem.

Ich versuche gerade in einer Quest ein Punktesystem hinzuzufügen. Bei bestimmten kills von Mobs sollen Punkte in eine spalte in der Player Tabelle addiert werden. Mein Problem ist das in jeder Variation immer nur 1 Punkt dazu addiert wird. Über Questflags will ich es nicht lösen kann aber alternativ darauf ausweichen.

PHP Code:
when kill with npc.get_race() == 3091 or 3191 or 3291 or 3491 or 3591 or 3691 or 3891 and not npc.is_pc() begin
              local p 
1
         local pvm_now 
tonumber(mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';")[1][1])
        
mysql_query("UPDATE player.player SET pvmpunkte = '"..pvm_now.."'+'"..p.."' WHERE name = '"..pc.get_name().."';")
        
end

        when kill with npc
.get_race() == 3391 or 3791 and not npc.is_pc() begin
               local px 
15
          local pvm_now 
tonumber(mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';")[1][1])
          
mysql_query("UPDATE player.player SET pvmpunkte='"..pvm_now.pvmpunkte[1]+px.."' WHERE name ='"..pc.get_name().."';")
         
end

         when kill with npc
.get_race() == 6091 or 6191 and not npc.is_pc() begin
               local pxy 
25
          local pvm_now 
mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';"
          
mysql_query("UPDATE player.player SET pvmpunkte = pvmpunkte+25 WHERE name = '"..pc.get_name().."' LIMIT 1")
         
end 
Jede der drei Variationen funktioniert aber es wird nur ein Punkt addiert.
Du musst bei jeder Bedingung auch angeben, mit was du vergleichen möchtest.
Am Beispiel des ersten Triggers erkläre ich dir mal kurz, was für die Quest da steht:
Code:
when kill with npc.get_race() == 3091 or true or true or true or true or true or true and not npc.is_pc() begin
(in Lua ist alles true, was nicht nil oder false ist)

In SQL kann man übrigens auch direkt im Update den aktuellen Wert nutzen, dafür musst du kein Select vorher machen.

Ich hab dir mal alles in einen Trigger gemacht:
Code:
when kill with not npc.is_pc() begin
	_G.inList = _G.inList or function(value, list)
		for k,v in ipairs(list) do
			if v == value then
				return true
			end
		end
		
		return false
	end
	
	local mobGroupToPvmPoints = {
		--AB HIER BEARBEITEN
		[{3091, 3191, 3291, 3491, 3591, 3691, 3891}] = 1,
		[{3391, 3791}] = 15,
		[{6091, 6191}] = 25,
		--AB HIER NICHT MEHR!
	}
	local killedMob = npc.get_race()
	local pvmPoints = 0
	
	for mobGroup, groupPoints in pairs(mobGroupToPvmPoints) do
		if inList(killedMob, mobGroup) then
			pvmPoints = pvmPoints + groupPoints
		end
	end
	
	if pvmPoints == 0 then return end
	
	mysql_query(string.format("UPDATE player.player SET pvmpunkte = pvmpunkte + %d WHERE id = %d;", pvmPoints, pc.get_player_id()))
end
Da kannst du beliebig viele Mobgruppen hinzufügen. Aktuell ist es so, wie du es gewollt hast.
rollback is offline  
Thanks
1 User
Old 02/09/2016, 01:45   #12175
 
elite*gold: 0
Join Date: Feb 2016
Posts: 25
Received Thanks: 1
kann mir wer helfen paar quest zu machen ? :P
SkySmAsH2 is offline  
Old 02/10/2016, 00:54   #12176
 
elite*gold: 0
Join Date: Jan 2012
Posts: 195
Received Thanks: 19
when doesnt have begin-end clause. (()
Error occured on compile

Supermgking is offline  
Old 02/10/2016, 04:00   #12177
 
Resqu's Avatar
 
elite*gold: 110
Join Date: Jun 2015
Posts: 85
Received Thanks: 22
Hallo Habe Problemm mit dc Labyrinth ebene die portale gehn nicht Könnt ihr mir die Labyrinth ebene überspringen so das ich in der von 3 auf 5 ebene komm wäre echt nice wenn ihr mir soweit helfen könnnt#


PHP Code:
quest devilcatacomb_zone begin
    state start begin
    
    
function is_closed()
        return (
game.get_event_flag("dc_closed") > 0)    --close dialog
    end
    
    
function setting()
        return
        {

        [
"base"]={["x"] = 3072  , ["y"]= 12032 ,},
        [
"floor1_s"] = { ["x"] = 20, ["y"] = 20, },
        [
"floor1_e"] = { ["x"] = 500, ["y"] = 470,},
        [
"floor2_s"] = { ["x"] = 510, ["y"] = 18, },
        [
"floor2_e"] = { ["x"] = 978, ["y"] = 470,},
        [
"floor1_entry"] = {["x"] = 73, ["y"] = 63,},
        [
"floor2_entry"] = {["x"] = 550, ["y"] = 45,},
        [
"floor3_entry"] = {["x"] = 1378, ["y"] = 249,},
        [
"floor4_entry"] = {["x"] = 70, ["y"] = 592,},
        [
"floor5_entry"] = {["x"] = 846, ["y"] = 898},
        [
"floor6_entry"] = {["x"] = 1362, ["y"] = 666},
        [
"floor7_entry"] = {["x"] = 73, ["y"] = 1156},

        [
"map_idx"] = 216,
        [
"rag"] = 30311,

        [
"devil_king"] = 2591,

        [
"reapers_credit1"] = 30319,
        [
"reapers_credit2"] = 30320,
        [
"reapers_credit3"] = 76002,

        [
"floor3_stone"] = 8038,  
        [
"floor3_stone_pos"] = {
                {
1366,    150},
                {
1366,    351},
                {
1234,    365},
                {
1234,    140},
                {
1150,    135},
                {
1130,    365},
                {
1135,    253}
        },

        [
"mob_regen_file_path"] = "data/dungeon/devilcatacomb/",
        [
"floor4_regen_file"] = {"devilcatacomb_floor4_regen1.txt",
                               
"devilcatacomb_floor4_regen2.txt",
                               
"devilcatacomb_floor4_regen3.txt",
                               
"devilcatacomb_floor4_regen4.txt",
                               
"devilcatacomb_floor4_regen5.txt"} ,

        [
"credit_stone"] = 30101,
        [
"credit_stone_pos"] = {307,323},
        [
"floor2_stone"] = 30103,
        [
"floor2_stone_pos"] = {741,217},
        [
"floor2_merchant_npc"] = 20368,
        [
"floor2_merchant_npc_pos"] = {734,214},
        
        [
"floor4_npc"] = 30104,
        [
"floor4_npc_pos"] = {500717},

        [
"devil_king_pos"] = {{673,829},{691,638},{848,568},{1026,642},{1008,862}},

        [
"unlock_stone"] = 30312,
        [
"floor5_stone"] = 30102,
        [
"floor5_stone_pos"] = {848735},

        [
"devil_great_king"] = 2597 ,
        [
"devil_great_king_pos"] = {1303,704},
        [
"devil_emperor"] = 2598,
        [
"devil_emperor_pos"] = {74,1103},

        [
"dc2_door_set_size"] = {4,2,3,2},
        [
"dc2_door_set1"] = {
                                {{
30111,    566,    117,    5},{30112,  562,    311,    5,},{30118663,    434,    7},{30119,  881,    434,    7}},
                                {{
30116,    743,    390,    3},{30119,  612,    251,    1,}},
                                {{
30113,    654,    211,    5},{30111,  707,    338,    7,},{30112775,    336,    7}},
                                {{
30117,    733,    294,    3},{30113,  694,    271,    1,}}
                            },
        [
"dc2_door_set2"] = {
                                {{
30115,    942,    141,    5},{30116,  942,    245,    5},{30117,  942,    321,    5},{30115,  763,    647}},
                                {{
30118,    643,    116,    3},{30114,  900,    167,    1}},
                                {{
30114,    850,    293,    5},{30113,  715,    164,    7},{30114,  817,    162,    7}},
                                {{
30111,    802,    277,    1},{30112,  800,    241,    1}}
                            },
        }
    
end
        when login begin
            local setting 
devilcatacomb_zone.setting()
            
local idx pc.get_map_index()
            if 
idx >= (setting.map_idx 10000) and idx < ((setting.map_idx 1) * 10000then
--                pc.set_warp_location(655914992)         -----------¾Æ±Íµ¿±¼ ÁÂÇ¥·Î
                local level 
d.getf("level")
                -- 
warp locationÀÌ 0,0 À̸頽ýºÅÛ »óÀ¸·ÎÁ¾·á ½ÃÁ¾·á À§Ä¡¸¦ ½ÃÀÛ À§Ä¡·Î ÀúÀåÇÑ´Ù.
                
d.set_warp_location (000)
                    
                if 
level == 2 then
                    say
(gameforge.devilcatacomb_zone._10_say)
                    
say(string.format(gameforge.devilcatacomb_zone._20_say60))
                elseif 
level == pc.getqf ("level"then
--                    say ("³«¿ÀµÇÁö ¾Ê±â À§ÇØ µ¿·áµé°ú ÇÕ·ùÇϽʽÿÀ.")
                    
say(gameforge.devilcatacomb_zone._30_say)
                else
                    
say(gameforge.devilcatacomb_zone._40_say)
--                    
say ("´ç½ÅÀº ³«¿ÀµÇ¾ú½À´Ï´Ù. ¿ë½ÅÀÇ ÈûÀ» ºô¾î Àá½Ã µÚ µ¿±¼ ¹ÛÀ¸·Î À̵¿ÇÕ´Ï´Ù.")
                    
timer ("devilcatacomb_ban_timer"5)
                
end
            end
            
if idx == setting.map_idx then
                pc
.setf("devilcatacomb_zone","last_exit_time"get_global_time())
                -- 
2ÃþÀÌ»óÀ̸éÂѰܳª
                
if pc.get_x() < setting.floor1_s.setting.base.x
                    
or pc.get_y() < setting.floor1_s.setting.base.y
                    
or pc.get_x() > setting.floor1_e.setting.base.x
                    
or pc.get_y() > setting.floor1_e.setting.base.y
                then
                    
-- ¾Æ±Íµ¿±¼ ÀÔ±¸·Î
--                    if not is_test_server() then
                        say
(gameforge.devilcatacomb_zone._40_say)
                        
timer ("devilcatacomb_ban_timer"5)
--                    
end
                
else 
                    -- 
¾Æ±Íµ¿±¼ ÀÔ±¸·Î
--                    pc.set_warp_location(655914992)
                    
say(gameforge.devilcatacomb_zone._50_say)
                
end
            end
        end

        when logout begin
            local idx 
pc.get_map_index()
            
local setting devilcatacomb_zone.setting()
            if 
idx == setting.map_idx or idx >= (setting.map_idx 10000) and idx < ((setting.map_idx 1) * 10000then
                pc
.setf("devilcatacomb_zone","last_exit_time"get_global_time())
            
end
        end

        when devilcatacomb_ban_timer
.timer begin
            pc
.warp((5914)*100, (992)*10065)
        
end

        when warp_timer
.timer begin
            local level 
d.getf("level")
            
local level_switch = {
                [
3] = gameforge.devilcatacomb_zone._60_say,
                [
4] = gameforge.devilcatacomb_zone._70_say,
                [
5] = gameforge.devilcatacomb_zone._80_say,
                [
6] = gameforge.devilcatacomb_zone._90_say,
            }
            
local t 3600 -(get_global_time() - d.getf("enter_time"))
            
local t_r math.mod (t60)
            
local t_m = (t_r) / 60
            d
.notice level_switch[level] )
            
d.notice(string.format(gameforge.devilcatacomb_zone._20_sayt_m))
            
d.set_warp_location (000)
        
end

        when devilcatacomb_man
.chat.gameforge.devilcatacomb_zone._100_npcChat with not devilcatacomb_zone.is_closed() begin
            local setting 
devilcatacomb_zone.setting()
            if 
pc.get_level() < 75 then
                say
(gameforge.devilcatacomb_zone._110_say)
            --elseif 
pc.getf("deviltower_zone","9_done") == 0 then
                
--say(gameforge.devilcatacomb_zone._120_say)
            elseif ((
get_global_time() - pc.getf("devilcatacomb_zone","last_exit_time")) < 0then
                say
(gameforge.devilcatacomb_zone._130_say)
            else
                
say(gameforge.devilcatacomb_zone._140_say)
                
local s select(gameforge.devilcatacomb_zone._150_selectgameforge.devilcatacomb_zone._160_select)
                if 
== 1 then
                    pc
.warp ((setting.floor1_entry.setting.base.)* 100, (setting.floor1_entry.setting.base.y) * 100)
                
end
            end
        end
    
        
-- ¸ó½ºÅͰ¡ Á×À¸¸é ¹ß»ýÇϴ À̺¥Æ®.
        
when kill begin
            local setting 
devilcatacomb_zone.setting()
            -- 
¾Æ±Íµ¿±¼ 1ÃþÀ̸é 1È®·ü·Î ±Ý½Ã°ÇÀ» µå¶øÇÑ´Ù.
            if 
pc.get_x() > setting.floor1_s.setting.base.x
                    
and pc.get_y() > setting.floor1_s.setting.base.y
                    
and pc.get_x() < setting.floor1_e.setting.base.x
                    
and pc.get_y() < setting.floor1_e.setting.base.y then
                local j 
number(1100)
                if 
== 1 then
                    game
.drop_item (setting.rag1)
                
end
            end
        end

    
function spawn_doors ()
        
local setting devilcatacomb_zone.setting()
        for 
1do
            
local mob_set setting.dc2_door_set1[i]
            
local set_size setting.dc2_door_set_size[i]
            for 
1set_size do
                
d.set_unique (i.."_1_"..jd.spawn_mob_dir (mob_set[j][1], mob_set[j][2], mob_set[j][3], mob_set[j][4]))
            
end
            mob_set 
setting.dc2_door_set2[i]
            for 
1set_size do
                
d.set_unique (i.."_2_"..jd.spawn_mob_dir (mob_set[j][1], mob_set[j][2], mob_set[j][3], mob_set[j][4]))
            
end
        end
    end
        
-- ±Ý½Ã°ÇÀ» ³ªÂûÀÎÁõ¼®¿¡ µå·¡±×Çϸé 2ÃþÀ¸·Î º¸³½´Ù2ÃþºÎÅʹ ´øÀüÀÌ´Ù.
        
when devilcatacomb_credit_stonetake  begin
            local setting 
devilcatacomb_zone.setting()
        
            if 
item.vnum == setting.rag then 
                
if not party.is_party() then
                    say
(gameforge.devilcatacomb_zone._170_say)
                    return
                elseif 
party.is_in_dungeon() then
                    say
(gameforge.devilcatacomb_zone._180_say)
                    return
                
end

                item
.remove()
                
say(gameforge.devilcatacomb_zone._190_say)
                
wait()
                
say(gameforge.devilcatacomb_zone._200_say)
                
wait()
                
d.new_jump_party (setting.map_idxsetting.floor2_entry.setting.base.x  setting.floor2_entry.setting.base.)
                
d.setqf2("devilcatacomb_zone","level"2)
                
d.setf ("level",2)
                
d.regen_file (setting.mob_regen_file_path.."dc_2f_regen.txt")
                
                
d.spawn_mob (setting.floor2_merchant_npcsetting.floor2_merchant_npc_pos[1], setting.floor2_merchant_npc_pos[2])
                
d.spawn_mob (setting.floor2_stonesetting.floor2_stone_pos[1], setting.floor2_stone_pos[2])
                
                
devilcatacomb_zone.spawn_doors ()
                
server_timer('devilcatacomb_45m_left_timer',60 15d.get_map_index())
                
d.setf("enter_time"get_global_time())
            
end    
        end
        
        when devilcatacomb_45m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice(string.format(gameforge.devilcatacomb_zone._20_say45))
                
server_timer('devilcatacomb_30m_left_timer'60 15get_server_timer_arg())
            
end
        end

        when devilcatacomb_30m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice(string.format(gameforge.devilcatacomb_zone._20_say30))
                
server_timer('devilcatacomb_15m_left_timer'60 15get_server_timer_arg())
            
end
        end
    
        when devilcatacomb_15m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice(string.format(gameforge.devilcatacomb_zone._20_say15))
                
server_timer('devilcatacomb_5m_left_timer'60 10get_server_timer_arg())
            
end
        end

        when devilcatacomb_5m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice(string.format(gameforge.devilcatacomb_zone._20_say5))
                
server_timer('devilcatacomb_1m_left_timer'60 4get_server_timer_arg())
            
end
        end
        
        when devilcatacomb_1m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice(string.format(gameforge.devilcatacomb_zone._20_say1))
                
server_timer ("devilcatacomb_0m_left_timer"60 1get_server_timer_arg())
            
end
        end
        
        when devilcatacomb_0m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice (gameforge.devilcatacomb_zone._210_dNotice)
                
d.set_warp_location (655914992)
                
server_timer('devilcatacomb_exit_timer'7get_server_timer_arg())
            
end
        end
    
    
function is_dc2_doors_clear ()
        
local setting devilcatacomb_zone.setting()
        
local clear true
        
for 1do
            
local set_clear true
            local mob_set 
setting.dc2_door_set1[i]
            
local set_size setting.dc2_door_set_size[i]
            for 
1set_size do
                
set_clear set_clear and d.is_unique_dead (i.."_1_"..j)
            
end
            
if not set_clear then
                set_clear 
true
                mob_set 
setting.dc2_door_set2[i]
                for 
1set_size do
                    
set_clear set_clear and d.is_unique_dead (i.."_2_"..j)
                
end
            end
            clear 
clear and set_clear
        end

        
return clear
    end
    
        
-- ÇöȲ¼®À» Å¬¸¯Çϸé 3Ãþ ÁøÀÔ ¿©ºÎ¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ°í
        
-- ÁøÀԽà»ç½ÅÀÇÁõÇ¥¸¦ °Ë»çÇÑ´Ù.
        -- 
»ç½ÅÀÇ ÁõÇ¥°¡ ¾ø´Ù¸é ¹ÛÀ¸·Î ¿öÇÁµÈ´Ù.
        
when devilcatacomb_floor2_stone.click begin
            local setting 
devilcatacomb_zone.setting()
            
            if 
d.getf("devilcatacomb_floor2_stone_clicked") == 0 then
                
if not devilcatacomb_zone.is_dc2_doors_clear () then
                    say
(gameforge.devilcatacomb_zone._220_say)
                    
wait ()
                    return
                
end
                say
(gameforge.devilcatacomb_zone._230_say)
                
wait()
                
say(gameforge.devilcatacomb_zone._240_say)
                
wait()
                
local s select(gameforge.devilcatacomb_zone._150_selectgameforge.devilcatacomb_zone._160_select)
                if 
== 1 then
                    
if d.getf("devilcatacomb_floor2_stone_clicked") == 0 then
                        d
.setf("devilcatacomb_floor2_stone_clicked"1)
                        
d.setqf2("devilcatacomb_zone","last_exit_time"get_global_time())
                        
d.set_item_group ("reapers_credit"3setting.reapers_credit31setting.reapers_credit21setting.reapers_credit11)
                        
d.say_diff_by_item_group("reapers_credit"gameforge.devilcatacomb_zone._250_saygameforge.devilcatacomb_zone._260_say)
                        
timer ("devilcatacomb_floor3_enter_timer"7)
                    
end
                end
            
else
                
say(gameforge.devilcatacomb_zone._270_say)
            
end
        end
        
        when devilcatacomb_floor3_enter_timer
.timer begin
            local setting 
devilcatacomb_zone.setting()
            
d.set_warp_location (655914992)
            
d.exit_all_by_item_group ("reapers_credit")
            
d.delete_item_in_item_group_from_all ("reapers_credit")
            
d.purge ()
            
d.jump_all (setting.floor3_entry.setting.base.setting.floor3_entry.setting.base.y)
            
d.setf("level",3)
            
d.setqf2("devilcatacomb_zone","level"3)
            
d.regen_file (setting.mob_regen_file_path.."dc_3f_regen.txt")
            
timer("warp_timer",3)
            
            
local position setting.floor3_stone_pos
        
            local n 
number(1,7)
            for 
1do
                if (
!= n)
                
then
                    d
.set_unique("fake"..id.spawn_mobsetting.floor3_stoneposition[i][1], position[i][2]))
                
end
            end
        
            local vid 
d.spawn_mobsetting.floor3_stoneposition[n][1], position[n][2])
            
d.set_unique ("real",vid)
            if (
is_test_server()) then
                
-- real stone pos
                chat 
(position[n][1],position[n][2])
            
end
    
        end

        when devilcatacomb3_stone
.kill begin
            local setting 
devilcatacomb_zone.setting()
            -- 
µ¹ÀÌ ÆÄ±«µÇ¸é ÁøÂ¥°¡ Á×¾ú´ÂÁö È®ÀÎÇØº»´Ù.
            -- 
ÁøÂ¥°¡ Á×¾úÀ¸¸é 4ÃþÀ¸·Î À̵¿ÇÑ´Ù.
            if 
d.is_unique_dead("real"then
                d
.notice(gameforge.devilcatacomb_zone._280_dNotice)
                
                
d.setf ("level",4)
                
d.setqf2("devilcatacomb_zone","level"4)
                
timer ("devilcatacomb_floor4_enter_timer"3)
            else
                
d.notice(gameforge.devilcatacomb_zone._290_dNotice)
            
end
        end

        when devilcatacomb_floor4_enter_timer
.timer begin
            local setting 
devilcatacomb_zone.setting()
            
local i number (15)
            
timer("warp_timer",3)
            
d.purge ()
            
d.jump_all (setting.floor4_entry.setting.base.setting.floor4_entry.setting.base.y)
            
d.regen_file (setting.mob_regen_file_path.."dc_4f_regen.txt")
            
d.regen_file (setting.mob_regen_file_path..setting.floor4_regen_file[i])
            if (
is_test_server()) then
                d
.notice (setting.floor4_regen_file[i])
            
end
            d
.spawn_mob (setting.floor4_npcsetting.floor4_npc_pos[1], setting.floor4_npc_pos[2])
        
end

        
-- devilcatacomb_floor4_stone´Â Å¬¸¯ ½Ã 4Ãþ¿¡¼5ÃþÀ¸·Î À̵¿½Ã۴ npcÀÌ´Ù.
        
when devilcatacomb_floor4_stone.click begin
            local setting 
devilcatacomb_zone.setting()
            
local n number (1,5)
            
say(gameforge.devilcatacomb_zone._300_say)
            
wait()
            if (
is_test_server()) then
                
-- devil_king pos
                chat 
(setting.devil_king_pos[n][1], setting.devil_king_pos[n][2])
            
end
            d
.purge ()
            
d.jump_all (setting.floor5_entry.setting.base.xsetting.floor5_entry.setting.base.)
            
d.setf ("level",5)
            
d.setqf2("devilcatacomb_zone","level"5)
            
timer("warp_timer",3)
            
d.regen_file (setting.mob_regen_file_path.."dc_5f_regen.txt")
            
d.spawn_mob (setting.devil_kingsetting.devil_king_pos[n][1], setting.devil_king_pos[n][2])
            
d.spawn_mob (setting.floor5_stonesetting.floor5_stone_pos[1], setting.floor5_stone_pos[2])
        
end
        
        
-- ¾Æ±Í¿Õ(2591)ÀÌ Á×À¸¸é ºÀÀÎÇØÃ¼¼® µå¶ø
        when devilcatacomb_devil_king
.kill begin
            local setting 
devilcatacomb_zone.setting()
            
game.drop_item (setting.unlock_stone1)
        
end

        
-- »ç½Å±ÝÁ¦ºñ(30102)¿¡ ±ÝÁ¦ÇØÃ¼¼®ºÀÀ» µå·¡±×Çϸ頸ðµç ¸ó½ºÅ͸¦ Á×À̰í
        
-- 6ÃþÀ¸·Î À̵¿Çϴ ŸÀ̸Ӹ¦ µ¿ÀÛ½ÃŲ´Ù.
        
when devilcatacomb_floor5_stone.take begin
            local setting 
devilcatacomb_zone.setting()
            if 
item.vnum == setting.unlock_stone then
                item
.remove ()
                
d.notice(gameforge.devilcatacomb_zone._310_dNotice)
                -- 
6ÃþÀ¸·Î À̵¿
                d
.clear_regen()
                
d.purge()
                
timer("devilcatacomb_floor6_timer",2)
            
end
        end

        when devilcatacomb_floor6_timer
.timer begin
            local setting 
devilcatacomb_zone.setting()
            
d.setf("level",6)
            
d.setqf2("devilcatacomb_zone","level"6)
            
d.jump_all (setting.floor6_entry.setting.base.xsetting.floor6_entry.setting.base.)
            
d.regen_file (setting.mob_regen_file_path.."dc_6f_regen.txt")
            
d.spawn_mob (setting.devil_great_kingsetting.devil_great_king_pos[1], setting.devil_great_king_pos[2])
            
timer("warp_timer",3)
        
end
        
        
-- ¾Æ°É(2597)ÀÌ Á×À¸¸é6ÃþÀǠŸÀ̸Ó1ÀÌ µ¿ÀÛÇÑ´Ù.
        
when devilcatacomb_devil_great_king.kill begin
            server_timer 
("floor6_eli_check_timer_1"5,d.get_map_index())
        
end

        
-- 6ÃþÀǠŸÀ̸Ó1Àº ´øÀüÀÇ ¸ðµç ¸ó½ºÅÍ ¼ýÀÚ¸¦ º¸°í,
        -- 
0À̸é 7ÃþÀ¸·Î ¿öÇÁÇϴ ŸÀ̸Ӹ¦ µ¿ÀÛÇÑ´Ù.
        -- 
¹Ù·Î 7ÃþÀ¸·Î °¡Áö ¾Ê´Â ÀÌÀ¯´ÂÀ¯Àú¿¡°Ô ÁغñÇÒ ½Ã°£À» ÁÖ±â À§Çؼ*ÀÌ´Ù.
        -- 
1À̸é Å¸À̸Ó2¸¦ µ¿ÀÛ½ÃŲ´Ù.
        -- 
ŸÀ̸Ó1À» recursiveÇϰԠµ¿ÀÛ½ÃŰÁö ¾ÊÀº °ÍÀº,
        -- 
±×·² °æ¿ì resetÇѠŸÀ̸Ó1ÀÌ µ¿ÀÛÇÏÁö ¾Ê¾Ò±â ¶§¹®ÀÌ´Ù.
        
when floor6_eli_check_timer_1.server_timer begin
            
if d.select(get_server_timer_arg()) then
                
if d.count_monster() == 0 then
                    say_in_map 
(get_server_timer_arg(), gameforge.devilcatacomb_zone._320_say)
                    
server_timer ("devilcatacomb_floor7_timer"3get_server_timer_arg())
                else
                    
server_timer ("floor6_eli_check_timer_2"5get_server_timer_arg())
                
end
            end
        end

        when floor6_eli_check_timer_2
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                
if d.count_monster() == 0 then
                    say_in_map 
(get_server_timer_arg(), gameforge.devilcatacomb_zone._320_say)
                    
server_timer("devilcatacomb_floor7_timer"3get_server_timer_arg())
                else
                    
server_timer ("floor6_eli_check_timer_1"5get_server_timer_arg())
                
end
            end
        end
        
        when devilcatacomb_floor7_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                local setting 
devilcatacomb_zone.setting()

                
d.setf("level",7)
                
d.setqf2("devilcatacomb_zone","level"7)
                
d.jump_all (setting.floor7_entry.setting.base.xsetting.floor7_entry.setting.base.)
                
d.regen_file (setting.mob_regen_file_path.."dc_7f_regen.txt")
                
d.spawn_mob (setting.devil_emperorsetting.devil_emperor_pos[1], setting.devil_emperor_pos[2])
                
server_timer ("devilcatacomb_floor7_say_timer"2get_server_timer_arg())
            
end    
        end

        when devilcatacomb_floor7_say_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then

                local t 
3600 -(get_global_time() - d.getf("enter_time"))
                
local t_r math.mod (t60)
                
local t_m = (t_r) / 60
                d
.notice(gameforge.devilcatacomb_zone._330_dNotice)
                
d.notice(string.format(gameforge.devilcatacomb_zone._20_sayt_m))
                
d.set_warp_location (000)
            
end
        end

        
-- 6Ãþ°ú ¸¶Âù°¡Áö·Î »ç¸¶ÈÖ(2598)ÀÌ Á×À¸¸é
        
-- 7ÃþÀǠŸÀ̸Ӱ¡ ÀÛµ¿ÇÑ´Ù.
        
when devilcatacomb_devil_emperor.kill begin
            server_timer 
("floor7_eli_check_timer_1"5d.get_map_index())
        
end
        
        
-- 7ÃþÀǠŸÀ̸Ӵ 6Ãþ Å¸À̸ӿ͠ºñ½ÁÇϸç,
        -- 
¸ó½ºÅÍ ¼ýÀÚ°¡ 0À̸é exit Å¸À̸Ӹ¦ ¹ß»ý½ÃŲ´Ù.
        -- 
¹Ù·Î exitÇÏÁö ¾Ê´Â ÀÌÀ¯´ÂÀ¯Àúµé¿¡°Ô ÁغñÇÒ ½Ã°£À» ÁÖ±â À§Çؼ*ÀÌ´Ù.
        
when floor7_eli_check_timer_1.server_timer begin
            
if d.select(get_server_timer_arg()) then
                
if d.count_monster() == 0 then
                    d
.set_warp_location (655914992)
                    
d.setqf2("devilcatacomb_zone","done"1)
                    
say_in_map (get_server_timer_arg(), gameforge.devilcatacomb_zone._340_say)
                    
clear_server_timer ("devilcatacomb_0m_left_timer"get_server_timer_arg())
                    
server_timer("devilcatacomb_exit_timer"60get_server_timer_arg())
                else
                    
server_timer ("floor7_eli_check_timer_2"5get_server_timer_arg())
                
end
            end
        end

        when floor7_eli_check_timer_2
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                
if d.count_monster() == 0 then
                    d
.set_warp_location (655914992)
                    
d.setqf2("devilcatacomb_zone","done"1)
                    
say_in_map (get_server_timer_arg(), gameforge.devilcatacomb_zone._340_say)
                    
clear_server_timer ("devilcatacomb_0m_left_timer"get_server_timer_arg())
                    
server_timer("devilcatacomb_exit_timer"60get_server_timer_arg())
                else
                    
server_timer ("floor7_eli_check_timer_1"5get_server_timer_arg())
                
end
            end
        end

        when devilcatacomb_exit_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.setqf2("devilcatacomb_zone","level"0)
                
d.setqf2("devilcatacomb_zone","last_exit_time"get_global_time())
                
clear_server_timer("devilcatacomb_5m_left_timer"get_server_timer_arg())
                
clear_server_timer("devilcatacomb_1m_left_timer"get_server_timer_arg())
                
clear_server_timer("devilcatacomb_0m_left_timer"get_server_timer_arg())
                
clear_server_timer("floor6_eli_check_timer_1"get_server_timer_arg())
                
clear_server_timer("floor6_eli_check_timer_2"get_server_timer_arg())
                
clear_server_timer("floor7_eli_check_timer_1"get_server_timer_arg())
                
clear_server_timer("floor7_eli_check_timer_2"get_server_timer_arg())
                
clear_server_timer("devilcatacomb_floor7_say_timer"get_server_timer_arg())
                
clear_server_timer("devilcatacomb_floor7_timer"3get_server_timer_arg())
                
d.clear_regen()
                
d.exit_all()
            
end
        end
    end  
--state
end   
--quest 
Resqu is offline  
Old 02/12/2016, 17:39   #12178
 
Chaosnightx3's Avatar
 
elite*gold: 0
Join Date: Jun 2012
Posts: 340
Received Thanks: 114
Quote:
Originally Posted by Supermgking View Post
when doesnt have begin-end clause. (()
Error occured on compile

Ändere mal folgenden Abschnitt ab local vnum ab:

PHP Code:
            local item_vnum 19                                                 
            local item_vnum2 
11979                                            
            local item_vnum3 
12209                                            
            
if pc.get_job() == 1 then            
                item_vnum 
1009                                                
                item_vnum2 
11980                                                
                item_vnum3 
12349                                                
            
elseif pc.get_job() == 2 then                                         
                item_vnum2 
11981                                                
                item_vnum3 
12489                                                
            
elseif pc.get_job() == 3 then                                        
                item_vnum 
7009                                                
                item_vnum2 
11982                                                
                item_vnum3 
12629 
musst es halt anpassen.
Chaosnightx3 is offline  
Old 02/15/2016, 10:36   #12179
 
elite*gold: 0
Join Date: Dec 2015
Posts: 121
Received Thanks: 18
Hallo Elitepvpers,
Ich suche jemanden, der mir diese Quest umschreiben kann.
PHP Code:
quest levelupitem begin
    state start begin
        when 30013.
use begin
            pc
.give_exp2(pc.get_next_exp()-pc.get_exp())
            
pc.remove_item(30013,1)
        
end
    end
end 
Diese Quest soll folgende Funktionen haben

Sollte das Item angeklickt werden, wird der Spieler ein Level hochgestuft, jedoch sollte er immer 50% an Erfahrung haben.
Auch mit Level 105 sollte er 50% Erfahrung haben. ( Für Gilde Spenden )

Wäre sehr froh, wenn es jemand machen könnte.
.UNLTD. is offline  
Old 02/15/2016, 12:29   #12180
 
elite*gold: 0
Join Date: Jul 2014
Posts: 547
Received Thanks: 1,048
Quote:
Originally Posted by .UNLTD. View Post
Hallo Elitepvpers,
Ich suche jemanden, der mir diese Quest umschreiben kann.
PHP Code:
quest levelupitem begin
    state start begin
        when 30013.
use begin
            pc
.give_exp2(pc.get_next_exp()-pc.get_exp())
            
pc.remove_item(30013,1)
        
end
    end
end 
Bin relativ neu dabei xd
Hab sie lediglich angepasst das man damit bis 105 durchleveln kann via EXP ( damit man Spenden kann ).
Die 123 EXP einfach durch die Anzahl ersetzen die man pro Klick erhalten soll^^

PHP Code:
quest levelupitem begin
    state start begin
        when 30013.
use begin
            
if pc.get_level() >= 105 then
                pc
.remove_item(30013)
            else
                
pc.give_exp2(123
            
end    
        end
    end
end 
.Nesh is offline  
Thanks
1 User
Reply




All times are GMT +1. The time now is 16:10.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.