Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 19:39

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[SERVICE] Die Questkontrolle

Discussion on [SERVICE] Die Questkontrolle within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old 11/12/2015, 13:11   #11971

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Quote:
Originally Posted by .Kibito View Post
Regenbogen (ka ob es so funzt hab lange keine quest mehr geschrieben):
Sind ein paar Fehler drin, habs auch nochmal geschrieben:

Code:
quest regenbogenstein begin
	state start begin
		when 50512.use begin
			local jobs = ({
				[0] = {"Körper", "Mental"},
				[1] = {"Nahkampf", "Bogen"},
				[2] = {"Magie", "Waffen"},
				[3] = {"Heil", "Drachen"},
			})[pc.get_job()]
			table.insert(jobs, "Abbrechen")
			
			say_title("Regenbogenstein:")
			say("Du möchtest also deine Skills auf")
			say("Perfekter-Meister setzen?")
			if select("Ja","Nein") == 2 then return end
			
			local skillGroup = ({1, 2})[select_table(jobs)] or false
			if not skillGroup then return end
			
			pc.set_skill_group(skillGroup)
			
			for _,vnum in ipairs(regenbogenstein.BuildSkillList()) do
				pc.set_skill_level(vnum, 40)
			end
			
			say("Deine Skills sind auf Perfekter Meister")
		end
		function BuildSkillList()
			local skillGroup = pc.get_skill_group()
			if skillGroup == 0 then return {} end
			
			local skillVnumList = {}
			
			for _,vnum in ipairs(special.active_skill_list[pc.get_job() + 1][skillGroup]) do
				table.insert(skillVnumList, vnum)
			end
			
			return skillVnumList
		end
	end
end
rollback is offline  
Old 11/12/2015, 13:25   #11972


 
DasPrinzip.'s Avatar
 
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
Quote:
Originally Posted by .Kibito View Post
Regenbogen (ka ob es so funzt hab lange keine quest mehr geschrieben):
Regenbogenstein geht jetzt

Nur der Warpring mag noch nicht
DasPrinzip. is offline  
Old 11/12/2015, 13:45   #11973

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Quote:
Originally Posted by DasPrinzip. View Post
Regenbogenstein geht jetzt

Nur der Warpring mag noch nicht
Hast du sie auch getestet oder nur compilen lassen? Die von Kibito dürfte nämlich eigentlich nicht funktionieren.
rollback is offline  
Old 11/12/2015, 14:17   #11974


 
DasPrinzip.'s Avatar
 
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
Quote:
Originally Posted by Seחsi View Post
Hast du sie auch getestet oder nur compilen lassen? Die von Kibito dürfte nämlich eigentlich nicht funktionieren.
Hab Sie grad auch ingame getestet, klappt alles ..
DasPrinzip. is offline  
Old 11/12/2015, 14:29   #11975

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Quote:
Originally Posted by DasPrinzip. View Post
Hab Sie grad auch ingame getestet, klappt alles ..
Auch bei Schami etc?
Dürfte aktuell nur bei Körper Krieger funktionieren. Und auch das nicht wirklich gut, weil in seiner Schleife der key als vnum genutzt wird.
rollback is offline  
Old 11/21/2015, 05:08   #11976
 
elite*gold: 50
Join Date: Nov 2015
Posts: 8
Received Thanks: 1
Guten Morgen/Nacht Epvp.
Ich habe mich mal selbst bersucht eine Quest zu schreiben.
Jedoch bekomme ich einen Fehler in Putty: "Error occured on compile userpanel.quest"

Hier die Quest

PHP Code:
quest userpanel begin
    state start begin
          when 40002.
use begin
            say
("Userpanel:")
            
local head select("Teleport""Lager""Informationscenter""Abbrechen")
                if 
head == 1 then
                    say
("Teleportpanel")
                    
local on select (" Normale Maps""Levelmaps""Farmmaps""Runs""Zurück")
                    if 
on == 1 then
                        local maps 
select ("Map1""Map2""Orktal""Wüste""Zurück")
                        if 
maps == 1 then
                            say
("Wähle deine Map1 aus")
                            
local map1 select ("Rotes Reich""Gelbes Reich""Blaues Reich"Zurück")
                            if map1 == 1 then
                                pc.warp(474462, 954500)
                            end    
                            if map1 == 2 then
                                pc.warp(959913, 269179)
                            end
                            if map1 == 3 then
                                pc.warp(63369, 166149)
                            end
                            if map1 == 4 then
                                return
                        end
                        if maps == 2 then
                            say("
Wähle deine Map2 aus")
                            local map2 = select ("
Rotes Reich", "Gelbes Reich", "Blaues Reich", "Zurück")
                            if map2 == 1 then
                                pc.warp(352967, 882032)
                            end
                            if map2 == 2 then
                                pc.warp(145310, 240385)
                            end
                            if map2 == 3 then
                                pc.warp(863763, 245995)
                            end
                            if map2 == 4 then 
                                return
                        end
                        if maps == 3 then
                            say("
Wähle aus!")
                            local ot = select ("
Anfang", "Mitte", "Zurück")
                            if ot == 1 then
                                pc.warp(321021, 808291)
                            end
                            if ot == 2 then
                                pc.warp(332909, 746464)
                            end
                            if ot == 3 then
                                return
                        end
                        if maps == 4 then
                            say("
Wähle aus!")
                            local desert = select("
Anfang", "Mitte", "Zurück")
                            if desert == 1 then
                                pc.warp(343785, 501175)
                            end
                            if desert == 2 then
                                pc.warp(296767, 548004)
                            end
                            if desert == 3 then
                                return
                        end
                        if maps == 5 then
                            return
                    end
                    if on == 2 then
                        say("
Wähle aus!")
                        local levelmaps = select ("
Spinnendungeon 2", "Grotte der Verbannung", "Levelmap1", "Levelmap2", "Zurück")
                        if levelmaps == 1 then
                            pc.warp(919, 5254)
                        end
                        if levelmaps == 2 then
                            pc.warp(2417, 12204)
                        end
                        if levelmaps == 3 then
                            pc.warp(10240, 16640)
                            minlevel = 105
                            maxlevel = 125
                        end
                        if levelmaps == 4 then
                            pc.warp(11264, 15104)
                            minlevel = 125
                            maxlevel = 150
                        end
                        if levelmaps == 5 then
                            return
                    end
                    if on == 3 then
                        say("
Wähle aus!")
                        local farmmaps = select ("
Farmmap1", "Farmmap2", "Farmmap3", "Farmmap4", "Zurück")
                        if farmmaps == 1 then
                            pc.warp(11776, 1664)
                            minlevel = 195
                            maxlevel = 104
                        end
                        if farmmaps == 2 then
                            pc.warp(11776,1664)
                            minlevel = 105
                            maxlevel = 124
                        end
                        if farmmaps == 3 then
                            pc.warp(11776, 1664)
                            minlevel = 125
                            maxlevel = 149
                        end
                        if farmmaps == 4 then
                            pc.warp(11776, 1664)
                            minlevel = 150
                            maxlevel = 150
                        end
                        if farmmaps == 5 then
                            return
                    end
                    if on == 4 then
                        say("
Wähle aus!")
                        local runs = select ("
Dämonenturm", "Azrael", "Nemere", "Zurück")
                        if runs == 1 then
                            pc.warp(5904, 1105)
                        end
                        if runs == 2 then
                            pc.warp(11776, 1664)
                            minlevel = 125
                            minlevel = 150
                        end
                        if runs == 3 then
                            pc.warp(11776, 1664)
                            minlevel = 150
                            maxlevel = 150
                        end
                        if runs == 4 then
                            return
                    end
                    if on == 5 then
                    return
                if head == 2 then
                    say("
Wähle aus!")
                    local lager = select ("
Lager", "Itemshop-Lager", "Zurück")
                    if lager == 1 then
                        game.open_safebox()
                        setskin(NOWINDOW)
                    end
                    if lager == 2 then
                        game.open_mall()
                        setskin(NOWINDOW)
                    end
                    if lager == 3 then
                        return
                end
                if head == 3 then
                    say("
Wähle in den Kategorien!")
                    local info = select ("
Events", "Reboots", "Zurück")
                    if info == 1 then
                        say("
Event 1")
                        say("
Event 2")
                        say("
Event 3")
                        say("
Event 4")
                        say("
Event 5")
                    end
                    if info == 2 then
                        say("
Reboot 1")
                        say("
Reboot 2")
                        say("
Reboot 3")
                        say("
Reboot 4")
                        say("
Reboot 5")
                    end
                    if info == 3 then
                    return
                end
            end
        function warp(tbl)
            local level = pc.get_level()
            if tbl.minlevel and level < tbl.minlevel then
                say("
Dein Level ist zu niedrigum diese Map zu betreten.")
                say("
Minimal Level"..tbl.minlevel)
                select("
Abbrechen")
                return
            elseif tbl.maxlevel  and level > tbl.maxlevel then
                say("
Dein Level ist zu hochum diese Map zu betreten.")
                say("
Maximal Level"..tbl.maxlevel)
                select("
Abbrechen")
                return
            end
            while not pc.can_warp() do
                say("
Du kannst dich noch nicht teleportierenda du in")
                say("
den letzten 10 Sekunden gehandelt hast.")
                if select("
Erneut versuchen", "Abbrechen") == 2 then return end
            end
            local warpneedstrings = warpring.get_warpneedstrings(tbl)
            if table.getn(warpneedstrings) > 0 then
                say("
Um diese Map zu betreten benötigst du folgende")
                say("
Dinge:")
                for _,v in ipairs(warpneedstrings) do
                    say(v)
                end
                say("")
                say("
Möchtest du trotzdem fortfahren?")
                if select("
Teleportieren", "Abbrechen") == 2 then return end
            end
            if not warpring.check_and_remove_warpneeds(tbl) then
                say("
Dir fehlt mindestens eins der benötigten Dinge.")
                select("
Abbrechen")
                return
            end
            pc.warp(tbl.koord[1], tbl.koord[2])
        end
        function get_warpneedstrings(tbl)
            local warpneeds = {}
            if tbl.itemneed and table.getn(tbl.itemneed) > 0 then
                for _,v in ipairs(tbl.itemneed) do
                    table.insert(warpneeds, "
"..v[2]..""..item_name(v[1]))
                end
            end
            if tbl.goldneed and tbl.goldneed > 0 then
                table.insert(warpneeds, "
"..tbl.goldneed.." Yang")
            end
            return warpneeds
        end
        function check_warpneeds(tbl)
            if tbl.itemneed and table.getn(tbl.itemneed) > 0 then
                for _,v in ipairs(tbl.itemneed) do
                    if pc.count_item(v[1]) < v[2] then
                        return false
                    end
                end
            end
            if tbl.goldneed and tbl.goldneed > 0 then
                if pc.get_gold() < tbl.goldneed then
                    return false
                end
            end
            return true
        end
        function remove_warpneeds(tbl)
            if tbl.itemneed and table.getn(tbl.itemneed) > 0 then
                for _,v in ipairs(tbl.itemneed) do
                    pc.remove_item(v[1], v[2])
                end
            end
            if tbl.goldneed and tbl.goldneed > 0 then
                pc.change_gold(-tbl.goldneed)
            end
        end
        function check_and_remove_warpneeds(tbl)
            if not warpring.check_warpneeds(tbl) then
                return false
            end
            warpring.remove_warpneeds(tbl)
            return true
        end
        function get_warpnames(tbl)
            local level = pc.get_level()
            local names = {}
            for _,v in ipairs(tbl) do
                if v.minlevel and level < v.minlevel then
                    v.name = v.name.." 
(ab Lv"..v.minlevel..")"
                elseif v.maxlevel  and level > v.maxlevel then
                    v.name = v.name.." 
(bis Lv"..v.maxlevel..")"
                end
                table.insert(names, v.name)
            end
            return names
        end
        function showwarps(tbl)
            local warpnames = warpring.get_warpnames(tbl)
            local s = tbl[select3(warpnames)] or false
            if not s then return end
            if s.koord then
                warpring.warp(s)
                return
            end
            warpring.showwarps(s)
        end
    end
end 
Bitte eine dummen kommentare, war meine erste selbst geschriebene Quest.
.Kyon is offline  
Old 11/21/2015, 07:08   #11977


 
MrTherzon's Avatar
 
elite*gold: 0
The Black Market: 180/0/1
Join Date: Dec 2012
Posts: 9,395
Received Thanks: 2,738
Guten Morgen/Tag/Abend liebe Questkontrolle.

Habe derzeit ein Problem mit ein paar Quest zb. die Starter Quest.

Der User erstellt sich einen Char Logt ein und dann erscheind dies nachdem man die Quest am Anfang geschlossen hat:

GIF:


Die Quest dazu findet ihr nur hier:
PHP Code:
quest starter_quest begin
    state start begin
        when login begin
            local racename 
= ({"Krieger""Ninja""Sura""Schamane"})[pc.get_job()+1]
            
local items_all = {
                {
727231},
                {
727271},
                {
27105200},
                {
27112200},
                {
727021},
                {
500531},
                {
700071},
                {
70038200}
            }
            
local items_race = ({
                [
"Krieger"] = {
                    {
191},
                    {
140091},
                    {
170091},
                    {
160091},
                    {
150091},
                    {
112091},
                    {
130091},
                    {
122091}
                },
                [
"Ninja"] = {
                    {
10091},
                    {
140091},
                    {
170091},
                    {
160091},
                    {
150091},
                    {
114091},
                    {
130091},
                    {
123491}
                },
                [
"Sura"] = {
                    {
191},
                    {
140091},
                    {
170091},
                    {
160091},
                    {
150091},
                    {
116091},
                    {
130091},
                    {
124891}
                },
                [
"Schamane"] = {
                    {
70091},
                    {
140091},
                    {
170091},
                    {
160091},
                    {
150091},
                    {
118091},
                    {
130091},
                    {
126291}
                }
            })[
racename]
            
            
starter_quest.giveAllItems(items_all)
            
starter_quest.giveAllItems(items_race)
            
            
horse.set_level(21)
            
horse.ride(10)
            
            
say_title("Willkommen")
            
say("Willkommen auf Servername.")
            
say("Wir hoffen das du gefallen")
            
say("an unseren Server findest")
            
say("und wir dich mit einem")
            
say("guten Support und Unterhaltung")
            
say("dir Servername präsentieren können.")
            
say("Das gesamte Servername-Team wünscht")
            
say("dir Viel Spaß auf Servername"
            
say("")
            
say("")
            
say("")
            
say("")
            
say_reward("Du erhielst das Set für "..racename.."!")
            
set_state("COMPLETE")
        
end
    end
        
function giveAllItems(tbl)
            for 
_,item in ipairs(tbl) do
                
pc.give_item2(item[1], item[2])
        
end
    end
    state COMPLETE begin
    end
end 
MrTherzon is offline  
Old 11/21/2015, 12:49   #11978

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Quote:
Originally Posted by MrTherzon View Post
Guten Morgen/Tag/Abend liebe Questkontrolle.

Habe derzeit ein Problem mit ein paar Quest zb. die Starter Quest.

Der User erstellt sich einen Char Logt ein und dann erscheind dies nachdem man die Quest am Anfang geschlossen hat:

GIF:


Die Quest dazu findet ihr nur hier:
PHP Code:
quest starter_quest begin
    state start begin
        when login begin
            local racename 
= ({"Krieger""Ninja""Sura""Schamane"})[pc.get_job()+1]
            
local items_all = {
                {
727231},
                {
727271},
                {
27105200},
                {
27112200},
                {
727021},
                {
500531},
                {
700071},
                {
70038200}
            }
            
local items_race = ({
                [
"Krieger"] = {
                    {
191},
                    {
140091},
                    {
170091},
                    {
160091},
                    {
150091},
                    {
112091},
                    {
130091},
                    {
122091}
                },
                [
"Ninja"] = {
                    {
10091},
                    {
140091},
                    {
170091},
                    {
160091},
                    {
150091},
                    {
114091},
                    {
130091},
                    {
123491}
                },
                [
"Sura"] = {
                    {
191},
                    {
140091},
                    {
170091},
                    {
160091},
                    {
150091},
                    {
116091},
                    {
130091},
                    {
124891}
                },
                [
"Schamane"] = {
                    {
70091},
                    {
140091},
                    {
170091},
                    {
160091},
                    {
150091},
                    {
118091},
                    {
130091},
                    {
126291}
                }
            })[
racename]
            
            
starter_quest.giveAllItems(items_all)
            
starter_quest.giveAllItems(items_race)
            
            
horse.set_level(21)
            
horse.ride(10)
            
            
say_title("Willkommen")
            
say("Willkommen auf Servername.")
            
say("Wir hoffen das du gefallen")
            
say("an unseren Server findest")
            
say("und wir dich mit einem")
            
say("guten Support und Unterhaltung")
            
say("dir Servername präsentieren können.")
            
say("Das gesamte Servername-Team wünscht")
            
say("dir Viel Spaß auf Servername"
            
say("")
            
say("")
            
say("")
            
say("")
            
say_reward("Du erhielst das Set für "..racename.."!")
            
set_state("COMPLETE")
        
end
    end
        
function giveAllItems(tbl)
            for 
_,item in ipairs(tbl) do
                
pc.give_item2(item[1], item[2])
        
end
    end
    state COMPLETE begin
    end
end 
Das ist ein bekannter Bug bei den kori files, liegt nicht an der quest

Quote:
Originally Posted by .Kyon View Post
Guten Morgen/Nacht Epvp.
Ich habe mich mal selbst bersucht eine Quest zu schreiben.
Jedoch bekomme ich einen Fehler in Putty: "Error occured on compile userpanel.quest"

Hier die Quest

PHP Code:
quest userpanel begin
    state start begin
          when 40002.
use begin
            say
("Userpanel:")
            
local head select("Teleport""Lager""Informationscenter""Abbrechen")
                if 
head == 1 then
                    say
("Teleportpanel")
                    
local on select (" Normale Maps""Levelmaps""Farmmaps""Runs""Zurück")
                    if 
on == 1 then
                        local maps 
select ("Map1""Map2""Orktal""Wüste""Zurück")
                        if 
maps == 1 then
                            say
("Wähle deine Map1 aus")
                            
local map1 select ("Rotes Reich""Gelbes Reich""Blaues Reich"Zurück")
                            if map1 == 1 then
                                pc.warp(474462, 954500)
                            end    
                            if map1 == 2 then
                                pc.warp(959913, 269179)
                            end
                            if map1 == 3 then
                                pc.warp(63369, 166149)
                            end
                            if map1 == 4 then
                                return
                        end
                        if maps == 2 then
                            say("
Wähle deine Map2 aus")
                            local map2 = select ("
Rotes Reich", "Gelbes Reich", "Blaues Reich", "Zurück")
                            if map2 == 1 then
                                pc.warp(352967, 882032)
                            end
                            if map2 == 2 then
                                pc.warp(145310, 240385)
                            end
                            if map2 == 3 then
                                pc.warp(863763, 245995)
                            end
                            if map2 == 4 then 
                                return
                        end
                        if maps == 3 then
                            say("
Wähle aus!")
                            local ot = select ("
Anfang", "Mitte", "Zurück")
                            if ot == 1 then
                                pc.warp(321021, 808291)
                            end
                            if ot == 2 then
                                pc.warp(332909, 746464)
                            end
                            if ot == 3 then
                                return
                        end
                        if maps == 4 then
                            say("
Wähle aus!")
                            local desert = select("
Anfang", "Mitte", "Zurück")
                            if desert == 1 then
                                pc.warp(343785, 501175)
                            end
                            if desert == 2 then
                                pc.warp(296767, 548004)
                            end
                            if desert == 3 then
                                return
                        end
                        if maps == 5 then
                            return
                    end
                    if on == 2 then
                        say("
Wähle aus!")
                        local levelmaps = select ("
Spinnendungeon 2", "Grotte der Verbannung", "Levelmap1", "Levelmap2", "Zurück")
                        if levelmaps == 1 then
                            pc.warp(919, 5254)
                        end
                        if levelmaps == 2 then
                            pc.warp(2417, 12204)
                        end
                        if levelmaps == 3 then
                            pc.warp(10240, 16640)
                            minlevel = 105
                            maxlevel = 125
                        end
                        if levelmaps == 4 then
                            pc.warp(11264, 15104)
                            minlevel = 125
                            maxlevel = 150
                        end
                        if levelmaps == 5 then
                            return
                    end
                    if on == 3 then
                        say("
Wähle aus!")
                        local farmmaps = select ("
Farmmap1", "Farmmap2", "Farmmap3", "Farmmap4", "Zurück")
                        if farmmaps == 1 then
                            pc.warp(11776, 1664)
                            minlevel = 195
                            maxlevel = 104
                        end
                        if farmmaps == 2 then
                            pc.warp(11776,1664)
                            minlevel = 105
                            maxlevel = 124
                        end
                        if farmmaps == 3 then
                            pc.warp(11776, 1664)
                            minlevel = 125
                            maxlevel = 149
                        end
                        if farmmaps == 4 then
                            pc.warp(11776, 1664)
                            minlevel = 150
                            maxlevel = 150
                        end
                        if farmmaps == 5 then
                            return
                    end
                    if on == 4 then
                        say("
Wähle aus!")
                        local runs = select ("
Dämonenturm", "Azrael", "Nemere", "Zurück")
                        if runs == 1 then
                            pc.warp(5904, 1105)
                        end
                        if runs == 2 then
                            pc.warp(11776, 1664)
                            minlevel = 125
                            minlevel = 150
                        end
                        if runs == 3 then
                            pc.warp(11776, 1664)
                            minlevel = 150
                            maxlevel = 150
                        end
                        if runs == 4 then
                            return
                    end
                    if on == 5 then
                    return
                if head == 2 then
                    say("
Wähle aus!")
                    local lager = select ("
Lager", "Itemshop-Lager", "Zurück")
                    if lager == 1 then
                        game.open_safebox()
                        setskin(NOWINDOW)
                    end
                    if lager == 2 then
                        game.open_mall()
                        setskin(NOWINDOW)
                    end
                    if lager == 3 then
                        return
                end
                if head == 3 then
                    say("
Wähle in den Kategorien!")
                    local info = select ("
Events", "Reboots", "Zurück")
                    if info == 1 then
                        say("
Event 1")
                        say("
Event 2")
                        say("
Event 3")
                        say("
Event 4")
                        say("
Event 5")
                    end
                    if info == 2 then
                        say("
Reboot 1")
                        say("
Reboot 2")
                        say("
Reboot 3")
                        say("
Reboot 4")
                        say("
Reboot 5")
                    end
                    if info == 3 then
                    return
                end
            end
        function warp(tbl)
            local level = pc.get_level()
            if tbl.minlevel and level < tbl.minlevel then
                say("
Dein Level ist zu niedrigum diese Map zu betreten.")
                say("
Minimal Level"..tbl.minlevel)
                select("
Abbrechen")
                return
            elseif tbl.maxlevel  and level > tbl.maxlevel then
                say("
Dein Level ist zu hochum diese Map zu betreten.")
                say("
Maximal Level"..tbl.maxlevel)
                select("
Abbrechen")
                return
            end
            while not pc.can_warp() do
                say("
Du kannst dich noch nicht teleportierenda du in")
                say("
den letzten 10 Sekunden gehandelt hast.")
                if select("
Erneut versuchen", "Abbrechen") == 2 then return end
            end
            local warpneedstrings = warpring.get_warpneedstrings(tbl)
            if table.getn(warpneedstrings) > 0 then
                say("
Um diese Map zu betreten benötigst du folgende")
                say("
Dinge:")
                for _,v in ipairs(warpneedstrings) do
                    say(v)
                end
                say("")
                say("
Möchtest du trotzdem fortfahren?")
                if select("
Teleportieren", "Abbrechen") == 2 then return end
            end
            if not warpring.check_and_remove_warpneeds(tbl) then
                say("
Dir fehlt mindestens eins der benötigten Dinge.")
                select("
Abbrechen")
                return
            end
            pc.warp(tbl.koord[1], tbl.koord[2])
        end
        function get_warpneedstrings(tbl)
            local warpneeds = {}
            if tbl.itemneed and table.getn(tbl.itemneed) > 0 then
                for _,v in ipairs(tbl.itemneed) do
                    table.insert(warpneeds, "
"..v[2]..""..item_name(v[1]))
                end
            end
            if tbl.goldneed and tbl.goldneed > 0 then
                table.insert(warpneeds, "
"..tbl.goldneed.." Yang")
            end
            return warpneeds
        end
        function check_warpneeds(tbl)
            if tbl.itemneed and table.getn(tbl.itemneed) > 0 then
                for _,v in ipairs(tbl.itemneed) do
                    if pc.count_item(v[1]) < v[2] then
                        return false
                    end
                end
            end
            if tbl.goldneed and tbl.goldneed > 0 then
                if pc.get_gold() < tbl.goldneed then
                    return false
                end
            end
            return true
        end
        function remove_warpneeds(tbl)
            if tbl.itemneed and table.getn(tbl.itemneed) > 0 then
                for _,v in ipairs(tbl.itemneed) do
                    pc.remove_item(v[1], v[2])
                end
            end
            if tbl.goldneed and tbl.goldneed > 0 then
                pc.change_gold(-tbl.goldneed)
            end
        end
        function check_and_remove_warpneeds(tbl)
            if not warpring.check_warpneeds(tbl) then
                return false
            end
            warpring.remove_warpneeds(tbl)
            return true
        end
        function get_warpnames(tbl)
            local level = pc.get_level()
            local names = {}
            for _,v in ipairs(tbl) do
                if v.minlevel and level < v.minlevel then
                    v.name = v.name.." 
(ab Lv"..v.minlevel..")"
                elseif v.maxlevel  and level > v.maxlevel then
                    v.name = v.name.." 
(bis Lv"..v.maxlevel..")"
                end
                table.insert(names, v.name)
            end
            return names
        end
        function showwarps(tbl)
            local warpnames = warpring.get_warpnames(tbl)
            local s = tbl[select3(warpnames)] or false
            if not s then return end
            if s.koord then
                warpring.warp(s)
                return
            end
            warpring.showwarps(s)
        end
    end
end 
Bitte eine dummen kommentare, war meine erste selbst geschriebene Quest.
Wieso hast du sie ganzen Funktionen von meiner warpquest drin gelassen?
rollback is offline  
Thanks
1 User
Old 11/22/2015, 20:56   #11979
 
elite*gold: 0
Join Date: Nov 2015
Posts: 11
Received Thanks: 0
Guten tag liebe Questkontrolle

Ich brauche eure Hilfe ich bekomme das nicht auf der kette da ich schon mein index alles geändert habe will er trotzdem nicht mit mir sprechen geschweige den überhaupt einen Ablauf.

PHP Code:
quest blazingpurgatory begin
    state start begin
        
        when 20394.chat
."Die Pforten zur Hölle" with pc.get_map_index() == 260 begin
            say_title
("Wächter der Hölle")
            
say("Der Gott aller Dämonen, Sung Mahi, ist erwacht,")
            
say("das Ende der Menschheit naht! Noch ist seine")
            
say("zerstörerische Kraft geschwächt, der Blick")
            
say("seiner allsehenden Augen getrübt. Doch seine")
            
say("Untertanen werden nicht eher ruhen, bis ihr")
            
say("Meister sich in voller Größe gegen diese")
            
say("Welt erheben wird!")
            
say("")
            
wait()
            
say_title("Wächter der Hölle")
            
say("Seinen getreuen Anhänger Razador,")
            
say("Herrscher des Feuers, obliegt die Aufgabe,")
            
say("den legendären Rotdrachen aus seinem Verlies")
            
say("zu befreien, Sollte ihm das gelingen wird")
            
say("es seinem Gott den Weg zur Macht weiter ebnen.")
            
say("")
            
wait()
            
say_title("Wächter der Hölle")
            if 
pc.get_level() >= 100 or pc.is_gm() then
                
if party.is_party() or pc.is_gm()  then
                    
if party.is_leader() or pc.is_gm() then
                        
if pc.count_item(30189) > or pc.is_gm() then
                            say_reward
("Willst du mit deiner Gruppe Razador herausfordern?")
                            if 
select("Ja, auf in die Schlacht!","Nein") == 1 then
                                pc
.remove_item(30189,1)
                                
d.join(260)
                            
end
                        
else
                            
say_reward("Du benötigst einen Höllenstein!")
                            
say_item_vnum(30189)
                        
end
                    
else
                        
say_reward("Du musst Anführer einer Gruppe sein!")
                    
end
                
else
                    
say_reward("Du musst einer Gruppe angehören!")
                
end
            
else
                
say_reward("Du musst lv.100 erreicht haben!")
            
end
        end

        when login with pc
.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 begin
            say
("Begib dich zum Altar und bestehe die")
            
say("sechs Aufgaben der Hölle!")
            
say("")
            if 
party.is_party() then
                
if party.is_leader() then
                    blazingpurgatory
.start()
                
end
            
else
                if 
pc.is_gm() then
                    blazingpurgatory
.start()
                
end
            end
        end
        
        
function start()
            
d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_flamenpc.txt")
            
d.setf("purgatory_gate_sequence",number(1,7))
            
local sequence = {{1,2,3,4,5,6},{4,1,3,2,5,6},{2,5,3,1,4,6},{3,1,6,2,4,5},{5,3,2,4,6,1},{6,1,5,2,4,3},{6,3,5,3,1,4}}
            for 
1do
                
d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_gate_"..sequence[d.getf("purgatory_gate_sequence")][i]..".txt")
            
end
            d
.setf("acutal_round",0)
            
d.setf("time"get_time()+60*60*1)
            
server_timer("purgatorytime",3600,pc.get_map_index())
            
server_loop_timer("purgatorytimenotice",300,pc.get_map_index())
            
blazingpurgatory.NoticeTime()
        
end            
        
        when purgatorytimenotice
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                blazingpurgatory
.NoticeTime()
            
end
        end

        when purgatorytime
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice("Die Zeit ist abgelaufen!")
                
d.exit_all()
            
end
        end
        
        when 20385.click with pc
.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 and d.getf("block_altar") == 0 begin
            
if d.getf("purgatory_level") == 7 then
                d
.setf("block_altar",1)
                
d.setf("actual_round",7)
                
d.notice("Ihr habt alle aufgaben der Hölle gemeistert,")
                
d.notice("nun werdet ihr Razador gegenüber treten!")
                
timer("warp_to_boss",5)
            else
                    
                
d.setf("purgatory_level",d.getf("purgatory_level")+1)
                
blazingpurgatory.purge()
                
blazingpurgatory.LoadStage()
                
d.setf("block_altar",1)
                
                
blazingpurgatory.NoticeTime()
                
d.notice("Eine Kammer wurde geöffnet!")
            
end
        end

        when warp_to_boss
.timer begin
            d
.jump_all(8111,6864)
            
d.notice("Razador")
            
d.notice("Wiederstand ist Zwecklos! Sung Mahi wird wieder auferstehen!")
            
d.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_7.txt")
            
blazingpurgatory.NoticeTime()
        
end    
        
        when kill with pc
.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 begin
            
if d.getf("actual_round") == or d.getf("actual_round") == 3 then
                d
.setf("kill_count_bp1",d.getf("kill_count_bp1") +1)
                if 
d.getf("kill_count_bp1") == d.getf("bp_kill_to_next"then
                    d
.notice("Kehrt zum Altar zurück!")
                    
blazingpurgatory.purge()
                
end
            
elseif d.getf("actual_round") == or d.getf("actual_round") == 5 then
                d
.setf("kill_count_bp",d.getf("kill_count_bp") +1)
                if 
d.getf("kill_count_bp") == d.getf("kill_to_drop_key"then
                    game
.drop_item_with_ownership(50084,1)
                    
d.setf("kill_count_bp",0)
                
end
            
elseif d.getf("actual_round") == and npc.get_race() == 6009 then
                
if number(1,5) == 1 then
                    d
.notice("Kehrt zum Altar zurück!")
                    
blazingpurgatory.purge()
                
end
            
elseif d.getf("actual_round") == and npc.get_race() == 8034 then
                d
.notice("Kehrt zum Altar zurück!")
                
blazingpurgatory.purge()    
            elseif 
d.getf("actual_round") == and npc.get_race() == 6091 then
                d
.notice("Razador ist gefallen!")
                
d.clear_regen()
                
d.kill_all()
            
end
        end

        when 20081.take with pc
.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 begin
            
if item.get_vnum() == 50084 then
                
if d.getf("actual_round") == 2 then
                    pc
.remove_item(item.get_vnum(),1)
                    if 
number(1,8) == 1 then
                        npc
.purge()
                        
d.notice("Kehrt zum Altar zurück!")
                        
blazingpurgatory.purge()
                    else
                        
syschat("Dies war ein Falscher Schlüsselstein!")
                    
end
                
elseif d.getf("actual_round") == 5 then
                    local sequence 
= {{1,2,3,4,5,5},{4,3,2,1,5,5},{4,5,3,1,2,2},{5,3,4,2,1,1},{5,1,3,4,2,2}}
                    if 
blazingpurgatory.GetPillarID() == sequence[d.getf("sequence")][d.getf("pillarcount")] then
                        pc
.remove_item(item.get_vnum(),1)
                        
npc.purge()
                        
d.setf("pillarcount"d.getf("pillarcount")+1)
                        if 
d.getf("pillarcount") == 6 then
                            d
.notice("Kehrt zum Altar zurück!")
                            
blazingpurgatory.purge()
                        else
                            
d.notice("Ihr müsst noch weitere "..6-d.getf("pillarcount").." Siegel öffnen!")
                        
end
                    
elseif blazingpurgatory.GetPillarID() == false then
                        syschat
("Begib dich näher an das Siegel heran!")
                    elseif 
blazingpurgatory.GetPillarID() != sequence[d.getf("sequence")][d.getf("pillarcount")] then
                        pc
.remove_item(item.get_vnum(),1)
                        
syschat("Dies ist nicht das richtige Siegel!")
                    
end
                end
            end
        end
                    
        
function LoadStage()
            if 
d.getf("actual_round") == 1 then -- Alle Monster tötenw
                d
.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_1.txt")
                
d.setf("bp_kill_to_next",241)
                
d.setf("kill_count_bp1",0)
            elseif 
d.getf("actual_round") == 2 then
                d
.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_2.txt")
                
d.setf("kill_to_drop_key",50)
                
d.spawn_mob(20081,195,352)
            elseif 
d.getf("actual_round") == 3 then
                d
.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_3.txt")
                
d.setf("bp_kill_to_next",240)
                
d.setf("kill_count_bp1",0)
            elseif 
d.getf("actual_round") == 4 then
                d
.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_4.txt")
            elseif 
d.getf("actual_round") == 5 then
                d
.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_5.txt")
                
local sequence = {{1,2,3,4,5},{4,3,2,1,5},{4,5,3,1,2},{5,3,4,2,1},{5,1,3,4,2}}
                
local n number(1,5)
                
local coords = {{502,354},{517,354},{487,354},{502,339},{502,369}}
                for 
1do
                    
d.spawn_mob(20081coords[i][1],coords[i][2])
                
end
                d
.setf("pillarcount"1)
                
d.setf("sequence",n)
                
d.setf("kill_to_drop_key",100)
            elseif 
d.getf("actual_round") == 6 then
                d
.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_6.txt")
                
d.spawn_mob(8034,507,489)
            
end
        end    

        
function purge()
            
d.setf("block_altar",0)
            
d.clear_regen()
            
d.kill_all()
            
blazingpurgatory.LoadGates()
            
d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_flamenpc.txt")
            if 
d.getf("purgatory_level") == 6 then
                d
.setf("purgatory_level",7)
            
end
        end        

        
function LoadGates()
            
local sequence = {{1,2,3,4,5,6},{4,1,3,2,5,6},{2,5,3,1,4,6},{3,1,6,2,4,5},{5,3,2,4,6,1},{6,1,5,2,4,3},{6,3,5,3,1,4}}
            for 
16-d.getf("purgatory_level") do
                
d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_gate_"..sequence[d.getf("purgatory_gate_sequence")][i]..".txt")
            
end
            d
.setf("actual_round",sequence[d.getf("purgatory_gate_sequence")][7-d.getf("purgatory_level")])
        
end        
        
        
function NoticeTime()
            
local secondsLeft = (d.getf("time") - get_time())
            
local minutesLeft math.ceil(secondsLeft 60)
            
d.notice("Verbleibende Zeit: "..minutesLeft.." Minuten!")
        
end

        
function GetPillarID()
            if 
pc.get_local_x() >= 502 and pc.get_local_x() <= 502 and pc.get_local_y() >= 354 and pc.get_local_y() <= 354 5 then
                
return 1
            
elseif pc.get_local_x() >= 517 and pc.get_local_x() <= 517 and pc.get_local_y() >= 354 and pc.get_local_y() <= 354 5 then
                
return 2
            
elseif pc.get_local_x() >= 487 and pc.get_local_x() <= 487 and pc.get_local_y() >= 354 and pc.get_local_y() <= 354 5 then
                
return 3
            
elseif pc.get_local_x() >= 502 and pc.get_local_x() <= 502 and pc.get_local_y() >= 339 and pc.get_local_y() <= 339 5 then
                
return 4
            
elseif pc.get_local_x() >= 502 and pc.get_local_x() <= 502 and pc.get_local_y() >= 369 and pc.get_local_y() <= 369 5 then
                
return 5
            
else
                return 
false
            end
        end
    
    end 
Karudo is offline  
Old 11/22/2015, 23:45   #11980
 
elite*gold: 0
Join Date: Oct 2015
Posts: 36
Received Thanks: 3
Suche eine Regenbogenstein Quest, die aus einem M Skill einen P Skill macht.
Nicht alles soll P sondern nur das was M ist soll auswählbar sein, damit es P wird.
Dann suche ich noch eine PvP Quest, man sollte Bonis bekommen für bestimmte Kills.

- 25 Kills = 1000 TP
- 50 Kills = 10 Halbmenschen
- 75 Kills = 15% Schaden

Diese Quest sollte jedoch nicht angezeigt werden, sie sollte nur beim Erreichen der Kills in den Chat des Spielers posten "Du hast soeben das Achievment Tod für Javura freigeschaltet, du erhälst folgenden Boni : "
#VerkaufbyMe is offline  
Old 11/24/2015, 14:08   #11981
 
elite*gold: 0
Join Date: May 2012
Posts: 300
Received Thanks: 34
Ja meine lieben Lua experten
ich bin selber ein ziemlicher noob im punkto lua und hab hier eine kleine quest

beim einfügen von der quest kommt dieser fehler


QUEST : questquest
questquest.quest:1:quest doesn't have begin-end clause. (-)
Error occured on compile questquest.quest


nu frage ich mich was das soll D:

bitte nicht einfach verbessern sondern den fehler sagen
und dann wie ich den verbessere muss es ja lernen.

hier die quest

abcdosentee is offline  
Old 11/24/2015, 15:10   #11982


 
DasPrinzip.'s Avatar
 
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
Quote:
Originally Posted by abcdosentee View Post
Ja meine lieben Lua experten
ich bin selber ein ziemlicher noob im punkto lua und hab hier eine kleine quest

beim einfügen von der quest kommt dieser fehler


QUEST : questquest
questquest.quest:1:quest doesn't have begin-end clause. (-)
Error occured on compile questquest.quest


nu frage ich mich was das soll D:

bitte nicht einfach verbessern sondern den fehler sagen
und dann wie ich den verbessere muss es ja lernen.

hier die quest

Ich glaube da sind 2 "end" zu viel
DasPrinzip. is offline  
Old 11/24/2015, 16:39   #11983
 
elite*gold: 0
Join Date: May 2012
Posts: 300
Received Thanks: 34
Quote:
Originally Posted by DasPrinzip. View Post
Ich glaube da sind 2 "end" zu viel
Danke für die anwort weißt du den auch wo genau?
abcdosentee is offline  
Old 11/24/2015, 17:06   #11984


 
DasPrinzip.'s Avatar
 
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
Quote:
Originally Posted by abcdosentee View Post
Danke für die anwort weißt du den auch wo genau?
Ich denke die 2 vor dem "state __COMPLETE__ begin"
DasPrinzip. is offline  
Old 11/24/2015, 17:08   #11985


 
シスイ's Avatar
 
elite*gold: 537
The Black Market: 134/0/0
Join Date: Mar 2015
Posts: 1,041
Received Thanks: 126
Hallo!

Habe den folgenden quest
Code:
quest test_quest begin
	state start begin
		when login with pc.getqf("dialog_erou")==1 begin
		end
		when 31260.use with pc.getqf("dialog_erou")==0 begin
			say_title("TEXT")
				say("TEXT") --// Pui tu aici textul tau ;)
				say("TEXT")
				say("TEXT")
				say("TEXT")
			local alege = select("TEXT", "TEXT")
				if alege == 2 then
				return
				elseif alege == 1 then
				say_title("TEXT")
				local hero_name = input()
				if string.len(hero_name) < 4 then
				say_title("TEXT")
					say("TEXT")
					say("TEXT")
					return
			elseif string.len(hero_name) > 12 then
				say_title("TEXT")
				say("TEXT")
				say("TEXT")
			return
		end
		when 31260.use with pc.getqf("dialog_erou")==1 begin
			say_title("TEXT")
				say("TEXT")
			return
	end
end
Fehler: qc in malloc()
シスイ is offline  
Reply




All times are GMT +1. The time now is 19:39.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.