ich wollte mal wieder was Releasen. Heute ist es ein Skillbaum-System.
Aufbau:
- Mann kann den Skillbaum als Gm an,- und auschalten.
- Wenn der Skillbaum aktiv ist kann mann zu dem bestimmten Npc wo sich der
- der Skillbaum befindet hingehen und mit bestimmten Items die Bonis erhöhen.
- Nachdem mann erfolgreich geskillt hat(die Chance das es klappt ist 50%) erhält
- mann den Boni und muss 1 Stunde warten bis mann wieder etwas skillen kann.
- Es gibt 5 Level wenn mann in jedem Level alles durch geskillt hat wird mann
- ein Level höher gestuft.
Infos:
- Fast alles selber einstellbar.(Die Anzahl der Skillpunkte die mann für ein Bonus
- braucht sind noch nicht selber einstellbar, werde es aber gerne auf
- Anfragen edit.)
- Jeden Bonus muss mann min. 10 x skillen um weiter zu kommen.
- Die Bonis pro Level sind alle einstellbar(für die SA´s)
- Die Quest war eig. für mein Server gedacht aber naja
- Guckt sie euch einfach mal an.
Achja und da die Quest jetzt Großteils über qf läuft werde ich auf Anfragen auch gerne eine Mysql Version davon raushauen.
(Verbesserungsvorschläge gerne angenommen)
quest skilltree begin state start begin when 9009.chat."Skillbaum Panel" with pc.is_gm() begin say(col.gold("Skillbaum:[ENTER]")) say("Skillbaum ".. ({'offline','online'})[game.get_event_flag("skill_tree")+1]) say() if select("Skillbaum "..({'anschalten','ausschalten'})[game.get_event_flag("skill_tree")+1], "Nichts") == 2 then return end notice_all("Der Skillbaum ist jetzt "..({"erreichbar","nicht erreichbar"})[game.get_event_flag("skill_tree")+1]) if game.get_event_flag("skill_tree") == 0 then game.set_event_flag("skill_tree", 1) else game.set_event_flag("skill_tree", 0) end end
when 9009.chat."Skillbaum" with game.get_event_flag("skill_tree") == 1 begin local bonis = {} local tree = { -- [Skillbaumlevel]//Bonus Name//Flag_name//Bonus pro up//Bonus Name//Benötigtes Item//Anzahl [0] = { {"Trefferpunkte","tree_tp", 1000, apply.MAX_HP, 19, 1}, {"Angriffsgeschwindigkeit","tree_angr", 2, apply.ATT_SPEED, 19, 2}, {"Laufgeschwindigkeit","tree_speed", 3, apply.MOV_SPEED, 19, 1}, {"Tp-Regeneration","tree_reg", 2, apply.HP_REGEN, 29, 1}, }, [1] = { {"Stark gegen Tiere","tree_animals", 3, apply.ATTBONUS_ANIMAL, 39, 1}, {"Stark gegen Orks","tree_orc", 2, apply.ATTBONUS_ORC, 19, 1}, {"Stark gegen Teufel","tree_devil", 2, apply.ATTBONUS_DEVIL, 19, 1}, }, [2] = { {"Kritische Treffer","tree_crit", 1, apply.CRITICAL_PCT, 19, 1}, {"Durchbohrende Treffer","tree_db", 1, apply.PENERATE_PCT, 29, 1}, {"Vergiftungschane","tree_poisen", 1, apply.POISON_PCT, 39, 1}, }, [3] = { {"Stark gegen Halbmenschen","tree_hm", 2, apply.ATTBONUS_HUMAN, 19, 1}, {"Schwertverteidigung","tree_sword", 1, apply.RESIST_SWORD, 19, 1}, {"Zweihänderverteidigung","tree_tsword", 1, apply.RESIST_TWOHAND, 19, 1}, {"Glockenverteidigung","tree_bell", 1, apply.RESIST_BELL, 19, 1}, {"Fächerverteidigung","tree_fan", 1, apply.RESIST_FAN, 19, 1}, {"Dolchverteidigung","tree_dagger", 1, apply.RESIST_DAGGER, 19, 1}, {"Pfeilverteidigung","tree_bow", 1, apply.RESIST_BOW, 19, 1}, }, [4] = { {"Stark gegen Krieger","tree_warrior", 1, apply.ATT_BONUS_TO_WARRIOR, 19, 1}, {"Stark gegen Ninja","tree_assasine", 1, apply.ATT_BONUS_TO_ASSASSIN, 19, 1}, {"Stark gegen Sura","tree_sura", 1, apply.ATT_BONUS_TO_SURA, 19, 1}, {"Stark gegen Schamenen","tree_shaman", 1, apply.ATT_BONUS_TO_SHAMAN, 19, 1}, }, } say(col.gold("Hallo "..pc.get_name()..",")) say("bei mir kannst du im Tausch von") say("Gegenständen verschiedene Bonis skillen.") say("Möchtest du fortfahren?") if select("Forfahren","Abbruch") == 2 then return end say(col.gold("Skillbaum:[ENTER]")) say("Gut, ich werde dir Auflisten") say("was du alles skillen kannst.") wait() say(col.gold("Skillbaum:[ENTER]")) for i = 1, table.getn(tree[pc.getqf("tree_level")]), 1 do if pc.getqf(tree[pc.getqf("tree_level")][i][2]) >= 10 then table.insert(bonis, tree[pc.getqf("tree_level")][i][1].." - Beendet") else table.insert(bonis, tree[pc.getqf("tree_level")][i][1]) end end local menu = select3(bonis) if menu == -1 then return end local rnd = math.random(1, 100) say(col.gold("Skillbaum:[ENTER]")) say("Du hast den Boni bereits auf "..pc.getqf(tree[pc.getqf("tree_level")][menu][2])) say() say("Du möchtest also "..tree[pc.getqf("tree_level")][menu][1].." skillen?") if select("Skillen","Abbruch") == 2 then return end if pc.getqf(tree[pc.getqf("tree_level")][menu][2]) < 10 then if get_time() > pc.getqf("tree_time") then if pc.count_item(tree[pc.getqf("tree_level")][menu][5]) >= tree[pc.getqf("tree_level")][menu][6] then if rnd > 49 then -- Chance ob klappen soll immoment 50% say(col.gold("Skillbaum:[ENTER]")) say("Glückwunsch dein Skillpunkt") say("wurde erfolgreich gesetzt.[ENTER]") say(col.lightgreen("Erfolgreich!![ENTER]")) wait() pc.remove_item(tree[pc.getqf("tree_level")][menu][5], tree[pc.getqf("tree_level")][menu][6]) affect.add_collect(tree[pc.getqf("tree_level")][menu][4], tree[pc.getqf("tree_level")][menu][3], 60*60*24*365*60) chat("Du hast "..tree[pc.getqf("tree_level")][menu][3].." mehr "..tree[pc.getqf("tree_level")][menu][1].." erhalten.") pc.setqf(tree[pc.getqf("tree_level")][menu][2], pc.getqf(tree[pc.getqf("tree_level")][menu][2])+1) pc.setqf("tree_time", get_time()+3600) -- Warte Zeit if pc.getqf(tree[pc.getqf("tree_level")][menu][2]) >= 10 then local tree_skill = table.getn(tree[pc.getqf("tree_level")])*1 say(col.gold("Skillbaum:[ENTER]")) say("Glückwunsch dein Skill,") say("wurde erfolgreich auf die max.") say("Stufe gestuft.") say() say(col.lightgreen("Mach weiter so!")) say() wait() pc.setqf("tree_level_skill", pc.getqf("tree_level_skill")+1) if pc.getqf("tree_level_skill") == tree_skill then pc.setqf("tree_level", pc.getqf("tree_level")+1) say(col.gold("Skillbaum[ENTER]")) say("Glückwunsch du hast das Level") say("erfolgreich absolviert.") say() say(col.lightgreen("Aufstieg: Level "..pc.getqf("tree_level"))) wait() pc.setqf("tree_time", get_time()+7200) end end else say(col.gold("Skillbaum:[ENTER]")) say("Leider ist der Skillpunkt") say("nicht gut genung gewesen.") say() say_reward("Fehlgeschlagen!!") pc.remove_item(tree[pc.getqf("tree_level")][menu][5], tree[pc.getqf("tree_level")][menu][6]) say() return end else say(col.gold("Skillbaum:")) say() say("Leider fehlt dir ein") say_item_vnum(tree[pc.getqf("tree_level")][menu][5]) say() return end else say(col.gold("Skillbaum:[ENTER]")) say("Du musst noch warten") say("bevor du wieder skillen kannst.") say() return end else say(col.gold("Skillbaum")) say("Leider ist der Skill") say("bereits auf dem Maximum.") say() return end end end end
--[[ @name select3 @author Mijago @needs split @descr Wie Select2: Eine Tabelle oder eine Stringliste wird auf Seiten aufgeteilt. Weiter, Zurück und Abbrechen (-1) Buttons. --]] function select3(...) arg.n = nil local tp,max = arg,5 if type(tp[1]) == 'number' then max = tp[1] if type(tp[2]) == 'table' then tp = tp[2] else table.remove(tp,1) end elseif type(tp[1]) == 'table' then if type(tp[1][1]) == 'number' then max = tp[1][1] table.remove(tp[1],1) tp = tp[1] end tp = tp[1] end local str = '{' local tablen,act,incit = table.getn(tp),0,0 table.foreach(tp,function(i,l) act = act + 1 if act == 1 then str = str .. '{'..string.format('%q',l) elseif act == max+1 and tablen > act+incit then if tablen ~= act+incit+1 then str = str..'},{'..string.format('%q',l) else str=str..','..string.format('%q',l) end incit = incit + max act = 1 else str=str..','..string.format('%q',l) end end) local px = loadstring('return '..str ..'}}')() local function copy_tab(t) local p= {} for i = 1,table.getn(t) do p[i] = t[i] end return p end local pe = {} for i = 1,table.getn(px) do pe [i] = copy_tab(px[i]) end local function init(i,ip) pe[i] = copy_tab(px[i]) local next,back,exit = 0,0,0 if i < table.getn(pe) and table.getn(pe) ~=1 then table.insert(pe[i],table.getn(pe[i])+1,'Weiter zu Seite '..(i+1)); next = table.getn(pe[i]) end if i > 1 then table.insert(pe[i],table.getn(pe[i])+1,'Zurück zu Seite '..(i-1)); back = table.getn(pe[i]) end table.insert(pe[i],table.getn(pe[i])+1,'Abbruch'); exit = table.getn(pe[i]) if table.getn(pe) > 1 then say('Seite '..i..' von '..table.getn(pe)) end local e = select_table(pe[i]) if e == next then return init(i+1,ip+max) elseif e == back then return init(i-1,ip-max) elseif e == exit then return -1 else return e+ip,pe[i][e] end end return init(1,0) or -1 end
PS: Die lib Erweiterungen sind alle von Mijago.
Special thanks:
- Boneyx3
- Cry wegen cool
- Whit3Styler
- Swek. 1337 für ganz viel swek
- alpha-1337 für
Komisch...
Heißt der Freund zufällig Nyor?
Wenn ja, hat er unsere Idee public gemacht,
naja son lauchi, falls er das gemacht hat.
Nop mein Freund heißt Prios als wir Tera gespielt haben kam uns die idee warum nicht ein weiteres Skill-System einbauen Metin ist sowieso was das Skill-System/Fertigkeiten angeht langweilig.
Mfg
Metin2 Skillbaum? 03/27/2013 - Metin2 Private Server - 2 Replies Hi Leute,
Ich habe neulich auf einem Metin2-Pserver gespielt.
Und da gab es einen Killbaum wo man alle 10 Lv. einen skill verteilen konnte.
Wolte mal fragen obs dazu hier im Forum einen Thread gibt.
Mfg.
Skillbaum? 03/18/2011 - 4Story - 12 Replies Hey könnt ihr mir einen sehr guten skillbaum für einen nekro sagen?
WoW, Todesritter bekommt Tank-Skillbaum. 04/07/2010 - User Submitted News - 0 Replies Todesritter bekommen mit WoW: Cataclysm einen klar fürs Tanken reservierten Talentbaum: Blut
Da haben die offiziellen Klassen-Enthüllungen für WoW: Cataclysm noch gar nicht angefangen - und schon geht's rund. Blizzards Klassensprecher und Vorzeige-Blueposter Greg "Ghostcrawler" Street ließ vorab "die Bombe platzen", wie er sagt. Er nahm heute im offiziellen US-Forum eine Todesritter-Änderung vorweg, damit die ausführliche Todesritter-Preview nicht von folgender Cataclysm-Neuerung überschattet...
Freepunkte für skillbaum 05/08/2007 - WoW Exploits, Hacks, Tools & Macros - 3 Replies jo
also ich war letztens mit meinem twink hexer in Kloster mit nem 70er.
Als ich kurz vor lv 34 stand ca. 2mobs noch oder so dann lv up auf jeden fall
hatte ich kurz vom lv up nen disc "serververbindung unterbrochen" kp ob i-net weg
war oder mich einer gekickt hat kp also...
dann bin ich wieder rein gegangen und schauchte in den skillbaum dann hatte ich 7freipunkte
statt 1