[Quest-Release] Spiderdungeon3 Bosskammer

07/08/2013 19:53 .Risan.#1
Moinsen, da ich seit gestern den Bossraum vom SD3 komplett neu schreibe..
Veröffentliche ich mal meine alte Version.. Ist nicht schön geschrieben.. Tut aber sein zweck :)

Besonderheiten:
* Spinne erhält mehr leben wenn man die Eier zerstört.
* Der Bossraum fungiert als Dungeon.

PHP Code:
--[[
-- 
Spiderdungeon 3 Bossroom
-- lvl 50
-- Copyright ©Zymos/Risan
]]
quest sd3_bossroom begin
state start begin
    
function is_sd3_bossrom()
        if 
not pc.in_dungeon() then 
            
return false
        
else
            
local map_index d.get_map_index()
            if 
map_index >= 740000 and map_index 749000 then
                
return true
            
else
                return 
false
            end
        end
    end
    when login with sd3_bossroom
.is_sd3_bossrom() == true begin
        d
.jump_all(8786148)
        if 
d.getf("spawn") == 0 then
            d
.set_regen_file("data/dungeon/spider3/sd3.txt")
            
mob.spawn(2094,380585 1011)
            
d.setf("spawn",1)
            
d.setf("random",number(1,32000))
            
clear_server_timer('duration_end',d.get_map_index())
            
clear_server_timer('duration_end1',d.get_map_index())
            
clear_server_timer('duration_end2',d.get_map_index())
            
clear_server_timer('duration_end3',d.get_map_index())
            
clear_server_timer('exit_bossrom',d.get_map_index())
            
server_timer('duration_end',60*4,d.get_map_index())
            
server_timer('exit_bossrom'60*21,d.get_map_index())
            
d.notice("Willkommen in der Bruthöhle der Spinnenbaroness. Ihr habt maximal 20 Minuten Zeit um den Run zu absolvieren.")
        
end
        
if find_var(map_variable_get("sd3_bossrom_names_group"),pc.get_name()) == false then
        local count 
tonumber(map_variable_get("sd3_bossrom_player_count"))
        --
chat("OLD COUNT"..tostring(map_variable_get("sd3_bossrom_player_count")).."")
        --
chat("OLD NAMES"..map_variable_get("sd3_bossrom_names_group").."")
        if 
tostring(map_variable_get("sd3_bossrom_player_count")) == '0' then
        map_variable_add
("sd3_bossrom_names_group",pc.get_name())
        --
d.notice("HAVE 0")
        else
        
map_variable_add("sd3_bossrom_names_group",""..map_variable_get("sd3_bossrom_names_group")..", "..pc.get_name().." ")
        --
d.notice("HAVE IT")
        
end
        map_variable_add
("sd3_bossrom_player_count"count +1)
        
end
        
--chat("NEW COUNT"..tostring(map_variable_get("sd3_bossrom_player_count")).."")
        --
chat("NEW NAMES"..map_variable_get("sd3_bossrom_names_group").."")
    
end
    when kill with sd3_bossroom
.is_sd3_bossrom() == true begin
        
if npc.get_race() == 2094 then
            game
.drop_item(30327,1)
            
d.notice("Die "..mob_name(2094).." wurde besiegt nun ruft mit hilfe der "..item_name(30327).." das wahre Monster herbei!")
        elseif 
npc.get_race() == 2095 then
            
--d.notice("OLD SPIDER TP "..d.getf("spider_full").."")
            
local old_hp d.getf("spider_full") - 10000
            d
.setf("spider_full",old_hp)
            --
d.notice("OLD SPIDER new "..d.getf("spider_full").."")
            
local new = 381590 old_hp
            d
.unique_set_maxhp("spider"..d.getf("random"),new)
            
d.unique_set_hp("spider"..d.getf("random"),new)
        elseif 
npc.get_race() == 2092 and d.is_unique_dead("spider"then --Spinnenbaroness
            clear_server_timer
('duration_end',d.get_map_index())
            
clear_server_timer('duration_end1',d.get_map_index())
            
clear_server_timer('duration_end2',d.get_map_index())
            
clear_server_timer('duration_end3',d.get_map_index())
            
clear_server_timer('exit_bossrom',d.get_map_index())
            
d.clear_regen()
            
d.kill_all()
            
notice(""..mob_name(2092).." wurde vernichtet und ihr werdet in 1 Minute hinausteleportiert.")
            
server_timer('exit_bossrom'60,d.get_map_index())
            
d.setf("spawn",0)
            
notice_all("Die Spieler: "..map_variable_get("sd3_bossrom_names_group").." haben den "..mob_name(2092).." besiegt.")
            
mysql_query("INSERT INTO log.sd3_boss_slay_log (date_time,by_username_kill,group_count,map_index,groub_usernames) VALUES (NOW(),'"..pc.get_name().."','"..tonumber(map_variable_get("sd3_bossrom_player_count")).."','"..pc.get_map_index().."','"..map_variable_get("sd3_bossrom_names_group").."')")
            
variable_global_del("sd3_bossrom_names_group")
            
variable_global_del("sd3_bossrom_player_count")
        
end
    end
    when exit_bossrom
.server_timer with d.select(get_server_timer_arg()) begin
        d
.exit_all()
    
end
    when duration_end
.server_timer with d.select(get_server_timer_arg()) begin
        server_timer
('duration_end1'60*14,d.get_map_index())
        
d.notice("Euch verbleiben noch 15 Minuten")
        
    
end
    when duration_end1
.server_timer with d.select(get_server_timer_arg()) begin
        server_timer
('duration_end2'60*9,d.get_map_index())
        
d.notice("Euch verbleiben noch 10 Minuten")
    
end
    when duration_end2
.server_timer with d.select(get_server_timer_arg()) begin
        server_timer
('duration_end3'60*4,d.get_map_index())
        
d.notice("Euch verbleiben noch 5 Minuten")
    
end
    when duration_end3
.server_timer with d.select(get_server_timer_arg()) begin
        server_timer
('exit_bossrom'60,d.get_map_index())
        
d.notice("Euch verbleibt noch 1 Minute. Bevor ihr hinausteleportiert werdet.")
    
end
    when 30327.
use with sd3_bossroom.is_sd3_bossrom() == true begin
        d
.regen_file("data/dungeon/spider3/sd3.txt")
        
local vid d.spawn_mob(2092380585)
        
d.set_unique("spider"..d.getf("random"), vid)
        
item.remove()
        
d.notice("Das wahre Monster wurde herbeigerufen "..mob_name(2092).."! Vernichtet sie und ihr werdet reichlich belohnt!")
        
sd3_bossroom.spawn_eier()
    
end
    when 20371.chat
."Zugang zur Bruthöhle" with pc.get_level() >= 50 and pc.get_map_index() == 74 begin --Grabstein 
        
-- if is_test_server() then
            
-- map_variable_add("Sd3_bossroom_duration",get_time() + 60*60)
            -- 
d.join(74)
            -- return
        -- 
end
        
if party.is_leader() == false and not pc.is_gm() then
        say_npc
()
        
say("")
        
say("Nur der Gruppenanführer kann euch in die")
        
say("Bruthöhle bringen.")
        
say("")
        return
        
end
        
if tostring(get_quest_state("sd_three")) != "668443392"    then
        say_npc
()
        
say("")
        
say("Du hast die Quest noch nicht absorlviert")
        
say("Tue dies und komme anschließend wieder.")
        
say("")
        return
        
end
        say_npc
()
        
say("")    
        
say("Ohhh.")
        
say("Ich bekomme hier selten besuch..")
        
say("")
        --
"12345678901234567890123456789012345678901234567890"|
        
say("Wie ich sehe möchtest ihr die Bruthöhle")
        
say("der "..mob_name(2092).." betreten.")
        
say("Doch seit gewarnt.. Sie ist hungrig und")
        
say("zögert nicht euch alle zu fressen...")
        
say("")
        
wait()
        
say_npc()
        
say("")    
        
say("Alles klar.. Ihr seit mutig!")
        
say("Ich bringe euch ins innere der höhle")
        
say("")
        
wait()
        if 
tonumber(map_variable_get("Sd3_bossroom_duration")) >= get_time() then
        say_npc
()
        
say("")
        
say("Die höhle kann momentan noch nicht betreten werden.")
        
say("Probiere es später nochmal.")
        
say("")
        
local tt tonumber(map_variable_get("Sd3_bossroom_duration")) - get_time()
        
say("Verbleib Zeit: "..math.ceil(tt 60) .." Minuten.")
        return
        
end
        
if pc.count_item(30324) >= 1 then
            pc
.remove_item(30324,1)
        elseif 
pc.count_item(30325) >= 1 then
            pc
.remove_item(30325,1)
        else
            
say_npc()
            
say("")
            
say("Ich kann euch nicht passieren lassen.")
            
say("Euch fehlt der "..item_name(30324).."")
            
say_item_vnum(30324)
            return
        
end
        map_variable_add
("Sd3_bossroom_duration",get_time() + 60*60)
        
d.join(74)
    
end
    
    
function spawn_eier()
        
local rr number(3,10)
        
d.setf("spider_full",rr*10000)
        
local hp rr 10000 381590
        
--d.notice("set hp "..hp.."")
        
d.unique_set_maxhp("spider"..d.getf("random"),hp)
        
d.unique_set_hp("spider"..d.getf("random"),hp)
        for 
1rr,do
        
local r number(1,5)
            if 
== 1 then
                mob
.spawn(2095,367 number(2,15), 585 number(1,15), 1011)
            elseif 
== 2 then
                mob
.spawn(2095,360 number(1,10), 580 number(2,10), 1011)
            elseif 
== 3 then
                mob
.spawn(2095,365 number(3,10), 575 number(4,10), 1011)
            elseif 
== 4 then
                mob
.spawn(2095,370 number(4,17), 590 number(1,10), 1011)
            else
                
mob.spawn(2095,367 number(1,15), 585 number(3,15), 1011)
            
end
        end
    end
    end    
end 
Kordinaten und Mapindex müsst ihr anpassen.
07/08/2013 19:59 Ekrem2#2
Brauchbar Danke :)
07/08/2013 20:07 vpser#3
Thank you.
07/08/2013 20:30 #SoNiice#4
Warum die offizielle Quest nutzen, wenn man sie doch selbst schreiben kann :awesome:
07/08/2013 20:55 .Risan.#5
Quote:
Originally Posted by SoNiice View Post
Warum die offizielle Quest nutzen, wenn man sie doch selbst schreiben kann :awesome:
Weil diese zuvor geschrieben worden ist...
Ich will die Offi nicht nehmen.. Hab mir nur die idee mit den settings abgeschaut.. Das hat bissel sinn...

Wenn man nur fertiges benutzt, lernt man es ja nie...
Btw. Ich kann es ja eh.. Aber ich mag Ymir ihren Codestyle irgendwie nicht :/

Zumindest der neue.. Da muss man ja nun genauer hinschauen..!
07/08/2013 21:17 vpser#6
Quote:
Originally Posted by .Risan. View Post
Weil diese zuvor geschrieben worden ist...
Ich will die Offi nicht nehmen.. Hab mir nur die idee mit den settings abgeschaut.. Das hat bissel sinn...

Wenn man nur fertiges benutzt, lernt man es ja nie...
Btw. Ich kann es ja eh.. Aber ich mag Ymir ihren Codestyle irgendwie nicht :/

Zumindest der neue.. Da muss man ja nun genauer hinschauen..!
Code:
find_var
map_variable_add
map_variable_get
say_npc
variable_global_del
where i can get this functions

I added the questfunction but it's not working on r34083
07/08/2013 21:58 .Seriously#7
Ist die wie auf de?
07/08/2013 22:00 Stαgє6#8
Also ist ganz gut zu brauchen. Aber ne eigene zu schreiben ist doch viel schöner..
07/08/2013 22:01 un1que-slaax-dark™#9
Quote:
Originally Posted by .Risan. View Post
Weil diese zuvor geschrieben worden ist...
Ich will die Offi nicht nehmen.. Hab mir nur die idee mit den settings abgeschaut.. Das hat bissel sinn...
Quote:
Originally Posted by .Seriously View Post
Ist die wie auf de?
Ich glaub nicht.
07/08/2013 22:28 Silver™#10
Super Quest Risan danke :)
07/08/2013 23:07 .Seriously#11
Könntest du die regen vlt noch hochladen.
07/08/2013 23:38 kekoroto#12
Quote:
Originally Posted by ᴆa®ҡ™ View Post
Ich glaub nicht.
And it is not, for sure xd
07/09/2013 02:04 .Seriously#13
Ich werde bei mir nicht geportet muss ich nicht noch neue funktionen adden?
07/09/2013 03:18 SinSay#14
super ;) kann man nutzen danke
07/09/2013 11:41 Fliegex3#15
Kann man die Quest so schreiben das man nur per Gruppe in das Dungeon kommt und auch nur die Gruppe geportet wird?