Beiträge von imperfectionN

    Funktioniert leider nicht. In der vierten Ebene sind dann immer zwei Metins ineinander, sodass wenn ich den richtigen Metin (in dem Fall die beiden richtigen) gekloppt habe ich in einer Art Dauerschleife in die nächste Ebene porte.


    Ich habe es tatsächlich selbst gelöst bekommen...


    when 1062.kill with pc.in_dungeon() and d.getf("level") == 5 begin

    local KILL_COUNT_FOR_DROP_KEY = 10

    local n =d.getf("count") + 1

    d.setf("count", n)

    if n == KILL_COUNT_FOR_DROP_KEY then

    game.drop_item(50084, 1)

    d.setf("count", 0)

    end

    end


    In diesem Code Abschnitt ist die Rede vom Mob 1062 (Gemeiner Geist Bogenschütze). Dieser spawnt in meinen Fliege Files jedoch nicht, warum auch immer. Habe es auf 1032.kill für den gemeinen Bogenschützen abgeändert und die Schlüsselsteine droppen :):thumbup:

    Moin Leute,


    bei meinem Server ist der Dämonenturm verbuggt (Fliege Files).

    In der fünften Ebene droppen die Schlüsselsteine nicht, in der darauffolgenden Ebene erscheint der Schmied nach Killen des stolzen Dämonenkönigs nicht. Kann jemand weiterhelfen und weiß woran es liegt oder hat eine zuverlässigere Quest, die er gerne teilt?


    quest deviltower_zone begin

    state start begin

    when login begin

    if pc.get_map_index() == 66 then

    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 logout begin

    if pc.count_item(30300) >= 1 then

    pc.remove_item(30300, pc.count_item(30300))

    end

    -- not used in the game

    -- pc.remove_item(30301, pc.count_item(30301))

    if pc.count_item(30302) >= 1 then

    pc.remove_item(30302, pc.count_item(30302))

    end

    end


    when deviltower_man.chat.gameforge.deviltower_zone._10_npcChat begin

    if pc.get_level() < 40 then

    say_title(gameforge.deviltower_zone._20_sayTitle)

    say(gameforge.deviltower_zone._30_say)

    else

    say_title(gameforge.deviltower_zone._20_sayTitle)

    say(gameforge.deviltower_zone._40_say)

    local s = select(gameforge.locale.monkey_dungeon.enter, gameforge.locale.monkey_dungeon.no_enter)

    if s == 1 then

    pc.warp(216500,727000)

    end

    end

    end

    when devil_stone1.kill begin

    timer("devil_stone1_1", 6)

    end

    when devil_stone1_1.timer begin

    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_stone3.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin

    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()

    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

    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)

    local positions = deviltower_zone.get_4floor_stone_pos()


    for i = 1, 6 do

    test_chat(positions[i][1], positions[i][2])

    d.set_unique("fake" .. i , d.spawn_mob(8017, positions[i][1], positions[i][2]))

    end


    test_chat(positions[7][1], positions[7][2])


    local vid = d.spawn_mob(8017, positions[7][1], positions[7][2])

    test_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())


    notice_multiline(gameforge.deviltower_zone._50_dNotice,d.notice)


    end


    when devil_stone4_fail1.server_timer begin

    if d.select(get_server_timer_arg()) then

    notice_multiline(gameforge.deviltower_zone._60_dNotice,d.notice)

    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

    notice_multiline(gameforge.deviltower_zone._70_dNotice,d.notice)

    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

    notice_multiline(gameforge.deviltower_zone._80_dNotice,d.notice)

    d.clear_regen()

    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)

    notice_multiline(gameforge.deviltower_zone._90_dNotice,d.notice)

    end

    end

    end

    else

    server_timer("devil_stone4_end", 5, get_server_timer_arg())

    --d.kill_all()

    d.purge()

    notice_multiline(gameforge.deviltower_zone._100_dNotice,d.notice)

    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

    clear_server_timer('devil_stone4_update', get_server_timer_arg())

    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())


    -- clear regen from memory when exit

    d.clear_regen()


    d.setf("level", 5)

    d.setf("stone_count", 5)

    notice_multiline(gameforge.deviltower_zone._110_dNotice,d.notice)

    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())


    d.set_regen_file("data/dungeon/deviltower5_regen.txt")


    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

    notice_multiline(gameforge.deviltower_zone._120_dNotice,d.notice)

    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

    notice_multiline(gameforge.deviltower_zone._60_dNotice,d.notice)

    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

    notice_multiline(gameforge.deviltower_zone._70_dNotice,d.notice)

    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

    notice_multiline(gameforge.deviltower_zone._80_dNotice,d.notice)

    d.exit_all()

    end

    end



    when 1062.kill with pc.in_dungeon() and d.getf("level") == 5 begin

    local KILL_COUNT_FOR_DROP_KEY = 10

    local n =d.getf("count") + 1

    d.setf("count", n)

    if n == KILL_COUNT_FOR_DROP_KEY then

    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") <= 0 then

    d.setf("level", 6)

    d.clear_regen()

    d.regen_file("data/dungeon/deviltower6_regen.txt")


    notice_multiline(gameforge.deviltower_zone._130_dNotice,d.notice)

    d.jump_all(special.devil_tower[5][1], special.devil_tower[5][2])

    local server_arg = d.get_map_index()

    clear_server_timer('devil_stone5_fail1', server_arg)

    clear_server_timer('devil_stone5_fail2', server_arg)

    clear_server_timer('devil_stone5_fail3', server_arg)

    clear_server_timer('devil_stone5_fail', server_arg)

    else

    d.notice(string.format(gameforge.deviltower_zone._140_dNotice, d.getf("stone_count")))

    end

    end


    when devil_stone6.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and d.getf("level") == 6 begin

    d.kill_all()

    notice_multiline(gameforge.deviltower_zone._150_dNotice,d.notice)

    d.check_eliminated()

    notice_multiline(gameforge.deviltower_zone._160_dNotice,d.notice)

    local reward_alchemist = {20074, 20075, 20076}

    d.spawn_mob(reward_alchemist[number(1,3)], 425, 216);

    d.setqf2("deviltower_zone","can_refine", 1)

    end



    when 20074.chat.gameforge.deviltower_zone._170_npcChat with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin

    say_title(mob_name(20074))

    say(gameforge.deviltower_zone._190_say)

    wait()

    if pc.level >=75 then

    say_title(mob_name(20074))


    say(gameforge.deviltower_zone._200_say)

    local s= select(gameforge.deviltower_zone._210_select, gameforge.locale.cancel, gameforge.deviltower_zone._220_select)

    if s==3 then

    pc.warp(590500, 110900)

    return

    end

    if s==2 then

    return

    end


    timer("devil_jump_7", 6)

    npc.unlock()

    d.purge()

    return

    end

    say_title(mob_name(20074))

    say(gameforge.deviltower_zone._230_say)

    wait()

    pc.warp(590500, 110500)

    return

    end


    when 20075.chat.gameforge.deviltower_zone._170_npcChat with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin

    say_title(mob_name(20075))

    say(gameforge.deviltower_zone._190_say)

    wait()

    if pc.level >=75 then

    say_title(mob_name(20075))


    say(gameforge.deviltower_zone._200_say)

    local s= select(gameforge.deviltower_zone._210_select, gameforge.deviltower_zone._220_select)

    if s==3 then

    pc.warp(590500, 110900)

    return

    end

    if s==2 then

    return

    end


    timer("devil_jump_7", 6)

    npc.unlock()

    d.purge()

    return

    end

    say_title(mob_name(20075))

    say(gameforge.deviltower_zone._230_say)

    wait()

    pc.warp(590500, 110500)

    return

    end

    when 20076.chat.gameforge.deviltower_zone._170_npcChat with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin

    say_title(mob_name(20076))

    say(gameforge.deviltower_zone._190_say)

    wait()

    if pc.level >=75 then

    say_title(mob_name(20076))


    say(gameforge.deviltower_zone._200_say)

    local s= select(gameforge.deviltower_zone._210_select, gameforge.deviltower_zone._220_select)

    if s==3 then

    pc.warp(590500, 110900)

    return

    end

    if s==2 then

    return

    end


    timer("devil_jump_7", 6)

    npc.unlock()

    d.purge()

    return

    end

    say_title(mob_name(20076))

    say(gameforge.deviltower_zone._230_say)

    wait()

    pc.warp(590500, 110500)

    return

    end

    when devil_jump_7.timer begin

    d.clear_regen()


    d.spawn_mob(8018, 639, 658)

    d.spawn_mob(8018, 611, 637)

    d.spawn_mob(8018, 596, 674)

    d.spawn_mob(8018, 629, 670)


    d.setf("level", 7)



    notice_multiline(gameforge.deviltower_zone._240_dNotice,d.notice)

    d.jump_all(2048+590, 6656+638)

    end


    when 8018.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin

    local cont = d.getf("7_stone_kill") + 1

    d.setf("7_stone_kill", cont)


    if cont >= 4 then

    d.setf("7_stone_kill", 0)

    d.set_regen_file("data/dungeon/deviltower7_regen.txt")

    end

    end


    when 8019.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin

    game.drop_item(30300, 1)

    end


    when 30300.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin

    pc.remove_item("30300", 1)


    local pct = number(1,10)


    if pct == 1 then

    game.drop_item(30302, 1)

    d.clear_regen()

    else

    -- nothing happens cause the items isnt used in the game

    game.drop_item(30301, 1)

    end

    end


    when 30302.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin

    if d.getf( "level" ) != 7 then

    pc.remove_item( "30302", 1)

    return

    end


    say_title(gameforge.blacksmith._40_sayTitle)

    say(gameforge.deviltower_zone._250_say)

    pc.remove_item("30302", 1)

    timer("devil_jump_8", 6)

    d.clear_regen()

    end


    when devil_jump_8.timer begin

    d.setf("level", 8)


    notice_multiline(gameforge.deviltower_zone._260_dNotice,d.notice)

    d.jump_all(2048+590, 6656+403)

    d.set_regen_file("data/dungeon/deviltower8_regen.txt")

    d.spawn_mob(20366, 640, 460)

    local _count = pc.count_item(30302)

    pc.remove_item(30302,_count)


    end


    when 1040.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin

    local pct1 = number(1, 5)

    if pct1 == 1 then

    local pct2 = number(1, 10)

    if pct2 == 1 then

    game.drop_item(30304, 1)

    else

    game.drop_item(30303, 1)

    end

    else

    return

    end

    end


    when 20366.take with item.vnum == 30304 begin

    npc.purge()

    item.remove()

    timer("devil_jump_9", 6)

    end


    when devil_jump_9.timer begin

    d.setf("level", 9)



    notice_multiline(gameforge.deviltower_zone._270_dNotice,d.notice)

    d.jump_all(2048+590, 6656+155)

    d.regen_file("data/dungeon/deviltower9_regen.txt")

    end


    when 1093.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin

    d.kill_all()

    d.setqf2("deviltower_zone","9_done", 1)

    notice_multiline(gameforge.deviltower_zone._280_dNotice,d.notice)

    notice_multiline(gameforge.deviltower_zone._290_dNotice,d.notice)

    server_timer("devil_end_jump", 60, d.get_map_index())

    end


    when devil_end_jump.server_timer begin

    if d.select (get_server_timer_arg()) then

    d.clear_regen()

    d.exit_all()

    end

    end

    end

    end

    Ich möchte folgende Quest schreiben:

    Wenn ein Spieler einen anderen Spieler killt -> Der gestorbene Spieler verliert 50.000 Yang, der angreifende Spieler erhält 50.000 Yang. Im Optimalfall wird im Chat noch namentlich bekanntgegeben, welcher Spieler wen gekillt hat.


    Bislang bekomme ich es nur hin dem angreifenden Spieler 50.000 Yang zu geben:


    quest tot begin

    state start begin


    when kill with npc.is_pc() begin

    pc.give_gold(25000) // Die Quest wird komischerweise immer zwei Mal ausgeführt, deswegen hier 25.000 Yang

    end


    end

    end


    Die restlichen Funktionen bekomme ich nicht hin, einen Questmanager.cpp wie ich es in manchen Ecken gelesen habe, besitze ich nicht.

    Hallo zusammen,


    entgegensetzlich vieler anderer Leute habe ich das Problem, dass meine NPC-Preise, welche in der item_proto hinterlegt sind x 3 genommen werden und nicht wie bei vielen anderen durch fünf geteilt werden.


    Ich habe bei meinen Fliege Files allerdings auch keine shop_manager.cpp oder dergleichen, wo ich irgendwas fixxen könnte.

    Hatte jemand das Problem schon mal?

    Hallo zusammen,


    bin relativ neu hier und auf der Suche nach jemanden der folgende Dateien zur Verfügung stellen kann:


    - common_drop_item.txt

    - drop_item_group.txt

    - mob_drop_item.txt


    Habe die Fliege Files und nach ewig langer Suche welche gefunden, die ansatzweise in Ordnung sind.

    Bin aber eher auf der Suche nach Files die Oldschool sind.


    LG und vielen Dank! :)