[Problemillas] Demons & Biologo

Topic created · 2 Mensajes · 608 Visitas
  • Buenas a todos :wiii:

    Veran tengo unos pequeños problemas en mi servidor, ando buscando la solución pero siempre es bueno el apoyo de gente que haya pasado por lo mismo xD Asi que dejo aqui mis 2 problemas:

    1º En demons, no tira el Metin Dureza que deberia tirar para la segunda planta =/ y tengo la quest de demons activada en el hongkonglist =/ alguna idea?

    2º A partir de la mision de los dientes de orcos ya no te pide mas misiones del biologo, y las tengo todas metidas en el hongkong, alguna idea?

    Saludos!

  • Toma mi deviltower_zone.quest que funciona bien:

    quest deviltower_zone begin
        state start begin
        when login begin
            if pc.get_map_index() == 66 then
            -- Hacia fuera, perdiste el transporte.
            -- Rango de capa
            -- 1Piso  88  577  236 737
            -- 2Piso  91  343  238 504
            -- 3Piso 104  107  248 269
            if pc.get_x() < 2048+88 or pc.get_y() < 6656+577 or pc.get_x() > 2048+236 or pc.get_y() > 6656+737 then
                pc.warp((5376+532)*100, (512+596+4)*100, 65)
            end
            pc.set_warp_location(65, 5376+532, 512+596+4)
            elseif pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
            pc.set_warp_location(65, 5376+532, 512+596+4)
            end
        end
        when deviltower_man.chat.locale.deviltower_man_chat begin
            if pc.get_level() < 40 then
            say(locale.deviltower_man_say_you_cant)
            else
            say(locale.deviltower_man_say)
            local s = select(locale.deviltower_enter,locale.deviltower_no_enter)
            if s == 1 then
                -- warp into!
                pc.warp(216500,727000)
            end
            end
        end
        when devil_stone1.kill begin
            timer("devil_stone1_1", 6)
        end
        when devil_stone1_1.timer begin
            local mapto7= pc.count_item(30302)  -- No se sabe la exitencia de las almas perdidas.
            pc.remove_item(30302,mapto7)
    
            local boxto7= pc.count_item(30300)  -- Los valientes que se atreven a entrar a la torre no saben lo que alberga.
            pc.remove_item(30300,boxto7)
    
            d.new_jump_all(66, special.devil_tower[1][1], special.devil_tower[1][2])
            d.regen_file("data/dungeon/deviltower2_regen.txt")
            d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[2][1], special.devil_tower[2][2], "data/dungeon/deviltower3_regen.txt")
        end
        --when devil_stone2.kill begin
        --d.jump_all_local(special.devil_tower[2][1], special.devil_tower[2][2])
        --end
        when devil_stone3.kill begin
            --d.jump_all_local(special.devil_tower[3][1], special.devil_tower[3][2])
            --d.set_exit_all_at_eliminate(6)
            --d.set_warp_at_eliminate(6, d.get_map_index(), 100, 100)
            --d.set_warp_at_eliminate(4, 65, 5376+532, 512+596+4)
            d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[3][1], special.devil_tower[3][2], "data/dungeon/deviltower4_regen.txt")
            d.check_eliminated()
            --d.exit_all()
        end
        function get_4floor_stone_pos()
            local positions = {
            {368, 629},
            {419, 630},
            {428, 653},
            {422, 679},
            {395, 689},
            {369, 679},
            {361, 658},
            }
            for i = 1, 6 do
            local j = number(i, 7)
            if i != j then
                local t = positions[i];
                positions[i] = positions[j];
                positions[j] = t;
            end
            end
            --for i = 1, 7 do
        --    positions[i][1] = positions[i][1] * 100
        --    positions[i][2] = positions[i][2] * 100
         --   end
            return positions
        end
        when 8016.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
            d.setf("level", 4)
            -- Reproducir una gran cantidad de monstruos y la fabricación de piedras verdaderas y falsas piedras.
            --d.regen_file("data/dungeon/deviltower4_regen.txt")
            local positions = deviltower_zone.get_4floor_stone_pos()
            for i = 1, 6 do
            chat(positions[i][1], positions[i][2])
            d.set_unique("fake" .. i , d.spawn_mob(8017, positions[i][1], positions[i][2]))
            end
            chat(positions[7][1], positions[7][2])
            local vid = d.spawn_mob(8017, positions[7][1], positions[7][2])
            chat(vid)
            d.set_unique("real", vid)
            server_loop_timer('devil_stone4_update', 10, pc.get_map_index())
            server_timer('devil_stone4_fail1', 5*60, pc.get_map_index())
    
            d.notice("Aquí está el 4 º piso, elegir la puerta cerrada.");
            d.notice("Hay incontables piedras, pero la real no se distingue.");
            d.notice("Dentro de 15 minutos hay que buscarla rompiendo una por una!");
            d.notice("Es la unica manera de abrir la puerta. A buscarla!");
        end
    
        when devil_stone4_fail1.server_timer begin
            if d.select(get_server_timer_arg()) then
            d.notice("10 minutos restantes.")
            server_timer('devil_stone4_fail2', 5*60, get_server_timer_arg())
            end
        end
    
        when devil_stone4_fail2.server_timer begin
            if d.select(get_server_timer_arg()) then
            d.notice("5 minutos restantes.")
            server_timer('devil_stone4_fail', 5*60, get_server_timer_arg())
            end
        end
    
        when devil_stone4_fail.server_timer begin
            if d.select(get_server_timer_arg()) then
            d.notice("El tiempo se ha acabado, la mision fracaso.")
            d.exit_all()
            clear_server_timer('devil_stone4_update', get_server_timer_arg())
            end
        end
    
        when devil_stone4_update.server_timer begin
            if d.select(get_server_timer_arg()) then
            if not d.is_unique_dead("real") then
                for i = 1, 6 do
                if d.getf("fakedead" .. i) == 0 then
                    if d.unique_get_hp_perc("fake" .. i) < 50 then
                    d.purge_unique("fake" .. i)
                    d.setf("fakedead" .. i, 1)
                    d.notice("Piedra falsa, desaparecida...");
                    end
                end
                end
            else
                --d.clear_regen()
                --d.regen_file("data/dungeon/deviltower5_regen.txt")
                server_timer("devil_stone4_end", 5, get_server_timer_arg())
                d.notice("En minuto bueno, la piedra verdadera se rompe toda!");
                d.notice("Ahora se transladara al 5º Piso")
                clear_server_timer('devil_stone4_fail1', get_server_timer_arg())
                clear_server_timer('devil_stone4_fail2', get_server_timer_arg())
                clear_server_timer('devil_stone4_fail', get_server_timer_arg())
            end
            else
            server_timer('devil_stone4_stop_timer', 1, get_server_timer_arg())
            end
        end
    
        when devil_stone4_stop_timer.server_timer begin
            clear_server_timer('devil_stone4_update', get_server_timer_arg())
        end
    
        when devil_stone4_end.server_timer begin
            if d.select(get_server_timer_arg()) then
            d.setf("level", 5)
            d.setf("stone_count", 5)
            d.notice("Tenemos 5 pilones de sellos de los cuales debemos abrir.") 
            d.notice("Necesitamos las 5 llaves para abrirlos, y haciendo esto desbloquear la puerta.") 
            d.notice("Las criaturas presentes del abismo deben poseerla.") 
            d.notice("Disponiendo de 20 minutos, para buscarlas todas!") 
            d.jump_all(special.devil_tower[4][1], special.devil_tower[4][2])
            server_timer('devil_stone5_fail1', 5*60, get_server_timer_arg())
            clear_server_timer('devil_stone4_update', get_server_timer_arg())
    
            -- 5th Piso, seguir matando demonios y bestias.
            d.set_regen_file("data/dungeon/deviltower5_regen.txt")
    
            -- 5th Piso, buscar los sellos de los pilones.
            d.spawn_mob(20073, 421, 452)
            d.spawn_mob(20073, 380, 460)
            d.spawn_mob(20073, 428, 414)
            d.spawn_mob(20073, 398, 392)
            d.spawn_mob(20073, 359, 426)
            end
        end
        when devil_stone5_fail1.server_timer begin
            if d.select(get_server_timer_arg()) then
            d.notice("Le quedan 15 minutos.")
            server_timer('devil_stone5_fail2', 5*60, get_server_timer_arg())
            end
        end
    
        when devil_stone5_fail2.server_timer begin
            if d.select(get_server_timer_arg()) then
            d.notice("Le quedan 10 minutos.")
            server_timer('devil_stone5_fail3', 5*60, get_server_timer_arg())
            end
        end
    
        when devil_stone5_fail3.server_timer begin
            if d.select(get_server_timer_arg()) then
            d.notice("Le quedan 5 minutos.")
            server_timer('devil_stone5_fail', 5*60, get_server_timer_arg())
            end
        end
    
        when devil_stone5_fail.server_timer begin
            if d.select(get_server_timer_arg()) then
            d.notice("El tiempo se ha acabado, la mision fracaso.")
            d.exit_all()
            end
        end
    
        --when devil_stone4.kill begin
            --d.setf("level", 5)
            --d.setf("stone_count", 4)
            --d.clear_regen()
            --d.regen_file("data/dungeon/deviltower5_regen.txt")
            --d.jump_all_local(special.devil_tower[4][1], special.devil_tower[4][2])
        --end
    
        when 1062.kill with pc.in_dungeon() and d.getf("level") == 5 begin
            local KILL_COUNT_FOR_DROP_KEY = 50
            --if is_test_server() then
            --KILL_COUNT_FOR_DROP_KEY = 1
            --end
            local n =d.getf("count") + 1
            d.setf("count", n) 
            if n == KILL_COUNT_FOR_DROP_KEY then
            -- Claves descendentes.
            game.drop_item(50084, 1)
            d.setf("count", 0)
            end
        end
        when devil_stone5.take with item.vnum == 50084 begin
            npc.purge()
            item.remove()
            d.setf("stone_count", d.getf("stone_count") - 1)
            if d.getf("stone_count")