|
You last visited: Today at 19:03
Advertisement
[SERVICE] Die Questkontrolle
Discussion on [SERVICE] Die Questkontrolle within the Metin2 Private Server forum part of the Metin2 category.
06/04/2015, 19:22
|
#11626
|
elite*gold: 260
Join Date: Dec 2011
Posts: 42
Received Thanks: 2
|
Quote:
Originally Posted by Noa_
pairs
|
Die Quest an sich funktioniert jetzt, wenn ich aber IG etwas Trainieren will geschieht dies nicht, sprich es bleibt auf dem Stand wo es vorher auch schon war.
|
|
|
06/05/2015, 02:22
|
#11627
|
elite*gold: 0
Join Date: May 2010
Posts: 294
Received Thanks: 157
|
#war falsch sry
|
|
|
06/06/2015, 20:49
|
#11628
|
elite*gold: 0
Join Date: Aug 2013
Posts: 145
Received Thanks: 1
|
immer noch keine hilfe
Liebe leute ich versuche diese quest siet wochen aber ich habe ein problem
wenn die duelle laufen und jemand verloren hat soll er ja aus den ring geportet werden und der nächste gegner soll wieder rein aber es geht nicht kann mir jemand helfen
PHP Code:
------------------------------------------------------
-- Automatic PVP-Tournament System Quest
-- (c) 2011 - 2012 by musicinstructor@elitepvpers.com
------------------------------------------------------
quest pvp_manager begin
state start begin
when login with pc.get_map_index() == 250 and (pvp_attenders == nil or pvp_attenders[pvp_manager.get_my_attender_id()] == nil or (pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode != 1 and pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode != 2)) begin
if pvp_attenders == nil then
pvp_manager.guard_check_position()
timer("pvp_guard_1", 20)
return
end
if pvp_attenders[pvp_manager.get_my_attender_id()] == nil then
pvp_manager.guard_check_position()
timer("pvp_guard_1", 20)
return
end
if pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode != 1 and pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode != 2 then
pvp_manager.guard_check_position()
timer("pvp_guard_1", 20)
end
end
when pvp_guard_1.timer begin
if pc.get_map_index() != 250 then
return
end
pvp_manager.guard_check_position()
timer("pvp_guard_2", 20)
end
when pvp_guard_2.timer begin
if pc.get_map_index() != 250 then
return
end
pvp_manager.guard_check_position()
timer("pvp_guard_1", 20)
end
function guard_check_position()
if pc.get_local_x() >= 84 and pc.get_local_y() >= 84 and pc.get_local_x() <= 116 and pc.get_local_y() <= 116 then --arena 1
pvp_manager.guard_reset()
end
if pc.get_local_x() >= 84 and pc.get_local_y() >= 136 and pc.get_local_x() <= 116 and pc.get_local_y() <= 168 then --arena 2
pvp_manager.guard_reset()
end
if pc.get_local_x() >= 136 and pc.get_local_y() >= 84 and pc.get_local_x() <= 168 and pc.get_local_y() <= 116 then --arena 3
pvp_manager.guard_reset()
end
if pc.get_local_x() >= 136 and pc.get_local_y() >= 136 and pc.get_local_x() <= 168 and pc.get_local_y() <= 168 then --arena 4
pvp_manager.guard_reset()
end
end
function guard_reset()
notice_in_map("AUTOPVP-GUARD: "..pc.getname().." wurde aus der Arena entfernt.")
pc.warp_local(pc.get_map_index(), 126*100, 24*100)
end
when 20355.chat."Dem PvP-Turnier beitreten" with game.get_event_flag("pvp") != 0 begin
say_title("Hauptmann:")
if game.get_event_flag("pvp") == 1 then
say("Schärfe deine Waffen und deine Sinne!")
say("Das PvP-Turnier beginnt gleich!")
say("")
say("Beeilung!")
say("Kämpfe für die Ehre unseres Reiches!")
say("")
else
say("Das Turnier hat bereits begonnen.")
say("Du darfst keine Zeit verlieren!")
say("")
end
wait()
pc.warp(857285,856993)
end
when 20078.chat."Zurück zur Stadt" with pc.get_map_index() == 250 begin
say_title("Zurück zur Stadt:")
say("Möchtest du das Arenengelände verlassen und zurück")
say("in deine Reichshauptstadt teleportiert werden?")
say("")
local s = select("Ja", "Nein")
if s == 1 then
warp_to_village()
end
end
when 20078.chat."GM: PVP-Turnier abbrechen" with pc.get_map_index() == 250 and pc.is_gm() and game.get_event_flag("pvp") != 0 begin
say_title("PVP-Turnier abbrechen")
say("Möchtest du das PVP-Turnier wirklich abbrechen?")
say("")
local s = select("Ja", "Nein")
if s == 1 then
game.set_event_flag("pvp", 0)
pvp_attenders = nil
notice_all("Das PVP-Turnier wurde abgebrochen.")
say_title("PVP-Turnier abbrechen")
say("Das PVP-Turnier wurde abgebrochen.")
say("")
if pvp_manager_callback != nil then
pvp_manager_callback()
end
end
end
when 20078.chat."GM: PVP-Turnier starten" with pc.get_map_index() == 250 and pc.is_gm() and game.get_event_flag("pvp") == 0 and ae_pvp_tournament == nil begin
say_title("PVP-Turnier starten:")
say("Bitte lege die Levellimits für das PVP-Turnier")
say("fest.")
say("")
say_reward("Minimum Level (minimum 15):")
local str_min_level = input()
say_title("PVP-Turnier starten:")
local min_level = tonumber(str_min_level)
if min_level == nil then
say("Es wurde keine Zahl eingegeben.")
say("")
return
end
if tonumber(str_min_level) < 15 then
min_level = 15
end
say("Das minimale Level ist nun "..tostring(min_level)..".")
say("Bitte geben sie ein maximales Level ein:")
local str_max_level = input()
say_title("PVP-Turnier starten:")
local max_level = tonumber(str_max_level)
if max_level == nil then
say("Es wurde keine Zahl eingegeben.")
say("")
return
end
if tonumber(str_max_level) < min_level then
say("Das maximale Level muss größer als das")
say("minimale Level sein.")
say("")
return
end
game.set_event_flag("pvp_minlevel", min_level)
game.set_event_flag("pvp_maxlevel", max_level)
say("Minimal-Level "..tostring(min_level))
say("Maximal-Level "..tostring(max_level))
say("")
local s = select("Jetzt starten", "Abbrechen")
if s == 2 then
return
end
say_title("PVP-Turnier starten:")
say("Das PVP-Turnier wurde gestartet.")
say("Jeder, der teilnehmen möchte, kann sich hier")
say("anmelden.")
say("Die Anmeldungen können hier geschlossen werden.")
say("")
say_reward("Aktuelle Levellimits: "..game.get_event_flag("pvp_minlevel").." - "..game.get_event_flag("pvp_maxlevel"))
pvp_manager.open_registrations()
end
function open_registrations()
game.set_event_flag("pvp", 1)
attender_count = 0
game.set_event_flag("pvp_tournament", get_global_time())
pvp_attenders = nil
pvp_attenders = { }
arena = {
-- arena 1
{
{ 113, 100 },
{ 88, 100 },
0,
"SLEEPING",
0,
},
-- arena 2
{
{ 113, 152 },
{ 88, 152 },
0,
"SLEEPING",
0,
},
-- arena 3
{
{ 140, 152 },
{ 164, 152 },
0,
"SLEEPING",
0,
},
-- arena 4
{
{ 164, 100 },
{ 140, 100 },
0,
"SLEEPING",
0,
},
}
notice_all("Die Anmeldungen für das PVP-Turnier sind nun eröffnet!")
notice_all("Aktuelle Levellimits: "..game.get_event_flag("pvp_minlevel").." - "..game.get_event_flag("pvp_maxlevel"))
end
when 20078.chat."Beim PVP-Turnier anmelden" with pc.get_map_index() == 250 and game.get_event_flag("pvp") == 1 begin
say_title(mob_name(20078)..":")
if game.get_event_flag("pvp_tournament") == pc.getqf("pvp_tournament") then
say("Du bist bereits beim PVP-Turnier angemeldet.")
say("")
return
end
if pc.get_level() < 15 then
say("Dein Level ist zu niedrig.")
say("")
return
end
if pc.get_level() < game.get_event_flag("pvp_minlevel") or pc.get_level() > game.get_event_flag("pvp_maxlevel") then
say("Dein Level muss zwischen "..game.get_event_flag("pvp_minlevel").." und "..game.get_event_flag("pvp_maxlevel").." sein.")
say("")
return
end
say("Beim PVP-Turnier kämpfst du gegen Spieler")
say("mit möglichst gleichen Leveln.")
say("Wenn du dich gegen die Anderen durchsetzen")
say("kannst, winkt dir ein Preis.")
say("Möchtest du teilnehmen?")
local s = select("Teilnehmen!", "Ich habe sowieso keine Chance.")
say_title(mob_name(20078)..":")
if s == 1 then
say("Du wirst aufgerufen, wenn du dran bist.")
say("Aber du musst hier bleiben, sonst hast du")
say("automatisch verloren und scheidest aus.")
say("Viel Erfolg!")
say("")
pvp_attenders[attender_count+1] = {name = pc.getname(), level = pc.get_level(), partner = nil, winner = true, fight_mode = 0, arena = 0}
pc.setqf("attender_id", attender_count+1)
pc.setqf("pvp_tournament", game.get_event_flag("pvp_tournament"))
attender_count = attender_count + 1
if achievement_manager != nil then
achievement_manager.on_participatepvpevent()
end
elseif s == 2 then
say("Stimmt, du bist wirklich ein Schwächling.")
say("Es hat hier auch schon Tote gegeben.")
say("")
end
end
when 20078.chat."Anmeldungen des PVP-Turniers" with pc.get_map_index() == 250 and pc.is_gm() and game.get_event_flag("pvp") == 1 begin
say_title("PVP-Turnier")
say("Momentan sind "..tonumber(attender_count).." Spieler angemeldet.")
if ae_pvp_tournament != nil then
say("")
return
end
say("Sollen die Anmeldungen geschlossen und das Turnier")
say("gestartet werden?")
say("")
local s = select("Anmeldungen schließen", "Anmeldephase fortsetzen")
if s == 1 then
say_title("Anmeldungen schließen:")
say("Die Anmeldungen wurden geschlossen.")
say("Die Kämpfe beginnen jetzt.")
say("")
pvp_manager.close_registrations()
end
end
function close_registrations()
if attender_count == 0 then
notice_all("Das PVP-Turnier kann nicht stattfinden, da sich niemand angemeldet hat.")
game.set_event_flag("pvp", 0)
pvp_attenders = nil
if pvp_manager_callback != nil then
pvp_manager_callback()
end
return
end
game.set_event_flag("pvp", 2)
pvp_manager.make_duel_list()
duel_list_index = 0
playerless_mode = false
notice_all("Die Anmeldungen für das PVP-Turnier sind nun geschlossen.")
notice_all("Die Kämpfe beginnen jetzt.")
pvp_manager.refresh_arenas()
end
when 20078.chat."Mit wem werde ich als nächstes Kämpfen?" with pc.get_map_index() == 250 and game.get_event_flag("pvp") == 2 and game.get_event_flag("pvp_tournament") == pc.getqf("pvp_tournament") begin
say_title(mob_name(20078)..":")
if pvp_manager.get_duel_partner() == nil then
say("Im Moment hast du noch keinen Partner.")
say("Wir müssen abwarten, ob es gleich weitere")
say("Spieler ohne Partner gibt. Dann bilde ich")
say("neue Paare.")
say("Ansonsten hast du das Glück, dass du kampflos")
say("in die nächste Runde aufsteigst.")
say("")
return
end
say("Nach dem aktuellen Plan musst du voraussichtlich")
say("gegen "..pvp_manager.get_duel_partner().." kämpfen.")
say("")
end
function make_duel_list()
duel_list = { }
local i = 0
for ai = 1, attender_count, 1 do
if pvp_attenders[ai] != nil and pvp_attenders[ai].partner == nil and pvp_attenders[ai].winner == true then
local partner_id = pvp_manager.findpartner(tostring(pvp_attenders[ai].name), pvp_attenders[ai].level)
if partner_id != nil then
pvp_attenders[ai].partner = tostring(pvp_attenders[partner_id].name)
pvp_attenders[partner_id].partner = tostring(pvp_attenders[ai].name)
duel_list[i] = {fighter_id1 = ai, fighter_id2 = partner_id}
i = i + 1
end
end
end
for ai = 1, attender_count, 1 do
if pvp_attenders[ai] != nil and pvp_attenders[ai].partner == nil and pvp_attenders[ai].winner == true then
local partner_id = pvp_manager.findpartner_for_partnerless(tostring(pvp_attenders[ai].name), pvp_attenders[ai].level)
if partner_id != nil then
pvp_attenders[ai].partner = tostring(pvp_attenders[partner_id].name)
pvp_attenders[partner_id].partner = tostring(pvp_attenders[ai].name)
duel_list[i] = {fighter_id1 = ai, fighter_id2 = partner_id}
i = i + 1
end
end
end
end
function findpartner(name, level)
local closest_level = nil
local partner_id = nil
for ai = 1, attender_count, 1 do
if pvp_attenders[ai] != nil and pvp_attenders[ai].winner == true and tonumber(pvp_attenders[ai].level) <= level + 30 and tonumber(pvp_attenders[ai].level) >= level - 30 and tostring(pvp_attenders[ai].name) != name and pvp_attenders[ai].partner == nil and pvp_manager.is_player_in_map(tostring(pvp_attenders[ai].name)) == true then
if closest_level == nil then
closest_level = pvp_attenders[ai].level
partner_id = ai
elseif tonumber(pvp_attenders[ai].level) == tonumber(level) then
closest_level = pvp_attenders[ai].level
partner_id = ai
elseif tonumber(level) < tonumber(closest_level) and tonumber(pvp_attenders[ai].level) < tonumber(closest_level) then
closest_level = pvp_attenders[ai].level
partner_id = ai
elseif tonumber(level) > tonumber(closest_level) and tonumber(pvp_attenders[ai].level) > tonumber(closest_level) then
closest_level = pvp_attenders[ai].level
partner_id = ai
end
end
end
return partner_id
end
function findpartner_for_partnerless(name, level)
local closest_level = nil
local partner_id = nil
for ai = 1, attender_count, 1 do
if pvp_attenders[ai] != nil and pvp_attenders[ai].winner == true and tostring(pvp_attenders[ai].name) != name and pvp_attenders[ai].partner == nil and pvp_manager.is_player_in_map(tostring(pvp_attenders[ai].name)) == true then
if closest_level == nil then
closest_level = pvp_attenders[ai].level
partner_id = ai
elseif pvp_attenders[ai].level == level then
closest_level = pvp_attenders[ai].level
partner_id = ai
elseif tonumber(level) < tonumber(closest_level) and pvp_attenders[ai].level < closest_level then
closest_level = pvp_attenders[ai].level
partner_id = ai
elseif tonumber(level) > tonumber(closest_level) and pvp_attenders[ai].level > closest_level then
closest_level = pvp_attenders[ai].level
partner_id = ai
end
end
end
return partner_id
end
function is_player_in_map(name)
if pc.getname() == name then
return true
end
local myname = pc.getname()
local target = find_pc_by_name(name)
local t = pc.select(target)
if pc.getname() == myname then
pc.select(t)
return false
end
pc.select(t)
return true
end
when 20078.chat."GM: Refresh 'n Clear Arenas" with pc.is_gm() and game.get_event_flag("pvp") == 2 begin
for aArena = 1, 4, 1 do
arena[aArena][3] = 0
arena[aArena][4] = "SLEEPING"
end
pvp_manager.refresh_arenas()
end
-- not working
--[[
when 20078.chat."GM: End fight" with pc.is_gm() and game.get_event_flag("pvp") == 2 begin
say_title("End fight:")
say("On which arena should the fight be ended?")
local s = select("Arena 1", "Arena 2", "Arena 3", "Arena 4", "Schließen")
if s == 5 then
return
end
local fighter1 = nil
local fighter2 = nil
for ai = 1, attender_count, 1 do
if pvp_attenders[ai].arena == s and pvp_attenders[ai].fight_mode != 0 then
if fighter1 == nil then
fighter1 = ai
else
fighter2 = ai
end
end
end
if fighter1 == nil then
say_title("End fight:")
say("There is no current Battle on this arena.")
say("")
return
end
say_title("End fight:")
say("Who should be considered winner when fight on arena "..s.." ")
say("should be ended?")
local w = select(tostring(pvp_attenders[fighter1].name), tostring(pvp_attenders[fighter1].name), "Cancel")
if w == 3 then
return
end
if w == 1 then
pvp_attenders[fighter2].winner = false
notice_in_map(tostring(pvp_attenders[fighter1].name).." has won the battle against "..tostring(pvp_attenders[fighter2].name).."!", pc.get_map_index())
pvp_manager.local_pc_warp(tostring(pvp_attenders[fighter1].name, 126, 234))
pvp_manager.local_pc_warp(tostring(pvp_attenders[fighter2].name, 126, 24))
else
pvp_attenders[fighter1].winner = false
notice_in_map(tostring(pvp_attenders[fighter2].name).." has won the battle against "..tostring(pvp_attenders[fighter1].name).."!", pc.get_map_index())
pvp_manager.local_pc_warp(tostring(pvp_attenders[fighter1].name, 126, 24))
pvp_manager.local_pc_warp(tostring(pvp_attenders[fighter2].name, 126, 234))
end
pvp_attenders[fighter1].fight_mode = 0
pvp_attenders[fighter2].fight_mode = 0
arena[s][3] = 0
pvp_manager.refresh_arenas()
say_title("End fight:")
say("The battle has been ended.")
end
--]]
when 20078.chat."GM: PVP-Turnier Belohnung" with pc.is_gm() begin
say_title("Belohnung:")
say("Aktuelle Belohnung: "..game.get_event_flag("pvp_price_count").."x "..item_name(game.get_event_flag("pvp_price_vnum")).." (vnum: "..game.get_event_flag("pvp_price_vnum")..")")
local s = select("Belohnung ändern", "Schließen")
if s == 2 then
return
end
say_title("Belohnung ändern:")
say("Bitte gib die vnum der neuen Belohnung ein:")
local vnum = input()
say_title("Belohnung ändern:")
say("Bitte gib die Anzahl der neuen Belohnung ein:")
local count = input()
game.set_event_flag("pvp_price_count", count)
game.set_event_flag("pvp_price_vnum", vnum)
say_title("Belohnung ändern:")
say("Die Belohnung wurde geändert.")
say("Neue Belohnung: "..count.."x "..item_name(vnum).." (vnum: "..vnum..")")
end
function refresh_arenas()
for aArena = 1, 4, 1 do
if duel_list[duel_list_index] == nil then
if playerless_mode == true then
pvp_manager.init_next_round()
else
pvp_manager.fight_playerless()
end
return
end
if arena[aArena][3] == 0 then
arena[aArena][3] = 1
pvp_manager.fight_init(duel_list[duel_list_index].fighter_id1, duel_list[duel_list_index].fighter_id2, aArena)
end
end
end
function fight_init(pid1, pid2, arena_id)
duel_list_index = duel_list_index + 1
if pvp_manager.is_player_in_map(tostring(pvp_attenders[pid1].name)) == false then
notice_in_map(tostring(pvp_attenders[pid1].name).." ist nicht online und somit automatisch ausgeschlossen.", pc.get_map_index())
pvp_attenders[pid1].winner = false
pvp_attenders[pid2].partner = nil
arena[arena_id][3] = 0
pvp_manager.refresh_arenas()
return
end
if pvp_manager.is_player_in_map(tostring(pvp_attenders[pid2].name)) == false then
notice_in_map(tostring(pvp_attenders[pid2].name).." ist nicht online und somit automatisch ausgeschlossen.", pc.get_map_index())
pvp_attenders[pid2].winner = false
pvp_attenders[pid1].partner = nil
arena[arena_id][3] = 0
pvp_manager.refresh_arenas()
return
end
notice_in_map(tostring(pvp_attenders[pid1].name).." und "..tostring(pvp_attenders[pid2].name).." bitte im Ring einfinden!", pc.get_map_index())
--[[
local f1_accept = ask_fight(tostring(pvp_attenders[pid1].name), tostring(pvp_attenders[pid2].name))
if f1_accept != CONFIRM_OK then
notice_in_map(tostring(pvp_attenders[pid1].name).." hat den Kampf gegen "..tostring(pvp_attenders[pid2].name).." nicht angetreten.", pc.get_map_index())
pvp_attenders[pid1] = nil
pvp_attenders[pid2].partner = nil
pvp_manager.refresh_arenas()
return
end
local f2_accept = confirm(find_pc_by_name(tostring(pvp_attenders[pid2].name)), "Trittst du den Kampf gegen "..tostring(pvp_attenders[pid1].name).. " an?", 15)
if f2_accept != CONFIRM_OK then
notice_in_map(tostring(pvp_attenders[pid2].name).." hat den Kampf gegen "..tostring(pvp_attenders[pid1].name).." nicht angetreten.", pc.get_map_index())
pvp_attenders[pid2] = nil
pvp_attenders[pid1].partner = nil
pvp_manager.refresh_arenas()
return
end
]]
pvp_attenders[pid1].fight_mode = 1
pvp_attenders[pid2].fight_mode = 1
pvp_attenders[pid1].arena = arena_id
pvp_attenders[pid2].arena = arena_id
pvp_manager.local_pc_warp(tostring(pvp_attenders[pid1].name), arena[arena_id][1][1], arena[arena_id][1][2])
pvp_manager.local_pc_warp(tostring(pvp_attenders[pid2].name), arena[arena_id][2][1], arena[arena_id][2][2])
end
when login with pc.get_map_index() == 250 and game.get_event_flag("pvp") == 2 and pvp_manager.get_fight_mode() == 1 begin
affect.add(apply.MOV_SPEED, -10000, 2)
affect.add_collect(apply.HP_REGEN, 5000, 30)
affect.add_collect(apply.SP_REGEN, 5000, 30)
pvp_manager.set_fight_mode(2)
if arena[pvp_manager.get_arena()][3] == 2 then
arena[pvp_manager.get_arena()][5] = 30
loop_timer("fight_start_countdown", 1)
else
timer("partner_timeout", 40)
end
arena[pvp_manager.get_arena()][3] = 2
end
when partner_timeout.timer begin
if pvp_manager.is_player_in_map(pvp_manager.get_duel_partner()) == true or game.get_event_flag("pvp") != 2 or pvp_manager.get_fight_mode() != 2 then
return
end
pvp_manager.set_fight_mode(3)
if arena[pvp_manager.get_arena()][3] == 3 then
return
end
arena[pvp_manager.get_arena()][3] = 3
notice_in_map(pc.getname().." hat den Kampf gegen "..pvp_manager.get_duel_partner().." kampflos gewonnen!", pc.get_map_index())
pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].fight_mode = 3
pvp_attenders[pvp_manager.get_my_attender_id()].winner = true
pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].winner = false
pc.warp_local(pc.get_map_index(), 12600, 23400)
end
when fight_start_countdown.timer begin
if arena[pvp_manager.get_arena()][5] == -1 then
return
end
local partner_vid = find_pc_by_name(pvp_manager.get_duel_partner())
local my_vid = pc.get_vid()
if arena[pvp_manager.get_arena()][5] == 0 then
arena[pvp_manager.get_arena()][5] = -1
pc.select(partner_vid)
command("pvp "..my_vid)
pc.select(my_vid)
command("pvp "..partner_vid)
notice_in_map("Der Kampf zwischen "..pc.getname().." und "..pvp_manager.get_duel_partner().." beginnt!", pc.get_map_index())
timer("fight_start_countdown_shutdown", 1)
else
pc.select(partner_vid)
if math.mod(arena[pvp_manager.get_arena()][5], 5) == 0 then
syschat("Der Kampf beginnt in "..tostring(arena[pvp_manager.get_arena()][5]).." Sekunden.")
end
affect.add(apply.MOV_SPEED, -10000, 2)
pc.select(my_vid)
if math.mod(arena[pvp_manager.get_arena()][5], 5) == 0 then
syschat("Der Kampf beginnt in "..tostring(arena[pvp_manager.get_arena()][5]).." Sekunden.")
end
affect.add(apply.MOV_SPEED, -10000, 2)
arena[pvp_manager.get_arena()][5] = arena[pvp_manager.get_arena()][5] - 1
end
end
when fight_start_countdown_shutdown.timer begin
cleartimer("fight_start_countdown")
end
when logout with game.get_event_flag("pvp") == 2 and pc.get_map_index() == 26 and pvp_manager.get_fight_mode() == 2 begin
pvp_manager.set_fight_mode(3)
arena[pvp_manager.get_arena()][3] = 3
notice_in_map(pvp_manager.get_duel_partner().." hat den Kampf gegen "..pc.getname().." gewonnen!", pc.get_map_index())
pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].fight_mode = 3
pvp_attenders[pvp_manager.get_my_attender_id()].winner = false
pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].winner = true
pvp_manager.local_pc_warp(pvp_manager.get_duel_partner(), 126, 24)
end
when kill with game.get_event_flag("pvp") == 2 and pc.get_map_index() == 26 and npc.is_pc() and pvp_manager.get_fight_mode() == 2 begin
pvp_manager.set_fight_mode(3)
if arena[pvp_manager.get_arena()][3] == 3 then
return
end
arena[pvp_manager.get_arena()][3] = 3
notice_in_map(pc.getname().." hat den Kampf gegen "..pvp_manager.get_duel_partner().." gewonnen!", pc.get_map_index())
pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].fight_mode = 3
pvp_attenders[pvp_manager.get_my_attender_id()].winner = true
pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].winner = false
timer("fight_end", 5)
end
when fight_end.timer begin
pc.warp_local(pc.get_map_index(), 12600, 23400)
pvp_manager.local_pc_warp(pvp_manager.get_duel_partner(), 126, 24)
end
when letter with pc.get_map_index() == 26 and game.get_event_flag("pvp") == 2 and pvp_manager.get_fight_mode() == 3 begin
pvp_manager.set_fight_mode(0)
if pvp_attenders[pvp_manager.get_my_attender_id()].winner == true then
arena[pvp_manager.get_arena()][3] = 0
pvp_manager.refresh_arenas()
end
end
function fight_playerless()
for aArena = 1, 4, 1 do
if arena[aArena][3] != 0 then
return
end
end
playerless_mode = true
pvp_manager.make_duel_list()
pvp_manager.refresh_arenas()
end
function init_next_round()
for aArena = 1, 4, 1 do
if arena[aArena][3] != 0 then
return
end
end
playerless_mode = false
local winner_count = 0
--[[local]] winner_id = 0
for ai = 1, attender_count, 1 do
pvp_attenders[ai].partner = nil
pvp_attenders[ai].fight_mode = 0
if pvp_attenders[ai] != nil and pvp_attenders[ai].winner == true then
winner_count = winner_count + 1
winner_id = ai
end
end
if winner_count == 1 then
notice_all(pvp_attenders[winner_id].name.." hat das PVP-Turnier gewonnen!")
notice_all(pvp_attenders[winner_id].name.." erhält "..game.get_event_flag("pvp_price_count").."x "..item_name(game.get_event_flag("pvp_price_vnum")).." als Preis!")
local target = find_pc_by_name(pvp_attenders[winner_id].name)
local t = pc.select(target)
if achievement_manager != nil then
achievement_manager.on_winpvpevent()
end
pc.give_item2(game.get_event_flag("pvp_price_vnum"), game.get_event_flag("pvp_price_count"))
pc.select(t)
notice_all("Das PVP-Turnier ist nun zuende.")
game.set_event_flag("pvp", 0)
--pvp_attenders = nil
if pvp_manager_callback != nil then
pvp_manager_callback()
end
return
end
pvp_manager.make_duel_list()
duel_list_index = 0
if winner_count == 2 then
notice_all("Das Finale des PVP-Turniers beginnt!")
elseif winner_count <= 4 then
notice_all("Das Semi-Finale des PVP-Turniers beginnt!")
else
notice_all("Das PVP-Turnier geht in die nächste Runde!")
end
pvp_manager.refresh_arenas()
end
function local_pc_warp(name, x, y)
local target = find_pc_by_name(name)
local t = pc.select(target)
pc.warp_local(pc.get_map_index(), x*100, y*100)
pc.select(t)
end
function setqf_by_name(name, flag, value)
local target = find_pc_by_name(name)
local t = pc.select(target)
pc.setqf(flag, value)
pc.select(t)
end
function getqf_by_name(name, flag)
local target = find_pc_by_name(name)
local t = pc.select(target)
local rflag = pc.getqf(flag)
pc.select(t)
return rflag
end
function get_attender_id_by_name(name)
for ai = 1, attender_count, 1 do
if tostring(pvp_attenders[ai].name) == name then
return ai
end
end
return 0
end
function get_my_attender_id()
return pvp_manager.get_attender_id_by_name(pc.get_name())
end
function get_duel_partner()
if pvp_attenders[pvp_manager.get_my_attender_id()] != nil and pvp_attenders[pvp_manager.get_my_attender_id()].partner != nil then
return pvp_attenders[pvp_manager.get_my_attender_id()].partner
else
return nil
end
end
function get_fight_mode()
if pvp_attenders != nil and pvp_manager.get_my_attender_id() != 0 and pvp_attenders[pvp_manager.get_my_attender_id()] != nil and pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode != nil then
return pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode
else
return 0
end
end
function set_fight_mode(fmode)
pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode = fmode
end
function get_arena()
return pvp_attenders[pvp_manager.get_my_attender_id()].arena
end
function set_arena(id)
pvp_attenders[pvp_manager.get_my_attender_id()].arena = id
end
function ask_fight(asker, target)
return confirm(find_pc_by_name(target), "Trittst du den Kampf gegen "..asker.. " an?", 15)
end
function log_current_winner(points)
if pvp_attenders != nil then
mysql_query("INSERT INTO player.pvptournament_winlog (pid, points) VALUES ((SELECT id FROM player.player WHERE name='"..tostring(pvp_attenders[winner_id].name).."'), "..tostring(points)..") ON DUPLICATE KEY UPDATE points=points+"..points, ql.mysql["user"], ql.mysql["pass"], nil, ql.mysql["ip"])
end
end
when 20087.chat."PVP-Turnier Rangliste" begin
local s = select("Information", "Rangliste", "Abbrechen")
if s == 1 then
say_title("PVP-Turnier Rangliste:")
say("In der PVP-Turnier Rangliste stehen")
say("die Gewinner des PVP-Turnieres.")
say("Man bekommt abhängig von den jeweiligen")
say("Levellimits Punkte:")
say("15-54: 3 Punkte")
say("55-74: 6 Punkte")
say("75-105: 9 Punkte")
say("")
say_reward("Hinweis: Bei allen anderen PVP-Turnieren,")
say_reward("die außerhalb des Eventplans stattfinden,")
say_reward("werden keine Punkte an die Gewinner verteilt.")
say("")
elseif s == 2 then
local ranking = mysql_query("SELECT (SELECT name FROM player.player WHERE id = pid) AS name, points FROM player.pvptournament_winlog ORDER BY points DESC LIMIT 10", ql.mysql["user"], ql.mysql["pass"], nil, ql.mysql["ip"])
say_title("PVP-Turnier Rangliste:")
if ranking == "ERROR" then
say_reward("Es gibt noch keine Spieler in der Rangliste.")
say("")
return
end
for i = 1, table.getn(ranking.name), 1 do
say(i..". "..tostring(ranking.name[i]).." ("..tostring(ranking.points[i]).." Punkte)")
end
say("")
local self_rank = mysql_query("SELECT rank, points FROM (SELECT @rownum := @rownum + 1 AS rank, points, pid FROM player.pvptournament_winlog JOIN (SELECT @rownum := 0) r ORDER BY pvptournament_winlog.points DESC) x WHERE x.pid = '"..tostring(pc.get_player_id()).."'", ql.mysql["user"], ql.mysql["pass"], nil, ql.mysql["ip"])
if self_rank == "ERROR" then
return
end
say("Eigener Rang:")
say(self_rank.rank[1]..". "..tostring(pc.get_name()).." ("..tostring(self_rank.points[1]).." Punkte)")
say("")
end
end
end
|
|
|
06/07/2015, 01:11
|
#11629
|
elite*gold: 0
Join Date: May 2010
Posts: 294
Received Thanks: 157
|
Kommt denn die Ankündigung "name hat das duel gewonnen"?
wenn nein dann liegt es am mapindex, mir ist aufgefallen du hast da einen anderen als bei anderen map_index abfragen
|
|
|
06/07/2015, 14:39
|
#11630
|
elite*gold: 0
Join Date: Aug 2013
Posts: 145
Received Thanks: 1
|
ja kommt das ist es ja
|
|
|
06/07/2015, 15:23
|
#11631
|
elite*gold: 0
Join Date: May 2010
Posts: 294
Received Thanks: 157
|
Würde trotzdem mal die mapindexe einheitlich machen, stimmen die warp cordis wo die hin geportet werden sollen? weiß nicht welche map du nimmst usw.
|
|
|
06/10/2015, 15:24
|
#11632
|
elite*gold: 26
Join Date: May 2010
Posts: 865
Received Thanks: 767
|
Hey,
ich hab ein Problem mit meiner Blazing purgatory quest.
Und zwar geht es darum , dass man vor der Bosskammer ne Meldung bekommt das man eine Quest ab level 103 machen muss. Ich will diesen Part raus haben , kriege es aber selber nicht hin.
Hier meine Quest:
PHP Code:
define BLOCK_DOOR 20387
define DUNGEON_MAN 20385
define DUNGEON_MAN_DIR 0
define DUNGEON_MAP_INDEX 351
define ENTER_LIMIT_TIME 30
define ENTRY_MAN 20394
define ENTRY_MAP_INDEX 62
define FINAL_BOSS 6091
define LEVEL2_KEY 30329
define LEVEL2_STONE 20386
define LEVEL4_TARGET 6051
define LEVEL5_REALKEY 30330
define LEVEL5_STONE 20386
define LEVEL5_GEN_LIMIT 100
define LEVEL6_TARGET 8057
define LEVEL_CUT 100
define MOB_REGEN_FILE_PATH = "data/dungeon/flame_dungeon/"
define IN_DOOR 20388
define NPC_REGEN_FILE_PATH = "data/dungeon/flame_dungeon/npc.txt"
define TICKET_GROUP 10033
define LIMITED_PASS_TICKET 71175
quest flame_dungeon begin
state start begin
when ENTRY_MAN.click with pc.get_level() >= 90 begin
pc.give_item2(LIMITED_PASS_TICKET, 1)
set_state(run)
end
end
state run begin
function setting()
return
{
["bossroom_entry_pos"] = {8109,6867},
["boss_pos"] = {686,637},
["doors_pos"] = {
{320,394},
{293,359},
{333,321},
{378,320},
{400,355},
{394,401}
},
["idoors_pos"] = {
{268,447},
{234,359},
{300,264},
{454,217},
{470,355},
{467,469}
},
["doors_dir"] = {135,90,210,152,90,223},
["idoors_dir"] = {135,90,210,135,90,239},
["dungeon_entry_pos"] = {7762, 6739},-- ´øÀü¿¡ óÀ½ µé¾î¿À´Â °÷
["DUNGEON_MAN_bpos"] = {690,722},
["DUNGEON_MAN_pos"] = {354,362},
["LEVEL2_STONE_pos"] = {195,352},
["LEVEL4_TARGET_pos"] = {470,175},
["LEVEL5_STONE_pos"] = {
{486, 345},
{511, 336},
{525, 349},
{521, 365},
{503, 372},
{486, 365},
{500, 354}
},
["LEVEL6_TARGET_pos"] = {511,480},
["outside_entry_pos"] = {6142,7068}, --ÀÔÀå½ÃÄÑÁÖ´Â¾Ö ¼*ÀÖ´Â °÷
["YAK_pos"] = {376, 397} -- ¾àȯ ºÎÇÏ
}
end
function is_flamed(idx) -- Àû·æ¼º¿¡ ÀÖ´ÂÁö È®ÀÎ
return idx >= DUNGEON_MAP_INDEX * 10000 and idx < (DUNGEON_MAP_INDEX + 1) *10000
end
function make_dungeon() -- ´øÀü ¸¸µé±â
local setting = flame_dungeon.setting()
d.new_jump_party(DUNGEON_MAP_INDEX, setting.dungeon_entry_pos[1], setting.dungeon_entry_pos[2])
-- d.spawn_mob_ac_dir(DUNGEON_MAN, setting.DUNGEON_MAN_pos[1], setting.DUNGEON_MAN_pos[2],DUNGEON_MAN_DIR)
-- d.spawn_mob(YAK,setting.YAK_pos[1],setting.YAK_pos[2])
d.regen_file(NPC_REGEN_FILE_PATH)
d.setf("level",0)
for i=1,6 do
d.set_unique("door"..i, d.spawn_mob_ac_dir(BLOCK_DOOR, setting.doors_pos[i][1], setting.doors_pos[i][2],setting.doors_dir[i]))
end
for i=1,6 do
d.set_unique("idoor"..i, d.spawn_mob_ac_dir(IN_DOOR, setting.idoors_pos[i][1], setting.idoors_pos[i][2],setting.idoors_dir[i]))
end
d.setf("clear_count",0)
d.setf("started",0)
d.setf("dungeon_enter",0) -- Á¤»óÀûÀ¸·Î ÀÔÀåÇß´ÂÁö? // ºñÁ¤»ó : 0 Á¤»ó : 1 // ƨ±â¸é ÀÔÀåÁ¦Çѽð£À» ±â·Ï ¾ÈÇÔ
end
function go_boss() -- º¸½º·ë °¡±â
local setting = flame_dungeon.setting()
if pc.get_level() < 104 then --·¹º§È®ÀÎ
-- syschat(gameforge.flame_dungeon._580_notice)
say(gameforge.flame_dungeon._580_notice)
return
else
if pc.getf("main_quest_flame_lv103", "__status")==main_quest_flame_lv103.__COMPLETE__ then -- ¼±ÇàÄù½ºÆ® È®ÀÎ
-- say_title(gameforge.flame_dungeon._010_say)
say(gameforge.flame_dungeon._010_say)
local warp = select(gameforge.flame_dungeon._020_select,gameforge.flame_dungeon._030_select)
if warp == 1 then
d.setf("level",17)
d.jump_all(setting.bossroom_entry_pos[1],setting.bossroom_entry_pos[2])
d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_fild_boss.txt")
-- d.spawn_mob(DUNGEON_MAN,setting.DUNGEON_MAN_bpos[1],setting.DUNGEON_MAN_bpos[2])
d.spawn_mob(FINAL_BOSS,setting.boss_pos[1],setting.boss_pos[2])
end
else
-- syschat(gameforge.flame_dungeon._040_notice)
say(gameforge.flame_dungeon._040_notice)
return
end
end
end
function level_clear() -- ·¹º§ ²£À»¶§, ¸®Á¨Å¬¸®¾î, Áö¿ªÅ¬¸®¾î
d.setf("level",0)
d.clear_regen()
d.purge_area(750000,620000,817400,689400) -- ¸ÊÀüü -- d.purge() »ç¿ë°í·Á
end
function clear_timer(inx) -- ŸÀÌ¸Ó ´ÙÁö¿ì±â
clear_server_timer ("flame_dungeon_0m_left_timer", inx)
clear_server_timer ("flame_dungeon_1m_left_timer", inx)
clear_server_timer ("flame_dungeon_5m_left_timer", inx)
clear_server_timer ("flame_dungeon_10m_left_timer", inx)
clear_server_timer ("flame_dungeon_15m_left_timer", inx)
clear_server_timer ("flame_dungeon_30m_left_timer", inx)
clear_server_timer ("flame_dungeon_45m_left_timer", inx)
clear_server_timer ("killed_A_1", inx)
clear_server_timer ("killed_A_2", inx)
clear_server_timer ("flame_dungeon_ticket_remove", inx)
end
when login begin
local idx = pc.get_map_index()
local setting = flame_dungeon.setting()
if idx == DUNGEON_MAP_INDEX then
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
elseif flame_dungeon.is_flamed(idx) then -- ´øÀü ÀÔÀå, º¸½º·ë ÀÔÀå ¿¹¿Ü
------------------------------------------------------------------------------------------------------------------------------------------------------
--¾Æ·¡ÀÇ µÎÁÙÁß À§¿¡ÁÙÀ» »ç¿ëÇÏ¸é ´øÀü¿¡¼* Á¾·áÇßÀ»°æ¿ì ´Ù½Ã ¿ø·¡ À§Ä¡·Î µ¹¾Æ¿Â´Ù. ¾Æ·¡ÁÙÀ» Ȱ¼ºÈ* ÇÏ¸é ´øÀü¿¡¼* Á¾·áÇßÀ» °æ¿ì ´øÀü ¹ÛÀ¸·Î ³ª°¡°Ô µÈ´Ù.
--´øÀü¿¡¼* Á¾·áÇßÀ» °æ¿ì ´Ù½Ã ¿ø·¡ À§Ä¡·Î µ¹¾Æ¿Ã °æ¿ì, ´øÀü¿¡¼* ³ª°¡´Â ¹æ¹ýÀ» ¸¸µé¾îÁà¾ß Çϱ⠶§¹®¿¡ Àû·æ¼ººñÀÇ ³ª°¡±â¶õ ¿É¼ÇÀ» Ȱ¼ºÈ* ÇØÁà¾ß ÇÑ´Ù.
------------------------------------------------------------------------------------------------------------------------------------------------------
-- pc.set_warp_location(0, 0 , 0) --ƨ°åÀ»¶§ ´Ù½Ã µ¹¾Æ¿À°Ô ¸¸µé¾î ÁÖ´Â ºÎºÐ
pc.set_warp_location(ENTRY_MAP_INDEX, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) -- ´øÀü ³ª°¬À» ¶§ ¹ÛÀ¸·Î ƨ±â°ÔÇÔ
local ticketGroup = {get_special_item_group (TICKET_GROUP)}
if d.getf("dungeon_enter") == 0 then -- ÁøÇàÁßÀÌ ¾Æ´Ï¸é
local canPass = false
for i=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
canPass = true
break
end
end
if get_global_time() - pc.getf("flame_dungeon","exit_time") < ENTER_LIMIT_TIME * 60 then -- ÀÔÀåÁ¦Çѽð£ÀÌ °É·ÈÀ¸¸é
notice_multiline(gameforge.flame_dungeon._050_notice,d.notice)
say(gameforge.flame_dungeon._060_say)
timer("flame_dungeon_warp_timer", 5)
elseif not canPass then
notice_multiline(gameforge.flame_dungeon._070_notice,d.notice)
say(gameforge.flame_dungeon._080_say)
timer("flame_dungeon_warp_timer", 5)
elseif pc.get_level() < 100 then
notice_multiline(gameforge.flame_dungeon._090_notice,d.notice)
say(gameforge.flame_dungeon._100_say)
timer("flame_dungeon_warp_timer", 5)
end
elseif pc.getf("flame_dungeon","ticket_delete") == 0 then -- ÁøÇàÁßÀε¥ ƼÄÏÀÌ ¾ÈÁö¿öÁ³À»°æ¿ì
for i=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
pc.remove_item(ticketGroup[i], ticketGroup[i+1])
break
end
end
pc.setf("flame_dungeon","ticket_delete",1)
end
else
pc.setf("flame_dungeon","ticket_delete",0)
end
end
when flame_dungeon_warp_timer.timer begin
local setting = flame_dungeon.setting()
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
end
when logout begin
local idx = pc.get_map_index()
if flame_dungeon.is_flamed(idx) then
if d.getf("dungeon_enter") == 1 then -- Á¤»óÀûÀÎ ´øÀü ÀÔÀå ÈÄ ·Î±×¾Æ¿ô
pc.setf("flame_dungeon","exit_time",get_global_time()) -- ÀνºÅϽº ¾È¿¡¼*ÀÇ ¸¶Áö¸· ½Ã°£À» ±â·Ï, ±Ùµ¥ ½Ã°£Á¦ÇÑ ¶§¹®¿¡ or ±×³É ƨ±ä°Å¸é ¾È±â·Ï
end
end
end
when ENTRY_MAN.chat.gameforge.flame_dungeon._110_npcChat begin
local setting = flame_dungeon.setting()
if party.is_party() then
-- ´øÀü µµÁß ³ª°¥ °æ¿ì ÀçÀÔÀå °¡´ÉÇϵµ·Ï
local party_check = 0
if d.find(party.getf("dungeon_index")) then
party_check = (d.getf_from_map_index("party_leader_pid", party.getf("dungeon_index")) == party.get_leader_pid())
end
if d.find(party.getf("dungeon_index")) and party_check then
if get_global_time() - pc.getf("flame_dungeon","exit_time") < 5 * 60 then -- Á¢Á¾ ÀÌÈÄ 5ºÐ ³»?
local dungeon_level = d.getf_from_map_index("level", party.getf("dungeon_index"))
if dungeon_level == 17 then -- º¸½º
pc.warp(setting.bossroom_entry_pos[1] * 100, setting.bossroom_entry_pos[2] * 100, party.getf("dungeon_index"))
else
pc.warp(setting.dungeon_entry_pos[1] * 100, setting.dungeon_entry_pos[2] * 100, party.getf("dungeon_index"))
end
else -- 5ºÐ ÃʰúÇÏ¿© Àç ÀÔÀå ºÒ°¡
say_title(mob_name(ENTRY_MAN))
say(gameforge.flame_dungeon._590_say)
end
else
local pids = {party.get_member_pids()}
local noTicketMembers = {}
local notEnoughLevelMembers = {}
local ticketCheck = true
local levelCheck = true
local ticketGroup = {get_special_item_group (TICKET_GROUP)}
for i, pid in next, pids, nil do
q.begin_other_pc_block(pid)
local canPass = false
for idx=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
canPass = true
break
end
end
if not canPass then
table.insert(noTicketMembers, pc.get_name())
ticketCheck = false
end
if pc.level < LEVEL_CUT then
table.insert(notEnoughLevelMembers, pc.get_name())
levelCheck = false
end
q.end_other_pc_block()
end
if not ticketCheck then
say_title(mob_name(ENTRY_MAN))
say(gameforge.flame_dungeon._610_say)
for i, name in next, noTicketMembers, nil do
say(color(1,1,0), " "..name)
end
if levelCheck then
return
else
wait()
end
end
if not levelCheck then
say_title(mob_name(ENTRY_MAN))
say(gameforge.flame_dungeon._630_say)
for i, name in next, notEnoughLevelMembers, nil do
say(color(1,1,0), " "..name)
end
return
end
if party.is_leader() then
say(gameforge.flame_dungeon._120_say)
local warp = select(gameforge.flame_dungeon._130_select,gameforge.flame_dungeon._140_select)
if warp == 1 then
if party.is_map_member_flag_lt("exit_time", get_global_time() - ENTER_LIMIT_TIME * 60 ) then
flame_dungeon.make_dungeon()
else
--say("test : ÆÄƼ¿øÀÇ ÀÔÀå Á¦Çѽð£ÀÌ ³¡³ªÁö ¾Ê¾Ò½À´Ï´Ù.")
say(gameforge.flame_dungeon._600_say)
end
end
party.setf("flame_dungeon_boss_kill_count", 0)
else
say(gameforge.flame_dungeon._150_say)
end
end
else
say(gameforge.flame_dungeon._160_say)
end
end
-- when ENTRY_MAN.chat."Test : ¸®¼Ò½ºÈ®ÀÎ" with is_test_server() begin -- Å×½ºÆ®¿ë
-- local setting = flame_dungeon.setting()
-- pc.setf("flame_dungeon","fdRtest",1)
-- pc.warp( setting.dungeon_entry_pos[1]*100, setting.dungeon_entry_pos[2]*100, DUNGEON_MAP_INDEX)
-- end
when ENTRY_MAN.chat."TEST : Init time limit init" with is_test_server() begin -- Å×½ºÆ®¿ë
pc.setf("flame_dungeon","exit_time",get_global_time()-1800)
say("Done")
end
-- when DUNGEON_MAN.chat."Test : ÇöÀç »óÅÂ" with is_test_server() begin -- Å×½ºÆ®¿ë
-- say("³²Àº ¸ó½ºÅÍ : "..d.count_monster())
-- say("level : "..d.getf("level"))
-- say("Dmap index : "..d.get_map_index())
-- say("Pmap index : "..pc.get_map_index())
-- say("access limit : "..pc.getf("flame_dungeon","exit_time"))
-- say("global time : "..get_global_time())
-- if flame_dungeon.is_flamed(d.get_map_index()) then
-- say("in dungeon") -- is_flamed ÇÔ¼ö üũ
-- end
-- if d.is_unique_dead("stone1") then
-- say("stone1 is dead")
-- else
-- say("stone1 is not dead")
-- end
-- end
-- when DUNGEON_MAN.chat."óÀ½À¸·Î" begin -- Å×½ºÆ®¿ë
-- say("ÃʱâÈ* ÇÕ´Ï´Ù")
-- flame_dungeon.clear_timer(d.get_map_index())
-- flame_dungeon.make_dungeon()
-- end
when DUNGEON_MAN.chat."Test : Boss Room" with is_test_server() begin -- Å×½ºÆ®¿ë
flame_dungeon.go_boss()
end
-- < ½Ã°£ °æ°ú ŸÀ̸Ó>
-- when DUNGEON_MAN.chat."³ª°¡±â" begin -- ´øÀü¿¡¼* ƨ±âÁö ¾Ê°Ô ÇÒ °æ¿ì Ȱ¼ºÈ*
-- local setting = flame_dungeon.setting()
-- say("¹ÛÀ¸·Î ³ª°¡½Ã°Ú½À´Ï±î?")
-- local warp = select("È®ÀÎ","Ãë¼Ò")
-- if warp == 1 then
-- pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
-- end
-- end
when flame_dungeon_45m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 45),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer('flame_dungeon_30m_left_timer', 15*60, get_server_timer_arg())
end
end
when flame_dungeon_30m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 30),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer('flame_dungeon_15m_left_timer', 15*60, get_server_timer_arg())
end
end
when flame_dungeon_15m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 15),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer('flame_dungeon_5m_left_timer', 10*60, get_server_timer_arg())
end
end
when flame_dungeon_5m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 5),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer('flame_dungeon_1m_left_timer', 4*60, get_server_timer_arg())
end
end
when flame_dungeon_1m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 1),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer ("flame_dungeon_0m_left_timer", 60, get_server_timer_arg())
end
end
when flame_dungeon_0m_left_timer.server_timer begin
local setting = flame_dungeon.setting()
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.flame_dungeon._190_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._200_notice,d.notice)
server_timer("dungeon_end_timer",10,d.get_map_index())
end
end
-- <<<< ´øÀü ÁøÇà>>>> --
when DUNGEON_MAN.chat.gameforge.flame_dungeon._210_npcChat with npc.lock() begin -- '0x'´Â x¹øÂ° ·¹º§ Äù½ºÆ® ¹ÞÀ» ¼ö ÀÖ´Â »óÅ , '1x'´Â x¹øÂ° ·¹º§ Äù½ºÆ® ÁøÇàÁß
local setting = flame_dungeon.setting()
if d.getf("started") == 0 then
say(gameforge.flame_dungeon._230_say)
say(gameforge.flame_dungeon._240_say)
wait()
d.setf("started",1)
-- ÆÄƼ¿øÀÌ Æ¨°Ü¹ö·È´Âµ¥ Àڱ⸸ ³²¾Æ¼* exit timer°¡ ¸®¼ÂµÇ¸é ¾ÈµÇ´Ï±ñ ´ÙÀ½·¹º§À» ´*·¶À»¶§¸¦ ½ÃÀÛÇÒ¶§·Î º½
server_timer ("flame_dungeon_45m_left_timer",15*60, d.get_map_index())
notice_multiline(gameforge.flame_dungeon._250_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
-- ÅëÇàÁõ °ü·ÃµÈ ó¸®
-- ÀÔÀå ÈÄ¿¡ ƼÄÏÀ» ¾ø¾Ø »ç¶÷À» ƨ°Ü³»±â À§Çؼ* ŸÀ̸Ӹ¦ ÀÌ¿ëÇØ ƼÄÏÀ» Á¦°ÅÇÑ´Ù.
local pids = {party.get_member_pids()}
local ticketGroup = {get_special_item_group (TICKET_GROUP)}
for i, pid in next, pids, nil do
q.begin_other_pc_block(pid)
local canPass = false
for idx=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
canPass = true
pc.remove_item(ticketGroup[idx], ticketGroup[idx+1])
break
end
end
if not canPass then
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
end
q.end_other_pc_block()
end
d.setqf2("flame_dungeon","ticket_delete",1)
d.setf("dungeon_enter",1)
-- ´øÀü°ú ÆÄƼ¿¡ ¼*·Î¿¡ ´ëÇÑ Á¤º¸¸¦ ÀúÀåÇÑ´Ù.
party.setf("dungeon_index", d.get_map_index())
d.setf("party_leader_pid", party.get_leader_pid())
end
if d.getf("level") < 7 then --ÁøÇàÁßÀÌ ¾Æ´Ï¸é
if d.getf("clear_count") == 6 then -- ¹æ ¿©¼¸°³ ÇßÀ¸¸é º¸½º¹æ
d.setf("level",7)
else
local rand = number(1,6)--·£´ý¿¡¼* ¹æ¹®Ã¼Å©´Â µû·Î ¹è¿*¾øÀÌ ¹æÀÇ ¹®ÀÇ ¿*·ÁÀÖ´ÂÁö·Î üũÇÔ
local setlev = 0
d.setf("level",7) -- Ȥ½Ã ¸ð¸¦ ¹®Á¦°¡ »ý°Ü ·¹º§ÀÌ ¾ÈÀâÈú°æ¿ì¸¦ ´ëºñÇØ º¸½º·ëÀ¸·Î ¼ÂÆÃÇØµÒ
for i=1,50 do
setlev = setlev + 1
if setlev > 6 then
setlev = 1
end
if not d.is_unique_dead("door"..setlev) then
rand = rand - 1
if rand == 0 then
d.setf("level",setlev)
d.setf("clear_count",d.getf("clear_count")+1)
break
end
end
end
end
end
if d.getf("level") == 1 then
say(gameforge.flame_dungeon._260_say)
notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
d.kill_unique("door1")
d.kill_unique("idoor1")
d.setf("level",11)
d.regen_file (MOB_REGEN_FILE_PATH.."fd_a.txt")
server_timer ("killed_A_1", 12, d.get_map_index())
elseif d.getf("level") == 11 then
say(gameforge.flame_dungeon._270_say)
say_title(gameforge.flame_dungeon._280_sayTitle .. d.count_monster())
elseif d.getf("level") == 2 then
say(gameforge.flame_dungeon._290_say)
say(gameforge.flame_dungeon._300_say)
notice_multiline(gameforge.flame_dungeon._290_say,d.notice)
notice_multiline(gameforge.flame_dungeon._300_say,d.notice)
d.spawn_mob(LEVEL2_STONE, setting.LEVEL2_STONE_pos[1], setting.LEVEL2_STONE_pos[2]) -- ºÀÀμ® ¼Òȯ
d.kill_unique("door2")
d.kill_unique("idoor2")
d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_b.txt")
d.setf("level",12)
elseif d.getf("level") == 12 then
say(gameforge.flame_dungeon._310_say)
elseif d.getf("level") == 3 then
say(gameforge.flame_dungeon._260_say)
notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
d.kill_unique("door3")
d.kill_unique("idoor3")
d.setf("level",13)
d.regen_file (MOB_REGEN_FILE_PATH.."fd_c.txt")
server_timer ("killed_A_1", 12, d.get_map_index())
elseif d.getf("level") == 13 then
say(gameforge.flame_dungeon._270_say)
say_title(gameforge.flame_dungeon._280_sayTitle..d.count_monster())
elseif d.getf("level") == 4 then -- 474 178
say(gameforge.flame_dungeon._320_notice)
notice_multiline(gameforge.flame_dungeon._320_notice,d.notice)
d.setf("level",14)
d.kill_unique("door4")
d.kill_unique("idoor4")
d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_d.txt")
d.spawn_mob(LEVEL4_TARGET,setting.LEVEL4_TARGET_pos[1],setting.LEVEL4_TARGET_pos[2] ) -- Ÿ°Ù¸ó½ºÅÍ ¼ÒÇÑ
elseif d.getf("level") == 14 then
say(gameforge.flame_dungeon._330_say)
say(gameforge.flame_dungeon._340_say)
elseif d.getf("level") == 5 then -- 510 355
say(gameforge.flame_dungeon._350_say)
say(gameforge.flame_dungeon._360_say)
notice_multiline(gameforge.flame_dungeon._350_say,d.notice)
notice_multiline(gameforge.flame_dungeon._360_say,d.notice)
d.kill_unique("door5")
d.kill_unique("idoor5")
d.setf("level",15)
d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
local vis = { 0,0,0,0,0,0,0}
for i=1,7 do
vis[i] = 0
end
for i = 1, 7 do -- ·£´ýÇÏ°Ô µ¹¼Òȯ
local ran = number(1,7)
local st = 0
for j = 1, 50 do
st = st + 1
if st > 7 then
st = 1
end
if vis[st] == 0 then
ran = ran - 1
if ran == 0 then
vis[st] = 1
d.set_unique("stone5_"..st, d.spawn_mob(LEVEL5_STONE, setting.LEVEL5_STONE_pos[i][1], setting.LEVEL5_STONE_pos[i][2]))
break
end
end
end
end
elseif d.getf("level") == 15 then
say(gameforge.flame_dungeon._370_say)
elseif d.getf("level") == 6 then -- 507 490
say(gameforge.flame_dungeon._380_say)
notice_multiline(gameforge.flame_dungeon._380_say,d.notice)
d.setf("level",16)
d.kill_unique("door6")
d.kill_unique("idoor6")
d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_f.txt")
d.spawn_mob(LEVEL6_TARGET, setting.LEVEL6_TARGET_pos[1],setting.LEVEL6_TARGET_pos[2]) -- Ÿ°Ù¿ÀºêÁ§Æ® ¼Òȯ
elseif d.getf("level") == 16 then
say(gameforge.flame_dungeon._390_say)
say(gameforge.flame_dungeon._400_say)
elseif d.getf("level") == 7 then
-- setskin(NOWINDOW)
flame_dungeon.go_boss()
else
say(gameforge.flame_dungeon._410_say)
end
npc.unlock()
end
when dungeon_end_timer.server_timer begin -- Á¾·á ŸÀÌ¸Ó (³¡³ª°í ³ª°¡´Â°Å)
local setting = flame_dungeon.setting()
if d.select(get_server_timer_arg()) then
flame_dungeon.clear_timer(d.get_map_index())
d.set_warp_location(ENTRY_MAP_INDEX, setting.outside_entry_pos[1] , setting.outside_entry_pos[2])
d.exit_all()
d.setf("party_leader_pid", 0)
end
end
when killed_A_1.server_timer begin -- ŸÀÌ¸Ó µ¹¸®±â1 (level1,level3)
if d.select(get_server_timer_arg()) then
if d.count_monster() <= 0 then -- 1·¹º§ ¸ó½ºÅÍ Àü¸ê½Ã
if d.getf("level") == 11 then
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
else
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
end
d.setf("level",0)
else
server_timer ("killed_A_2", 6, get_server_timer_arg())
end
end
end
when killed_A_2.server_timer begin -- ŸÀÌ¸Ó µ¹¸®±â2 (1°ú 2 ¹ø°¥¾Æ°¡¸é¼* µ¹¾Æ°¨)
if d.select(get_server_timer_arg()) then
if d.count_monster() <= 0 then -- 1·¹º§ ¸ó½ºÅÍ Àü¸ê½Ã
if d.getf("level") == 11 then
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
else
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
end
d.setf("level",0)
else
server_timer ("killed_A_1", 6, get_server_timer_arg())
end
end
end
when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 12 begin -- 2·¹º§ ºÀÀμ® ¿*¼è µå¶ø
local i = number(1, 100) -- 100ºÐÀÇ 1 È®·ü·Î ¿*¼èµå¶ø
if i == 1 then
game.drop_item (LEVEL2_KEY, 1)
end
end
when LEVEL2_STONE.take with flame_dungeon.is_flamed(pc.get_map_index()) and item.vnum == LEVEL2_KEY and d.getf("level") == 12 begin -- 2·¹º§ ¿*¼è ¸Ô¾úÀ»¶§
local i = number(1, 5) -- 5ºÐÀÇ 1 È®·ü·Î ÁøÂ¥ ¿*¼è
if i == 1 then
npc.purge()
item.remove()
notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
flame_dungeon.level_clear()
else
item.remove()
say(gameforge.flame_dungeon._450_say)
end
end
when LEVEL4_TARGET.kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 14 begin
notice_multiline(gameforge.flame_dungeon._460_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
flame_dungeon.level_clear()
end
when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 15 begin -- 5·¹º§ ºÀÀμ® ¿*¼è µå¶ø
local i = number(1, 30) -- 30ºÐÀÇ 1 È®·ü·Î ¿*¼èµå¶ø
if i == 1 then
game.drop_item (LEVEL5_REALKEY, 1)
end
end
when LEVEL5_STONE.take with flame_dungeon.is_flamed(d.get_map_index()) and item.vnum == LEVEL5_REALKEY and d.getf("level") == 15 begin -- 5·¹º§ ÁøÂ¥¿*¼è ¸Ô¾úÀ»¶§
local setting = flame_dungeon.setting()
if npc.get_vid() == d.get_unique_vid("stone5_1") then -- ù¹øÂ° ²¨´Â ¼±ÇàµÇ¾î¾ß ÇÒ ÀÏÀÌ ÇÊ¿ä¾øÀ¸´Ï ãÀÚ¸¶ÀÚ Á¦°ÅÇØÁÜ
npc.purge()
item.remove()
say(gameforge.flame_dungeon._470_say)
d.setf("stonekill",2) -- 2¹ø µ¹À» Á׿©¶ó
if d.count_monster() < LEVEL5_GEN_LIMIT then
d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_2") then
if d.getf("stonekill") == 2 then -- 2¹øµ¹À» Á×ÀÏ Â÷·Ëµ¥ 2¹øµ¹¿¡°Ô ¿*¼è¸¦ ¸Ô¿´À» ¶§
npc.purge()
item.remove()
say(gameforge.flame_dungeon._480_say)
d.setf("stonekill",3)
if d.count_monster() < LEVEL5_GEN_LIMIT then
d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("2¹ø")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_3") then
if d.getf("stonekill") == 3 then
npc.purge()
item.remove()
say(gameforge.flame_dungeon._500_say)
d.setf("stonekill",4)
if d.count_monster() < LEVEL5_GEN_LIMIT then
d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("3¹ø")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_4") then
if d.getf("stonekill") == 4 then
npc.purge()
item.remove()
say(gameforge.flame_dungeon._510_say)
d.setf("stonekill",5)
if d.count_monster() < LEVEL5_GEN_LIMIT then
d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("4¹ø")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_5") then
if d.getf("stonekill") == 5 then
npc.purge()
item.remove()
say(gameforge.flame_dungeon._520_say)
d.setf("stonekill",6)
if d.count_monster() < LEVEL5_GEN_LIMIT then
d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("5¹ø")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_6") then
if d.getf("stonekill") == 6 then
npc.purge()
item.remove()
say(gameforge.flame_dungeon._530_say)
d.setf("stonekill",7)
if d.count_monster() < LEVEL5_GEN_LIMIT then
d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("6¹ø")
end
else
if d.getf("stonekill") == 7 then
npc.purge()
item.remove()
notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
flame_dungeon.level_clear()
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("7¹ø")
end
end
end
when LEVEL6_TARGET.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==16 begin -- ¸Á¸¶¼® ÆÄ±«ÇßÀ» ¶§
notice_multiline(gameforge.flame_dungeon._540_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
flame_dungeon.level_clear()
end
when FINAL_BOSS.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==17 begin -- º¸½º Á׿´À»¶§
notice_multiline(gameforge.flame_dungeon._550_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._560_notice,d.notice)
server_timer("dungeon_end_timer", 60,d.get_map_index())
flame_dungeon.level_clear()
-- ÆÄƼ¿ø Áß, ¾ß¸¶Ãµ Àâ´Â Äù½ºÆ®(104·¾, 105·¾ Äù½ºÆ®) ÁøÇàÁßÀÎ »ç¶÷ÀÌ ÀÖÀ¸¸é Äù½ºÆ® Ŭ¸®¾î µÇµµ·Ï.
if party.is_party() then
party.setf("flame_dungeon_boss_kill_count", 1)
end
end
end
end
Hier der Abschnitt:
PHP Code:
function make_dungeon() -- ´øÀü ¸¸µé±â
local setting = flame_dungeon.setting()
d.new_jump_party(DUNGEON_MAP_INDEX, setting.dungeon_entry_pos[1], setting.dungeon_entry_pos[2])
-- d.spawn_mob_ac_dir(DUNGEON_MAN, setting.DUNGEON_MAN_pos[1], setting.DUNGEON_MAN_pos[2],DUNGEON_MAN_DIR)
-- d.spawn_mob(YAK,setting.YAK_pos[1],setting.YAK_pos[2])
d.regen_file(NPC_REGEN_FILE_PATH)
d.setf("level",0)
for i=1,6 do
d.set_unique("door"..i, d.spawn_mob_ac_dir(BLOCK_DOOR, setting.doors_pos[i][1], setting.doors_pos[i][2],setting.doors_dir[i]))
end
for i=1,6 do
d.set_unique("idoor"..i, d.spawn_mob_ac_dir(IN_DOOR, setting.idoors_pos[i][1], setting.idoors_pos[i][2],setting.idoors_dir[i]))
end
d.setf("clear_count",0)
d.setf("started",0)
d.setf("dungeon_enter",0) -- Á¤»óÀûÀ¸·Î ÀÔÀåÇß´ÂÁö? // ºñÁ¤»ó : 0 Á¤»ó : 1 // ƨ±â¸é ÀÔÀåÁ¦Çѽð£À» ±â·Ï ¾ÈÇÔ
end
function go_boss() -- º¸½º·ë °¡±â
local setting = flame_dungeon.setting()
if pc.get_level() < 104 then --·¹º§È®ÀÎ
-- syschat(gameforge.flame_dungeon._580_notice)
say(gameforge.flame_dungeon._580_notice)
return
else
if pc.getf("main_quest_flame_lv103", "__status")==main_quest_flame_lv103.__COMPLETE__ then -- ¼±ÇàÄù½ºÆ® È®ÀÎ
-- say_title(gameforge.flame_dungeon._010_say)
say(gameforge.flame_dungeon._010_say)
local warp = select(gameforge.flame_dungeon._020_select,gameforge.flame_dungeon._030_select)
if warp == 1 then
d.setf("level",17)
d.jump_all(setting.bossroom_entry_pos[1],setting.bossroom_entry_pos[2])
d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_fild_boss.txt")
-- d.spawn_mob(DUNGEON_MAN,setting.DUNGEON_MAN_bpos[1],setting.DUNGEON_MAN_bpos[2])
d.spawn_mob(FINAL_BOSS,setting.boss_pos[1],setting.boss_pos[2])
end
else
-- syschat(gameforge.flame_dungeon._040_notice)
say(gameforge.flame_dungeon._040_notice)
return
end
end
end
function level_clear() -- ·¹º§ ²£À»¶§, ¸®Á¨Å¬¸®¾î, Áö¿ªÅ¬¸®¾î
d.setf("level",0)
d.clear_regen()
d.purge_area(750000,620000,817400,689400) -- ¸ÊÀüü -- d.purge() »ç¿ë°í·Á
end
Hoffe jemand kann mir den Part entfernen.
|
|
|
06/11/2015, 14:25
|
#11633
|
elite*gold: 0
Join Date: Mar 2014
Posts: 91
Received Thanks: 5
|
VIP Quest
Hey Com,
Ich wollte mir den VIP Namen Quest auf meinem Server uploaden, dann entstand das hier:
vipchange.quest:23:syntax error : [string "start"]:10: `)' expected near `"..pc.get_name().."'
Error occured on compile vipchange.quest
Hier die Quest:
quest vipchange begin
state start begin
when 30269.use begin
say_title("[VIP] Name")
say("")
say("Möchtest du ein [VIP] vor deinem")
say("Namen haben?")
local change = select("Ja", "Nein")
if change == 2 then
return
elseif change == 1 then
local name = pc.get_name()
pc.name_change("[VIP]""..pc.get_name().." ."")
say_title("[VIP] Name")
say("")
say("Bitte logge dich nun für 10 Minuten aus.")
say("Loggst du dich eher wieder ein, werden die")
say("änderungen nicht wirksam.")
end
end
end
end
Und seit dem ich das hier:
http://www.elitepvpers.com/forum/metin2-pserver-guides-strategies/1589187-release-premium-system.html
eingefügt habe, schreibe ich im chat 2x Beispiel:
Ich schreibe hi, im Chatverlauf steht:
MeinCharName: hi
MeinCharName: hi
|
|
|
06/11/2015, 15:03
|
#11634
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by BlackWood2
Hey Com,
Ich wollte mir den VIP Namen Quest auf meinem Server uploaden, dann entstand das hier:
vipchange.quest:23:syntax error : [string "start"]:10: `)' expected near `"..pc.get_name().."'
Error occured on compile vipchange.quest
Hier die Quest:
quest vipchange begin
state start begin
when 30269.use begin
say_title("[VIP] Name")
say("")
say("Möchtest du ein [VIP] vor deinem")
say("Namen haben?")
local change = select("Ja", "Nein")
if change == 2 then
return
elseif change == 1 then
local name = pc.get_name()
pc.name_change("[VIP]""..pc.get_name().." ."")
say_title("[VIP] Name")
say("")
say("Bitte logge dich nun für 10 Minuten aus.")
say("Loggst du dich eher wieder ein, werden die")
say("änderungen nicht wirksam.")
end
end
end
end
Und seit dem ich das hier:
http://www.elitepvpers.com/forum/metin2-pserver-guides-strategies/1589187-release-premium-system.html
eingefügt habe, schreibe ich im chat 2x Beispiel:
Ich schreibe hi, im Chatverlauf steht:
MeinCharName: hi
MeinCharName: hi
|
Code:
quest vipchange begin
state start begin
when 30269.use begin
say_title("[VIP] Name")
say("")
say("Möchtest du ein [VIP] vor deinem")
say("Namen haben?")
if select("Ja", "Nein") == 2 then return end
pc.name_change("[VIP]"..pc.get_name())
pc.remove_item(30269)
say_title("[VIP] Name")
say("")
say("Bitte logge dich nun für 10 Minuten aus.")
say("Loggst du dich eher wieder ein, werden die")
say("Änderungen nicht wirksam.")
end
end
end
|
|
|
06/11/2015, 15:07
|
#11635
|
elite*gold: 0
Join Date: Mar 2014
Posts: 91
Received Thanks: 5
|
QUEST : vipchange
STATE : start
WHEN : 30269.use
Calls undeclared function! :
pc.name_change
Error occured on compile vipchange.quest
Geht immer noch nicht
Brauche hilfe pls
|
|
|
06/11/2015, 18:05
|
#11636
|
elite*gold: 26
Join Date: May 2010
Posts: 865
Received Thanks: 767
|
Quote:
Originally Posted by BlackWood2
QUEST : vipchange
STATE : start
WHEN : 30269.use
Calls undeclared function! :
pc.name_change
Error occured on compile vipchange.quest
Geht immer noch nicht
Brauche hilfe pls
|
In die quest_function einfügen und es funktioniert.
|
|
|
06/11/2015, 18:32
|
#11637
|
wild wild son
elite*gold: 0
Join Date: Feb 2011
Posts: 5,994
Received Thanks: 3,389
|
Quote:
Originally Posted by BlackWood2
QUEST : vipchange
STATE : start
WHEN : 30269.use
Calls undeclared function! :
pc.name_change
Error occured on compile vipchange.quest
Geht immer noch nicht
Brauche hilfe pls
|
Nicht pc.name_change(), sondern pc.change_name().
lg
|
|
|
06/12/2015, 13:10
|
#11638
|
elite*gold: 0
Join Date: Feb 2015
Posts: 400
Received Thanks: 46
|
Habe eine Frage zu dieser Quest. Sie soll ein automatisches Tag und Nacht System einführen.
Code:
quest daymode begin
state start begin
function funktion()
local text = {
-------Guten Morgen Texte
{"Guten Morgen ihr Schlaftauben, Zeit zum aufstehen."},
{"Klingel klingel klingeling, Aufstehen!"},
-------Guten Abend Texte
{"Soo, es wird zeit das alle Schlafen gehen. Das Team wünscht euch eine angenehme Nacht."},
{"Spieler liebe Spieler es wird so langsam zeit für euch.. Schlafen zu gehen..."},
}
local zufall = number(1, 2)
local zufalle = number(3, 4)
local morgentext = text[zufall][1]
local abendtext = text[zufalle][1]
local clockk = os.date ("%H")
if clockk >= "22" and game.get_event_flag("eclipse") == 0 then
notice_all(""..abendtext.."")
game.set_event_flag("eclipse", 1 )
elseif clockk >= "08" and game.get_event_flag("eclipse") == 1 then
notice_all(""..morgentext.."")
game.set_event_flag("eclipse", 0 )
end
end
when login or levelup or logout begin
daymode.funktion()
end
end
end
Das ganze folgt nach diesem Tut:
Wenn ich am Tag /e eclipse 1 machen, wird es Nacht. Verstehe das System nicht ganz :/
|
|
|
06/12/2015, 17:07
|
#11639
|
elite*gold: 0
Join Date: Jun 2015
Posts: 181
Received Thanks: 19
|
Quote:
Originally Posted by Backxtar
Habe eine Frage zu dieser Quest. Sie soll ein automatisches Tag und Nacht System einführen.
Code:
quest daymode begin
state start begin
function funktion()
local text = {
-------Guten Morgen Texte
{"Guten Morgen ihr Schlaftauben, Zeit zum aufstehen."},
{"Klingel klingel klingeling, Aufstehen!"},
-------Guten Abend Texte
{"Soo, es wird zeit das alle Schlafen gehen. Das Team wünscht euch eine angenehme Nacht."},
{"Spieler liebe Spieler es wird so langsam zeit für euch.. Schlafen zu gehen..."},
}
local zufall = number(1, 2)
local zufalle = number(3, 4)
local morgentext = text[zufall][1]
local abendtext = text[zufalle][1]
local clockk = os.date ("%H")
if clockk >= "22" and game.get_event_flag("eclipse") == 0 then
notice_all(""..abendtext.."")
game.set_event_flag("eclipse", 1 )
elseif clockk >= "08" and game.get_event_flag("eclipse") == 1 then
notice_all(""..morgentext.."")
game.set_event_flag("eclipse", 0 )
end
end
when login or levelup or logout begin
daymode.funktion()
end
end
end
Das ganze folgt nach diesem Tut:
Wenn ich am Tag /e eclipse 1 machen, wird es Nacht. Verstehe das System nicht ganz :/
|
PHP Code:
1.erstellt eine day.py wenn ihr noch keine habt.
2.schreibt in eure day.py:
nacht = 0
tag = 0
3. öffnet eure Game.
4. Addet bei den Imports(wenn ihr es noch nicht habt) folgendes:
import day
5. addet in eure def __init__(self, stream): folgendes:
day.nacht = 0
day.tag = 0
6. addet am ende der datei folgende function:
def day_night(self):
import time
localtime = time.strftime("%H")
if day.nacht == 0:
if localtime == "01" or localtime == "02" or localtime == "03" or localtime == "04" or localtime == "05" or localtime == "06" or localtime == "07" or localtime == "08" or localtime == "00" or localtime == "23" or localtime == "22" or localtime == "21":
background.RegisterEnvironmentData(1, constInfo.ENVIRONMENT_NIGHT)
background.SetEnvironmentData(1)
day.tag = 0
day.nacht = 1
if day.tag == 0:
if localtime == "09" or localtime == "10" or localtime == "11" or localtime == "12" or localtime == "13" or localtime == "14" or localtime == "15" or localtime == "16" or localtime == "17" or localtime == "18" or localtime == "19" or localtime == "20":
background.SetEnvironmentData(0)
day.tag = 1
day.nacht = 0
7. addet in die def OnUpdate(self): folgendes:
self.day_night()
8. Root.epk wd packen und freuen :P
Kannst es ganz leicht über python klären.
|
|
|
06/12/2015, 18:15
|
#11640
|
elite*gold: 5
Join Date: Mar 2015
Posts: 499
Received Thanks: 376
|
Quote:
Originally Posted by Backxtar
Habe eine Frage zu dieser Quest. Sie soll ein automatisches Tag und Nacht System einführen.
Code:
quest daymode begin
state start begin
function funktion()
local text = {
-------Guten Morgen Texte
{"Guten Morgen ihr Schlaftauben, Zeit zum aufstehen."},
{"Klingel klingel klingeling, Aufstehen!"},
-------Guten Abend Texte
{"Soo, es wird zeit das alle Schlafen gehen. Das Team wünscht euch eine angenehme Nacht."},
{"Spieler liebe Spieler es wird so langsam zeit für euch.. Schlafen zu gehen..."},
}
local zufall = number(1, 2)
local zufalle = number(3, 4)
local morgentext = text[zufall][1]
local abendtext = text[zufalle][1]
local clockk = os.date ("%H")
if clockk >= "22" and game.get_event_flag("eclipse") == 0 then
notice_all(""..abendtext.."")
game.set_event_flag("eclipse", 1 )
elseif clockk >= "08" and game.get_event_flag("eclipse") == 1 then
notice_all(""..morgentext.."")
game.set_event_flag("eclipse", 0 )
end
end
when login or levelup or logout begin
daymode.funktion()
end
end
end
Das ganze folgt nach diesem Tut:
Wenn ich am Tag /e eclipse 1 machen, wird es Nacht. Verstehe das System nicht ganz :/
|
Code:
quest kaito begin
state start begin
when login or levelup or logout with game.get_event_flag() == 1 begin
local morgen = {
{"Guten Morgen ihr Schlaftauben, Zeit zum aufstehen."},
{"Klingel klingel klingeling, Aufstehen!"}
}
local nacht = {
{"Soo, es wird zeit das alle Schlafen gehen. Das Team wünscht euch eine angenehme Nacht."},
{"Spieler liebe Spieler es wird so langsam zeit für euch.. Schlafen zu gehen..."}
}
if tonumber(os.date("%H")) < 12 then
chat(morgen[number(1,table.getn(morgen)))])
elseif tonumber(os.date("%H")) > 21 then
chat(nacht[number(1,table.getn(nacht))])
end
end
end
end
Nicht ganz verstanden was du wolltest, was willst du nochmal?
|
|
|
All times are GMT +1. The time now is 19:04.
|
|