forked from metin2/server
1
0
Fork 0
server/gamefiles/locale/english/quest/arne_test2.quest

739 lines
21 KiB
Plaintext

quest arne_test begin
state start begin
when login begin
NpcName=mob_name(20095) --SeonHae
-- notice("Script läuft.")
-- notice("Npc heisst: "..NpcName..". Right on!")
-- notice(string.format("Geschlecht ist: %s", pc.get_sex()))
-- mob.spawn(20095, 356, 483, 1, 1, 1)
pc.give_item2(10)
-- set_state(talk_seon)
end
end
state talk_seon begin
function challenge_main_menu_proto(SelectionList)
local selected = 0
local s = select_table (SelectionList)
-- local s = select ("1", "2", "3", "4", "5")
-- always 5 deep
-- say_title("ChallengeX")
if s == 1 then
selected = 1
else
if s == 2 then
selected = 2
else
if s == 3 then
selected = 3
else
if s == 4 then
selected = 4
else
selected = 5
end
end
end
end
return selected
end
function challenge_calculate_rewards(TargetChallenge, AmountChallenge, TimeChallenge)
local NewChallenge
local NewRewards = {1,2,3}
local BetRewardTable= {
[1] = {[1] = 50, [2] = 100,},
[2] = {[1] = 250, [2] = 500,},
[3] = {[1] = 300, [2] = 1200,},
[4] = {[1] = 400, [2] = 5000,},
}
NewChallenge = (TargetChallenge + (2*AmountChallenge))*TimeChallenge
notice("Challenge computed")
if NewChallenge >= 30 then
BetMoney = BetRewardTable[4][1]
Reward = BetRewardTable[4][2]
NewRewards = {NewChallenge, BetMoney, Reward}
else
if NewChallenge >= 15 then
BetMoney = BetRewardTable[3][1]
Reward = BetRewardTable[3][2]
NewRewards = {NewChallenge, BetMoney, Reward}
else
if NewChallenge >= 8 then
BetMoney = BetRewardTable[2][1]
Reward = BetRewardTable[2][2]
NewRewards = {NewChallenge, BetMoney, Reward}
else
BetMoney = BetRewardTable[1][1]
Reward = BetRewardTable[1][2]
NewRewards = {NewChallenge, BetMoney, Reward}
end
end
end
return NewRewards
end
when login or enter begin
HuntAmount=5
GatherAmount=5
pc.setqf("kill_count_1", 0)
pc.setqf("collect_count", 0)
-- local find_npc_vnum = 20095
-- local v=find_npc_by_vnum(find_npc_vnum) -- alter Mann
-- if 0==v then
-- notice("Id 0")
-- else
-- notice("NPC da")
-- target.vid("__TARGET__", v, "Seon-Hae")
-- send_letter("Sprecht mit Seon-Hae")
-- end
end
when button or info begin
say_title("Sprecht mit Seon-Hae")
say("Ihr habt einen alten Mann an der Brücke gesehen, der völlig aufgelöst ist und wahrscheinlich Hilfe braucht.")
end
when 20095.Chat."Teleport Command" begin
pc.setqf("pcx", pc.get_x())
pc.setqf("pcy", pc.get_y())
set_state(teleport)
end
when 20095.Chat."ChallengeX" begin
local MainMenuList =
{
"Ziel Wählen",
"Menge Wählen",
"Zeit Wählen",
"Quest Starten",
"Abbruch",
}
local TargetMenuList =
{
"Wildhunde",
"Wölfe",
"Tiger",
}
local AmountMenuList =
{
"10",
"30",
"50",
}
local TimeMenuList =
{
"60 min",
"30 min",
"10 min",
}
TargetList =
{
101,
102,
114,
}
AmountList =
{
10,
30,
50,
}
TimeList =
{
3600,
1800,
600,
}
local Selected = 0
if BeenHere != 1 then
ChallengeIndex = 0
BetMoney = 0
Reward = 0
TargetChallenge = 0
AmountChallenge = 0
TimeChallenge = 0
TargetSelector = 0
AmountSelector = 0
TimeSelector = 0
BeenHere = 1
end
repeat
Selected = arne_test.challenge_main_menu_proto(MainMenuList)
if Selected == 1 then
TargetSelector = arne_test.challenge_main_menu_proto(TargetMenuList)
TargetChallenge = TargetSelector
end
if Selected == 2 then
AmountSelector = arne_test.challenge_main_menu_proto(AmountMenuList)
AmountChallenge = AmountSelector
end
if Selected == 3 then
TimeSelector = arne_test.challenge_main_menu_proto(TimeMenuList)
TimeChallenge = TimeSelector
end
if Selected == 4 then
local NewRewardsTable = {}
NewRewardsTable = arne_test.challenge_calculate_rewards(TargetChallenge, AmountChallenge, TimeChallenge)
say_title("Quest starten")
say("Quest mit folgenden Parametern starten?")
say(string.format("Jage %s x %s in %s Minuten",AmountList[AmountSelector],mob_name(TargetList[TargetSelector]),TimeList[TimeSelector]/60))
say(string.format("Challenge: %s Einsatz: %s Belohnung: %s Yang", NewRewardsTable[1], NewRewardsTable[2], NewRewardsTable[3]))
local x = select("Ja", "Nein")
if x == 1 then
pc.setqf("challenge_duration", get_time())
FinalTarget = TargetList[TargetSelector]
Selected = 5
pc.setqf("FinalTarget",TargetList[TargetSelector])
pc.setqf("FinalAmount",AmountList[AmountSelector])
pc.setqf("FinalTime",TimeList[TimeSelector])
set_state(start_2quest)
else
Selected = 5
set_state(bounceback)
end
end
if Selected == 5 then
set_state(bounceback)
end
until Selected == 5
end
end
state bounceback begin
when enter or login begin
notice(string.format("%s ,%s ,%s", TimeChallenge, AmountChallenge, TargetChallenge))
set_state(talk_seon)
end
end
state start_2quest begin
when enter or login begin
q.start()
local timeToWait = pc.getqf("FinalTime")
local timeLeft = 0
timeLeft = timeToWait - (get_time() - pc.getqf("challenge_duration"))
send_letter(string.format("Jage %s x %s in %s Minuten",pc.getqf("FinalAmount"),mob_name(pc.getqf("FinalTarget")),pc.getqf("FinalTime")/60))
q.set_title(string.format("Jage %s x %s in %s Minuten",pc.getqf("FinalAmount"),mob_name(pc.getqf("FinalTarget")),pc.getqf("FinalTime")/60))
q.set_clock("Zeit:", timeLeft)
if get_time() - pc.getqf("challenge_duration") >= timeToWait then
q.done()
notice("Challenge Zeit Abgelaufen")
set_state(challenge_failed)
end
end
when FinalTarget.kill begin
if pc.getqf("kill_count_1") < AmountSelector then
local index =pc.getqf("kill_count_1") + 1
pc.setqf("kill_count_1",index)
-- q.set_counter_value(AmountSelector - pc.getqf("kill_count_1"))
if AmountSelector == pc.getqf("kill_count_1") and get_time() - pc.getqf("challenge_duration") < timeToWait then
q.done()
notice("Challenge Erfolg")
set_state(challenge_success)
end
end
end
end
--
--
--
-- when 20095.Chat."Challenge" begin
-- if BeenHere != 1 then
-- ChallengeIndex = 0
-- BetMoney = 0
-- Reward = 0
-- TargetChallenge = 0
-- AmountChallenge = 0
-- TimeChallenge = 0
-- TargetSelector = 0
-- AmountSelector = 0
-- TimeSelector = 0
-- BeenHere = 1
-- end
-- say_title("Challenge")
-- local s = select("Ziel auswählen", "Anzahl auswählen", "Zeit auswählen")
-- if s == 1 then
-- say_title("Ziel auswählen")
-- local t = select("Wildhunde", "Wölfe", "Tiger")
-- if t == 1 then
-- TargetSelector = Target1
-- TargetChallenge = 1
-- else
-- if t== 2 then
-- TargetSelector = Target2
-- TargetChallenge = 2
-- else
-- TargetSelector = Target3
-- TargetChallenge = 4
-- end
-- end
-- else
-- if h == 2 then
-- say_title("Anzahl festlegen")
-- local a = select("10", "30", "50")
-- if a == 1 then
-- AmountSelector = 10
-- AmountChallenge = 1
-- else
-- if a== 2 then
-- AmountSelector = 30
-- AmountChallenge = 2
-- else
-- AmountSelector = 50
-- AmountChallenge = 4
-- end
-- end
-- else
-- say_title("Zeit festlegen")
-- local i = select("60 Minuten", "30 Minuten", "10 Minuten")
-- if i == 1 then
-- TimeSelector = Time1
-- TimeChallenge = 1
-- else
-- if i== 2 then
-- TimeChallenge = 2
-- set_state(bounceback)
-- else
-- TimeSelector = Time3
-- TimeChallenge = 4
-- end
-- end
-- end
-- end
-- end
--
--
--
-- when 20095.Chat."Dem alten Mann helfen" begin
-- target.delete("__TARGET__")
-- say_title("Hilfe für Seon-Hae")
-- say("Wehe! Diese verflixten Kläffer! Hungrige Wildunde haben meinen kleinen Hund Fu verschlungen! Mit zwei Bissen war er weg, der arme Kleine!")
-- wait()
-- say(string.format("Rächt meinen Fu! Erschlagt %s hungrige Wildhunde und seine kleine Hundeseele wird mit Genugtuung in das Geisterreich eingehen können! Der arme Kleine ...",HuntAmount))
-- set_state(hunting)
-- end
--
-- when 20095.Chat."Dem alten Mann Ehre erweisen" begin
-- target.delete("__TARGET__")
-- say_title("Tee für Seon-Hae")
-- say("*Der alte Mann Seon-Hae nickt euch zu, als ihr euch zur Begrüßung verbeugt. Er scheint von Sorgen geplagt.*")
-- wait()
-- say("*Die Tradition würde gebieten, ihm einen Glockenblumentee zu reichen. Dies demonstriert eure Achtung und beruhigt seine Seele.*")
-- wait()
-- say(string.format("*Sammelt %s Glockenblumen. Die Wildhunde erschnüffeln sie gere im Gras, von ihnen könnt ihr welche erbeuten.*", GatherAmount))
-- set_state(gather)
-- end
--
-- when 20095.Chat."Den alten Mann ausrauben" begin
-- target.delete("__TARGET__")
-- say_title("Überfall auf Seon-Hae")
-- say("Rüpel! Ein alter Mann ist in Trauer um seinen besten Freund und ihr haltet ihm noch eine Klinge unter die Nase! Aber glaubt nur nicht das ihr damit davonkommt! Der Geist meines toten Hundes wird mir Schutz senden!")
-- wait()
-- say("Fass, Fu! Fass!")
-- set_state(fighting)
-- end
--
--
--
state teleport begin
when enter or login begin
if pc.get_map_index() >= 1120000 and pc.get_map_index() <= 1129999 then
say_in_map("proper state")
set_state(arena_relocate)
else
notice("teleport begin")
command("private 112")
set_state(arena_relocate)
end
end
end
state arena_relocate begin
when enter or login begin
if pc.get_map_index() >= 1120000 then
notice("relocate")
command("go 88 88")
-- say_in_map("proper state")
set_state(spawn_arena)
end
end
end
state spawn_arena begin
when enter or login begin
mob.spawn(101, 101, 101, 1,1, 3)
notice("spawn")
set_state(arena_combat)
end
end
state arena_combat begin
when enter or login begin
notice("combat")
-- if pc.is_dead() == true then
-- set_state(return_from_arena)
-- end
end
when 101.kill begin
local index = pc.getqf("killcount")+1
pc.setqf("killcount", index)
if pc.getqf("killcount") >= 3 then
notice("final kill")
set_state(return_from_arena)
end
end
end
state return_from_arena begin
when enter or login begin
local CordX = pc.getqf("pcx")*100
local CordY = pc.getqf("pcy")*100
pc.setqf("killcount", 0)
say_title("Round Over")
say("Return home.")
local s = select("OK")
if s == 1 then
pc.warp(CordX, CordY)
notice("timer over")
set_state(talk_seon)
end
end
end
state hunting begin
when enter begin
q.start()
q.set_title("Hundejagd")
notice("Erlege hungrige Wildhunde.")
send_letter("Erlegt hungrige Wildhunde.")
q.set_counter("Noch übrig", HuntAmount)
end
when button or info begin
say_title("Erlege Wildhunde")
say(string.format("Erlegt %s hungrige Wildhunde um Fu zu rächen.", HuntAmount))
end
-----Kill 171#Hungringer wildhund-----
when 171.kill begin
if pc.getqf("kill_count_1") < HuntAmount then
local index =pc.getqf("kill_count_1") + 1
pc.setqf("kill_count_1",index)
q.set_counter_value(HuntAmount - pc.getqf("kill_count_1"))
if HuntAmount == pc.getqf("kill_count_1") then
q.done()
notice("Das sollten genug Hunde gewesen sein, kehrt zu Seon-Hae zurück.")
set_state(back_to_npc)
end
end
end
end
state back_to_npc begin
when enter begin
q.start()
q.set_title("Zurück zu Seon-Hae")
send_letter("Zurück zu Seon-Hae")
local v=find_npc_by_vnum(20095) -- Seon-Hae
if 0==v then
else
target.vid("__TARGET2__", v, "Seon-Hae")
end
end
when button or info begin
say_title("Zurück zu Seon-Hae")
say("Kehrt zu Seon-Hae zurück.")
end
when __TARGET2__.target.click begin
target.delete("__TARGET2__")
say("Gute Arbeit, ihr habt es den Biestern gezeigt! Mein kleiner Fu kann nun getrost ins Geisterreich übergehen.") -- white font text
wait()
say("Hier, dieses Geld hatte ich gespart um seine Leckereien zu kaufen. Ich schätze es gebührt euch.")
say_reward("Ihr erhaltet:")
say("Einen großen Beutel Yang")
q.done()
pc.change_money(10000)
pc.give_exp2(500)
end
end
state gather begin
when enter begin
q.start()
q.set_title("Glockenblumen")
notice("Erlegt Wildhunde um Glockenblumen zu sammeln")
send_letter("Erlegt Wildhunde um Glockenblumen zu sammeln.")
q.set_counter("Noch übrig", GatherAmount)
end
when button or info begin
say_title("Glockenblumen von Wildhunden")
say(string.format("Erbeutet %s Glockenblumen von den Wildhunden der Umgebung", GatherAmount))
end
when 101.kill begin -- yy unfinished yy
if pc.count_item(50702)< GatherAmount - pc.getqf("collect_count") then
pc.give_item2(50702, 1)
local index = pc.getqf("collect_count") + 1
q.set_counter_value(GatherAmount - pc.getqf("collect_count"))
pc.setqf("collect_count",index)
notice("Ihr habt eine Glockenblume gefunden")
else
q.done()
-- set_state(return_flowers)
end
end
end
-- state return_flowers
-- when enter begin
-- q.start()
-- q.set_title("Der Tee für Seon-Hae")
-- notice("Kehrt zu Seon-Hae zurück")
-- send_letter("Kehrt zu Seon-Hae zurück")
-- if 0!=v then
-- target.vid("__TARGET3__", v, "Seon-Hae")
-- end
-- end
--
-- when button or info begin
-- say_title("Glockenblumen für Seon-Hae")
-- say("Kehrt mit dne Glockenblumen zu Seon-Hae zurück.")
-- end
--
-- when __TARGET3__.target.click begin
-- target.delete("__TARGET3__")
-- say("*Es dauert nicht lange, aus den Glockenblumen einen Tee zuzubereiten. Seon-Hae betrachtet euch wohlwollend als ihr ihm die Schale überreicht.*") -- white font text
-- wait()
-- say("Das nenne ich gute Erziehung! Das war genau das,w as ich in dieser schweren Zeit brauchte. Ihr seid noch ein junger Mensch mit Manieren. Selten anzutreffen bei euch Abenteurern.")
-- say_reward("*Seon-Hae steckt euch etwas zu:*")
-- say("Einige Yang")
-- q.done()
-- pc.change_money(100)
-- pc.give_exp2(1000)
-- end
--
-- end
state fighting begin
when enter begin
q.start()
q.set_title("Besiegt den Wolf")
send_letter("Besiegt den Wolf")
mob.spawn(102, 356, 483, 1, 1, 1)
end
when button or info begin
say_title("Besiegt den Wolf")
say("Besiegt den Wolfsgeist, der Seon-Ha zur Hilfe geeilt ist.")
end
when 102.kill begin
q.done()
set_state(robbing)
end
end
state robbing begin
when enter begin
q.start()
q.set_title("Holt das Geld von Seon-Hae")
send_letter("Holt das Geld von Seon-Hae")
local v=find_npc_by_vnum(20095) -- Seon-Hae
if 0==v then
else
target.vid("__TARGET2__", v, "Seon-Hae")
end
end
when button or info begin
say_title("Seon-Hae ausrauben")
say("Ihr habt Seon-Haes Wächter beseigt, nun ist es an der Zeit sich sein Geld zu schnappen.")
end
when __TARGET2__.target.click begin
target.delete("__TARGET2__")
say_title("Das Geld von Seon-Ha")
say("Ihr... Ihr habt ihn erschlagen! Bitte, tut mir nicht das gleiche an, ihr sollt alles bekommen, was ich habe!") -- white font text
wait()
say("Da, nehmt meinen Besitz! Möge euch höchstpersönlich ein Metinstein auf den Kopf fallen, ehrloser Schurke!")
say_reward("Seon-Ha übergibt euch:")
say_item_vnum(11)
say("und einen großen Beutel Yang")
q.done()
pc.change_money(10000)
pc.give_item2(11, 1)
pc.give_exp2(100)
end
end
-- when 20095.Chat."Ziele festlegen" begin
-- say_title("Challenge")
-- local s = select("Ziel auswählen", "Anzahl auswählen", "Zeit auswählen")
-- if s == 1 then
-- say_title("Ziel auswählen")
-- local t = select("Wildhunde", "Wölfe", "Tiger")
-- if t == 1 then
-- TargetSelector = Target1
-- TargetChallenge = 1
-- else
-- if t== 2 then
-- TargetSelector = Target2
-- TargetChallenge = 2
-- else
-- TargetSelector = Target3
-- TargetChallenge = 4
-- end
-- end
-- else
-- if h == 2 then
-- say_title("Anzahl festlegen")
-- local a = select("10", "30", "50")
-- if a == 1 then
-- AmountSelector = 10
-- AmountChallenge = 1
-- else
-- if a== 2 then
-- AmountSelector = 30
-- AmountChallenge = 2
-- else
-- AmountSelector = 50
-- AmountChallenge = 4
-- end
-- end
-- else
-- say_title("Zeit festlegen")
-- local i = select("60 Minuten", "30 Minuten", "10 Minuten")
-- if i == 1 then
-- TimeSelector = Time1
-- TimeChallenge = 1
-- else
-- if i== 2 then
-- TimeChallenge = 2
-- else
-- TimeSelector = Time3
-- TimeChallenge = 4
-- end
-- end
-- end
--
-- end
--
-- when 20095.Chat."Anzahl festlegen" begin
-- say_title("Anzahl festlegen")
-- local s = select("10", "30", "50")
-- if s == 1 then
-- AmountSelector = 10
-- AmountChallenge = 1
-- set_state(bounceback)
-- else
-- if s== 2 then
-- AmountSelector = 30
-- AmountChallenge = 2
-- set_state(bounceback)
-- else
-- AmountSelector = 50
-- AmountChallenge = 4
-- set_state(bounceback)
-- end
-- end
-- end
--
--
-- when 20095.Chat."Zeit festlegen" begin
-- say_title("Zeit festlegen")
-- local s = select("60 Minuten", "30 Minuten", "10 Minuten")
-- if s == 1 then
-- TimeSelector = Time1
-- TimeChallenge = 1
-- set_state(bounceback)
-- else
-- if s== 2 then
-- TimeSelector = Time2
-- TimeChallenge = 2
-- set_state(bounceback)
-- else
-- TimeSelector = Time3
-- TimeChallenge = 4
-- set_state(bounceback)
-- end
-- end
-- end
state bounceback begin
when enter or login begin
notice(string.format("%s ,%s ,%s", TimeChallenge, AmountChallenge, TargetChallenge))
set_state(talk_seon)
end
end
state start_quest begin
when enter or login begin
q.start()
timeToWait = TimeList[TimeSelector]
timeLeft = timeToWait - (get_time() - pc.getqf("challenge_duration"))
send_letter(string.format("Jage %s x %s in %s Minuten",AmountList[AmountSelector],mob_name(TargetList[TargetSelector]),TimeList[TimeSelector]/60))
q.set_title(string.format("Jage %s x %s in %s Minuten",AmountList[AmountSelector],mob_name(TargetList[TargetSelector]),TimeList[TimeSelector]/60))
q.set_clock("Zeit:", timeLeft)
if get_time() - pc.getqf("challenge_duration") >= timeToWait then
q.done()
notice("Challenge Zeit Abgelaufen")
set_state(challenge_failed)
end
end
when FinalTarget.kill begin
if pc.getqf("kill_count_1") < AmountSelector then
local index =pc.getqf("kill_count_1") + 1
pc.setqf("kill_count_1",index)
-- q.set_counter_value(AmountSelector - pc.getqf("kill_count_1"))
if AmountSelector == pc.getqf("kill_count_1") and get_time() - pc.getqf("challenge_duration") < timeToWait then
q.done()
notice("Challenge Erfolg")
set_state(challenge_success)
end
end
end
end
state challenge_failed begin
when enter or login begin
notice("Challenge fehlgeschlagen")
set_state(talk_seon)
end
end
state challenge_success begin
when enter or login begin
notice(string.format("Du erhälst", Reward))
pc.change_money(Reward)
set_state(talk_seon)
end
end
end