Seelenstein Frage

03/30/2012 19:35 msschurmann#1
hat einer von euch die DE seelenstein quest zufällig da?
wer geil wen einer sie mir geben könnte =)
03/30/2012 19:48 Michael_X#2
Ist zwar nicht ganz das Original, weicht aber nur minimal ab:

PHP Code:
quest training_grandmaster_skill begin
    state start begin
        when 50513.
use begin
            say_title
("Seelenstein")
            
local seelicount = pc.count_item(50513)
            if 
pc.get_skill_group() == 0 then
                say
("Du besitzt keine Fertigkeiten, die")
                
say("gegroßmeistert werden können.")
                return
            
end
            
if get_time() < pc.getqf("next_time") then -- and not is_test_server() then
                
if pc.is_skill_book_no_delay() then
                    say
("Durch den gebrauch einer Exorzismuss-")
                    
say("Schriftrolle kannst du einen weiteren")
                    
say("Seelenstein lesen!")                
                    
wait()
                    
say_title("Seelenstein")
                else
                    
say("Du hast heute bereits einen Seelenstein gelesen!")
                    return
                
end
            end
            local result 
= training_grandmaster_skill.BuildGrandMasterSkillList(pc.get_job(), pc.get_skill_group())
            
local vnum_list = result[1]
            
local name_list = result[2]
            if 
table.getn(vnum_list) == 0 then
                say
("Du besitzt keine Fertigkeiten, die")
                
say("gegroßmeistert werden können.")
                return
            
end
            say
("Welche Fertigkeit möchtest du trainieren?")
            
say("")
            
local menu_list = {}
            
table.foreach(name_list, function(i, name) table.insert(menu_list, name) end)
            
table.insert(menu_list, "Abbrechen") 
            
local s=select_table(menu_list)
            if 
table.getn(menu_list) == s then
                
return
            
end
            local skill_name
=name_list[s]
            
local skill_vnum=vnum_list[s]
            
local skill_level = pc.get_skill_level(skill_vnum)
            
local cur_alignment = pc.get_real_alignment()
            
local need_alignment = 1000+500*(skill_level-30)
            
test_chat("Momentaner Rang: "..cur_alignment)
            
test_chat("Benötigter Rang: "..need_alignment)            
            
local title=string.format("%s auf G%d trainieren", skill_name, skill_level-30+1)
            if 
skill_level-30+1==10 then
                title
=string.format("%s auf P trainieren", skill_name)
            
end
            pc
.remove_item("50513", 1)
            
say_title(title)
            
say("Durch das Lesen von Seelensteinen müssen")
            
say("dir als Zeichen des Opfers Rangpunkte")
            
say("abgezogen werden.")
            
say("")
            if 
cur_alignment<-19000+need_alignment then
                say_reward
("Du hast zu wenig Rangpunkte!")
                return
            
end
            
if cur_alignment<0 then
                say_reward
(string.format("Benötigter Rang: %d -> %d", need_alignment, need_alignment*2))
                
say_reward("Beim erfolgreichen Einlesen des")
                
say_reward("Seelensteines wird dir doppelt")
                
say_reward("so viel Rangpunkte abgezogen.")
                
need_alignment=need_alignment*2
            
elseif cur_alignment<need_alignment then
                say_reward
(string.format("Benötigter Rang: %d", need_alignment))
                
say_reward("Beim erfolgreichen Einlesen des")
                
say_reward("Seelensteines wird dir doppelt")
                
say_reward("so viel Rangpunkte abgezogen.")
            else
                
say_reward(string.format("Benötigter Rang: %d", need_alignment))
            
end
            say
("")
            
local s=select("Lesen", "Abbrechen")    
            if 
s==2 then
                
return
            
end


            
if cur_alignment>=0 and cur_alignment<need_alignment then
                say_title
(string.format("%s bestätigen", title))
                
say("Das Lesen eines Seelensteines kostet Rang,")
                
say("wenn du diesen Seelenstein ließt,")
                
say("kommst du in den negativen Bereich.")
                
say("Bitte Bestätige das du diesen Seelenstein")
                
say("wirklich lesen möchtest! Das tust du indem")
                
say("du in den Textfeld das Wort")
                
say_reward("trainieren")
                
say("eingibst.")
                
local s=input()
                if 
s!="trainieren" then
                    
return
                
end
            end
            
if get_time() < pc.getqf("next_time") then
                
if pc.is_skill_book_no_delay() then
                    pc
.remove_skill_book_no_delay()
                else
                    
say("Bitte an die Admins wenden!")
                    return
                
end
            end
            pc
.setqf("next_time", get_time()+time_hour_to_sec(number(8, 12)))
            if 
need_alignment>0 and pc.count_item(50513)>0 then
                
if pc.learn_grand_master_skill(skill_vnum) then
                    pc
.change_alignment(-need_alignment)
                    
say_title(string.format("%s erfolgreich", title))
                    if 
40 == pc.get_skill_level(skill_vnum) then
                        say
(string.format("%s ist nun perfeckt Gemeistert.", skill_name))
                        
say("Herzlichen Glückwunsch!")
                    else
                        
say(string.format("Das Großmeistern war erfolgreich!", skill_name, skill_level-30+1+1))
                    
end
                    say
("")
                    
say_reward("Erfolgreich!")
                    
say_reward(string.format("Es wurden %d Rangpunkte verbraucht", need_alignment))
                    
say("")
                else
                    
say_title(string.format("%s fehlgeschlagen", title))
                    
say("Das Großmeistern ist fehlgeschlagen.")
                    
say("")
                    
local rang = number(need_alignment/3, need_alignment/2)
                    
say_reward("Fehlgeschlagen! Es wurden "..rang.." Rangpunkte verbraucht")
                    
say("")
                    
pc.change_alignment(-rang)
                
end
            end
        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 = {}
            
table.foreach(skill_list, 
            function(
i, skill_vnum) 
            
local skill_level = pc.get_skill_level(skill_vnum)
            if 
skill_level >= GRAND_MASTER_SKILL_LEVEL 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}
        
end
    end
end