Heyho,
da ich eben in einem Thread gesagt habe ich release meine Quest hab ich sie mal rausgekramt und etwas kommentiert.
Sollte alles notwendige mit bei stehen, ansonsten einfach fragen. Anpassungen mache ich selber keine daran.
Code: rainbow_stone.quest
- ----------------------------------
- -- By Sanii for Metin2Downloads
- ----------------------------------
- -- Regenbogenstein-Quest mit optionalen Wunschleveln der Skills.
- -- Setzt alle Skills der gewünschten Lehre auf Perfekten Meister.
- -- Ausnahmen können in "specialSkillVnums" geändert werden.
- -- Pferdelevel wird auf 21 gesetzt, falls nicht erwünscht entfernen/auskommentieren.
- -- Alle Spezialfertigkeiten werden ebenfalls auf P gesetzt. Auch das entfernen/auskommentieren wenn nicht erwünscht.
- -- Mit dieser Quest kann einfach die Lehre gewechselt werden, wenn ein weiterer Regenbogenstein genutzt wird.
- quest rainbow_stone begin
- state start begin
- function SetAllSkillsPerfect(job, group)
- pc.set_skill_group(group)
- pc.clear_skill()
- -- Diese Skills bekommen eine Auswahl auf Welche Stufe sie gesetzt werden sollen.
- local specialSkillVnums = {
- {3, 19},-- Krieger (Kampfrausch und Starker Körper z.B. nicht auf P sondern G1)
- {0, 0}, -- Ninja
- {0, 0}, -- Sura
- {0, 0}, -- Schamane
- {0, 0}, -- Lykaner
- }
- local PERFECT_MASTER_SKILL_LEVEL = 40
- local SPECIAL_SKILL_LEVEL = rainbow_stone.CheckForSpecialMasterLevel(job, specialSkillVnums[job+1][group])
- table.foreach(special.active_skill_list[job+1][group],
- function(i, skill_vnum)
- if SPECIAL_SKILL_LEVEL ~= 0 and skill_vnum == specialSkillVnums[job+1][group] then
- pc.set_skill_level(skill_vnum, SPECIAL_SKILL_LEVEL)
- SPECIAL_SKILL_LEVEL = 0
- else
- pc.set_skill_level(skill_vnum, PERFECT_MASTER_SKILL_LEVEL)
- end
- end
- )
- -- Pferdelevel setzen
- horse.set_level (21)
- --
- -- Führung, Sprachen und co. auch auf P setzen.
- local special_skills = {121, 122, 124, 126, 127, 128, 129, 131, 137, 138, 139, 140}
- for i, vnum in special_skills do
- pc.set_skill_level(vnum,PERFECT_MASTER_SKILL_LEVEL)
- end
- --
- return true
- end
- function CheckForSpecialMasterLevel(job, skillVnum)
- local PERFECT_MASTER_SKILL_LEVEL = 40
- if skillVnum ~= 0 then
- say_title("Meisterlevel wählen")
- say("")
- local skillName = string.gsub(locale.GM_SKILL_NAME_DICT[skillVnum], "%s+", "")
- say_reward("Auf welches Level möchtest du "..skillName.." setzen?")
- local skillLevel = {20, 30, 40}
- local a = select("Meister", "Großmeister", "Perfekt")
- PERFECT_MASTER_SKILL_LEVEL = skillLevel[a]
- end
- return PERFECT_MASTER_SKILL_LEVEL
- end
- function GetSkillGroupList()
- local job = pc.job
- local skill_group_list = {}
- if job == 0 then
- table.insert(skill_group_list, "Körperkampf-Lehre")
- table.insert(skill_group_list, "Mentalkampf-Lehre")
- elseif job == 1 then
- table.insert(skill_group_list, "Nahkampf-Lehre")
- table.insert(skill_group_list, "Fernkampf-Lehre")
- elseif job == 2 then
- table.insert(skill_group_list, "Magische Waffen-Lehre")
- table.insert(skill_group_list, "Schwarze Magie-Lehre")
- elseif job == 3 then
- table.insert(skill_group_list, "Lehre der Drachenmacht")
- table.insert(skill_group_list, "Lehre der Heilung")
- elseif job == 4 then
- table.insert(skill_group_list, "Instinkt")
- end
- table.insert(skill_group_list, "Abbrechen")
- return skill_group_list
- end
- when 50512.use begin
- say_title("Regenbogenstein:")
- say("")
- say("Welche Lehre soll perfekt gemeistert werden?")
- say_reward("Bitte wähle:")
- local tab = rainbow_stone.GetSkillGroupList()
- local s = select_table(tab)
- if s == 3 then
- return
- elseif pc.job == 4 and s == 2 then -- Lykaner hat keine 2. Lehre, darum ist dort der 2. Button "Abbrechen"
- return
- end
- if rainbow_stone.SetAllSkillsPerfect(pc.job, s) == true then
- say_title("Regenbogenstein:")
- say("")
- say("Glückwunsch deine Lehre wurde gemeistert.")
- say_reward("Möglicherweise ist ein erneutes Einloggen notwendig.")
- item.remove()
- end
- end
- end
- end