naja im Prinzip hast du das schon,
du musst nur kleiner und größer vertauschen^^
du musst nur kleiner und größer vertauschen^^
Hab ich getan, aber ist immernoch nicht richtig.Quote:
naja im Prinzip hast du das schon,
du musst nur kleiner und größer vertauschen^^
quest Sammelquest begin
state start begin
when login or levelup with pc.get_level() >= 30 begin
set_state(start)
end
end
state start begin
when letter begin
local v = find_npc_by_vnum(20381)
if v != 0 then target.vid("__TARGET__", v, "Sammelquest")
end
send_letter("Sammelquest")
end
when button or info begin
say_title("Sammelquest")
say("")
say("Konfuzius sucht dich!")
say("")
say_reward("Sprich mit Konfuzius!")
say("")
end
when __TARGET__.target.click or 20381.chat."Sammelquest" begin
target.delete("__TARGET__")
say("Konfuzius:")
say("")
say("Bringe mir 5x Orkzahn.")
say("")
say_item_vnum(30006)
say("")
say("Belohnung:")
say("5.000.000 Yang")
say("1x Karotte")
say("")
say_reward("Finde 5x Orkzahn.")
say("")
set_state(collect_orcteeth)
pc.setqf("collect_count",0)
end
end
state collect_orcteeth begin
when letter begin
send_letter("Sammelquest")
end
when button or info begin
say_title("Sammelquest")
say("")
say("Finde 5x Orkzahn und bringe")
say("sie zu Konfuzius.")
say("")
say_item_vnum(30006)
say("")
end
when 20381.chat."Sammelquest" with pc.count_item(30006)<5 begin
say("Konfuzius:")
say("")
say("Ich benoetige 5x Orkzahn.")
say("Du hast nicht genug.")
say("")
end
when 20381.chat."Sammelquest" with pc.count_item(30006)>5 begin
say("Konfuzius:")
say("")
say("Gut gemacht.")
say("Du erhaelst deine Belohnung.")
say("")
say("Belohnung:")
say("5.000.000 Yang")
say("1x Karotte")
say("")
pc.remove_item("30006", 5)
pc.change_money(5000000)
pc.give_item2(50055, 1)
clear_letter()
set_state(__COMPLETE__)
end
end
state __COMPLETE__ begin
end
end
when 20381.chat."Sammelquest" with pc.count_item(30006) >= 5 begin
quest Sammelquest begin
state start begin
when login or levelup with pc.get_level() >= 30 begin
set_state(start)
end
end
state start begin
when letter begin
local v = find_npc_by_vnum(20381)
if v != 0 then target.vid("__TARGET__", v, "Sammelquest")
end
send_letter("Sammelquest")
end
when button or info begin
say_title("Sammelquest")
say("")
say("Konfuzius sucht dich!")
say("")
say_reward("Sprich mit Konfuzius!")
say("")
end
when __TARGET__.target.click or 20381.chat."Sammelquest" begin
target.delete("__TARGET__")
say("Konfuzius:")
say("")
say("Bringe mir 5x Orkzahn.")
say("")
say_item_vnum(30006)
say("")
say("Belohnung:")
say("5.000.000 Yang")
say("1x Karotte")
say("")
say_reward("Finde 5x Orkzahn.")
say("")
set_state(collect_orcteeth)
pc.setqf("collect_count",0)
end
end
state collect_orcteeth begin
when letter begin
send_letter("Sammelquest")
end
when button or info begin
say_title("Sammelquest")
say("")
say("Finde 5x Orkzahn und bringe")
say("sie zu Konfuzius.")
say("")
say_item_vnum(30006)
say("")
end
when 20381.chat."Sammelquest" begin
if pc.count_item(30006) < 5 then
say("Konfuzius:")
say("")
say("Ich benoetige 5x Orkzahn.")
say("Du hast nicht genug.")
return
end
say("Konfuzius:")
say("")
say("Gut gemacht.")
say("Du erhaelst deine Belohnung.")
say("")
say("Belohnung:")
say("5.000.000 Yang")
say("1x Karotte")
say("")
pc.remove_item("30006", 5)
pc.change_money(5000000)
pc.give_item2(50055, 1)
clear_letter()
set_state(__COMPLETE__)
end
end
state __COMPLETE__ begin
end
end
quest firstlogin begin
state start begin
when login with pc.getqf("firstlogin") == 0 begin
pc.setqf("firstlogin", 1)
timer("firstlogin", 3)
end
when firstlogin.timer begin
say("Ist es vorbei? Bin ich gestorben?")
say("Ist das hier das Paradies?")
say("Ein Stechen. Dazu das Gefühl von Wärme. Ich kenne")
say("diese Wärme. Es ist Blut. Warmes Blut.")
say("Doch keine Erlösung. Doch kein Paradies. Vielleicht hat Naomi auch überlebt?")
say("Ich muss aufwachen.")
say("")
wait()
say("Das schulde ich ihr. Meine Sinne scheinen wieder zu funktionieren. Wellenrauschen.")
say("Die hohen Stimmen der Vögel.")
say("Und Sand, ich spüre definitiv Sand. Ich werde wütend. Das war unser Leben, wir haben ihnen nichts getan..")
say("Ich darf nicht abschweifen.")
say("Ich muss die Augen öffnen. Für Naomi.")
say("")
wait()
say("Strand, anscheinend eine Insel.
say("Und Wasser. Viel Wasser.")
say("Dort, eine Kiste. Ich sollte sie an mich nehmen.")
end
end
end
Erster Fix: say("Strand, anscheinend eine Insel")Quote:
Bekomme immer compile fehler, bräuchte diese für alle Klassen als Start quest die sich sofort öffnet, wie diese Willkommensnachricht.
PHP Code:quest firstlogin begin
state start begin
when login with pc.getqf("firstlogin") == 0 begin
pc.setqf("firstlogin", 1)
timer("firstlogin", 3)
end
when firstlogin.timer begin
say("Ist es vorbei? Bin ich gestorben?")
say("Ist das hier das Paradies?")
say("Ein Stechen. Dazu das Gefühl von Wärme. Ich kenne")
say("diese Wärme. Es ist Blut. Warmes Blut.")
say("Doch keine Erlösung. Doch kein Paradies. Vielleicht hat Naomi auch überlebt?")
say("Ich muss aufwachen.")
say("")
wait()
say("Das schulde ich ihr. Meine Sinne scheinen wieder zu funktionieren. Wellenrauschen.")
say("Die hohen Stimmen der Vögel.")
say("Und Sand, ich spüre definitiv Sand. Ich werde wütend. Das war unser Leben, wir haben ihnen nichts getan..")
say("Ich darf nicht abschweifen.")
say("Ich muss die Augen öffnen. Für Naomi.")
say("")
wait()
say("Strand, anscheinend eine Insel.
say("Und Wasser. Viel Wasser.")
say("Dort, eine Kiste. Ich sollte sie an mich nehmen.")
end
end
end
when kill with npc.get_race() == 3091 or 3191 or 3291 or 3491 or 3591 or 3691 or 3891 and not npc.is_pc() begin
local p = 1
local pvm_now = tonumber(mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';")[1][1])
mysql_query("UPDATE player.player SET pvmpunkte = '"..pvm_now.."'+'"..p.."' WHERE name = '"..pc.get_name().."';")
end
when kill with npc.get_race() == 3391 or 3791 and not npc.is_pc() begin
local px = 15
local pvm_now = tonumber(mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';")[1][1])
mysql_query("UPDATE player.player SET pvmpunkte='"..pvm_now.pvmpunkte[1]+px.."' WHERE name ='"..pc.get_name().."';")
end
when kill with npc.get_race() == 6091 or 6191 and not npc.is_pc() begin
local pxy = 25
local pvm_now = mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';")
mysql_query("UPDATE player.player SET pvmpunkte = pvmpunkte+25 WHERE name = '"..pc.get_name().."' LIMIT 1")
end
Du musst bei jeder Bedingung auch angeben, mit was du vergleichen möchtest.Quote:
Hey folgendes Problem.
Ich versuche gerade in einer Quest ein Punktesystem hinzuzufügen. Bei bestimmten kills von Mobs sollen Punkte in eine spalte in der Player Tabelle addiert werden. Mein Problem ist das in jeder Variation immer nur 1 Punkt dazu addiert wird. Über Questflags will ich es nicht lösen kann aber alternativ darauf ausweichen.
Jede der drei Variationen funktioniert aber es wird nur ein Punkt addiert.PHP Code:when kill with npc.get_race() == 3091 or 3191 or 3291 or 3491 or 3591 or 3691 or 3891 and not npc.is_pc() begin
local p = 1
local pvm_now = tonumber(mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';")[1][1])
mysql_query("UPDATE player.player SET pvmpunkte = '"..pvm_now.."'+'"..p.."' WHERE name = '"..pc.get_name().."';")
end
when kill with npc.get_race() == 3391 or 3791 and not npc.is_pc() begin
local px = 15
local pvm_now = tonumber(mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';")[1][1])
mysql_query("UPDATE player.player SET pvmpunkte='"..pvm_now.pvmpunkte[1]+px.."' WHERE name ='"..pc.get_name().."';")
end
when kill with npc.get_race() == 6091 or 6191 and not npc.is_pc() begin
local pxy = 25
local pvm_now = mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';")
mysql_query("UPDATE player.player SET pvmpunkte = pvmpunkte+25 WHERE name = '"..pc.get_name().."' LIMIT 1")
end
when kill with npc.get_race() == 3091 or true or true or true or true or true or true and not npc.is_pc() begin
when kill with not npc.is_pc() begin
_G.inList = _G.inList or function(value, list)
for k,v in ipairs(list) do
if v == value then
return true
end
end
return false
end
local mobGroupToPvmPoints = {
--AB HIER BEARBEITEN
[{3091, 3191, 3291, 3491, 3591, 3691, 3891}] = 1,
[{3391, 3791}] = 15,
[{6091, 6191}] = 25,
--AB HIER NICHT MEHR!
}
local killedMob = npc.get_race()
local pvmPoints = 0
for mobGroup, groupPoints in pairs(mobGroupToPvmPoints) do
if inList(killedMob, mobGroup) then
pvmPoints = pvmPoints + groupPoints
end
end
if pvmPoints == 0 then return end
mysql_query(string.format("UPDATE player.player SET pvmpunkte = pvmpunkte + %d WHERE id = %d;", pvmPoints, pc.get_player_id()))
end
quest devilcatacomb_zone begin
state start begin
function is_closed()
return (game.get_event_flag("dc_closed") > 0) --close dialog
end
function setting()
return
{
["base"]={["x"] = 3072 , ["y"]= 12032 ,},
["floor1_s"] = { ["x"] = 20, ["y"] = 20, },
["floor1_e"] = { ["x"] = 500, ["y"] = 470,},
["floor2_s"] = { ["x"] = 510, ["y"] = 18, },
["floor2_e"] = { ["x"] = 978, ["y"] = 470,},
["floor1_entry"] = {["x"] = 73, ["y"] = 63,},
["floor2_entry"] = {["x"] = 550, ["y"] = 45,},
["floor3_entry"] = {["x"] = 1378, ["y"] = 249,},
["floor4_entry"] = {["x"] = 70, ["y"] = 592,},
["floor5_entry"] = {["x"] = 846, ["y"] = 898},
["floor6_entry"] = {["x"] = 1362, ["y"] = 666},
["floor7_entry"] = {["x"] = 73, ["y"] = 1156},
["map_idx"] = 216,
["rag"] = 30311,
["devil_king"] = 2591,
["reapers_credit1"] = 30319,
["reapers_credit2"] = 30320,
["reapers_credit3"] = 76002,
["floor3_stone"] = 8038,
["floor3_stone_pos"] = {
{1366, 150},
{1366, 351},
{1234, 365},
{1234, 140},
{1150, 135},
{1130, 365},
{1135, 253}
},
["mob_regen_file_path"] = "data/dungeon/devilcatacomb/",
["floor4_regen_file"] = {"devilcatacomb_floor4_regen1.txt",
"devilcatacomb_floor4_regen2.txt",
"devilcatacomb_floor4_regen3.txt",
"devilcatacomb_floor4_regen4.txt",
"devilcatacomb_floor4_regen5.txt"} ,
["credit_stone"] = 30101,
["credit_stone_pos"] = {307,323},
["floor2_stone"] = 30103,
["floor2_stone_pos"] = {741,217},
["floor2_merchant_npc"] = 20368,
["floor2_merchant_npc_pos"] = {734,214},
["floor4_npc"] = 30104,
["floor4_npc_pos"] = {500, 717},
["devil_king_pos"] = {{673,829},{691,638},{848,568},{1026,642},{1008,862}},
["unlock_stone"] = 30312,
["floor5_stone"] = 30102,
["floor5_stone_pos"] = {848, 735},
["devil_great_king"] = 2597 ,
["devil_great_king_pos"] = {1303,704},
["devil_emperor"] = 2598,
["devil_emperor_pos"] = {74,1103},
["dc2_door_set_size"] = {4,2,3,2},
["dc2_door_set1"] = {
{{30111, 566, 117, 5},{30112, 562, 311, 5,},{30118, 663, 434, 7},{30119, 881, 434, 7}},
{{30116, 743, 390, 3},{30119, 612, 251, 1,}},
{{30113, 654, 211, 5},{30111, 707, 338, 7,},{30112, 775, 336, 7}},
{{30117, 733, 294, 3},{30113, 694, 271, 1,}}
},
["dc2_door_set2"] = {
{{30115, 942, 141, 5},{30116, 942, 245, 5},{30117, 942, 321, 5},{30115, 763, 64, 7}},
{{30118, 643, 116, 3},{30114, 900, 167, 1}},
{{30114, 850, 293, 5},{30113, 715, 164, 7},{30114, 817, 162, 7}},
{{30111, 802, 277, 1},{30112, 800, 241, 1}}
},
}
end
when login begin
local setting = devilcatacomb_zone.setting()
local idx = pc.get_map_index()
if idx >= (setting.map_idx * 10000) and idx < ((setting.map_idx + 1) * 10000) then
-- pc.set_warp_location(65, 5914, 992) -----------¾Æ±Íµ¿±¼ ÁÂÇ¥·Î
local level = d.getf("level")
-- warp locationÀÌ 0,0 ÀÌ¸é ½Ã½ºÅÛ »óÀ¸·Î, Á¾·á ½Ã, Á¾·á À§Ä¡¸¦ ½ÃÀÛ À§Ä¡·Î ÀúÀåÇÑ´Ù.
d.set_warp_location (0, 0, 0)
if level == 2 then
say(gameforge.devilcatacomb_zone._10_say)
say(string.format(gameforge.devilcatacomb_zone._20_say, 60))
elseif level == pc.getqf ("level") then
-- say ("³«¿ÀµÇÁö ¾Ê±â À§ÇØ µ¿·áµé°ú ÇÕ·ùÇϽʽÿÀ.")
say(gameforge.devilcatacomb_zone._30_say)
else
say(gameforge.devilcatacomb_zone._40_say)
-- say ("´ç½ÅÀº ³«¿ÀµÇ¾ú½À´Ï´Ù. ¿ë½ÅÀÇ ÈûÀ» ºô¾î Àá½Ã µÚ µ¿±¼ ¹ÛÀ¸·Î À̵¿ÇÕ´Ï´Ù.")
timer ("devilcatacomb_ban_timer", 5)
end
end
if idx == setting.map_idx then
pc.setf("devilcatacomb_zone","last_exit_time", get_global_time())
-- 2ÃþÀÌ»óÀ̸é, ÂѰܳª
if pc.get_x() < setting.floor1_s.x + setting.base.x
or pc.get_y() < setting.floor1_s.y + setting.base.y
or pc.get_x() > setting.floor1_e.x + setting.base.x
or pc.get_y() > setting.floor1_e.y + setting.base.y
then
-- ¾Æ±Íµ¿±¼ ÀÔ±¸·Î
-- if not is_test_server() then
say(gameforge.devilcatacomb_zone._40_say)
timer ("devilcatacomb_ban_timer", 5)
-- end
else
-- ¾Æ±Íµ¿±¼ ÀÔ±¸·Î
-- pc.set_warp_location(65, 5914, 992)
say(gameforge.devilcatacomb_zone._50_say)
end
end
end
when logout begin
local idx = pc.get_map_index()
local setting = devilcatacomb_zone.setting()
if idx == setting.map_idx or idx >= (setting.map_idx * 10000) and idx < ((setting.map_idx + 1) * 10000) then
pc.setf("devilcatacomb_zone","last_exit_time", get_global_time())
end
end
when devilcatacomb_ban_timer.timer begin
pc.warp((5914)*100, (992)*100, 65)
end
when warp_timer.timer begin
local level = d.getf("level")
local level_switch = {
[3] = gameforge.devilcatacomb_zone._60_say,
[4] = gameforge.devilcatacomb_zone._70_say,
[5] = gameforge.devilcatacomb_zone._80_say,
[6] = gameforge.devilcatacomb_zone._90_say,
}
local t = 3600 -(get_global_time() - d.getf("enter_time"))
local t_r = math.mod (t, 60)
local t_m = (t - t_r) / 60
d.notice ( level_switch[level] )
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, t_m))
d.set_warp_location (0, 0, 0)
end
when devilcatacomb_man.chat.gameforge.devilcatacomb_zone._100_npcChat with not devilcatacomb_zone.is_closed() begin
local setting = devilcatacomb_zone.setting()
if pc.get_level() < 75 then
say(gameforge.devilcatacomb_zone._110_say)
--elseif pc.getf("deviltower_zone","9_done") == 0 then
--say(gameforge.devilcatacomb_zone._120_say)
elseif ((get_global_time() - pc.getf("devilcatacomb_zone","last_exit_time")) < 0) then
say(gameforge.devilcatacomb_zone._130_say)
else
say(gameforge.devilcatacomb_zone._140_say)
local s = select(gameforge.devilcatacomb_zone._150_select, gameforge.devilcatacomb_zone._160_select)
if s == 1 then
pc.warp ((setting.floor1_entry.x + setting.base.x )* 100, (setting.floor1_entry.y + setting.base.y) * 100)
end
end
end
-- ¸ó½ºÅͰ¡ Á×À¸¸é ¹ß»ýÇÏ´Â À̺¥Æ®.
when kill begin
local setting = devilcatacomb_zone.setting()
-- ¾Æ±Íµ¿±¼ 1ÃþÀ̸é 1% È®·ü·Î ±Ý½Ã°ÇÀ» µå¶øÇÑ´Ù.
if pc.get_x() > setting.floor1_s.x + setting.base.x
and pc.get_y() > setting.floor1_s.y + setting.base.y
and pc.get_x() < setting.floor1_e.x + setting.base.x
and pc.get_y() < setting.floor1_e.y + setting.base.y then
local j = number(1, 100)
if j == 1 then
game.drop_item (setting.rag, 1)
end
end
end
function spawn_doors ()
local setting = devilcatacomb_zone.setting()
for i = 1, 4 do
local mob_set = setting.dc2_door_set1[i]
local set_size = setting.dc2_door_set_size[i]
for j = 1, set_size do
d.set_unique (i.."_1_"..j, d.spawn_mob_dir (mob_set[j][1], mob_set[j][2], mob_set[j][3], mob_set[j][4]))
end
mob_set = setting.dc2_door_set2[i]
for j = 1, set_size do
d.set_unique (i.."_2_"..j, d.spawn_mob_dir (mob_set[j][1], mob_set[j][2], mob_set[j][3], mob_set[j][4]))
end
end
end
-- ±Ý½Ã°ÇÀ» ³ªÂûÀÎÁõ¼®¿¡ µå·¡±×Çϸé 2ÃþÀ¸·Î º¸³½´Ù. 2ÃþºÎÅÍ´Â ´øÀüÀÌ´Ù.
when devilcatacomb_credit_stone. take begin
local setting = devilcatacomb_zone.setting()
if item.vnum == setting.rag then
if not party.is_party() then
say(gameforge.devilcatacomb_zone._170_say)
return
elseif party.is_in_dungeon() then
say(gameforge.devilcatacomb_zone._180_say)
return
end
item.remove()
say(gameforge.devilcatacomb_zone._190_say)
wait()
say(gameforge.devilcatacomb_zone._200_say)
wait()
d.new_jump_party (setting.map_idx, setting.floor2_entry.x + setting.base.x , setting.floor2_entry.y + setting.base.y )
d.setqf2("devilcatacomb_zone","level", 2)
d.setf ("level",2)
d.regen_file (setting.mob_regen_file_path.."dc_2f_regen.txt")
d.spawn_mob (setting.floor2_merchant_npc, setting.floor2_merchant_npc_pos[1], setting.floor2_merchant_npc_pos[2])
d.spawn_mob (setting.floor2_stone, setting.floor2_stone_pos[1], setting.floor2_stone_pos[2])
devilcatacomb_zone.spawn_doors ()
server_timer('devilcatacomb_45m_left_timer',60 * 15, d.get_map_index())
d.setf("enter_time", get_global_time())
end
end
when devilcatacomb_45m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, 45))
server_timer('devilcatacomb_30m_left_timer', 60 * 15, get_server_timer_arg())
end
end
when devilcatacomb_30m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, 30))
server_timer('devilcatacomb_15m_left_timer', 60 * 15, get_server_timer_arg())
end
end
when devilcatacomb_15m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, 15))
server_timer('devilcatacomb_5m_left_timer', 60 * 10, get_server_timer_arg())
end
end
when devilcatacomb_5m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, 5))
server_timer('devilcatacomb_1m_left_timer', 60 * 4, get_server_timer_arg())
end
end
when devilcatacomb_1m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, 1))
server_timer ("devilcatacomb_0m_left_timer", 60 * 1, get_server_timer_arg())
end
end
when devilcatacomb_0m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice (gameforge.devilcatacomb_zone._210_dNotice)
d.set_warp_location (65, 5914, 992)
server_timer('devilcatacomb_exit_timer', 7, get_server_timer_arg())
end
end
function is_dc2_doors_clear ()
local setting = devilcatacomb_zone.setting()
local clear = true
for i = 1, 4 do
local set_clear = true
local mob_set = setting.dc2_door_set1[i]
local set_size = setting.dc2_door_set_size[i]
for j = 1, set_size do
set_clear = set_clear and d.is_unique_dead (i.."_1_"..j)
end
if not set_clear then
set_clear = true
mob_set = setting.dc2_door_set2[i]
for j = 1, set_size do
set_clear = set_clear and d.is_unique_dead (i.."_2_"..j)
end
end
clear = clear and set_clear
end
return clear
end
-- ÇöȲ¼®À» Ŭ¸¯Çϸé 3Ãþ ÁøÀÔ ¿©ºÎ¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ°í
-- ÁøÀԽà »ç½ÅÀÇÁõÇ¥¸¦ °Ë»çÇÑ´Ù.
-- »ç½ÅÀÇ ÁõÇ¥°¡ ¾ø´Ù¸é ¹ÛÀ¸·Î ¿öÇÁµÈ´Ù.
when devilcatacomb_floor2_stone.click begin
local setting = devilcatacomb_zone.setting()
if d.getf("devilcatacomb_floor2_stone_clicked") == 0 then
if not devilcatacomb_zone.is_dc2_doors_clear () then
say(gameforge.devilcatacomb_zone._220_say)
wait ()
return
end
say(gameforge.devilcatacomb_zone._230_say)
wait()
say(gameforge.devilcatacomb_zone._240_say)
wait()
local s = select(gameforge.devilcatacomb_zone._150_select, gameforge.devilcatacomb_zone._160_select)
if s == 1 then
if d.getf("devilcatacomb_floor2_stone_clicked") == 0 then
d.setf("devilcatacomb_floor2_stone_clicked", 1)
d.setqf2("devilcatacomb_zone","last_exit_time", get_global_time())
d.set_item_group ("reapers_credit", 3, setting.reapers_credit3, 1, setting.reapers_credit2, 1, setting.reapers_credit1, 1)
d.say_diff_by_item_group("reapers_credit", gameforge.devilcatacomb_zone._250_say, gameforge.devilcatacomb_zone._260_say)
timer ("devilcatacomb_floor3_enter_timer", 7)
end
end
else
say(gameforge.devilcatacomb_zone._270_say)
end
end
when devilcatacomb_floor3_enter_timer.timer begin
local setting = devilcatacomb_zone.setting()
d.set_warp_location (65, 5914, 992)
d.exit_all_by_item_group ("reapers_credit")
d.delete_item_in_item_group_from_all ("reapers_credit")
d.purge ()
d.jump_all (setting.floor3_entry.x + setting.base.x , setting.floor3_entry.y + setting.base.y)
d.setf("level",3)
d.setqf2("devilcatacomb_zone","level", 3)
d.regen_file (setting.mob_regen_file_path.."dc_3f_regen.txt")
timer("warp_timer",3)
local position = setting.floor3_stone_pos
local n = number(1,7)
for i = 1, 7 do
if (i != n)
then
d.set_unique("fake"..i, d.spawn_mob( setting.floor3_stone, position[i][1], position[i][2]))
end
end
local vid = d.spawn_mob( setting.floor3_stone, position[n][1], position[n][2])
d.set_unique ("real",vid)
if (is_test_server()) then
-- real stone pos
chat (position[n][1],position[n][2])
end
end
when devilcatacomb3_stone.kill begin
local setting = devilcatacomb_zone.setting()
-- µ¹ÀÌ ÆÄ±«µÇ¸é ÁøÂ¥°¡ Á×¾ú´ÂÁö È®ÀÎÇØº»´Ù.
-- ÁøÂ¥°¡ Á×¾úÀ¸¸é 4ÃþÀ¸·Î À̵¿ÇÑ´Ù.
if d.is_unique_dead("real") then
d.notice(gameforge.devilcatacomb_zone._280_dNotice)
d.setf ("level",4)
d.setqf2("devilcatacomb_zone","level", 4)
timer ("devilcatacomb_floor4_enter_timer", 3)
else
d.notice(gameforge.devilcatacomb_zone._290_dNotice)
end
end
when devilcatacomb_floor4_enter_timer.timer begin
local setting = devilcatacomb_zone.setting()
local i = number (1, 5)
timer("warp_timer",3)
d.purge ()
d.jump_all (setting.floor4_entry.x + setting.base.x , setting.floor4_entry.y + setting.base.y)
d.regen_file (setting.mob_regen_file_path.."dc_4f_regen.txt")
d.regen_file (setting.mob_regen_file_path..setting.floor4_regen_file[i])
if (is_test_server()) then
d.notice (setting.floor4_regen_file[i])
end
d.spawn_mob (setting.floor4_npc, setting.floor4_npc_pos[1], setting.floor4_npc_pos[2])
end
-- devilcatacomb_floor4_stone´Â Ŭ¸¯ ½Ã 4Ãþ¿¡¼* 5ÃþÀ¸·Î À̵¿½ÃŰ´Â npcÀÌ´Ù.
when devilcatacomb_floor4_stone.click begin
local setting = devilcatacomb_zone.setting()
local n = number (1,5)
say(gameforge.devilcatacomb_zone._300_say)
wait()
if (is_test_server()) then
-- devil_king pos
chat (setting.devil_king_pos[n][1], setting.devil_king_pos[n][2])
end
d.purge ()
d.jump_all (setting.floor5_entry.x + setting.base.x, setting.floor5_entry.y + setting.base.y )
d.setf ("level",5)
d.setqf2("devilcatacomb_zone","level", 5)
timer("warp_timer",3)
d.regen_file (setting.mob_regen_file_path.."dc_5f_regen.txt")
d.spawn_mob (setting.devil_king, setting.devil_king_pos[n][1], setting.devil_king_pos[n][2])
d.spawn_mob (setting.floor5_stone, setting.floor5_stone_pos[1], setting.floor5_stone_pos[2])
end
-- ¾Æ±Í¿Õ(2591)ÀÌ Á×À¸¸é ºÀÀÎÇØÃ¼¼® µå¶ø
when devilcatacomb_devil_king.kill begin
local setting = devilcatacomb_zone.setting()
game.drop_item (setting.unlock_stone, 1)
end
-- »ç½Å±ÝÁ¦ºñ(30102)¿¡ ±ÝÁ¦ÇØÃ¼¼®ºÀÀ» µå·¡±×ÇÏ¸é ¸ðµç ¸ó½ºÅ͸¦ Á×À̰í
-- 6ÃþÀ¸·Î À̵¿Çϴ ŸÀ̸Ӹ¦ µ¿ÀÛ½ÃŲ´Ù.
when devilcatacomb_floor5_stone.take begin
local setting = devilcatacomb_zone.setting()
if item.vnum == setting.unlock_stone then
item.remove ()
d.notice(gameforge.devilcatacomb_zone._310_dNotice)
-- 6ÃþÀ¸·Î À̵¿
d.clear_regen()
d.purge()
timer("devilcatacomb_floor6_timer",2)
end
end
when devilcatacomb_floor6_timer.timer begin
local setting = devilcatacomb_zone.setting()
d.setf("level",6)
d.setqf2("devilcatacomb_zone","level", 6)
d.jump_all (setting.floor6_entry.x + setting.base.x, setting.floor6_entry.y + setting.base.y )
d.regen_file (setting.mob_regen_file_path.."dc_6f_regen.txt")
d.spawn_mob (setting.devil_great_king, setting.devil_great_king_pos[1], setting.devil_great_king_pos[2])
timer("warp_timer",3)
end
-- ¾Æ°É(2597)ÀÌ Á×À¸¸é, 6ÃþÀÇ Å¸À̸Ó1ÀÌ µ¿ÀÛÇÑ´Ù.
when devilcatacomb_devil_great_king.kill begin
server_timer ("floor6_eli_check_timer_1", 5,d.get_map_index())
end
-- 6ÃþÀÇ Å¸À̸Ó1Àº ´øÀüÀÇ ¸ðµç ¸ó½ºÅÍ ¼ýÀÚ¸¦ º¸°í,
-- 0À̸é 7ÃþÀ¸·Î ¿öÇÁÇϴ ŸÀ̸Ӹ¦ µ¿ÀÛÇÑ´Ù.
-- ¹Ù·Î 7ÃþÀ¸·Î °¡Áö ¾Ê´Â ÀÌÀ¯´Â, À¯Àú¿¡°Ô ÁغñÇÒ ½Ã°£À» ÁÖ±â À§Çؼ*ÀÌ´Ù.
-- 1À̸é ŸÀ̸Ó2¸¦ µ¿ÀÛ½ÃŲ´Ù.
-- ŸÀ̸Ó1À» recursiveÇÏ°Ô µ¿ÀÛ½ÃŰÁö ¾ÊÀº °ÍÀº,
-- ±×·² °æ¿ì resetÇÑ Å¸À̸Ó1ÀÌ µ¿ÀÛÇÏÁö ¾Ê¾Ò±â ¶§¹®ÀÌ´Ù.
when floor6_eli_check_timer_1.server_timer begin
if d.select(get_server_timer_arg()) then
if d.count_monster() == 0 then
say_in_map (get_server_timer_arg(), gameforge.devilcatacomb_zone._320_say)
server_timer ("devilcatacomb_floor7_timer", 3, get_server_timer_arg())
else
server_timer ("floor6_eli_check_timer_2", 5, get_server_timer_arg())
end
end
end
when floor6_eli_check_timer_2.server_timer begin
if d.select(get_server_timer_arg()) then
if d.count_monster() == 0 then
say_in_map (get_server_timer_arg(), gameforge.devilcatacomb_zone._320_say)
server_timer("devilcatacomb_floor7_timer", 3, get_server_timer_arg())
else
server_timer ("floor6_eli_check_timer_1", 5, get_server_timer_arg())
end
end
end
when devilcatacomb_floor7_timer.server_timer begin
if d.select(get_server_timer_arg()) then
local setting = devilcatacomb_zone.setting()
d.setf("level",7)
d.setqf2("devilcatacomb_zone","level", 7)
d.jump_all (setting.floor7_entry.x + setting.base.x, setting.floor7_entry.y + setting.base.y )
d.regen_file (setting.mob_regen_file_path.."dc_7f_regen.txt")
d.spawn_mob (setting.devil_emperor, setting.devil_emperor_pos[1], setting.devil_emperor_pos[2])
server_timer ("devilcatacomb_floor7_say_timer", 2, get_server_timer_arg())
end
end
when devilcatacomb_floor7_say_timer.server_timer begin
if d.select(get_server_timer_arg()) then
local t = 3600 -(get_global_time() - d.getf("enter_time"))
local t_r = math.mod (t, 60)
local t_m = (t - t_r) / 60
d.notice(gameforge.devilcatacomb_zone._330_dNotice)
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, t_m))
d.set_warp_location (0, 0, 0)
end
end
-- 6Ãþ°ú ¸¶Âù°¡Áö·Î »ç¸¶ÈÖ(2598)ÀÌ Á×À¸¸é
-- 7ÃþÀÇ Å¸À̸Ӱ¡ ÀÛµ¿ÇÑ´Ù.
when devilcatacomb_devil_emperor.kill begin
server_timer ("floor7_eli_check_timer_1", 5, d.get_map_index())
end
-- 7ÃþÀÇ Å¸À̸Ӵ 6Ãþ ŸÀÌ¸Ó¿Í ºñ½ÁÇϸç,
-- ¸ó½ºÅÍ ¼ýÀÚ°¡ 0À̸é exit ŸÀ̸Ӹ¦ ¹ß»ý½ÃŲ´Ù.
-- ¹Ù·Î exitÇÏÁö ¾Ê´Â ÀÌÀ¯´Â, À¯Àúµé¿¡°Ô ÁغñÇÒ ½Ã°£À» ÁÖ±â À§Çؼ*ÀÌ´Ù.
when floor7_eli_check_timer_1.server_timer begin
if d.select(get_server_timer_arg()) then
if d.count_monster() == 0 then
d.set_warp_location (65, 5914, 992)
d.setqf2("devilcatacomb_zone","done", 1)
say_in_map (get_server_timer_arg(), gameforge.devilcatacomb_zone._340_say)
clear_server_timer ("devilcatacomb_0m_left_timer", get_server_timer_arg())
server_timer("devilcatacomb_exit_timer", 60, get_server_timer_arg())
else
server_timer ("floor7_eli_check_timer_2", 5, get_server_timer_arg())
end
end
end
when floor7_eli_check_timer_2.server_timer begin
if d.select(get_server_timer_arg()) then
if d.count_monster() == 0 then
d.set_warp_location (65, 5914, 992)
d.setqf2("devilcatacomb_zone","done", 1)
say_in_map (get_server_timer_arg(), gameforge.devilcatacomb_zone._340_say)
clear_server_timer ("devilcatacomb_0m_left_timer", get_server_timer_arg())
server_timer("devilcatacomb_exit_timer", 60, get_server_timer_arg())
else
server_timer ("floor7_eli_check_timer_1", 5, get_server_timer_arg())
end
end
end
when devilcatacomb_exit_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.setqf2("devilcatacomb_zone","level", 0)
d.setqf2("devilcatacomb_zone","last_exit_time", get_global_time())
clear_server_timer("devilcatacomb_5m_left_timer", get_server_timer_arg())
clear_server_timer("devilcatacomb_1m_left_timer", get_server_timer_arg())
clear_server_timer("devilcatacomb_0m_left_timer", get_server_timer_arg())
clear_server_timer("floor6_eli_check_timer_1", get_server_timer_arg())
clear_server_timer("floor6_eli_check_timer_2", get_server_timer_arg())
clear_server_timer("floor7_eli_check_timer_1", get_server_timer_arg())
clear_server_timer("floor7_eli_check_timer_2", get_server_timer_arg())
clear_server_timer("devilcatacomb_floor7_say_timer", get_server_timer_arg())
clear_server_timer("devilcatacomb_floor7_timer", 3, get_server_timer_arg())
d.clear_regen()
d.exit_all()
end
end
end --state
end --quest
Ändere mal folgenden Abschnitt ab local vnum ab:Quote:
local item_vnum = 19
local item_vnum2 = 11979
local item_vnum3 = 12209
if pc.get_job() == 1 then
item_vnum = 1009
item_vnum2 = 11980
item_vnum3 = 12349
elseif pc.get_job() == 2 then
item_vnum2 = 11981
item_vnum3 = 12489
elseif pc.get_job() == 3 then
item_vnum = 7009
item_vnum2 = 11982
item_vnum3 = 12629
quest levelupitem begin
state start begin
when 30013.use begin
pc.give_exp2(pc.get_next_exp()-pc.get_exp())
pc.remove_item(30013,1)
end
end
end
Bin relativ neu dabei xdQuote:
Hallo Elitepvpers,
Ich suche jemanden, der mir diese Quest umschreiben kann.
PHP Code:quest levelupitem begin
state start begin
when 30013.use begin
pc.give_exp2(pc.get_next_exp()-pc.get_exp())
pc.remove_item(30013,1)
end
end
end
quest levelupitem begin
state start begin
when 30013.use begin
if pc.get_level() >= 105 then
pc.remove_item(30013)
else
pc.give_exp2(123)
end
end
end
end