[Release] Osterevent Quest + Regenfiles

04/12/2012 10:03 Zymos#1
Da ja nun Ostern laaange vorbei ist, habe ich mich heute entschlossen meine letzte quest hierfür zu veröffentlichen..

PHP Code:
quest easter begin
state start begin

    when 90100.chat
."Regen easter" begin
        regen_in_map
(63,"data/regen_event/easter_desert.txt") --Wüste 63
        regen_in_map
(64,"data/regen_event/easter_threeway.txt") --Orktal 64
        regen_in_map
(67,"data/regen_event/easter_trent.txt") --Geisterwald 67
        regen_in_map
(70,"data/regen_event/easter_nusluck.txt") --Land der Riesen 70
        regen_in_map
(68,"data/regen_event/easter_trent02.txt") --Roter Wald 68
        regen_in_map
(74,"data/regen_event/easter_naga02.txt") --Land der Verdammten 74
        
        regen_in_map
(1,"data/regen_event/easter_npc_red1.txt")
        
regen_in_map(21,"data/regen_event/easter_npc_yellow1.txt")
        
regen_in_map(41,"data/regen_event/easter_npc_blue1.txt")
        
say("Die Ostermetins wurde auf diesem Channel gespawnt")
        
say("und der Osterhase steht nun auf diesem Channel jeweilige Map1")
    
end
    
    when kill with game
.get_event_flag("easter_drop") == 1 begin
        
if pc.get_map_index() == 63 and npc.get_race() == 8045 then
            local rand 
number(1,3)
            
local m number(8045,8045)
            if 
rand == 1 then 
            mob
.spawn (m35410691011)
            elseif 
rand == 2 then
            mob
.spawn (m5025021011)
            else
            
mob.spawn (m12816671011)
            
end
        
elseif pc.get_map_index() == 64 and npc.get_race() == 8045 then
            local rand 
number(1,3)
            
local m number(8045,8045)
            if 
rand == 1 then 
            mob
.spawn (m8708111011)
            elseif 
rand == 2 then
            mob
.spawn (m6838031011)
            else
            
mob.spawn (m6196671011)
            
end
        
elseif pc.get_map_index() == 67 and npc.get_race() == 8046 or npc.get_race() == 8047 or npc.get_race() == 8048 then
            local rand 
number(1,3)
            
local m number(8046,8048)
            if 
rand == 1 then 
            mob
.spawn (m1798171011)
            elseif 
rand == 2 then
            mob
.spawn (m3662921011)
            else
            
mob.spawn (m3662921011)
            
end
        
elseif pc.get_map_index() == 70 and npc.get_race() == 8046 or npc.get_race() == 8047 or npc.get_race() == 8048 then
            local rand 
number(1,3)
            
local m number(8046,8048)
            if 
rand == 1 then 
            mob
.spawn (m1798171011)
            elseif 
rand == 2 then
            mob
.spawn (m3662921011)
            else
            
mob.spawn (m3662921011)
            
end
        
elseif pc.get_map_index() == 68 and npc.get_race() == 8049 or npc.get_race() == 8050 then
            local rand 
number(1,3)
            
local m number(8046,8048)
            if 
rand == 1 then 
            mob
.spawn (m2805901011)
            elseif 
rand == 2 then
            mob
.spawn (m1296841011)
            else
            
mob.spawn (m3391241011)
            
end
        
elseif pc.get_map_index() == 74 and npc.get_race() == 8050 or npc.get_race() == 8051 or npc.get_race() == 8052 or npc.get_race() == 8053 or npc.get_race() == 8054 then
            local rand 
number(1,9)
            
local m number(8050,8054)
            if 
rand == 1 then 
                mob
.spawn (m,286,2951011)
            elseif 
rand == 2 then
                mob
.spawn (m,490,10191011)
            elseif 
rand == 3 then
                mob
.spawn (m,675,7351011)
            elseif 
rand == 4 then
                mob
.spawn (m,519,10751011)
            elseif 
rand == 5 then
                mob
.spawn (m,300,7551011)
            elseif 
rand == 6 then
                mob
.spawn (m,795,7891011)
            elseif 
rand == 7 then
                mob
.spawn (m,841,6191011)
            elseif 
rand == 8 then
                mob
.spawn (m,996,3181011)
            else
                
mob.spawn (m,231,3161011)
            
end
        end
    end
    when 30129.chat
."Ich habe Ostereier gefunden!" begin
        say_title
(""..mob_name(30129).."")
        
say("")
        
local f select("Ein Zauberei eintauschen","Ein Vollen Osterkorb mit Eier eintauschen","Schließen")
        if 
== 1 then
            globa_var_add
("Osterei_counta",0)
            
globa_var_add("Osterei_while_a",50160)
            while 
tonumber(globa_var_get("Osterei_while_a")) <= 50179 do
            
globa_var_add("Osterei_counta",tonumber(globa_var_get("Osterei_counta")) + pc.count_item(tonumber(globa_var_get("Osterei_while_a"))))
            
globa_var_add("Osterei_while_a",tonumber(globa_var_get("Osterei_while_a")) + 1)
            
end
            
if tonumber(globa_var_get("Osterei_counta")) == 0 then
                say_title
(""..mob_name(30129).."")
                
say("")
                
say("Du hast kein Osterei bei dir. "..globa_var_get("Osterei_counta").."")
            elseif 
tonumber(globa_var_get("Osterei_counta")) < 100 then
                say_title
(""..mob_name(30129).."")
                
say("")
                
say("Du hast weniger wie 100 Eier bei dir,")
                
say("komme wieder wenn du 100x oder mehr hast")
                
say("von einer Sorte")
            else
                
globa_var_add("Osterei_while_b",50160)
            while 
tonumber(globa_var_get("Osterei_while_b")) <= 50179 do
                if 
pc.count_item(tonumber(globa_var_get("Osterei_while_b"))) >= 100 then
                pc
.remove_item(tonumber(globa_var_get("Osterei_while_b")),100)
                
pc.give_item2(71150,1)
                
say_title(""..mob_name(30129).."")
                
say("")
                
say_item_vnum(tonumber(globa_var_get("Osterei_while_b")))
                
say("Du hast mir 100x "..item_name(tonumber(globa_var_get("Osterei_while_b"))).." gebracht.")
                
say("Als dankeschön übergebe ich dir")
                
say("1x "..item_name(71150).."")
                
say_item_vnum(71150)
                
say("Frohe Ostern!!")
                break
                
end
                globa_var_add
("Osterei_while_b",tonumber(globa_var_get("Osterei_while_b")) + 1)
            
end
            end
        
elseif == 2 then
        globa_var_add
("Osterei_counta",0)
            
globa_var_add("Osterei_while_a",50160)
            while 
tonumber(globa_var_get("Osterei_while_a")) <= 50179 do
            
globa_var_add("Osterei_counta",tonumber(globa_var_get("Osterei_counta")) + pc.count_item(tonumber(globa_var_get("Osterei_while_a"))))
            
globa_var_add("Osterei_while_a",tonumber(globa_var_get("Osterei_while_a")) + 1)
            
end
            
if tonumber(globa_var_get("Osterei_counta")) == 0 then
                say_title
(""..mob_name(30129).."")
                
say("")
                
say("Du hast kein Osterei bei dir. "..globa_var_get("Osterei_counta").."")
            elseif 
tonumber(globa_var_get("Osterei_counta")) < 200 then
                say_title
(""..mob_name(30129).."")
                
say("")
                
say("Du hast weniger wie 200 Eier bei dir,")
                
say("komme wieder wenn du 200 oder mehr hast")
                
say("von einer Sorte.")
            else
                
globa_var_add("Osterei_while_b",50160)
            while 
tonumber(globa_var_get("Osterei_while_b")) <= 50179 do
                if 
pc.count_item(tonumber(globa_var_get("Osterei_while_b"))) >= 200 then
                pc
.remove_item(tonumber(globa_var_get("Osterei_while_b")),200)
                
pc.give_item2(50181,1)
                
say_title(""..mob_name(30129).."")
                
say("")
                
say_item_vnum(tonumber(globa_var_get("Osterei_while_b")))
                
say("Du hast mir 250x "..item_name(tonumber(globa_var_get("Osterei_while_b"))).." gebracht.")
                
say("Als dankeschön übergebe ich dir")
                
say("1x "..item_name(50181).."")
                
say_item_vnum(50181)
                
say("Frohe Ostern!!")
                break
                
end
                globa_var_add
("Osterei_while_b",tonumber(globa_var_get("Osterei_while_b")) + 1)
            
end
            end
        
else
            return
        
end
    end
    when 50180.
use begin
        
if pc.count_item(71150) == 0 then
        syschat
("Du brauchst Mindestens ein "..item_name(71150).." um den Korb zu füllen.")
        return
        
end
        local z 
number(1,2)
        
pc.removeitem(50180,1)
        
pc.removeitem(71150,1)
        if 
== 1 then
        chat
("Du hast das "..item_name(71150).." behutsam in Korb gelegt, die Magie des "..item_name(71150).." hat es mit Eier gefüllt.")
        
pc.give_item2(50181,1)
        
end
    end
    when 50181.
use begin
    chat
("Du öffnest den vollen Osterkorb")
    
local randi number(1,17)
    
local prem_item = {
        [
1] = { 25041,}, --Magischer Stein
        
[2] = { 27992,}, --Weiße Perle
        
[3] = { 27993,}, --Blaue Perle
        
[4] = { 27994,}, --Blutrote Perle
        
[5] = { 72726,}, --Elixier der Sonne (S)
        [
6] = { 72730,}, --Elixier des Mondes (S)
        [
7] = { 72001,}, --Erfahrungsring
        
[8] = { 71150,}, --Zauber-Ei
        
[9] = { 50180,}, --Leerer Korb
        
[10] = { 50512,}, --Regenbogenstein
        
[11] = { 71131,}, --Rappen-Siegel
        
[12] = { 71020,25 }, --Segen des Drachen
        
[13] = { 80013,}, --Blauer Diamant
        
[14] = { 80014,}, --Grüner Diamant
        
[15] = { 80015,}, --Roter Diamant
        
[16] = { 80016,}, --Oranger Diamant
        
[17] = { 80017,}, --Violetter Diamant
        
}
        
pc.give_item2(prem_item[randi][1],prem_item[randi][2])
        
pc.removeitem(50181,1)
    
end
    when 71150.
use begin
    
if pc.getqf("next_time") >= get_time() then
    syschat
("Du kannst das "..item_name(71150).." nur alle 30 Minuten öffnen.")
    return
    
end
    
--local randi number(1,30)
    --
local normal_item = {
    --    [
1] = { 25041,}, --Magischer Stein
    
--    [2] = { 27992,}, --Weiße Perle
    
--    [3] = { 27993,}, --Blaue Perle
    
--    [4] = { 27994,}, --Blutrote Perle
    
--    [5] = { 50180,}, --Leerer Korb
    
--    [6] = { 50512,}, --Regenbogenstein
    
--    [7] = { 71020,}, --Segen des Drachen
    
--    [8] = { 27987,}, --Muschel
    
--    [9] = { 80021,}, --Regenbogen Seelenstein
    
--    [10] = { 80015,}, --Roter Diamant
    
--    [11] = { 80016,}, --Oranger Diamant
    
--    [12] = { 80017,}, --Violetter Diamant
    
--    [13] = { 71044,}, --Kritischer Kampf
    
--    [14] = { 71045,}, --Durchbohrender Kampf
    
--    [15] = { 80003,}, --Silberbarre (10kk Yang)     
    --    [
16] = { 80004,}, --Silberbarre (50kk Yang)
    --    [
17] = { 80034,}, --Blauer Splitter    
    
--    [18] = { 80036,}, --Grüner Splitter            
    
--    [19] = { 80037,}, --Roter Splitter        
    
--    [20] = { 80035,}, --Goldener Splitter
    
--    [21] = { 30192,}, --Milchsaft
    
--    [22] = { 30193,}, --Fingerknochen
    
--    [23] = { 30194,}, --Ork-Keule
        
--[24] = { 30195,}, --Quarzsand 
        
--[25] = { 30196,}, --Dämonenasche
        
--[26] = { 30197,}, --Magische Samen
        
--[27] = { 30198,}, --Wasserkristall
        
--[28] = { 30199,}, --Blauer Kristall 
        
--[29] = { 71150,}, --Zauber-Ei
        
--[30] = { 50180,}, --Leerer Korb
        
--}
        --
pc.give_item2(normal_item[randi][1],normal_item[randi][2])
        if 
not pc.is_gm() then    pc.setqf("next_time",get_time() + 1800)    end
        pc
.setqf("open",pc.getqf("open") +1)
        
syschat("Du öffnest das Magische Zauberei. (Noch ".. 3-pc.getqf("open").." möglich)")
        
pc.give_item_from_special_item_group("71150")
        if 
pc.getqf("open") >= 3 then
        pc
.removeitem(71150,1)
        
pc.setqf("open",0)
        
end
    end
    
    
    end
end 
wurde am Ostern noch gecodet.. Voll der stress ey XD
Die regendateien befinden sich im Anhang.

Viel Spass..

mfg Zymos

Bekannte Fehler:
1.) Man kann das Ei 2 mal öffnen und dann erst in den Korb legen, lässt sich fixxen indem man einfach ne if abfrage einbaut beim reinlegen.
2.) Wenn man einen Oster-Metin zerstört spawnt sofort ein neuer nach per zufall festgelegte Kordinaten. (Ich da aktuell auch kein gescheiten fixx, eventuell geht server_timer; was anders fällt mir nicht ein...)
04/12/2012 10:12 Turundeth#2
#deleted
04/12/2012 10:33 plechito#3
Very nice.. certainly fits :-)
Thanks!
04/12/2012 11:11 Retrograd#4
sehr schöne quest
ich wünschte ich könnte auch so gut quests schreiben
04/12/2012 12:50 fiftyx#5
Bei mir fehlen die Funktionen:
globa_var_add
&
globa_var_get

Kann mir jemand sagen, wie ich diese einfügen kann?
04/12/2012 13:00 .Junior#6
Sind die Kordis nicht dann schon vorgegeben?
04/12/2012 13:02 un1que-slaax-dark™#7
Dankeschön!!!
Regen wird bestimmt gut aussehen...
04/12/2012 15:01 gkilah#8
thanks, but the functions fail.

// edit

change :

globa_var_add to pc.setqf
globa_var_get to pc.getqf
04/12/2012 15:26 .Avent#9
Gab es schonmal ? Trotzdem Danke dir :)