[SERVICE] Die Questerstellung

02/02/2016 17:34 .Delta#3346
funktioniert einwandfrei.

(Vllt hast du die quest mit dem gleichen Charakter schon mal gemacht, dann bekommst du diese nicht mehr.
Neuen Char erstellen, oder entsprechende Questflag aus der DB löschen)

Quote:
Originally Posted by Falo55 View Post
Kann mir jemand diese Quest richtig machen? Ich erhalte die Quest nicht ingame.
NPC A ansprechen, 30 Orks töten, Belohnung bei NPC A holen

Code:
quest Orkjagd begin
   state start begin
      when login or levelup with pc.get_level() >= 30 begin
         set_state(information)
      end
   end
   
   state information begin
      when letter begin
         local v = find_npc_by_vnum(20300)
         if v != 0 then
            target.vid("__TARGET__", v, "*Orkjagd")
         end
         send_letter("*Orkjagd")
      end
      
      when button or info begin
         say_title("Orkjagd")
       end
       
       when __TARGET__.target.click or
          20300.chat."Orkjagd" begin
          target.delete("__TARGET__")
          say("Körper-Kampf Lehrer:")
          say("")
          say("Töte 30 Orks. Vnum: 601")
          say("Belohnung:")
          say("2.000.000 Yang")
          say("1x Karotte")
          say("")
          set_state(killmonster)
          pc.setqf("state", 30)
          q.set_counter("Ork", 30)
       end
    end
    
    state killmonster begin
       when letter begin
          send_letter("Orkjagd")
       end
       
       when button or info begin
          say_title("Orkjagd")
          say("Töte 30 Orks. Vnum: 601 und")
          say("kehre dann zum Körper-Kampf Lehrer")
          say("zurück.")
          say("Belohnung:")
          say("2.000.000 Yang")
          say("1x Karotte")
       end
       
       when 601.kill begin
            local count = pc.getqf("state") - 1
            if count <= 30 then
                pc.setqf("state", count)
                q.set_counter("Ork", count)
            end
                
                if count == 0 then
                   set_state(gotonpc)
                end
             end
        end
    
    state gotonpc begin
       when letter begin
          local v = find_npc_by_vnum(20300)
          if v != 0 then
             target.vid("__TARGET__", v, "Körper-Kampf Lehrer")
          end
          send_letter("Orkjagd")
       end
       
       when button or info begin
          say_title("Orkjagd")
          say("Du hast alle Orks getötet!")
          say("Körper-Kampf Lehrer gibt")
          say("dir deine Belohnung.")
          say("2.000.000 Yang")
          say("1x Karotte")
       end
       
       when __TARGET__.target.click or
          20300.chat."Orkjagd" begin
          target.delete("__TARGET__")
          say("Körper-Kampf Lehrer:")
          say("")
          say("Du erhälst deine Belohnung.")
          say("")
          wait()
          say("Belohnung:")
          say("2.000.000 Yang")
          say("1x Karotte")
          pc.change_money(2000000)
          pc.give_item2(50055, 1)
          clear_letter()
          set_state(__complete)
       end
    end
    
    state __complete begin
    end  
end
02/02/2016 21:21 °Ace°#3347
Kann mir einer die VIP Quest erweitern ?
Das wenn man VIP wird (35002), dass man ein Kostüm gekriegt, je nach weiblich oder Männlich.
Und sobald man das VIP-Return benutzt (35003) und nicht mehr VIP ist, wird das Kostüm gelöscht bzw zurück genommen

PHP Code:
--------------------------------------------
-- 
written by Kilroy.  
-- 
Benötigt Questlib Erweit. Mijago
--------------------------------------------
quest vip_by_kilroy begin
    state start begin
        when 20083.take with item
.get_vnum()== 35004 begin
            local s 
= select("Shop", "Warp", "Abbruch")
            if 
s==1 then
                say
("Sehr Gut, du konntest dich mit deinem")
                
say("VIP-Ticket ausweisen, ich gewähre")
                
say("dir somit Einblick in den VIP-Shop")
                
wait()
                
setskin(NOWINDOW)
                
npc.open_shop(6) -- natürlich Anpassen.
                
syschat("VIP-Shop wurde geöffnet.")
            elseif 
s==2 then
                say
("Sehr Gut, du konntest dich mit deinem")
                
say("VIP-Ticket ausweisen.")
                
say("")
                
say("Soll ich dich also zur VIP-Map bringen?")
                if 
select("Ja", "Nein")==2 then return end
                pc
.warp( 0, 25600) -- natürlich Anpassen.
            elseif 
s==3 then
                
return
            
end
        end
        when login with not npc
.is_pc() and pc.getqf("first_vip")==0 begin
            
if string.find(pc.get_name(), "VIP]") != nil then
                timer
("login_vip", 2)
            
end
        end
        when login_vip
.timer begin 
            say_title
("VIP-Status")
            
say("")
            
say("Da diese Meldung erschienen ist, wurde der")
            
say("VIP-Vorgang erfolgreich abgeschlossen.")
            
say("")
            
say("Dir stehen nun einige Features zu, die andere")
            
say("Spieler nicht haben.")
            
wait()
            
say_title("VIP-Status")
            
say("")
            
say("Nun erhälst du erstmal dein VIP-Kit")
            
say("und weitere Informationen.")
            
say("")
            
say("Wie du bestimmt bemerkt hast, schwebt")
            
say("über dir ein VIP-Symbol, dieses kannst du")
            
say("durch die Chateingabe von (vip) rufen.")
            
say("")
            
say("Du erhälst jetzt ein VIP-Ticket mit dem du")
            
say_reward("- die VIP-Map betreten kannst.")
            
say_reward("- den VIP-Shop einsehen kannst.")
            
say("")
            
say("Ziehe dafür das VIP-Ticket auf den jeweiligen")
            
say("NPC. Das war erstmal, Viel Spaß noch!")
            
pc.give_item2(35004, 1)
            
pc.setqf("first_vip",1)
        
end
        when 35002.
use begin
            
if string.find(pc.get_name(), "VIP]") == nil then
                say_title
("Hallo "..pc.get_name().."!")
                
say("Mit diesem Item kannst du den VIP Status aktivieren.")
                
say("")
                
say_title("Infos:")
                
say("Nach erfolgreicher Nutzung wirst du gekickt!")
                
say("Du hast dann einen 20 Minuten Bann, nach der ")
                
say("den 20 Minuten ist der Vorgang abgeschlossen ")
                
say("und dein Account ist wieder frei!")
                
say("")
                
say("")
                
say("Möchtest du?")
                
say(pc.get_name().." --------> (VIP)"..pc.get_name())
                if 
select("Ja", "Nein")==2 then return end
                vip_by_kilroy
.check_premise(35002)
                if 
string.len(pc.get_name())<= 7 and not vip_by_kilroy.player_exists("[VIP]"..pc.get_name()) then
                    say_title
("Erfolgreich!")
                    
say("")
                    
say_reward("Bereite dich auf einen Kick vor.")
                    
say_reward("")
                    
say_reward("Klicke auf 'Weiter' um fortzufahren.")
                    
wait()
                    
notice_all(pc.get_name().." ist nun ein VIP-Mitglied auf Metin2")
                    
mysql_query("UPDATE player.player SET name='[VIP]"..pc.get_name().."' WHERE name='"..pc.get_name().."'")
                    
mysql_query("UPDATE account.account SET availDt = NOW() + INTERVAL 20 MINUTE WHERE id = (SELECT account_id FROM player.player WHERE name='[VIP]"..pc.get_name().."');")
                    
pc.remove_item(35002, 1)
                    
cmdchat("exit")
                else
                    
say_title(pc.get_name().."!")
                    
say("")
                    
say("Die Vorraussetzungen zwingen dich einen")
                    
say("neuen Namen zuwählen. Mögliche Gründe")
                    
say("sind ein zu langer Name oder dein")
                    
say("Name existiert mit VIP bereits.")
                    
say("")
                    
say_reward("Möchtest du ihn ändern um VIP zuwerden?")
                    if 
select("Ja", "Nein")==2 then return end
                    say_title
("Name wechseln")
                    
say("Gib bitte deinen Wunschnamen ein:")
                    
say_reward("Beachte!")
                    
say_reward("Nicht mehr als 7 oder weniger als 2 Buchstaben.")
                    
say_reward("Sonderzeichen sind nicht erlaubt.")
                    
local inp = input()
                    if 
vip_by_kilroy.vip_premise(inp, 7, 2, 1) then
                        say_title
("Name wechseln")
                        
say("")
                        
say("Dein neuer Name besitzt entweder mehr als 7,")
                        
say("weniger als 2 Buchstaben oder enthält ein")
                        
say("unzulässiges Zeichen.")
                        return
                    elseif 
vip_by_kilroy.player_exists("[VIP]"..inp) then
                        say_title
("Name wechseln")
                        
say("")
                        
say("Dieser Name existiert bereits,")
                        
say("versuch es mit einem neuen erneut!")
                        return 
                    
end
                    say_title
("Super!")
                    
say("Dein Name erfüllt alle Voraussetzungen.")
                    
say("")
                    
say_title("Letzter Check")
                    
say("Möchtest du wirklich mit dem Namen")
                    
say("(VIP)"..inp.." dein Vip-Status aktivieren?")
                    if 
select("Ja", "Nein")==2 then return end
                    vip_by_kilroy
.check_premise(35002)
                    
say_title("Erfolgreich!")
                    
say("")
                    
say_reward("Bereite dich auf einen Kick vor.")
                    
say_reward("")
                    
say_reward("Klicke auf 'Weiter' um fortzufahren.")
                    
wait()
                    
notice_all(pc.get_name(), " heißt jetzt "..inp.." und ist nun ein VIP-Mitglied auf ....")
                    
mysql_query("UPDATE player.player SET name='[VIP]"..inp.."' WHERE name='"..pc.get_name().."'")
                    
mysql_query("UPDATE account.account SET availDt = NOW() + INTERVAL 20 MINUTE WHERE id = (SELECT account_id FROM player.player WHERE name='[VIP]"..inp.."');")
                    
pc.remove_item(35002, 1)
                    
cmdchat("exit")
                
end
            
else
                
say_title("Hallo "..pc.get_name().."!")
                
say("")
                
say("Du hast dein VIP-Status schon aktiviert,")
                
say("sollte dies nicht der Fall sein, kontaktiere")
                
say("bitte einen Teamler.")
                
say("")
                
say("Viel Spaß weiterhin!")
            
end
        end
        when 35003.
use begin
            
if string.find(pc.get_name(), "VIP]") != nil then
                say_title
("Hallo "..pc.get_name().."!")
                
say("Mit diesem Item kannst du den VIP Status")
                
say("zurücksetzen..")
                
say("")
                
say_title("Infos:")
                
say("Nach erfolgreicher Nutzung wirst du gekickt!")
                
say("Du hast dann einen 20 Minuten Bann, nach der ")
                
say("den 20 Minuten ist der Vorgang abgeschlossen ")
                
say("und dein Account ist wieder frei!")
                
say("")
                
say("")
                
say("VIP Status zurücksetzen?")
                
say("(VIP)"..pc.get_name().."---->"..pc.get_name())
                if 
select("Ja", "Nein")==2 then return end
                vip_by_kilroy
.check_premise(35003)
                
spl = split(pc.get_name(), "VIP]") -- Split Name bei VIP]
                if 
not vip_by_kilroy.player_exists(spl[2]) then
                    say_title
("Erfolgreich!")
                    
say("")
                    
say_reward("Bereite dich auf einen Kick vor.")
                    
say_reward("")
                    
say_reward("Klicke auf 'Weiter' um fortzufahren.")
                    
wait()
                    
mysql_query("UPDATE player.player SET name='"..spl[2].."' WHERE name='"..pc.get_name().."'")
                    
mysql_query("UPDATE account.account SET availDt = NOW() + INTERVAL 20 MINUTE WHERE id = (SELECT account_id FROM player.player WHERE name='"..spl[2].."');")
                    
item.remove()
                    
cmdchat("exit")
                else
                    
say_title("Dein Name!")
                    
say("Es scheint so als würde dein Name.")
                    
say("ohne das (VIP) bereits existieren,")
                    
say("das ist aber nicht schlimm, denn du kannst")
                    
say("ihn hier und jetzt ändern.")
                    
say("")
                    
say_reward("Möchtest du ihn ändern um VIP loszuwerden?")
                    if 
select("Ja", "Nein")==2 then return end
                    say_title
("Name wechseln")
                    
say("Gib bitte deinen Wunschnamen ein:")
                    
say_reward("Beachte!")
                    
say_reward("Nicht mehr als 7 oder weniger als 2 Buchstaben.")
                    
say_reward("Sonderzeichen sind nicht erlaubt.")
                    
local inp = input()
                    if 
vip_by_kilroy.vip_premise(inp, 7, 2, 1) then
                        say_title
("Name wechseln")
                        
say("")
                        
say("Dein neuer Name besitzt entweder mehr als 7,")
                        
say("weniger als 2 Buchstaben oder enthält ein")
                        
say("unzulässiges Zeichen.")
                        return
                    elseif 
not vip_by_kilroy.player_exists(inp) then
                        say_title
("Name wechseln")
                        
say("")
                        
say("Ich habe festgestellt das dein neuer Name bereits")
                        
say("existiert, versuch es mit einem neuen erneut!")
                        return 
                    
end
                    say_title
("Super!")
                    
say("Dein Name erfüllt alle Voraussetzungen.")
                    
say("")
                    
say_title("Letzter Check")
                    
say("Möchtest du wirklich mit dem Namen")
                    
say(inp.." dein Vip-Status zurücksetzen?")
                    if 
select("Ja", "Nein")==2 then return end
                    vip_by_kilroy
.check_premise(35003)
                    
say_title("Erfolgreich!")
                    
say("")
                    
say_reward("Bereite dich auf einen Kick vor.")
                    
say_reward("")
                    
say_reward("Klicke auf 'Weiter' um fortzufahren.")
                    
wait()
                    
spl = split(pc.get_name(), "VIP]")
                    
mysql_query("UPDATE player.player SET name='"..inp.."' WHERE name='"..pc.get_name().."'")
                    
mysql_query("UPDATE account.account SET availDt = NOW() + INTERVAL 20 MINUTE WHERE id = (SELECT account_id FROM player.player WHERE name='"..inp.."');")
                    
item.remove()
                    
cmdchat("exit")
                
end
            
else
                
say_title("Hallo "..pc.get_name().."!")
                
say("Du hast deinen VIP-Status")
                
say("noch garnicht aktiviert.")
            
end
        end
        
function player_exists(name)
            if 
tonumber(mysql_query("select count(*) from player.player where name = '"..name.."';")[1][1]) >= 1 then
                
return true
            end
        end
        
function vip_premise(name, maxi, mini, sonder)
            if 
sonder != 0 then
                
if string.len(name) > maxi or name == "" or string.len(name) < mini then
                    
return true
                end
            
else
                if 
string.len(name) > maxi or name == "" or string.len(name) < mini or string.find(name, "(%W)") ~= nil then
                    
return true
                end
            end
        end
        
function check_premise(item)
            if 
pc.is_married() then
                say
("Während du verheiratet bist kannst du")
                
say("kein VIP werden.")
                return
            elseif 
pc.is_polymorphed() then
                say
("Während du verwandelt bist kannst du")
                
say("kein VIP werden.")
                return
            elseif 
not pc.can_warp() then
                say
("Du hast vorkurzem gehandelt, so kannst du")
                
say("kein VIP werden.")    
                return
            elseif 
pc.has_guild() then
                say
("Während du in einer Gilde bist kannst du")
                
say("kein VIP werden.")
                return
            elseif 
party.is_party() then
                say
("Während du in einer Gruppe bist kannst du")
                
say("kein VIP werden.")
                return                        
            elseif 
pc.count_item(item) < 1 then
                say
("Bugusern wird kein VIP entzogen!")
                return
            
end
        end
    end
end
-----------------------------------------
-- 
written by Kilroy.
-- 
Benötigt Questlib Erweit. Mijago
------------------------------------------ 
02/02/2016 22:03 Docinfo#3348
Hätte eine Frage, und zwar bräuchte ich eine Quest, bei der Man durch PvP
in der Arena Punkte bekommt mit denen man sich Equip kaufen kann bzw. Pets oder ähnlichem, und PvM Punkte durch bestimmte Bosse, wäre sowas möglich?

Bräuchte noch mehrere Quests, würde diesen "Quester" auch dafür zahlen. :)

&

eine Quest die meinen NPC wenn man ihn anspricht, dem Spieler eine Quest gibt das er 5 Schatzkarten suchen soll, diese dann auch nur von der Quest gedroppt werden, und wenn man sie diesem bringt, diese abnimmt und ihn auf eine Map teleportiert.


Nicht das man einfach welche durch die mob_drop einstellungen bekommt sondern über diese Quest.
02/03/2016 00:06 Blao#3349
Hey Leute, ich möchte das diese Quest "regenbogenstein" einen Mind. level hat, das man die zum Beispiel erst ab Level 55 benutzen kann.

Code:
quest regenbogenstein begin 
	state start begin 
		function BuildPerfectMasterSkillList(job, group) 
		GRAND_MASTER_SKILL_LEVEL = 0 
		PERFECT_MASTER_SKILL_LEVEL = 20 

		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 >= 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} 


		--return {ret_vnum_list, ret_name_list} 
		end 
		when 50512.use begin 
			local count = pc.count_item(50512) 
			pc.setqf("regen_count", count) 
			if pc.get_skill_group() == 0 then 
				say("Du hast noch keine Fertigkeiten.") 
				say("Versuche es später erneut.") 
				return 
			end 
			local result = regenbogenstein.BuildPerfectMasterSkillList(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 hast keine Großmeister-Fertigkeiten.") 
				return 
			end 
			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] 
			say("Möchtest du "..skill_name.." wirklich auf P skillen?") 
			local wahl = select("Ja", "Nein") 
			if wahl == 1 then 
				if pc.count_item(50512) == pc.getqf("regen_count") then 
					pc.set_skill_level(skill_vnum, 20) 
					say(skill_name.." wurde auf Meister gesetzt.") 
				else 
					say("Buguser bekommen keine Skills ! ") 
				end 
			elseif wahl == 2 then 
				return 
			end 
			pc.remove_item(50512, 1) 
		end 
	end 
end
02/03/2016 08:12 .Delta#3350
Hier,

Es reicht übrigens wenn du das in E I N E N Thread postest, alles andere ist unnötiges Crossposting..

02/07/2016 00:55 ϟhazar#3351
kann mir jemand eine quest schreiben in der man mit dem stallburschen redet und ihm eine PM gibt und er dann dein pferd ein lvl up macht? also von lvl1 auf lvl2 und von lvl3 auf lvl4 und so weiter bis lvl30 halt. Ich weis nicht genau ob die quest schon standart in den server drin ist wenn ja kann mir jemand sagen wo ich die finde?
02/07/2016 16:24 Famouz™#3352
Hat jemand eine Seelenbindung quest ?
02/08/2016 05:11 TommyH99#3353

Hi
Könnt ihr mir bitte in der Quest folgende Punkte ändern?
Und zwar auch wieder so dass da dahinter steht was für ein Item ist wie oben.

02/08/2016 23:26 Chaosnightx3#3354
Morgen, kurzes Anliegen:

Drops via Quest, mehrere Drops einstellbar, Levellimit 110.
Wäre euch sehr verbunden. :X

lgö.ö
02/09/2016 13:40 DerGeier33#3355
Suche wen Der mir eine quest scbreibt: Wenn ich item "x" auf eq oder items ziehe sind diese nicht mehr handelbar, switchbar, wegwerfbar, lagerbar
Wenn ich item "a" auf eq ziehe hebt es die wirkung von item "x" wieder auf aber nur alle 3 tage 1x

Danke Im vorraus :)
02/09/2016 14:26 rollback#3356
Quote:
Originally Posted by DerGeier33 View Post
Suche wen Der mir eine quest scbreibt: Wenn ich item "x" auf eq oder items ziehe sind diese nicht mehr handelbar, switchbar, wegwerfbar, lagerbar
Wenn ich item "a" auf eq ziehe hebt es die wirkung von item "x" wieder auf aber nur alle 3 tage 1x

Danke Im vorraus :)
geht nicht per quest
02/09/2016 15:10 DerGeier33#3357
Kannst Du mir villt sage wir ich das mache? Will das mit dem item Seelenbindung und Seelenlösung machen.
02/09/2016 15:31 Famouz™#3358
Kann mir eine eine quest scbreiben die wir folgt aussehen soll: ab lvl 100 Bekommt man links eine questrolle names "Die gotter" wenn man sie annimt muss man zu einem npc Der gibt dir einen auftrag "gehe in otm zu "schwarzen orks" und bring mir das item "x" aber man dropt das item erst Wenn man die quest angenommen hat. Dann muss man wieder zu npc "x" und Es abgeben. Dann muss man 1h warten und man muss ihm erneut ein item bringen das man auch nur dropt Wenn man ihn angesprochen hat. Das ganze 30x Wenn man das gemacht hat bekommt man "item".

Wahre nett wenn mir das jemand scbreiben kann :)
02/10/2016 21:25 TommyH99#3359

Hi
Könnt ihr mir bitte in der Quest folgende Punkte ändern?
Und zwar auch wieder so dass da dahinter steht was für ein Item ist wie oben.

02/11/2016 14:58 Chaosnightx3#3360
Quote:
Originally Posted by Chaosnightx3 View Post
Morgen, kurzes Anliegen:

Drops via Quest, mehrere Drops einstellbar, Levellimit 110.
Wäre euch sehr verbunden. :X

lgö.ö
Suche immernoch, muss mich da erst noch reinfinden richtig. ^-^

Lg