Nimm einfach die aus den Invoice Files und änder die IDs der Icons in der Quest(wenn das nicht sogar die gleichen sind) Bei dem Namensänderungsteil musst du bei dem Item der eingetragenden ID den type auf 18 setzen. Hier die Quest:
quest haustiere begin state start begin -- Setzt den neuen Petnamen in die Datenbank ein function set_pet_name(name) mysql_query("DELETE FROM player.pet_name WHERE id = \\'"..pc.get_player_id().."\\'") mysql_query("INSERT INTO player.pet_name(id, name) VALUES(\\'"..pc.get_player_id().."\\', \\'"..name.."\\')") end -- Holt sich den Petnamen aus der Datenbank function get_pet_name() local pet_name = mysql_query("SELECT * FROM player.pet_name WHERE id = \\'"..pc.get_player_id().."\\'") return (pet_name.name or {pc.get_name().."'s Haustier"})[1] end -- Feuer-Phönix when 53001.use begin if pet.is_summon() then pet.unsummon() chat("Dein Haustier verabschiedet sich nun von dir!") affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.MAX_HP, 1000, 60*60*8) else local old_level = horse.get_level() local old_name = horse.get_name() horse.set_level(22) horse.set_name(haustiere.get_pet_name()) pet.summon() horse.set_level(old_level) horse.set_name(old_name) affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.MAX_HP, 1000, 60*60*8) end end -- Rentierjunges when 53002.use begin if pet.is_summon() then pet.unsummon() chat("Dein Haustier verabschiedet sich nun von dir!") affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.MAX_HP, 1000, 60*60*8) else local old_level = horse.get_level() local old_name = horse.get_name() horse.set_level(24) horse.set_name(haustiere.get_pet_name()) pet.summon() horse.set_level(old_level) horse.set_name(old_name) affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.MAX_HP, 1000, 60*60*8) end end -- Eis-Phönix when 53003.use begin if pet.is_summon() then pet.unsummon() chat("Dein Haustier verabschiedet sich nun von dir!") affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.MAX_HP, 1000, 60*60*8) else local old_level = horse.get_level() local old_name = horse.get_name() horse.set_level(23) horse.set_name(haustiere.get_pet_name()) pet.summon() horse.set_level(old_level) horse.set_name(old_name) affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.MAX_HP, 1000, 60*60*8) end end -- Baby-Azrael when 53005.use begin if pet.is_summon() then pet.unsummon() chat("Dein Haustier verabschiedet sich nun von dir!") affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.MAX_HP, 1000, 60*60*8) else local old_level = horse.get_level() local old_name = horse.get_name() horse.set_level(25) horse.set_name(haustiere.get_pet_name()) pet.summon() horse.set_level(old_level) horse.set_name(old_name) affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.MAX_HP, 1000, 60*60*8) end end -- Baby-Wolfs when 53006.use begin if pet.is_summon() then pet.unsummon() chat("Dein Haustier verabschiedet sich nun von dir!") affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.MAX_HP, 1000, 60*60*8) else local old_level = horse.get_level() local old_name = horse.get_name() horse.set_level(26) horse.set_name(haustiere.get_pet_name()) pet.summon() horse.set_level(old_level) horse.set_name(old_name) affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.MAX_HP, 1000, 60*60*8) end end -- Baby-Löwen when 53007.use begin if pet.is_summon() then pet.unsummon() chat("Dein Haustier verabschiedet sich nun von dir!") affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.MAX_HP, 1000, 60*60*8) else local old_level = horse.get_level() local old_name = horse.get_name() horse.set_level(27) horse.set_name(haustiere.get_pet_name()) pet.summon() horse.set_level(old_level) horse.set_name(old_name) affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.MAX_HP, 1000, 60*60*8) end end -- Baby-Keiler when 53008.use begin if pet.is_summon() then pet.unsummon() chat("Dein Haustier verabschiedet sich nun von dir!") affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.MAX_HP, 1000, 60*60*8) else local old_level = horse.get_level() local old_name = horse.get_name() horse.set_level(28) horse.set_name(haustiere.get_pet_name()) pet.summon() horse.set_level(old_level) horse.set_name(old_name) affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.MAX_HP, 1000, 60*60*8) end end -- Baby-Tiger when 53009.use begin if pet.is_summon() then pet.unsummon() chat("Dein Haustier verabschiedet sich nun von dir!") affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.MAX_HP, 1000, 60*60*8) else local old_level = horse.get_level() local old_name = horse.get_name() horse.set_level(29) horse.set_name(haustiere.get_pet_name()) pet.summon() horse.set_level(old_level) horse.set_name(old_name) affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.MAX_HP, 1000, 60*60*8) end end -- Baby-Eisbär when 53014.use begin if pet.is_summon() then pet.unsummon() chat("Dein Haustier verabschiedet sich nun von dir!") affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.remove_collect(apply.MAX_HP, 1000, 60*60*8) else local old_level = horse.get_level() local old_name = horse.get_name() horse.set_level(30) horse.set_name(haustiere.get_pet_name()) pet.summon() horse.set_level(old_level) horse.set_name(old_name) affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8) affect.add_collect(apply.MAX_HP, 1000, 60*60*8) end end -- Namenskette - Namensändung des Haustiers when 71110.use begin say_title("Namenskette :") say("") say("Hier kannst du deinem Haustier einen neuen") say("Namen geben. Damit kannst du dein Haustier") say("über alle anderen hervorheben.") say("")
akna = haustiere.get_pet_name()
if string.len(akna) == 0 then say_reward("Dein Haustier besitzt bis jetzt keinen Namen.") else say_reward("Der aktuelle Name deines Haustieres lautet: "..akna) end
say("") say("Möchtest du fortfahren?") say("")
local s=select("Umbenennen", "Abbrechen") if s==2 then return end
say_title("Namenskette :") say("") say("Bitte gib hier den neuen Namen deines") say("Haustieres ein.")
local x = input()
if string.len(x) < 2 then say_title("Namenskette :") say("Der eingegeben Name ist zu kurz.") say("") say_reward("Der neue Name muss aus") say_reward("mind. 2 Zeichen bestehen.") say("") return elseif string.len(x) > 12 then say_title("Namenskette :") say("Der eingegeben Name ist zu lang.") say("") say_reward("Der neue Name darf max.") say_reward("aus 12 Zeichen bestehen.") say("") return end
haustiere.set_pet_name(x) chat("Haustier erfolgreich umbenannt") pc.remove_item(71110, 1) end end end
MFG
€dit: Questlib von Mijago benötigt, findest du auf metindev
Nimm einfach die aus den Invoice Files und änder die IDs der Icons in der Quest(wenn das nicht sogar die gleichen sind) Bei dem Namensänderungsteil musst du bei dem Item der eingetragenden ID den type auf 18 setzen. Hier die Quest:
quest haustiere begin
state start begin
-- Setzt den neuen Petnamen in die Datenbank ein
function set_pet_name(name)
mysql_query("DELETE FROM player.pet_name WHERE id = \\'"..pc.get_player_id().."\\'")
mysql_query("INSERT INTO player.pet_name(id, name) VALUES(\\'"..pc.get_player_id().."\\', \\'"..name.."\\')")
end
-- Holt sich den Petnamen aus der Datenbank
function get_pet_name()
local pet_name = mysql_query("SELECT * FROM player.pet_name WHERE id = \\'"..pc.get_player_id().."\\'")
return (pet_name.name or {pc.get_name().."'s Haustier"})[1]
end
-- Feuer-Phönix
when 53001.use begin
if pet.is_summon() then
pet.unsummon()
chat("Dein Haustier verabschiedet sich nun von dir!")
affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.MAX_HP, 1000, 60*60*8)
else
local old_level = horse.get_level()
local old_name = horse.get_name()
horse.set_level(22)
horse.set_name(haustiere.get_pet_name())
pet.summon()
horse.set_level(old_level)
horse.set_name(old_name)
affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.MAX_HP, 1000, 60*60*8)
end
end
-- Rentierjunges
when 53002.use begin
if pet.is_summon() then
pet.unsummon()
chat("Dein Haustier verabschiedet sich nun von dir!")
affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.MAX_HP, 1000, 60*60*8)
else
local old_level = horse.get_level()
local old_name = horse.get_name()
horse.set_level(24)
horse.set_name(haustiere.get_pet_name())
pet.summon()
horse.set_level(old_level)
horse.set_name(old_name)
affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.MAX_HP, 1000, 60*60*8)
end
end
-- Eis-Phönix
when 53003.use begin
if pet.is_summon() then
pet.unsummon()
chat("Dein Haustier verabschiedet sich nun von dir!")
affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.MAX_HP, 1000, 60*60*8)
else
local old_level = horse.get_level()
local old_name = horse.get_name()
horse.set_level(23)
horse.set_name(haustiere.get_pet_name())
pet.summon()
horse.set_level(old_level)
horse.set_name(old_name)
affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.MAX_HP, 1000, 60*60*8)
end
end
-- Baby-Azrael
when 53005.use begin
if pet.is_summon() then
pet.unsummon()
chat("Dein Haustier verabschiedet sich nun von dir!")
affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.MAX_HP, 1000, 60*60*8)
else
local old_level = horse.get_level()
local old_name = horse.get_name()
horse.set_level(25)
horse.set_name(haustiere.get_pet_name())
pet.summon()
horse.set_level(old_level)
horse.set_name(old_name)
affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.MAX_HP, 1000, 60*60*8)
end
end
-- Baby-Wolfs
when 53006.use begin
if pet.is_summon() then
pet.unsummon()
chat("Dein Haustier verabschiedet sich nun von dir!")
affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.MAX_HP, 1000, 60*60*8)
else
local old_level = horse.get_level()
local old_name = horse.get_name()
horse.set_level(26)
horse.set_name(haustiere.get_pet_name())
pet.summon()
horse.set_level(old_level)
horse.set_name(old_name)
affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.MAX_HP, 1000, 60*60*8)
end
end
-- Baby-Löwen
when 53007.use begin
if pet.is_summon() then
pet.unsummon()
chat("Dein Haustier verabschiedet sich nun von dir!")
affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.MAX_HP, 1000, 60*60*8)
else
local old_level = horse.get_level()
local old_name = horse.get_name()
horse.set_level(27)
horse.set_name(haustiere.get_pet_name())
pet.summon()
horse.set_level(old_level)
horse.set_name(old_name)
affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.MAX_HP, 1000, 60*60*8)
end
end
-- Baby-Keiler
when 53008.use begin
if pet.is_summon() then
pet.unsummon()
chat("Dein Haustier verabschiedet sich nun von dir!")
affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.MAX_HP, 1000, 60*60*8)
else
local old_level = horse.get_level()
local old_name = horse.get_name()
horse.set_level(28)
horse.set_name(haustiere.get_pet_name())
pet.summon()
horse.set_level(old_level)
horse.set_name(old_name)
affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.MAX_HP, 1000, 60*60*8)
end
end
-- Baby-Tiger
when 53009.use begin
if pet.is_summon() then
pet.unsummon()
chat("Dein Haustier verabschiedet sich nun von dir!")
affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.MAX_HP, 1000, 60*60*8)
else
local old_level = horse.get_level()
local old_name = horse.get_name()
horse.set_level(29)
horse.set_name(haustiere.get_pet_name())
pet.summon()
horse.set_level(old_level)
horse.set_name(old_name)
affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.MAX_HP, 1000, 60*60*8)
end
end
-- Baby-Eisbär
when 53014.use begin
if pet.is_summon() then
pet.unsummon()
chat("Dein Haustier verabschiedet sich nun von dir!")
affect.remove_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.remove_collect(apply.MAX_HP, 1000, 60*60*8)
else
local old_level = horse.get_level()
local old_name = horse.get_name()
horse.set_level(30)
horse.set_name(haustiere.get_pet_name())
pet.summon()
horse.set_level(old_level)
horse.set_name(old_name)
affect.add_collect(apply.ATT_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.DEF_GRADE_BONUS, 100, 60*60*8)
affect.add_collect(apply.MAX_HP, 1000, 60*60*8)
end
end
-- Namenskette - Namensändung des Haustiers
when 71110.use begin
say_title("Namenskette :")
say("")
say("Hier kannst du deinem Haustier einen neuen")
say("Namen geben. Damit kannst du dein Haustier")
say("über alle anderen hervorheben.")
say("")
akna = haustiere.get_pet_name()
if string.len(akna) == 0 then
say_reward("Dein Haustier besitzt bis jetzt keinen Namen.")
else
say_reward("Der aktuelle Name deines Haustieres lautet: "..akna)
end
say("")
say("Möchtest du fortfahren?")
say("")
local s=select("Umbenennen", "Abbrechen")
if s==2 then
return
end
say_title("Namenskette :")
say("")
say("Bitte gib hier den neuen Namen deines")
say("Haustieres ein.")
local x = input()
if string.len(x) < 2 then
say_title("Namenskette :")
say("Der eingegeben Name ist zu kurz.")
say("")
say_reward("Der neue Name muss aus")
say_reward("mind. 2 Zeichen bestehen.")
say("")
return
elseif string.len(x) > 12 then
say_title("Namenskette :")
say("Der eingegeben Name ist zu lang.")
say("")
say_reward("Der neue Name darf max.")
say_reward("aus 12 Zeichen bestehen.")
say("")
return
end
haustiere.set_pet_name(x)
chat("Haustier erfolgreich umbenannt")
pc.remove_item(71110, 1)
end
end
end
MFG
€dit: Questlib von Mijago benötigt, findest du auf metindev
Ist nur zu gut, dass diese Quest ganz einfach zu buggen ist. Wenn Du einem Pet nur maximal drei Bonis geben willst, dann mach sie über die Datenbank. Ansonsten musst Du questflags benutzen, damit es verboten wird ein anderes Pet zu rufen, während bereits eines aktiv ist. Sonst kann man die Boni ganz einfach vervielfachen.
Ist nur zu gut, dass diese Quest ganz einfach zu buggen ist. Wenn Du einem Pet nur maximal drei Bonis geben willst, dann mach sie über die Datenbank. Ansonsten musst Du questflags benutzen, damit es verboten wird ein anderes Pet zu rufen, während bereits eines aktiv ist. Sonst kann man die Boni ganz einfach vervielfachen.
return pet_info_map[itemVnum] end function get_spawn_effect_file(idx) effect_table = { [0] = nil, [1] = "d:\\\\ymir work\\\\effect\\\\etc\\\\appear_die\\\\npc2_appear.mse", } return effect_table [idx] end when 51001.use or 51002.use or 51003.use or 51004.use or 51005.use or 51006.use or 51007.use or 51008.use begin local pet_info = pet_system.get_pet_info(item.vnum)
if null != pet_info then
local mobVnum = pet_info[1] local petName = pet_info[2] local spawn_effect_file_name = pet_system.get_spawn_effect_file(pet_info[3])
if true == pet.is_summon(mobVnum) then if spawn_effect_file_name != nil then pet.spawn_effect (mobVnum, spawn_effect_file_name) end pet.unsummon(mobVnum) else if pet.count_summoned() < 1 then pet.summon(mobVnum, petName, false) else syschat("Schicke erst dein Pet weg, bevor du ein anderes rufst!") end if spawn_effect_file_name != nil then pet.spawn_effect (mobVnum, spawn_effect_file_name) end end -- if pet.is_summon end -- if null != pet_info end -- when end -- state end -- quest
PS: Is vom .de Server Locale-Ordner, Stand Oktober 2013
€: Die Bonis kannst du ganz easy in der DB bei applytype0-applytype2 & applyvalue0-applyvalue3 setzen, erkennt die quest in dem fall und ist 100% bugfrei.
return pet_info_map[itemVnum]
end
function get_spawn_effect_file(idx)
effect_table = {
[0] = nil,
[1] = "d:\\\\ymir work\\\\effect\\\\etc\\\\appear_die\\\\npc2_appear.mse",
}
return effect_table [idx]
end
when 51001.use or 51002.use or 51003.use or 51004.use or 51005.use or 51006.use or 51007.use or 51008.use begin
local pet_info = pet_system.get_pet_info(item.vnum)
if null != pet_info then
local mobVnum = pet_info[1]
local petName = pet_info[2]
local spawn_effect_file_name = pet_system.get_spawn_effect_file(pet_info[3])
if true == pet.is_summon(mobVnum) then
if spawn_effect_file_name != nil then
pet.spawn_effect (mobVnum, spawn_effect_file_name)
end
pet.unsummon(mobVnum)
else
if pet.count_summoned() < 1 then
pet.summon(mobVnum, petName, false)
else
syschat("Schicke erst dein Pet weg, bevor du ein anderes rufst!")
end
if spawn_effect_file_name != nil then
pet.spawn_effect (mobVnum, spawn_effect_file_name)
end
end -- if pet.is_summon
end -- if null != pet_info
end -- when
end -- state
end -- quest
PS: Is vom .de Server Locale-Ordner, Stand Oktober 2013
€: Die Bonis kannst du ganz easy in der DB bei applytype0-applytype2 & applyvalue0-applyvalue3 setzen, erkennt die quest in dem fall und ist 100% bugfrei.
Die Quest funktioniert nur, wenn man die 34k/40k Game nutzt, da in früheren Revisionen die nötigen Funktionen nicht enthalten sind.
Fakt ist aber: alle public Quests sind Müll.
Lieber selber eine schreiben.
Compile all quest without quest's files list // Kompilieren Sie alle Quest ohne Quest 07/17/2011 - Metin2 PServer Guides & Strategies - 3 Replies ENGLISH
Hello dear community, this is a very simple guide but at the same time useful.
How to compile ALL quest in the folder "quest" without the files list in the file "locale_list"?
Easy!
Open the file "make" and replace the content of the file with this:
for f in *.quest; do ./qc $f; done
Oki. Now set the 0777 permission to the file.
Finally open a SSH client and sign in. Write the command:
cd /game_file_folder