Hallo
Ich release mal aus Langeweile mal das Skillsystem von Dyshaxos noname Server Scope Square.
Keine Ahnung, warum er es als Referenz für seinen Service nimmt.. War nur knapp 10 Minuten Arbeit.
Ist untested; falls es Bugs gibt, sagt bescheid.
Evtl fixe ich sie ja.
Habe eine Funktion aus der Seelenstein-Quest genommen, weil ich kein Bock hatte, sie selber zu schreiben.
Wie das ganze funktioniert
Ich release mal aus Langeweile mal das Skillsystem von Dyshaxos noname Server Scope Square.
Keine Ahnung, warum er es als Referenz für seinen Service nimmt.. War nur knapp 10 Minuten Arbeit.
Ist untested; falls es Bugs gibt, sagt bescheid.
Evtl fixe ich sie ja.
Habe eine Funktion aus der Seelenstein-Quest genommen, weil ich kein Bock hatte, sie selber zu schreiben.
Wie das ganze funktioniert
|
|
Code:
quest skillsystem begin
state start begin
when login begin
send_letter("Skillsystem")
end
when login or levelup with pc.getf("skillsystem", "skill_"..pc.level) == 0 begin
pc.setf("skillsystem", "skillpoints", pc.getf("skillsystem", "skillpoints") + pc.level*2)
pc.setf("skillsystem", "skill_"..pc.level, 1)
end
when button or info begin
say_title("Skillsystem")
local list = training_grandmaster_skill.BuildGrandMasterSkillList(pc.get_job(), pc.get_skill_group()),{}
table.foreach(list, function(i) table.insert(menu, list[2][i].." <".. list[1][i]..">") end)
table.insert(menu, "Abbrechen")
say("Wähle eine Fertigkeit:")
local s = select_table(menu)
if s == table.getn(menu) then return end
local costs = skillsystem.getSkillCosts()[list[1][s]] or 0
say_title("Skillsystem - ".. menu[s])
say_reward("Kosten: ".. costs)
say_reward("Verfügbare Punkte: ".. pc.getf("skillsystem", "skillpoints"))
say()
if select("Verbessern", "Abbrechen") == 2 then return end
pc.set_skill_level(list[1][s], pc.get_skill_level(list[1][s]) + 1)
pc.setf("skillsystem", "skillpoints", pc.getf("skillsystem", "skillpoints") - costs)
send_letter("Skillsystem")
end
function getSkillCosts()
return ({1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
31,32,33,34,35,36,37,38,39,40})
end
function BuildGrandMasterSkillList(job, group)
GRAND_MASTER_SKILL_LEVEL = 30
PERFECT_MASTER_SKILL_LEVEL = 40
local skill_list = special.active_skill_list[job+1][group]
local ret_vnum_list = {}
local ret_name_list = {}
-- test_chat(string.format("job=%d, group=%d", job, group))
table.foreach(skill_list,
function(i, skill_vnum)
local skill_level = pc.get_skill_level(skill_vnum)
-- test_chat(string.format("[%d]=%d", skill_vnum, skill_level))
if skill_level >= 1 and skill_level < PERFECT_MASTER_SKILL_LEVEL then
table.insert(ret_vnum_list, skill_vnum)
local name=locale.GM_SKILL_NAME_DICT[skill_vnum]
if name == nil then name=skill_vnum end
table.insert(ret_name_list, name)
end
end)
return {ret_vnum_list, ret_name_list}
--return {ret_vnum_list, ret_name_list}
end
end
end