[SERVICE] Die Questkontrolle

02/02/2013 22:50 Yiv#7561
Quote:
Originally Posted by xZipeZz View Post
PHP Code:
quest Teleport begin 
    state start begin 
        when 20129.chat
."Teleport zur FarmMap 2" with pc.get_level() >= 90 begin 
            say_title
("Teleport"
            
say("Du willst in die naechste eben des Farmens eintauchen ?"
            
say("Dann Teleportiere dich nun zur 2 Ebene und Farme dort mit dem"
            
say("Level 90 weiter")
            if 
select ("Ja""Nein") == 1 then
                pc
.warp(92161536
            
end 
        end 
    end 
end 
Einmal meine Quest was ist daran falsch ?
Probiers mal so:
PHP Code:
quest Teleport begin 
    state start begin 
        when 20129.chat
."Teleport zur FarmMap 2" with pc.get_level() >= 90 begin 
            say_title
("Teleport"
            
say("Du willst in die naechste eben des Farmens eintauchen ?"
            
say("Dann Teleportiere dich nun zur 2 Ebene und Farme dort mit dem"
            
say("Level 90 weiter")
            if 
select ("Ja""Nein") == 1 then
                pc
.warp(92161536
            else
                return
            
end
        end 
    end 
end 
02/02/2013 22:54 .Delta#7562
peron bei dir gibts keinen unterschied :D
else return brauchste hier net

ne, die koords dürften eher falsch sein.
soweit ich mich erinnere musst du 00 anhängen, an die koords die du ingame hinwillst ( /state)
02/03/2013 12:49 Endless.#7563
Guten Tag zusammen^^

Ich habe ein Problem mit meiner etwas abgeänderten Seelensteinquest.

PHP Code:
quest training_grandmaster_skill begin
    state start begin
    when 50513.
use begin
        say_title
("Seelenstein")

        if 
pc.get_skill_group() == 0 then
        say
("Du hast keine Groß-Meister Skills "..pc.get_skill_group())
        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
("Mit einem Seelenstein kannst du eine")
            
say("Fertigkeit perfektionieren. Allerdings")
            
say("kostet dich dies Rangpunkte.")
            
wait()
            
say_title("Seelenstein")
        else
            
say("Du musst noch warten.")
            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
("Deine Fertigkeiten sind bereits perfekt!")
        return
        
end

        say 
("")
        
say ("Hallo "..pc.get_name()..",")
        
say ("wähle eine Fertigkeit aus die")
        
say ("Du perfektionieren willst.")

        
local menu_list = {}
        
table.foreach(name_list, function(inametable.insert(menu_listnameend)
        
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("Deine Rangpunkte:"..cur_alignment)
        
test_chat("Benötigte Rangpunkte:"..need_alignment)

        
local title=string.format("%s Perfektionieren"skill_nameskill_level-30+1)

        
say_title(title)
        
say("Beim lesen des Seelensteins")
        
say("verlierst du Rangpunkte!")
        
say("")

        if 
cur_alignment<-19000+need_alignment then
        say_reward
("Zu wenig Rangpunkte.")
        return
        
end

        
if cur_alignment<0 then
        say_reward
(string.format("Benötigte Rangpunkte: %d -> %d"need_alignmentneed_alignment*2))
        
say_reward("(®ö¤H¥H¤Uªº¸Ü, µ½´c*È®ø¯Ó2*¿)")
        
need_alignment=need_alignment*2
        
elseif cur_alignment<need_alignment then
        say_reward
(string.format("Benötigte Rangpunkte:: %d"need_alignment))
        
say_reward("Du hast leider zu wenige Rangpunkte.")
        else
        
say_reward(string.format("Benötigte Rangpunkte: %d"need_alignment))
        
end
        say
("")

        
local s=select("Weiter""Abbrechen")    
        if 
s==2 then
        
return
        
end


        
if cur_alignment>=and cur_alignment<need_alignment then
        say_title
(string.format("%s ½T©w"title))
        
say("Es ist soweit!")
        
say("Um zu trainieren,")
        
say("gib bitte ein: Trainieren")
        
say("")
        
say("")
        
say_reward("Trainieren")
        
say("")
        
say("¦pªG¤£·Q*×½mªº¸Ü, ½Ð«ö¤U½T©w")
        
local s=input()
        if 
s!="Trainieren" then
            
return
        
end
        end

        
if get_time() < pc.getqf("next_time"then -- and not is_test_server() then
        
if pc.is_skill_book_no_delay() then
            pc
.remove_skill_book_no_delay()
        else
            
say("[°ª¯Åµ¥¯Å]§Þ¯à*×½m¿ù»~: ¥ð®§¤¤")
            return
        
end
        end

        pc
.setqf("next_time"get_time()+time_hour_to_sec(number(812)))

        if 
need_alignment>0 then
        
if pc.learn_grand_master_skill(skill_vnumthen
            pc
.change_alignment(-need_alignment)


            
say_title(string.format("%s "title))
            if 
40 == pc.get_skill_level(skill_vnumthen
            say
(string.format("%s ist schon Perfekt"skill_name))
            else
            
say(string.format("%s Erfolgreich trainiert."skill_nameskill_level-30+1+1))
            
end
            say
("")
            
say_reward("Erfolgreich!")
            
say_reward(string.format("Verbrauchte Rangpunkte %d "need_alignment))
            
say("")
        else
            
say_title(string.format("%s "title))
            
            
say("Das Großmeistern hat leider nicht")
            
say("geklappt. Viel Erfolg beim Nächsten Mal =( ")
            
            
say_reward("Das Training ist fehlgeschlagen!")
            
say("")
            
pc.change_alignment(-number(need_alignment/3need_alignment/2))
        
end
        end

        item
.remove()
    
end
    
function BuildGrandMasterSkillList(jobgroup)
        
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"jobgroup))

        
table.foreach(skill_list
        function(
iskill_vnum
        
local skill_level pc.get_skill_level(skill_vnum)

        -- 
test_chat(string.format("[%d]=%d"skill_vnumskill_level))
        if 
skill_level >= GRAND_MASTER_SKILL_LEVEL and skill_level PERFECT_MASTER_SKILL_LEVEL then

            table
.insert(ret_vnum_listskill_vnum)
            
local name=locale.GM_SKILL_NAME_DICT[skill_vnum]
            if 
name == nil then name=skill_vnum end
            table
.insert(ret_name_listname)
        
end
        end
)
        return {
ret_vnum_listret_name_list}


        --return {
ret_vnum_listret_name_list}
    
end
    end
end 
Ich möchte einstellen, das die Seelensteine zu 100% klappen und nicht
dauernd fehlschlagen.

In der Game hab ich geguckt, da ist schonmal nichts.
In der questlib und locale_big5.lua auch nicht.

Ich hab aber ein Server gesehen, da klappen Seelensteine zu 100%


Gruß, Endless :)
02/03/2013 14:10 .Delta#7564
[Only registered and activated users can see links. Click Here To Register...]

nimm halt einfach die und wandel sie so ab :)
z.b.^^
02/03/2013 14:16 Lunderwolrd#7565
up the % of the stone in the php code
02/03/2013 14:18 Endless.#7566
Delta, ich will nicht, das man mit Seelensteine gleich P-Skills bekommt, sondern das man
1 Skill aufsteigt und 100% hat.

Welche Funktion ist denn entscheident, das man 1 Skill höher kommt?
02/03/2013 15:27 TehExo#7567
Ingame kann ich die Tabelle nicht sehen.
Nach Alle , Rotes Reich , Blau , Gelb kommt nix mehr .
WO isn der fehler :D

Code:
quest pvp_ranking begin 
    state start begin 
        when kill with npc.is_pc() begin
            local kill_up = mysql_query("UPDATE player.player SET kills = kills+1 WHERE name ='"..pc.get_name().."' LIMIT 1")
        end
         
        when 11001.chat."Noveria2 - Pvp Ranking" begin 
            say("Willkommen auf der Noveria 2 PVP Ranking") 
            say("Hier kannst du nachschauen wer im Pvp Ranking weit oben steht?") 
            say_reward("Im welchem Reich möchtest du suchen?") 
            local sel = select("Alle","Rotes Reich","Gelbes Reich","Blaues Reich","Abbruch") 
            local pp 
            if sel == 5 then 
                return 
            elseif sel == 1 then 
                pp = mysql_query("select name,kills from player.player ORDER BY kills desc,level desc,name asc LIMIT 15") 
            else 
                pp = mysql_query("select name,kills from player.player where (SELECT empire from player.player_index where player.account_id =id) = "..(sel-1).." ORDER BY kills desc,level desc,name asc LIMIT 15") 
            end 
			 
            if pp == nil or (pp[1] or {})[1] == nil then 
                say("Es gab einen Fehler.") 
                return 
            end 
            say("Rang - Name - Kills") 
            table.foreachi(pp,function(i,l) 
                say(i.." - "..l[1].." - "..l[2]) 
            end) 
        end 
    end 
end
02/03/2013 15:43 .Delta#7568
Quote:
Originally Posted by Endless. View Post
Delta, ich will nicht, das man mit Seelensteine gleich P-Skills bekommt, sondern das man
1 Skill aufsteigt und 100% hat.

Welche Funktion ist denn entscheident, das man 1 Skill höher kommt?
pc.set_skill_level(skill_vnum, pc.get_skill_level(skill_vnum)+1)

:D
02/03/2013 20:24 hr4rjuku#7569
Quote:
Originally Posted by TehExo View Post
Ingame kann ich die Tabelle nicht sehen.
Nach Alle , Rotes Reich , Blau , Gelb kommt nix mehr .
WO isn der fehler :D

Code:
quest pvp_ranking begin 
    state start begin 
        when kill with npc.is_pc() begin
            local kill_up = mysql_query("UPDATE player.player SET kills = kills+1 WHERE name ='"..pc.get_name().."' LIMIT 1")
        end
         
        when 11001.chat."Noveria2 - Pvp Ranking" begin 
            say("Willkommen auf der Noveria 2 PVP Ranking") 
            say("Hier kannst du nachschauen wer im Pvp Ranking weit oben steht?") 
            say_reward("Im welchem Reich möchtest du suchen?") 
            local sel = select("Alle","Rotes Reich","Gelbes Reich","Blaues Reich","Abbruch") 
            local pp 
            if sel == 5 then 
                return 
            elseif sel == 1 then 
                pp = mysql_query("select name,kills from player.player ORDER BY kills desc,level desc,name asc LIMIT 15") 
            else 
                pp = mysql_query("select name,kills from player.player where (SELECT empire from player.player_index where player.account_id =id) = "..(sel-1).." ORDER BY kills desc,level desc,name asc LIMIT 15") 
            end 
			 
            if pp == nil or (pp[1] or {})[1] == nil then 
                say("Es gab einen Fehler.") 
                return 
            end 
            say("Rang - Name - Kills") 
            table.foreachi(pp,function(i,l) 
                say(i.." - "..l[1].." - "..l[2]) 
            end) 
        end 
    end 
end
table.foreach nicht foreachi
02/03/2013 23:00 warrockplayer4#7570
Hey
ich suche ein QuestBefehl :)
es gibt ja pc.count_item("vnum")
der zählt ja wie viele item im Inventar sind.
gibt es auch ein befahl der zählt wie viele man gedropt hat? :)
02/03/2013 23:12 √π.#7571
Quote:
Originally Posted by warrockplayer4 View Post
Hey
ich suche ein QuestBefehl :)
es gibt ja pc.count_item("vnum")
der zählt ja wie viele item im Inventar sind.
gibt es auch ein befahl der zählt wie viele man gedropt hat? :)
Speicher beim login die Anzahl der Items in ner Questflag und frag nach jedem kill ab ob das größer geworden ist. Oder mitm looptimer.
02/03/2013 23:25 warrockplayer4#7572
Quote:
Originally Posted by √π. View Post
Speicher beim login die Anzahl der Items in ner Questflag und frag nach jedem kill ab ob das größer geworden ist. Oder mitm looptimer.
Danke :)
wie kann ich dann die zahl in einer variable hinzufügen? :)

EDIT: iwie kapier ich nicht ganz wie du das meinst :(
kannst pls ein Beispiel mit einer quest machen oder mich in Skype anfragen? :)
CeeVonEpvp
02/05/2013 20:14 KillHumans#7573
Code:
quest dr2 begin
    state start begin
        when 1093.kill begin
			say_title("Parabéns!")
			say("Mataste o DR, escolhe o teu prémio:")
			local premio = select ("Armas","Armaduras")
			if premio == 1 then
			if pc . job == 0 then
			local armasnome1 = select ("Faca Dragão+5(65)","Arco Dragão Amarelo+5(65)","Lâmina Zanna Fantasma+5(65)","Leque Ave do Paraíso+5(65)","Campainha Céu e Terra+5(65)")
				if armasnome1 == 1 then
				say("Recebeste o que pediste.")
					pc.give_item2 (1105)
				if armasnome1 == 2 then
					say("Recebeste o que pediste.")
					pc.give_item2 (2145)
				if armasnome1 == 3 then
					say("Recebeste o que pediste.")
					pc.give_item2 (155)
				if armasnome1 == 4 then
					say("Recebeste o que pediste.")
					pc.give_item2 (7135)
				if armasnome1 == 5 then
					say("Recebeste o que pediste.")
					pc.give_item2 (5105)
			elseif pc . job == 1 then
			local armasnome2 = select ("Partidário+5(65)","Lâmina Zanna Fantasma+5(65)","Leque Ave do Paraíso+5(65)","Campainha Céu e Terra+5(65)")
				if armasnome2 == 1 then
					say("Recebeste o que pediste.")
					pc.give_item2 (3135)
				if armasnome2 == 2 then
					say("Recebeste o que pediste.")
					pc.give_item2 (155)
				if armasnome2 == 3 then
					say("Recebeste o que pediste.")
					pc.give_item2 (7135)
				if armasnome2 == 4 then
					say("Recebeste o que pediste.")
					pc.give_item2 (5105)
			elseif pc . job == 2 then
			local armasnome3 = select ("Partidário+5(65)","Faca Dragão+5(65)","Arco Dragão Amarelo+5(65)","Leque Ave do Paraíso+5(65)","Campainha Céu e Terra+5(65)")
				if armasnome3 == 1 then
					say("Recebeste o que pediste.")
					pc.give_item2 (3135)
				if armasnome3 == 2 then
					say("Recebeste o que pediste.")
					pc.give_item2 (1105)
				if armasnome3 == 3 then
					say("Recebeste o que pediste.")
					pc.give_item2 (2145)
				if armasnome3 == 4 then
					say("Recebeste o que pediste.")
					pc.give_item2 (7135)
				if armasnome3 == 5 then
					say("Recebeste o que pediste.")
					pc.give_item2 (5105)
			elseif pc . job == 3 then
			local armasnome4 = select ("Espada de Batalha+5(65)","Partidário+5(65)","Faca Dragão+5(65)","Arco Dragão Amarelo+5(65)","Lâmina Zanna Fantasma+5(65)")
				if armasnome4 == 1 then
					say("Recebeste o que pediste.")
					pc.give_item2 (145)
				if armasnome4 == 2 then
					say("Recebeste o que pediste.")
					pc.give_item2 (3135)
				if armasnome4 == 3 then
					say("Recebeste o que pediste.")
					pc.give_item2 (1105)
				if armasnome4 == 4 then
					say("Recebeste o que pediste.")
					pc.give_item2 (2145)
				if armasnome4 == 5 then
					say("Recebeste o que pediste.")
					pc.give_item2 (155)
			elseif premio == 2 then
				say ( "Ainda indisponível." )
				say ( "A equipa ainda está a construir esta parte." )
						end
					end
				end
			end
		end
	end
end
end
end

What's the error? :P
02/07/2013 19:36 Teh Plex#7574
Was ist hier dran Falsch :o ?
Code:
quest mulleimer begin
    state start begin
        when 9012.take begin
            local destroy = item.get_vnum()
            say_title("Der Itemzerstörer.")
            say("")
            say_reward("Möchtest du deine/n")
            say_item_vnum(destroy)
            say_reward("wirklich zerstören lassen?")
            local select=select("Ja", "Nein")
            if 1==select then
                local anzahl = item.get_count()
                pc.remove_item(destroy, anzahl)
            if 2==select then
                return
            end
        end
	end
end


Fehler :
assertion failure : nested==0
eimer.quest:19:Abort trap (core dumped)
02/07/2013 19:46 .Delta#7575
ich hätte gesagt, du darfst keywords wie select nicht als namen für variablen nehmen.
nenn das mal um.

z.b.

local auswahl = select("Ja", "Nein")
dann natürlich unten weiter ändern :)