uScared? 29 Posted November 16, 2014 Boas cyber-gamers. Como muitos ou alguns sabem, existem os novos games, mais conhecidos por files 55/54k do Vanilla. Bem, nessas files, há alguns bugs. Incluindo a torre dos demónios que vos venho trazer hoje corrigida. Bem, pelo que me apercebi o vanilla mudou o código de kill. Que seria por exemplo: 8015.kill E corrigido passaria a ser: when kill with npc.get_race() == 8015 begin 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 kill with npc.get_race() == 8015 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 kill with npc.get_race() == 1091 and 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 kill with npc.get_race() == 8016 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 kill with npc.get_race() == 1062 and d.getf("level") == 5 begin local KILL_COUNT_FOR_DROP_KEY = 50 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 kill with npc.get_race() == 1092 and 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 kill with npc.get_race() == 8018 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 kill with npc.get_race() == 8019 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 kill with npc.get_race() == 1040 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 kill with npc.get_race() == 1093 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 endend Fonte: Metin2Dev Se ajudei dá +1 :D 3 Kɛɛɗ, KraX and gonsalo710 reacted to this Share this post Link to post Share on other sites
Kɛɛɗ 519 Posted November 17, 2014 Obrigado pela partilha... Cumprimentos. Share this post Link to post Share on other sites
KraX 0 Posted November 17, 2014 Obrigado por partilhares :D Sabes como resolver o bugs das wars também para essa fille? Se sim seria possível fazeres um tutorial a explicar como se faz ou então explicar-me o que fazer por PM? Mais uma vez obrigado. Share this post Link to post Share on other sites
uScared? 29 Posted November 18, 2014 Não, ainda não tratei das wars. Mas assim que resolver postarei aqui :) Share this post Link to post Share on other sites
Karbust 1,143 Posted November 18, 2014 Isso aplica se a todas as quests que tenham xxx.kill, visto esse parte não funcionar no vanilla core, logo não é só a torre que está com esse problema, mas sim todas as quests que usam essa função para detectar o que se matou... Share this post Link to post Share on other sites