[SERVICE] Die Questkontrolle

11/22/2013 14:28 .Despero™#9286
Ich habe eben mal Mijagos Ranglist Quest per Letter gemacht.. aber [GM] [SA]´s usw werden alle mit eingetragen .. :(
PHP Code:
quest ingamerank15 begin
       state start begin
        when login begin
            set_state
(information)
        
end
    end
    state information begin 
        when letter begin 
            send_letter
("Top 15 Rangliste by Mijago"
        
end
        when button 
or info begin
            say_title
("Top 15 Rangliste")
            
local sel select("Global","Rotes Reich","Gelbes Reich","Blaues Reich","Abbruch")
            
local pp
            
if sel == 5 then
                
return
            elseif 
sel == 1 then
                pp 
mysql_query("select name,level from player.player ORDER BY level desc,exp desc,name asc LIMIT 15")
            else
                
pp mysql_query("select name,level from player.player where (SELECT empire from player.player_index where player.account_id =id) = "..(sel-1).." ORDER BY level desc,exp desc,name asc LIMIT 15")
            
end
            
if pp == nil or (pp[1] or {})[1] == nil then
                say
("Es gab einen Fehler.")
                return
            
end
            say
("Rang - Name - Level")
            
table.foreachi(pp,function(i,l)
                
say(i.." - "..l[1].." - "..l[2])
            
end)
        
end
    end
end 
11/22/2013 17:16 PlayaStylee#9287
Hallo hab DC quest aber weiss jetzt nicht wogenau die map index 209 rein kommt kann mir einer helfen bitte

PHP Code:
quest devilscatacomb begin
    state start begin
    
        when logout begin
            pc
.remove_item(30311pc.count_item(30311))
            
pc.remove_item(30312pc.count_item(30312))
            
pc.remove_item(30313pc.count_item(30313))
        
end
        
        
        when login begin
            
if pc.get_map_index() == special.dc_map_index then
                
if devilscatacomb.getLevelByCord() > or not next_time_is_now() then
                
                    pc
.warp((5913)*100, (993)*100205) -- 5913x993  591374x
                    
                end
                
                pc
.set_warp_location(2055913993)
                
                
say("Du musst den Seelenkristall-Schlüssel droppen")
                
say("und dann auf die Statue des Kud ziehen, um in")
                
say("die 2. Ebene zu gelangen...")
                
say("")
                
say_item_vnum(30311)
                
say(""
                
            elseif 
pc.get_map_index() >= (special.dc_map_index 10000) and pc.get_map_index() <= (special.dc_map_index_2 10000then            
                pc
.set_warp_location(2055913993)
            
end
        end
        
        
        when 9008.chat
."The Devil's Catacomb" begin  --Enter the Devil Catacomb
            
if pc.get_level() < 75 then
                say_title
(mob_name(npc.get_race()) ..":")
                
say("Du möchtest in die Katakomben des Teufels?")
                
say("")
                
say("So einfach geht das nicht, denn du hast")
                
say("nicht die nötige Erfahrung dazu.")
                
say("Komme am Besten wieder, wenn du Level 75")
                
say("erreicht hast... ")
                    else
                        
say_title(mob_name(npc.get_race()) ..":")
                        
say("Du möchtest in die Katakomben des Teufels?")
                        
say("")
                        
say("Ich kann dich gerne teleportieren, doch")
                        
say("ich möchte dich warnen: Es sind schon viele")
                        
say("eingetreten aber nicht mehr zurück gekommen!")
                        
say("")
                        
say("Soll ich dich ernsthaft teleportieren?")
                        
say("")
                        
local s select("Ja","Nein")
                        if 
== 2 then
                            
return
                        elseif 
== 1 then
                            pc
.warp(3153001209200)
                        
end
                    end    
                end    
        
        
        when kill with pc
.get_map_index() == special.dc_map_index and pc.countitem(30311) < 1 begin
            local rnd 
number(1,100)
            if 
rnd == 6 then
                game
.drop_item_with_ownership(303111)
            
end
        end
        
        
        when 30101.take with item
.vnum == 30311 begin --Teleport to 2nd Stage with the passenger ticket
        
            
if party.is_party() then
            
                
if party.is_leader() then
                    say
("Das Eingangsportal wurde geöffnet.")
                    
say("Geh schnell hindurch!")
                    
wait()
                    
say("Hier beginnt das wahre Abenteuer! Du hast")
                    
say("jedoch nur eine Stunde Zeit, um die Devil's")
                    
say("Catacomb zu erforschen.")
                    
item.remove()
                    
sys_log(0"DC create try by "..pc.get_name())
                    
d.join(special.dc_map_index)
                else
                    
say("Nur der Leiter der Gruppe darf bestimmen.")
                
end
                
            
else
                
say("Ohne Gruppe kommst du nicht weiter.")
            
end
            
        end
        
        
        when login with devilscatacomb
.isInCatacomb() begin
            say
("Zerstöre das Siegel dieses Tores, um die 3. Ebene")
            
say("zu erreichen!")
            
say("Du hast noch 60 Minute(n) Zeit.")
            
d.spawn_mob(30103740227)
            
loop_timer("item_check"10)
            if 
party.is_leader() then
                d
.set_regen_file("data/dungeon/dc/dc_regen1.txt")
                
d.regen_file("data/dungeon/dc/dc_doors.txt")
                
d.setf("level"2
                
server_timer("runtime"6pc.get_map_index())
            elseif 
pc.is_gm() and not party.is_party() then
                d
.set_regen_file("data/dungeon/dc/dc_regen1.txt")
                
d.regen_file("data/dungeon/dc/dc_doors.txt")
                
d.setf("level"2)
                
server_timer("runtime"6pc.get_map_index())
            
end
        end
        
        
        when item_check
.timer with d.getf("level") == 3 begin
            
if pc.countitem(30319) >= 1 then
                say
("Du hast den Schrumpfkopf und wirst nun auf die")
                
say("3. Ebene teleportiert.")
                
pc.remove_item(303191)
                
timer("item_check_end"2)
            else
                
d.exit_all()
            
end
        end
        
        
        when item_check_end
.timer begin
            cleartimer
("item_check")
        
end
        
        
        when runtime
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.setf("time"get_time()+60*60*1)
                
devilscatacomb.getTimeLeft()
                
server_timer("runtime_end"60*60get_server_timer_arg())
            
end
        end
        
        
        when runtime_end
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice("Die Zeit ist um.")
                
d.exit_all()
            
end
        end

        
        when 30103.click with devilscatacomb
.isInCatacomb() and devilscatacomb.getLevelByCord() == and npc.lock() begin
            say
("Während du den Stein genauer untersuchst, kannst")
            
say("du eine Gravur erkennen.")
            
wait()
            
say("Lediglich der Besitzer des Schrumpfkopfes")
            
say("darf eintreten, nachdem die Siegel dreier Türen")
            
say("aufgebrochen wurden.")
            
say("Wenn du dieses Relikt nicht bei dir trägst,")
            
say("wirst du aus der Devil's Catacomb teleportiert.")
            
say("")
            
wait()
            
local s select("Ja, lass mich eintreten!""Nein, ich möchte nicht eintreten.")
            if 
== 2 then
                
return
            elseif 
== 1 then
                
if pc.count_item(30319) >= 1 then
                    npc
.purge()
                    
d.setf("level"3)
                    
d.purge()
                    
d.clear_regen()
                    
timer("dc_jump_3"6)
                else
                    
say("Du hast keinen Schrumpfkopf und wirst nun")
                    
say("aus der Höhle teleportiert ...")
                    
pc.warp(59137499325205)
                
end
            end
        end
        
        
        when dc_jump_3
.timer begin
            d
.set_regen_file("data/dungeon/dc/dc_regen2.txt")
            
d.notice("Suche den richtigen Metinstein und zerstöre ihn!")
            
devilscatacomb.getTimeLeft()
            
d.jump_all(445112282)
            
local positions devilscatacomb.get3FloorStonePositions()
            for 
1do
                
d.set_unique("fake" .. d.spawn_mob(20537positions[i][1], positions[i][2]))
            
end
            d
.set_unique("real"d.spawn_mob(20537positions[7][1], positions[7][2]))
            
server_loop_timer('dc_stone3_update'10pc.get_map_index())

        
end
        
        
        when dc_stone3_update
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                
if not d.is_unique_dead("real"then
                    
for 1do
                        if 
d.getf("fakedead" .. i) == 0 then
                            
if d.unique_get_hp_perc("fake" .. i) < 30 then
                                
if not d.is_unique_dead("fake" .. ithen
                                    d
.purge_unique("fake" .. i)
                                
end
                                d
.setf("fakedead" .. i1)
                                
d.notice("Du hast den falschen Metinstein zerstört. Finde den richtigen!");
                            
end
                        end
                    end
                
else
                    
server_timer("dc_stone_end3"5get_server_timer_arg())
                    
d.notice("Der richtige Metinstein wurde zerstört. Du darfst nun die 4. Ebene betreten.")
                
end
            
else
                
server_timer('dc_stone3_stop_timer'1get_server_timer_arg())
            
end
        end

        
        when dc_stone3_stop_timer
.server_timer begin
            clear_server_timer
('dc_stone3_update'get_server_timer_arg())
        
end
        
        
        when dc_stone_end3
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                clear_server_timer
('dc_stone3_update'get_server_timer_arg())
                
d.setf("level"4)
                
d.jump_all(334712810)        
                
d.clear_regen()
                
d.set_regen_file("data/dungeon/dc/dc_regen3.txt")
                
d.regen_file("data/dungeon/dc/dc_warps.txt")
                
d.spawn_mob(30104500716)
            
end
        end
        
        
        when 30104.click with devilscatacomb
.isInCatacomb() and devilscatacomb.getLevelByCord() == 4  and npc.lock() begin
            npc
.purge()
            
say_in_map(pc.get_map_index(),"Du hast es geschafft! Hier ist der Ausgang des[ENTER]Labyrinths. Steige nun in die 5. Ebene hinab.")
            
server_timer("dc4_enter"6pc.get_map_index())
        
end
        
        
        when dc4_enter
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.jump_all(391812939)
                
                
d.set_regen_file("data/dungeon/dc/dc_regen4.txt")
                
d.spawn_mob(30102848739)
                
                
local mob_pos = { {1006649}, {979829}, {691822}, {7142053}, {848593} }
                
local rnd number(15)
                
d.spawn_mob(2591mob_pos[rnd][1], mob_pos[rnd][2])
                
                
server_timer("dc4_message"3get_server_timer_arg())
            
end
        end
        
        
        when dc4_message
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice("Besiege die Dämonenwachen, um das Fratzen-Totem zu erhalten. Es dient dir als Schlüssel zur 6. Ebene.")
                
devilscatacomb.getTimeLeft()
            
end
        end
        
        
        when 30102.take with item
.vnum == 30312 begin
            say
("Du hast das Fratze-Totem.")
            
say("Nun kannst du in die nächste Ebene!")
            
say("")
            
wait()
            
say("Viel Glück!")
            
item.remove()
            
npc.purge()
            
d.clear_regen()
            
timer("dc_level_5"6)
        
end
        
        
        when dc_level_5
.timer begin
            d
.jump_all(431212799)
            
timer("dc_level_5_start"5)
        
end
        
        
        when dc_level_5_start
.timer begin
            d
.setf("level"5)
            
d.notice("Besiege Charon und seine Schergen!")
            
devilscatacomb.getTimeLeft()
            
d.regen_file("data/dungeon/dc/dc_regen5.txt")
            
d.spawn_mob(25971301699)
        
end
        
        
        when kill begin
            
if devilscatacomb.isInCatacomb() then
                
if npc.race == 2597 then
                    
if d.count_monster() < 1000 then
                        d
.setf("level"6)
                        
d.clear_regen()
                        
timer("dc_level_5_end"12)
                    else
                        if 
d.getf("charon_spawns") < 4 then
                            d
.spawn_mob(25971301699)
                            
d.setf("charon_spawns"d.getf("charon_spawns") + 1)
                        else
                            
d.notice("Du hast versagt Charon hat dich mit seinen Schergen")
                            
d.notice("überlistet. Du verlässt nun die Höhle")
                            
local nextTime=get_time()+time_min_to_sec(1)
                            
d.setqf("__NEXT_TIME__"nextTime)
                            
d.exit_all()
                        
end
                    end
                end
                
                
if npc.race == 2598 and  d.getf("level") == 6 then
                    clear_server_timer
("runtime"pc.get_map_index())
                    
clear_server_timer("runtime_end"pc.get_map_index())
                    
notice_all(pc.get_name().." und "..tonumber(party.get_near_count()-1).." weitere Gruppenmitglieder haben Azrael besiegt!")
                    
timer("glory_message"6)
                
end
                
                
if npc.race == 2591 then
                    game
.drop_item_with_ownership(303121)
                
end
            end
        end
        
        
        when dc_level_5_end
.timer begin
            say_in_map
(pc.get_map_index(),"Du hast Charon besiegt! Nun wirst du[ENTER]zur letzten Ebene der Devil's Catacomb[ENTER]teleportiert.")
            
timer("dc_level_6"3)
        
end
        
        
        when dc_level_6
.timer begin
            d
.jump_all(314513187)
            
timer("dc_level_6_into"3)
        
end
        
        when dc_level_6_into
.timer begin
            d
.regen_file("data/dungeon/dc/dc_regen6.txt")
            
d.spawn_mob(2598741103)
            
d.notice("Besiege Azrael!")
        
end
        
        when glory_message
.timer begin
            local text 
"Azrael wurde besiegt. Endlich herrscht[ENTER]Frieden in der Devil's Catacomb. Du wirst nun[ENTER]an die Oberfläche teleportiert."
            
say_in_map(pc.get_map_index(), text)
            
timer("dc_end"20)    
        
end
        
        
        when dc_end
.timer begin
            local nextTime
=get_time()+time_min_to_sec(1)
            
d.setqf("__NEXT_TIME__"nextTime)
            
d.exit_all()
        
end
        
    end
    
    state _FUNC_ begin
    
        
function getLevelByCord()
        
            if 
pc.get_local_x() > 30 and pc.get_local_y() > 45 and pc.get_local_x() < 450 and pc.get_local_y() < 450 then
                
return 1
                
            
elseif pc.get_local_x() > 540 and pc.get_local_y() > 39 and pc.get_local_x() < 1000 and pc.get_local_y() < 462 then
                
return 2
                
            
elseif pc.get_local_x() > 1048 and pc.get_local_y() > 35 and pc.get_local_x() < 1455 and pc.get_local_y() < 458 then
                
return 3
                
            
elseif pc.get_local_x() > 31 and pc.get_local_y() > 541 and pc.get_local_x() < 564 and pc.get_local_y() < 1058 then
                
return 4
                
            
elseif pc.get_local_x() > 2050 and pc.get_local_y() > 540 and pc.get_local_x() < 1050 and pc.get_local_y() < 955 then
                
return 5
                
            
elseif pc.get_local_x() > 1175 and pc.get_local_y() > 576 and pc.get_local_x() < 1420 and pc.get_local_y() < 810 then
                
return 6
                
            
else
                return 
0
            end
            
        end
        
        
function isInCatacomb()
        
            if 
pc.get_map_index() >= (special.dc_map_index 10000) and pc.get_map_index() < (special.dc_map_index_2 10000) and pc.in_dungeon() then
                
return true
            
else
                return 
false
            end
            
        end
        
        
function get3FloorStonePositions()
        
            
local positions 
            {
                {
13205352}, {1349150}, {1133167}, {1151364},
                {
1234136}, {1255371}, {1132245},
            }
            
            for 
1do
            
                
local j number(i7)
                
                if 
!= j then
                
                    local t 
positions[i];
                    
positions[i] = positions[j];
                    
positions[j] = t;
                    
                
end
                
            end 
            
            
return positions
            
        end
        
        
function getTimeLeft()
        
            
local secondsLeft = (d.getf("time") - get_time())
            
local minutesLeft math.ceil(secondsLeft 60)
            
            
d.notice("Du hast noch "..minutesLeft.." Minute(n) Zeit.")
        
        
end
        
    end
end 
11/22/2013 18:14 AntikerGolem#9288
gelöst
11/23/2013 11:37 .HC'IReIReXx.#9289
Weiter so.. Schreibst du auch Quests?
11/23/2013 18:43 Cr4shedx#9290
Heyho,
Will nen Timer in die Quest. Kann mir die jemand die Quest vernünftig schreiben?
Will dass das Item nur alle 2 Sek benutzbar ist. Will nicht das es Sofort lvl 140 macht.
Code:
quest Lvlup begin
 state start begin
  when 30180.use begin
   pc.give_exp2(pc.get_next_exp())
  end
  when 30180.use begin
   for i = 1, 5, 1 do
   pc.give_exp2(pc.get_next_exp())
  end 
        if pc.get_level() == 140 then
  item.remove()
  end
  end
 end
end
11/23/2013 20:08 Alcazone#9291
#
11/23/2013 21:29 Fear *_*#9292
Quote:
Originally Posted by Cr4shedx View Post
Heyho,
Will nen Timer in die Quest. Kann mir die jemand die Quest vernünftig schreiben?
Will dass das Item nur alle 2 Sek benutzbar ist. Will nicht das es Sofort lvl 140 macht.
Code:
quest Lvlup begin
 state start begin
  when 30180.use begin
   pc.give_exp2(pc.get_next_exp())
  end
  when 30180.use begin
   for i = 1, 5, 1 do
   pc.give_exp2(pc.get_next_exp())
  end 
        if pc.get_level() == 140 then
  item.remove()
  end
  end
 end
end
PHP Code:
quest Lvlup begin
    state start begin
        when 30180.
use begin
            
if pc.getqf("wait") < get_time() then
                
for 15do
                    
pc.give_exp2(pc.get_next_exp())
                    
pc.setqf("wait"get_time()+2)
                
end 
                
if pc.get_level() == 140 then
                    item
.remove()
                
end
            
else chat("Du kannst dieses Item nur alle 2 Sekunden benutzen!"end
        end
    end
end 
PHP Code:
quest ingamerank15 begin
       state start begin
        when login begin
            set_state
(information)
        
end
    end
    state information begin 
        when letter begin 
            send_letter
("Top 15 Rangliste by Mijago"
        
end
        when button 
or info begin
            say_title
("Top 15 Rangliste")
            
local sel select("Global","Rotes Reich","Gelbes Reich","Blaues Reich","Abbruch")
            
local pp
            
if sel == 5 then
                
return
            elseif 
sel == 1 then
                pp 
mysql_query("select name,level from player.player ORDER BY level desc,exp desc,name asc LIMIT 15")
            else
                
pp mysql_query("select name,level from player.player where (SELECT empire from player.player_index where player.account_id =id) = "..(sel-1).." ORDER BY level desc,exp desc,name asc LIMIT 15")
            
end
            
if pp == nil or (pp[1] or {})[1] == nil then
                say
("Es gab einen Fehler.")
                return
            
end
            say
("Rang - Name - Level")
            
table.foreachi(pp,function(i,l)
                if 
string.find(l[1], "[") == nil then
                    say
(i.." - "..l[1].." - "..l[2])
                
end
            end
)
        
end
    end
end 
11/23/2013 23:45 ExoBiTe™#9293
Hey könnte bitte jemand diese Quest für mich fixxen?
beim rechtsklick auf das item passiert nichts -.-
Code:
quest coinspeicher begin
    state start begin
            when 39023.use  begin
				
				say_title("500 Coins Speicher:")
				say("Möchtest du den 500 Coins")
				say("Speicher einlösen?")
					
				local s=select("Einlösen!","Nicht Einlösen!")
				
				if s==1 then
				os.execute('mysql account --execute=\\"UPDATE account SET coins = coins + 500 WHERE name = '.."\\'"..pc.get_account_id().."\\'"..'\\"')
				pc.remove_item(50121, 1)
				say("Dein Coinspeicher wurde erfolgreich eingelöst!")
				end
				
				if s==2 then
				say("Du hast den Coinspeicher nicht eingelöst!!")
				end
			end
		end
	end
end
11/24/2013 00:35 Jоe#9294
Quote:
Originally Posted by Streetkillah98 View Post
Hey könnte bitte jemand diese Quest für mich fixxen?
beim rechtsklick auf das item passiert nichts -.-
Code:
quest coinspeicher begin
    state start begin
            when 39023.use  begin
				
				say_title("500 Coins Speicher:")
				say("Möchtest du den 500 Coins")
				say("Speicher einlösen?")
					
				local s=select("Einlösen!","Nicht Einlösen!")
				
				if s==1 then
				os.execute('mysql account --execute=\\"UPDATE account SET coins = coins + 500 WHERE name = '.."\\'"..pc.get_account_id().."\\'"..'\\"')
				pc.remove_item(50121, 1)
				say("Dein Coinspeicher wurde erfolgreich eingelöst!")
				end
				
				if s==2 then
				say("Du hast den Coinspeicher nicht eingelöst!!")
				end
			end
		end
	end
end
Hat das Item den Typ 18?
11/24/2013 03:04 Silvur#9295
Guten Morgen

Kann mir eventuell einer bei dieser Quest helfen? Bekomme bei dieser Quest core dump.

PHP Code:
quest shops begin
    state start begin
        
        when 9003.chat
."Gemischtwaren" begin
            npc 
open_shop)
            
setskin(NOWINDOW)
        
end
        when 9003.chat
."Besondere Gegenstände" begin
            npc 
open_shop20 )
            
setskin(NOWINDOW)
        
            
end
        end
    end
end 
Wäre dringend =/
Lg
Silvur
11/24/2013 03:11 alpaalpa#9296
PHP Code:
quest shops begin 
    state start begin 
         when 9003.chat
."Gemischtwaren" begin 
            npc
.open_shop(3
            
setskin(NOWINDOW
        
end 
        when 9003.chat
."Besondere Gegenstände" begin 
            npc
.open_shop(20
            
setskin(NOWINDOW
            
end 
        end 
    end 
end 
Bin zwar kein Profi aber versuchs mal so
11/24/2013 10:13 .ProjektX²#9297
Quote:
Originally Posted by alpaalpa View Post
PHP Code:
quest shops begin 
    state start begin 
         when 9003.chat
."Gemischtwaren" begin 
            npc
.open_shop(3
            
setskin(NOWINDOW
        
end 
        when 9003.chat
."Besondere Gegenstände" begin 
            npc
.open_shop(20
            
setskin(NOWINDOW
            
end 
        end 
    end 
end 
Bin zwar kein Profi aber versuchs mal so
PHP Code:
quest shops begin 
    state start begin 
         when 9003.chat
."Gemischtwaren" begin 
            npc
.open_shop(3
            
setskin(NOWINDOW
        
end 
        when 9003.chat
."Besondere Gegenstände" begin 
            npc
.open_shop(20
            
setskin(NOWINDOW
        
end 
    end 
end 
11/24/2013 10:14 ExoBiTe™#9298
Quote:
Zitat:
Zitat von Streetkillah98 Beitrag anzeigen
Hey könnte bitte jemand diese Quest für mich fixxen?
beim rechtsklick auf das item passiert nichts -.-
Code:
quest coinspeicher begin
state start begin
when 39023.use begin

say_title("500 Coins Speicher:")
say("Möchtest du den 500 Coins")
say("Speicher einlösen?")

local s=select("Einlösen!","Nicht Einlösen!")

if s==1 then
os.execute('mysql account --execute=\\"UPDATE account SET coins = coins + 500 WHERE name = '.."\\'"..pc.get_account_id().."\\'"..'\\"')
pc.remove_item(50121, 1)
say("Dein Coinspeicher wurde erfolgreich eingelöst!")
end

if s==2 then
say("Du hast den Coinspeicher nicht eingelöst!!")
end
end
end
end
end
Hat das Item den Typ 18?
Ja hat es.
11/24/2013 16:31 PeloQ#9299
@ Streetkillah98

11/24/2013 16:53 ~Crain~#9300
PeloQ Wir lieben dich :*
In liebe Mama und Papa du ausrutscher :D