antiblock
Elveron
  • Chatbox

    You don't have permission to chat.
    Load More
  • 0
Sign in to follow this  
henriques.

Dúvida Sobre Uma Quest :)

Question

Boas comunidade é o seguinte peguei na quest "Sistema de Conquista" postada pelo Sinval e quando fui dar o comando "./qc" deu este erro:

Imagem colocada

 

E como não percebo mesmo nada de quests decidi vir postar aqui a minha dúvida.. Desde já agradeço a todos que tentarão ajudar e por aqueles que tiveram paciência de ler o tópido :3

 

Em baixo deixo a quest: 

 

 

quest logros_keko begin
state start begin
--LOGIN
when login begin
local actual_achievement_points = pc.getqf("achievement_points")
if pc.getqf("firstlogin") != 1 then
local Reward = 1
pc.setqf("firstlogin", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement Primer_login%".. actual_achievement_points + Reward .."")
else
cmdchat("achievementpoints ".. pc.getqf("achievement_points"))
end
end
 
--BOSSE
when 691.kill begin
local Reward = 2
local Achievement = "Jefe_Orco"
local killcount = pc.getqf("691")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("691", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 791.kill begin
local Reward = 3
local Achievement = "Lider_esoterico"
local killcount = pc.getqf("791")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("791", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 2493.kill begin
local Reward = 100
local Achievement = "Dragon_azul"
local killcount = pc.getqf("2493")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("2493", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 2492.kill begin
local Reward = 20
local Achievement = "Comandante_Setaou"
local killcount = pc.getqf("2492")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("2492", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 1091.kill begin
local Reward = 5
local Achievement = "Rey_demonio"
local killcount = pc.getqf("1091")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("1091", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 2597.kill begin
local Reward = 20
local Achievement = "Muerte"
local killcount = pc.getqf("2597")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("2597", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 1192.kill begin
local Reward = 12
local Achievement = "Bruja_de_hielo"
local killcount = pc.getqf("1192")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("1192", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 1304.kill begin
local Reward = 5
local Achievement = "Tigre_fantasma"
local killcount = pc.getqf("1304")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("1304", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 1901.kill begin
local Reward = 4
local Achievement = "9_colas"
local killcount = pc.getqf("1901")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("1901", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 2091.kill begin
local Reward = 3
local Achievement = "Reina_araña"
local killcount = pc.getqf("2091")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("2091", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 2206.kill begin
local Reward = 4
local Achievement = "Jefe_logros"
local killcount = pc.getqf("2206")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("2206", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 2191.kill begin
local Reward = 5
local Achievement = "Tortuga_del_desierto"
local killcount = pc.getqf("2191")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("2191", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 692.kill begin
local Reward = 3
local Achievement = "Orco_elite"
local killcount = pc.getqf("692")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("692", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 693.kill begin
local Reward = 5
local Achievement = "Orco_renacido"
local killcount = pc.getqf("693")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("693", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
 
------------------------------------
Buenasss zoneros y zoneras, hoy os voi a explicar como implementar en vuestro servidores el sistema de logros que meti en Metin2Extasis, hasta con mi querida quest de canjes xd (aunque en elite hay una mas completa la mia es mas sencillita).
 
1 - Qué es el sistema de logros?
 
Este sistema consiste en una quest y una edicion del cliente que hace que cada vez que un jugador alcance un objetivo concreto, que tu fijas en la quest, le da los puntos correspondientes al logro que haya alcanzando. Si un jugador acumula puntos luego los puede canjear por premios.
 
2 - Como meto yo esto?
 
El sistema de logros consiste en una quest y en editar unos archivos en el cliente, así que vamos a ir paso por paso:
 
2.1: Parte del cliente:
 
*Todos los archivos que tengais que meter estan en esta descarga:
 
2.1.1 - Que archivos vamos a editar?  En el cliente editaremos los siguientes archivos:
 
-Root: dentro de el los archivos game.py y uiachievement.py (este lo meteremos nosotros).
 
-Etc: donde meteremos los archivos achievement_small.sub y achievement_small.dds
 
-Uiscript: aqui meteremos el archivo achievementboard.py y warteschleife.py
 
2.1.2 - Manos a la obra, a implementar!
 
2.1.2.1: Primero empezaremos con el root. Decompilad vuestro root,  abrid el archivo game.py y buscad esto:
 
def __ServerCommand_Build(self):
 
Una vez esteis ahi, le dais a enter y pegais esto:
 
# Achievement System START   "achievement"   : self.__AchievementTest,   "achievementpoints"   : self.__ShowAchievementPoints,    # Achievement System END
 
Quedandoos asi:
 
(Foto)
 
(Las -------------------- las pongo solo para que distingais la parte que acabamos de añadir, no hay que ponerlas)
 
Ahora vais al final del archivo, le dais a enter para dejar algo de espacio y pegais esto:
 
# Achievement System STARTdef __ShowAchievementPoints(self, points):  import uiAchievement  import uiTaskbar  self.uiAchievement = uiAchievement.AchievementDialog()  uiAchievement.AchievementPoints = int(points) def __AchievementTest(self, archivement):  import uiAchievement  self.uiAchievement = uiAchievement.AchievementDialog()  self.uiAchievement.Show(1, str(archivement))  self.uiAchievement.SetTop() # Achievement System END
 
Quedará asi:
 
(Foto)
 
*Siguiente paso: metemos en la carpeta root el archivo uiachievement.py y lo añadimos al xml
 
<File archivedPath="uiachievement.py" type="2"><![CDATA[Sourceuiachievement.py]]></File>
 
Listo el root! Sigamos con el etc.
 
2.1.2.2: Decompilamos nuestro etc, vamos a la carpeta ymir work/ui y metemos el achievement_small.dds. Despues vamos a la carpeta ymir work/ui/public y metemos el achievement_small.sub. Por ultimo agregamos ambos al xml:
 
<File archivedPath="d:/ymir work/ui/public/achievement_small.sub" type="0"><![CDATA[Sourceymir workuipublicachievement_small.sub]]></File><File archivedPath="d:/ymir work/ui/achievement_small.dds" type="0"><![CDATA[Sourceymir workuiachievement_small.dds]]></File>
 
2.1.2.3: El ultimo paso en el cliente es decompilar nuestro uiscript y meter el archivo achievementboard.py y el warteschleife.py: en la carpeta. Los añadimos al xml y compilamos:
 
<File archivedPath="uiscript/achievementboard.py" type="2"><![CDATA[Sourceuiscriptachievementboard.py]]></File><File archivedPath="uiscript/warteschleife.py" type="2"><![CDATA[Sourceuiscriptwarteschleife.py]]></File>
 
Y listo ya tenemos todo lo del cliente :D
 
2.1: Parte del server:
 
Bueno ahora ya solo nos queda meter nuestra quest del sistema de logros en la carpeta /home/game/quest (o la ruta en la que tengais la carpeta quest). Aqui os dejo la mia, con los nombres en español, algunos logros añadidos, canje, un item que te da logros (pa quien lo quiera xd), una opcion que te dice tus logros, etc
 
quest logros_keko beginstate start begin   --LOGIN  when login begin   local actual_achievement_points = pc.getqf("achievement_points")   if pc.getqf("firstlogin") != 1 then    local Reward = 1    pc.setqf("firstlogin", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Primer_login%".. actual_achievement_points + Reward .."")   else    cmdchat("achievementpoints ".. pc.getqf("achievement_points"))   end  end   --BOSSE  when 691.kill begin   local Reward = 2   local Achievement = "Jefe_Orco"   local killcount = pc.getqf("691")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("691", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 791.kill begin   local Reward = 3   local Achievement = "Lider_esoterico"   local killcount = pc.getqf("791")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("791", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 2493.kill begin   local Reward = 100   local Achievement = "Dragon_azul"   local killcount = pc.getqf("2493")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("2493", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 2492.kill begin   local Reward = 20   local Achievement = "Comandante_Setaou"   local killcount = pc.getqf("2492")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("2492", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 1091.kill begin   local Reward = 5   local Achievement = "Rey_demonio"   local killcount = pc.getqf("1091")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("1091", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 2597.kill begin   local Reward = 20   local Achievement = "Muerte"   local killcount = pc.getqf("2597")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("2597", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 1192.kill begin   local Reward = 12   local Achievement = "Bruja_de_hielo"   local killcount = pc.getqf("1192")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("1192", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 1304.kill begin   local Reward = 5   local Achievement = "Tigre_fantasma"   local killcount = pc.getqf("1304")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("1304", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 1901.kill begin   local Reward = 4   local Achievement = "9_colas"   local killcount = pc.getqf("1901")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("1901", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 2091.kill begin   local Reward = 3   local Achievement = "Reina_araña"   local killcount = pc.getqf("2091")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("2091", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 2206.kill begin   local Reward = 4   local Achievement = "Jefe_logros"   local killcount = pc.getqf("2206")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("2206", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 2191.kill begin   local Reward = 5   local Achievement = "Tortuga_del_desierto"   local killcount = pc.getqf("2191")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("2191", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 692.kill begin   local Reward = 3   local Achievement = "Orco_elite"   local killcount = pc.getqf("692")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("692", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 693.kill begin   local Reward = 5   local Achievement = "Orco_renacido"   local killcount = pc.getqf("693")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("693", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end    --Item shop---  when 50129.use begin  say_title ( "Obten puntos logro")  local actual_achievement_points = pc . getqf ( "achievement_points" )  local p = select ( "Obten 200 puntos logro" )  if p == 1 then  local actual_achievement_points = pc . getqf ( "achievement_points" )  pc . setqf ( "achievement_points" , actual_achievement_points + 200 )  say ( "Enorabuena tienes 200 logros mas" )  say ( "Disfrutalos!" )  item.remove ( "50129", 1 )  end  end   when 50130.use begin  say_title ( "Obten puntos logro")  local actual_achievement_points = pc . getqf ( "achievement_points" )  local p = select ( "Obten 100 puntos logro" )  if p == 1 then  local actual_achievement_points = pc . getqf ( "achievement_points" )  pc . setqf ( "achievement_points" , actual_achievement_points + 100 )  say ( "Enorabuena tienes 100 logros mas" )  say ( "Disfrutalos!" )  item.remove ( "50130", 1 )  end  end   when 50131.use begin  say_title ( "Obten puntos logro")  local actual_achievement_points = pc . getqf ( "achievement_points" )  local p = select ( "Obten 50 puntos logro" )  if p == 1 then  local actual_achievement_points = pc . getqf ( "achievement_points" )  pc . setqf ( "achievement_points" , actual_achievement_points + 50 )  say ( "Enorabuena tienes 50 logros mas" )  say ( "Disfrutalos!" )  item.remove ( "50131", 1 )  end  end   when 50132.use begin  say_title ( "Obten puntos logro")  local actual_achievement_points = pc . getqf ( "achievement_points" )  local p = select ( "Obten 25 puntos logro" )  if p == 1 then  local actual_achievement_points = pc . getqf ( "achievement_points" )  pc . setqf ( "achievement_points" , actual_achievement_points + 25 )  say ( "Enorabuena tienes 25 logros mas" )  say ( "Disfrutalos!" )  item.remove ( "50132", 1 )  end  end   --CANJES--  when 50115.use begin   say_title ( "Canjea tus puntos logro" )local actual_achievement_points = pc . getqf ( "achievement_points" )local p = select ( "Caballo armado - 5 puntos" , "Caballo militar - 30 puntos" , "Bonus mediohumanos +20% por 30min - 50 puntos" , "Bonus HP +5000 por 30min - 60 puntos" , "Armadura divina - 400 logros" , "Mascota de ataque - 30 puntos" , "Mas" )if p == 1 thenif pc . getqf ( "achievement_points" ) <= 4 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 5 )say ( "Has recibido un caballo armado" )horse . set_level ( "11" )horse . unsummon ( )horse . summon ( )pc . give_item2 ( "50052" , 1 )returnelseif p == 2 thenif pc . getqf ( "achievement_points" ) <= 29 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 30 )say ( "Has recibido un caballo militar" )horse . set_level ( "21" )horse . unsummon ( )horse . summon ( )pc . give_item2 ( "50053" , 1 )returnelseif p == 3 thenif pc . getqf ( "achievement_points" ) <= 49 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 50 )say ( "Has recibido 20% fuerza contra mediohumanos por 30min" )affect . add_collect ( apply . ATTBONUS_HUMAN , 20 , 60 * 30 )returnelseif p == 4 thenif pc . getqf ( "achievement_points" ) <= 59 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 60 )say ( "Has recibido 5000hp por 30min" )affect . add_collect ( apply . MAX_HP , 5000 , 60 * 30 )returnelseif p == 5 thenif pc. getqf ( "achievement_points" ) <= 399 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 399 )local armor = select ( "Armd. divina (G)" , "Armd. divina (N)" , "Armd. divina (S)" , "Armd. divina (C)" )if armor == 1 thensay ( "Has recibido la Armadura divina" )pc . give_item2 ( "42080" , 1 )returnelseif armor == 2 thensay ( "Has recibido la Armadura divina" )pc . give_item2 ( "44080" , 1 )returnelseif armor == 3 thensay ( "Has recibido la Armadura divina" )pc . give_item2 ( "46080" , 1 )returnelseif armor == 4 thensay ( "Has recibido la Armadura divina" )pc . give_item2 ( "48080" , 1 )returnendelseif p == 6 thenif pc . getqf ( "achievement_points" ) <= 29 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 29 )say ( "Has recibido la mascota de ataque" )pc . give_item2 ( "30312" , 1 )returnelseif p == 7 thenlocal p2 = select ( "Leon Blanco - 40 puntos" , "Anillo experiencia - 5 puntos" , "Fuerza monstruo +20% 30min - 15 puntos" , "Velocidad movimiento +25% 30min - 10 puntos" , "Mascota de defensa - 25 puntos" , "Cuantos logros tengo?" , "Cerrar" )if p2 == 1 thenif pc . getqf ( "achievement_points" ) <= 39 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 40 )say ( "Has recibido un leon blanco disfrtualo, no se acaba" )pc . give_item2 ( "50110" , 1 )returnelseif p2 == 2 thenif pc . getqf ( "achievement_points" ) <= 4 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 5 )say ( "Disfruta de un anillo de experiencia" )pc . give_item2 ( "71015" , 1 )returnelseif p2 == 3 thenif pc . getqf ( "achievement_points" ) <= 14 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 15 )say ( "Has recibido 20% fuerza monstruo por 30min" )affect . add_collect ( apply . ATTBONUS_MONSTER , 20 , 60 * 30 )returnelseif p2 == 4 thenif pc . getqf ( "achievement_points" ) <= 9 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 10 )say ( "Has recibido 25% velo.movimiento por 30min" )affect . add_collect ( apply . MOV_SPEED , 25 , 60 * 30 )returnelseif p2 == 5 thenif pc . getqf ( "achievement_points" ) <= 24 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 25 )say ( "Has recibido la mascota de defensa" )pc . give_item2 ( "71124" , 1 )returnelseif p2 == 6 thenlocal Reward = 0local Achievement = "Ver_tus_logros"local killcount = pc.getqf("logros")local actual_achievement_points = pc.getqf("achievement_points")pc.setqf("achievement_points", actual_achievement_points + Reward)cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")elseif p2 == 7 thenreturnendendend  --METINS  when 8013.kill begin   local Reward = 8   local Achievement = "Metin_muerte"   local killcount = pc.getqf("8013")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("8013", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 8016.kill begin   local Reward = 5   local Achievement = "Metin_demonio"   local killcount = pc.getqf("8016")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("8016", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 8012.kill begin   local Reward = 6   local Achievement = "Metin_caida"   local killcount = pc.getqf("8012")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("8012", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 8015.kill begin   local Reward = 5   local Achievement = "Metin_dureza"   local killcount = pc.getqf("8015")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("8015", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 8026.kill begin   local Reward = 2   local Achievement = "Metin_85"   local killcount = pc.getqf("8026")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("8026", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 8027.kill begin   local Reward = 3   local Achievement = "Metin_90"   local killcount = pc.getqf("8027")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("8027", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end   --LEVELS   when login or levelup with pc.get_level() >= 15 and pc.getqf("Level15") != 1 begin   local Reward = 2   local Achievement = "Level_15"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level15", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end  when login or levelup with pc.get_level() >= 30 and pc.getqf("Level30") != 1 begin   local Reward = 2   local Achievement = "Level_30"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level30", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end  when login or levelup with pc.get_level() >= 40 and pc.getqf("Level40") != 1 begin   local Reward = 3   local Achievement = "Level_40"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level40", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end  when login or levelup with pc.get_level() >= 50 and pc.getqf("Level50") != 1 begin   local Reward = 4   local Achievement = "Level_50"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level50", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end  when login or levelup with pc.get_level() >= 75 and pc.getqf("Level75") != 1 begin   local Reward = 5   local Achievement = "Level_75"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level75", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end  when login or levelup with pc.get_level() >= 85 and pc.getqf("Level85") != 1 begin   local Reward = 10   local Achievement = "Level_85"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level85", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end  when login or levelup with pc.get_level() >= 90 and pc.getqf("Level90") != 1 begin   local Reward = 25   local Achievement = "Level_90"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level90", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end  when login or levelup with pc.get_level() >= 95 and pc.getqf("Level95") != 1 begin   local Reward = 50   local Achievement = "Level_95"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level95", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end  when login or levelup with pc.get_level() >= 99 and pc.getqf("Level99") != 1 begin   local Reward = 100   local Achievement = "Level_99"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level99", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end     --CHECK EQUIP  when login begin   loop_timer("check_eq", 10)  end  when check_eq.timer begin   local russi = pc.get_armor()   local waffe = pc.get_weapon()   local actual_achievement_points = pc.getqf("achievement_points")   local Reward = 5   if russi==11299 and pc.getqf("achievement_ssp") != 1 then    pc.setqf("achievement_ssp", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."")   elseif russi==11499 and pc.getqf("achievement_swa") != 1 then    pc.setqf("achievement_swa", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."")   elseif russi==11699 and pc.getqf("achievement_mpp") != 1 then    pc.setqf("achievement_mpp", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."")   elseif russi==11899 and pc.getqf("achievement_sk") != 1 then    pc.setqf("achievement_sk", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."")   elseif waffe==189 and pc.getqf("achievement_gifti") != 1 then    pc.setqf("achievement_gifti", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Giftschwert+9%".. actual_achievement_points + Reward .."")   elseif waffe==199 and pc.getqf("achievement_lowenschw.") != 1 then    pc.setqf("achievement_lowenschw.", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Löwenschwert+9%".. actual_achievement_points + Reward .."")   elseif waffe==5129 and pc.getqf("achievement_orchiglocke") != 1 then    pc.setqf("achievement_orchiglocke", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Orchideenglocke+9%".. actual_achievement_points + Reward .."")   elseif waffe==2179 and pc.getqf("achievement_krahenstahl") != 1 then    pc.setqf("achievement_krahenstahl", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Krähenstahlbogen+9%".. actual_achievement_points + Reward .."")   elseif waffe==1139 and pc.getqf("achievement_teufelsflugenchak") != 1 then    pc.setqf("achievement_teufelsflugenchak", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Teufelsflügel-Chakram+9%".. actual_achievement_points + Reward .."")   elseif waffe==3169 and pc.getqf("achievement_Grolli") != 1 then    pc.setqf("achievement_Grolli", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Grollschwert+9%".. actual_achievement_points + Reward .."")   end      endendend
 
Y para que no os quedeis simplemente metiendo la quest y ya ta os voi a explicar como funciona:
 
1 - Lo mas importante de los logros es que cuando alcanzas uno (por ejemplo matar al jefe orco) te suma puntos mediante un pc.setqf:
 
when 691.kill beginlocal Reward = 2pc.setqf("achievement_points", actual_achievement_points + Reward)
 
Como veis ahí al jefe orco (mob de id 691) le asigna los puntos que vale con local Reward = 2 y luego te suma 2 puntos con el pc.setqf("achievement_points", actual_achievement_points + Reward (el reward en este caso seria un +2).
 
Por lo tanto si quereis añadir otro mob a la lista de logros solo tendreis que hacer lo siguiente:
 
when idmob.kill begin            local Reward = puntos -- Poneis cuantos puntos quereis que os de            local Achievement = "Nombre del mob que saldra en el cliente"            local killcount = pc.getqf("idmob")  -- Se usa para que el juego lleve la cuenta de cuantas veces lo mataste            local actual_achievement_points = pc.getqf("achievement_points") -- Calcula cuantos puntos tenes            pc.setqf("693", killcount + 1) -- Aqui os suma 1 al numero de ese mob que llevais            pc.setqf("achievement_points", actual_achievement_points + Reward) -- aqui te suma tus puntos por matarlo            cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."") -- Con esto te saldra la ventana en el cliente diciendo que lo mataste y cuantos puntos tenes        end
 
 
 
 
--Item shop---
 
when 50129.use begin
say_title ( "Obten puntos logro")
local actual_achievement_points = pc . getqf ( "achievement_points" )
local p = select ( "Obten 200 puntos logro" ) 
if p == 1 then
local actual_achievement_points = pc . getqf ( "achievement_points" ) 
pc . setqf ( "achievement_points" , actual_achievement_points + 200 )
say ( "Enorabuena tienes 200 logros mas" )
say ( "Disfrutalos!" )
item.remove ( "50129", 1 )
end
end
 
when 50130.use begin
say_title ( "Obten puntos logro")
local actual_achievement_points = pc . getqf ( "achievement_points" )
local p = select ( "Obten 100 puntos logro" ) 
if p == 1 then
local actual_achievement_points = pc . getqf ( "achievement_points" ) 
pc . setqf ( "achievement_points" , actual_achievement_points + 100 )
say ( "Enorabuena tienes 100 logros mas" )
say ( "Disfrutalos!" )
item.remove ( "50130", 1 )
end
end
 
when 50131.use begin
say_title ( "Obten puntos logro")
local actual_achievement_points = pc . getqf ( "achievement_points" )
local p = select ( "Obten 50 puntos logro" ) 
if p == 1 then
local actual_achievement_points = pc . getqf ( "achievement_points" ) 
pc . setqf ( "achievement_points" , actual_achievement_points + 50 )
say ( "Enorabuena tienes 50 logros mas" )
say ( "Disfrutalos!" )
item.remove ( "50131", 1 )
end
end
 
when 50132.use begin
say_title ( "Obten puntos logro")
local actual_achievement_points = pc . getqf ( "achievement_points" )
local p = select ( "Obten 25 puntos logro" ) 
if p == 1 then
local actual_achievement_points = pc . getqf ( "achievement_points" ) 
pc . setqf ( "achievement_points" , actual_achievement_points + 25 )
say ( "Enorabuena tienes 25 logros mas" )
say ( "Disfrutalos!" )
item.remove ( "50132", 1 )
end
end
 
 
 
--CANJES--
when 50115.use begin
say_title ( "Canjea tus puntos logro" ) 
local actual_achievement_points = pc . getqf ( "achievement_points" ) 
local p = select ( "Caballo armado - 5 puntos" , "Caballo militar - 30 puntos" , "Bonus mediohumanos +20% por 30min - 50 puntos" , "Bonus HP +5000 por 30min - 60 puntos" , "Armadura divina - 400 logros" , "Mascota de ataque - 30 puntos" , "Mas" ) 
if p == 1 then 
if pc . getqf ( "achievement_points" ) <= 4 then 
say ( "Lo siento necesitas mas puntos" ) 
return
end 
local actual_achievement_points = pc . getqf ( "achievement_points" ) 
pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) 
say ( "Has recibido un caballo armado" ) 
horse . set_level ( "11" ) 
horse . unsummon ( ) 
horse . summon ( ) 
pc . give_item2 ( "50052" , 1 ) 
return 
elseif p == 2 then 
if pc . getqf ( "achievement_points" ) <= 29 then 
say ( "Lo siento necesitas mas puntos" ) 
return
end 
local actual_achievement_points = pc . getqf ( "achievement_points" ) 
pc . setqf ( "achievement_points" , actual_achievement_points - 30 ) 
say ( "Has recibido un caballo militar" ) 
horse . set_level ( "21" ) 
horse . unsummon ( ) 
horse . summon ( ) 
pc . give_item2 ( "50053" , 1 ) 
return 
elseif p == 3 then 
if pc . getqf ( "achievement_points" ) <= 49 then 
say ( "Lo siento necesitas mas puntos" ) 
return
end 
local actual_achievement_points = pc . getqf ( "achievement_points" ) 
pc . setqf ( "achievement_points" , actual_achievement_points - 50 ) 
say ( "Has recibido 20% fuerza contra mediohumanos por 30min" ) 
affect . add_collect ( apply . ATTBONUS_HUMAN , 20 , 60 * 30 ) 
return 
elseif p == 4 then 
if pc . getqf ( "achievement_points" ) <= 59 then 
say ( "Lo siento necesitas mas puntos" ) 
return
end 
local actual_achievement_points = pc . getqf ( "achievement_points" ) 
pc . setqf ( "achievement_points" , actual_achievement_points - 60 ) 
say ( "Has recibido 5000hp por 30min" ) 
affect . add_collect ( apply . MAX_HP , 5000 , 60 * 30 ) 
return 
elseif p == 5 then
if pc. getqf ( "achievement_points" ) <= 399 then
say ( "Lo siento necesitas mas puntos" )
return
end
local actual_achievement_points = pc . getqf ( "achievement_points" ) 
pc . setqf ( "achievement_points" , actual_achievement_points - 399 ) 
local armor = select ( "Armd. divina (G)" , "Armd. divina (N)" , "Armd. divina (S)" , "Armd. divina ©" )
if armor == 1 then
say ( "Has recibido la Armadura divina" )
pc . give_item2 ( "42080" , 1 )
return
elseif armor == 2 then
say ( "Has recibido la Armadura divina" )
pc . give_item2 ( "44080" , 1 )
return
elseif armor == 3 then
say ( "Has recibido la Armadura divina" )
pc . give_item2 ( "46080" , 1 )
return
elseif armor == 4 then 
say ( "Has recibido la Armadura divina" )
pc . give_item2 ( "48080" , 1 )
return
end
elseif p == 6 then
if pc . getqf ( "achievement_points" ) <= 29 then 
say ( "Lo siento necesitas mas puntos" ) 
return
end 
local actual_achievement_points = pc . getqf ( "achievement_points" ) 
pc . setqf ( "achievement_points" , actual_achievement_points - 29 )
say ( "Has recibido la mascota de ataque" ) 
pc . give_item2 ( "30312" , 1 ) 
return
elseif p == 7 then 
local p2 = select ( "Leon Blanco - 40 puntos" , "Anillo experiencia - 5 puntos" , "Fuerza monstruo +20% 30min - 15 puntos" , "Velocidad movimiento +25% 30min - 10 puntos" , "Mascota de defensa - 25 puntos" , "Cuantos logros tengo?" , "Cerrar" ) 
if p2 == 1 then 
if pc . getqf ( "achievement_points" ) <= 39 then 
say ( "Lo siento necesitas mas puntos" ) 
return
end 
local actual_achievement_points = pc . getqf ( "achievement_points" ) 
pc . setqf ( "achievement_points" , actual_achievement_points - 40 ) 
say ( "Has recibido un leon blanco disfrtualo, no se acaba" ) 
pc . give_item2 ( "50110" , 1 ) 
return 
elseif p2 == 2 then 
if pc . getqf ( "achievement_points" ) <= 4 then 
say ( "Lo siento necesitas mas puntos" ) 
return
end 
local actual_achievement_points = pc . getqf ( "achievement_points" ) 
pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) 
say ( "Disfruta de un anillo de experiencia" ) 
pc . give_item2 ( "71015" , 1 ) 
return 
elseif p2 == 3 then 
if pc . getqf ( "achievement_points" ) <= 14 then 
say ( "Lo siento necesitas mas puntos" ) 
return
end 
local actual_achievement_points = pc . getqf ( "achievement_points" ) 
pc . setqf ( "achievement_points" , actual_achievement_points - 15 ) 
say ( "Has recibido 20% fuerza monstruo por 30min" ) 
affect . add_collect ( apply . ATTBONUS_MONSTER , 20 , 60 * 30 ) 
return 
elseif p2 == 4 then 
if pc . getqf ( "achievement_points" ) <= 9 then 
say ( "Lo siento necesitas mas puntos" ) 
return
end 
local actual_achievement_points = pc . getqf ( "achievement_points" ) 
pc . setqf ( "achievement_points" , actual_achievement_points - 10 ) 
say ( "Has recibido 25% velo.movimiento por 30min" ) 
affect . add_collect ( apply . MOV_SPEED , 25 , 60 * 30 ) 
return 
elseif p2 == 5 then 
if pc . getqf ( "achievement_points" ) <= 24 then 
say ( "Lo siento necesitas mas puntos" ) 
return
end 
local actual_achievement_points = pc . getqf ( "achievement_points" ) 
pc . setqf ( "achievement_points" , actual_achievement_points - 25 ) 
say ( "Has recibido la mascota de defensa" ) 
pc . give_item2 ( "71124" , 1 ) 
return 
elseif p2 == 6 then 
local Reward = 0
local Achievement = "Ver_tus_logros"
local killcount = pc.getqf("logros")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
elseif p2 == 7 then 
return 
end
end
end
 
--METINS
when 8013.kill begin
local Reward = 8
local Achievement = "Metin_muerte"
local killcount = pc.getqf("8013")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("8013", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 8016.kill begin
local Reward = 5
local Achievement = "Metin_demonio"
local killcount = pc.getqf("8016")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("8016", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 8012.kill begin
local Reward = 6
local Achievement = "Metin_caida"
local killcount = pc.getqf("8012")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("8012", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 8015.kill begin
local Reward = 5
local Achievement = "Metin_dureza"
local killcount = pc.getqf("8015")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("8015", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 8026.kill begin
local Reward = 2
local Achievement = "Metin_85"
local killcount = pc.getqf("8026")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("8026", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
when 8027.kill begin
local Reward = 3
local Achievement = "Metin_90"
local killcount = pc.getqf("8027")
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("8027", killcount + 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
end
 
--LEVELS
 
when login or levelup with pc.get_level() >= 15 and pc.getqf("Level15") != 1 begin
local Reward = 2
local Achievement = "Level_15"
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("Level15", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")
end
when login or levelup with pc.get_level() >= 30 and pc.getqf("Level30") != 1 begin
local Reward = 2
local Achievement = "Level_30"
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("Level30", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")
end
when login or levelup with pc.get_level() >= 40 and pc.getqf("Level40") != 1 begin
local Reward = 3
local Achievement = "Level_40"
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("Level40", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")
end
when login or levelup with pc.get_level() >= 50 and pc.getqf("Level50") != 1 begin
local Reward = 4
local Achievement = "Level_50"
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("Level50", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")
end
when login or levelup with pc.get_level() >= 75 and pc.getqf("Level75") != 1 begin
local Reward = 5
local Achievement = "Level_75"
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("Level75", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")
end
when login or levelup with pc.get_level() >= 85 and pc.getqf("Level85") != 1 begin
local Reward = 10
local Achievement = "Level_85"
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("Level85", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")
end
when login or levelup with pc.get_level() >= 90 and pc.getqf("Level90") != 1 begin
local Reward = 25
local Achievement = "Level_90"
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("Level90", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")
end
when login or levelup with pc.get_level() >= 95 and pc.getqf("Level95") != 1 begin
local Reward = 50
local Achievement = "Level_95"
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("Level95", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")
end
when login or levelup with pc.get_level() >= 99 and pc.getqf("Level99") != 1 begin
local Reward = 100
local Achievement = "Level_99"
local actual_achievement_points = pc.getqf("achievement_points")
pc.setqf("Level99", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")
end
 
--CHECK EQUIP
when login begin
loop_timer("check_eq", 10)
end
when check_eq.timer begin
local russi = pc.get_armor()
local waffe = pc.get_weapon()
local actual_achievement_points = pc.getqf("achievement_points")
local Reward = 5
if russi==11299 and pc.getqf("achievement_ssp") != 1 then
pc.setqf("achievement_ssp", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."")
elseif russi==11499 and pc.getqf("achievement_swa") != 1 then
pc.setqf("achievement_swa", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."")
elseif russi==11699 and pc.getqf("achievement_mpp") != 1 then
pc.setqf("achievement_mpp", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."")
elseif russi==11899 and pc.getqf("achievement_sk") != 1 then
pc.setqf("achievement_sk", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."")
elseif waffe==189 and pc.getqf("achievement_gifti") != 1 then
pc.setqf("achievement_gifti", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement Giftschwert+9%".. actual_achievement_points + Reward .."")
elseif waffe==199 and pc.getqf("achievement_lowenschw.") != 1 then
pc.setqf("achievement_lowenschw.", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement Löwenschwert+9%".. actual_achievement_points + Reward .."")
elseif waffe==5129 and pc.getqf("achievement_orchiglocke") != 1 then
pc.setqf("achievement_orchiglocke", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement Orchideenglocke+9%".. actual_achievement_points + Reward .."")
elseif waffe==2179 and pc.getqf("achievement_krahenstahl") != 1 then
pc.setqf("achievement_krahenstahl", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement Krähenstahlbogen+9%".. actual_achievement_points + Reward .."")
elseif waffe==1139 and pc.getqf("achievement_teufelsflugenchak") != 1 then
pc.setqf("achievement_teufelsflugenchak", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement Teufelsflügel-Chakram+9%".. actual_achievement_points + Reward .."")
elseif waffe==3169 and pc.getqf("achievement_Grolli") != 1 then
pc.setqf("achievement_Grolli", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement Grollschwert+9%".. actual_achievement_points + Reward .."")
end    
end
end
end
-------------------------------------
 
Buenasss zoneros y zoneras, hoy os voi a explicar como implementar en vuestro servidores el sistema de logros que meti en Metin2Extasis, hasta con mi querida quest de canjes xd (aunque en elite hay una mas completa la mia es mas sencillita).
 
1 - Qué es el sistema de logros?
 
Este sistema consiste en una quest y una edicion del cliente que hace que cada vez que un jugador alcance un objetivo concreto, que tu fijas en la quest, le da los puntos correspondientes al logro que haya alcanzando. Si un jugador acumula puntos luego los puede canjear por premios.
 
2 - Como meto yo esto?
 
El sistema de logros consiste en una quest y en editar unos archivos en el cliente, así que vamos a ir paso por paso:
 
 
2.1: Parte del cliente:
 
*Todos los archivos que tengais que meter estan en esta descarga:
 
 
 
 
 
2.1.1 - Que archivos vamos a editar?  En el cliente editaremos los siguientes archivos:
 
-Root: dentro de el los archivos game.py y uiachievement.py (este lo meteremos nosotros).
-Etc: donde meteremos los archivos achievement_small.sub y achievement_small.dds
-Uiscript: aqui meteremos el archivo achievementboard.py y warteschleife.py
 
2.1.2 - Manos a la obra, a implementar!
 
 
2.1.2.1: Primero empezaremos con el root. Decompilad vuestro root,  abrid el archivo game.py y buscad esto:
 
def __ServerCommand_Build(self):
 
Una vez esteis ahi, le dais a enter y pegais esto:
 
# Achievement System START   "achievement"   : self.__AchievementTest,   "achievementpoints"   : self.__ShowAchievementPoints,   # Achievement System END
 
Quedandoos asi:
 
(Foto)
 
(Las -------------------- las pongo solo para que distingais la parte que acabamos de añadir, no hay que ponerlas)
 
Ahora vais al final del archivo, le dais a enter para dejar algo de espacio y pegais esto:
 
# Achievement System STARTdef __ShowAchievementPoints(self, points):  import uiAchievement  import uiTaskbar  self.uiAchievement = uiAchievement.AchievementDialog()  uiAchievement.AchievementPoints = int(points) def __AchievementTest(self, archivement):  import uiAchievement  self.uiAchievement = uiAchievement.AchievementDialog()  self.uiAchievement.Show(1, str(archivement))  self.uiAchievement.SetTop()# Achievement System END
 
Quedará asi:
 
(Foto)
 
 
*Siguiente paso: metemos en la carpeta root el archivo uiachievement.py y lo añadimos al xml
 
<File archivedPath="uiachievement.py" type="2"><![CDATA[Sourceuiachievement.py]]></File>
 
Listo el root! Sigamos con el etc.
 
 
 
2.1.2.2: Decompilamos nuestro etc, vamos a la carpeta ymir work/ui y metemos el achievement_small.dds. Despues vamos a la carpeta ymir work/ui/public y metemos el achievement_small.sub. Por ultimo agregamos ambos al xml:
 
<File archivedPath="d:/ymir work/ui/public/achievement_small.sub" type="0"><![CDATA[Sourceymir workuipublicachievement_small.sub]]></File><File archivedPath="d:/ymir work/ui/achievement_small.dds" type="0"><![CDATA[Sourceymir workuiachievement_small.dds]]></File>
 
2.1.2.3: El ultimo paso en el cliente es decompilar nuestro uiscript y meter el archivo achievementboard.py y el warteschleife.py: en la carpeta. Los añadimos al xml y compilamos:
 
<File archivedPath="uiscript/achievementboard.py" type="2"><![CDATA[Sourceuiscriptachievementboard.py]]></File><File archivedPath="uiscript/warteschleife.py" type="2"><![CDATA[Sourceuiscriptwarteschleife.py]]></File>
 
Y listo ya tenemos todo lo del cliente :D
 
 
2.1: Parte del server:
 
Bueno ahora ya solo nos queda meter nuestra quest del sistema de logros en la carpeta /home/game/quest (o la ruta en la que tengais la carpeta quest). Aqui os dejo la mia, con los nombres en español, algunos logros añadidos, canje, un item que te da logros (pa quien lo quiera xd), una opcion que te dice tus logros, etc
 
quest logros_keko beginstate start begin  --LOGIN  when login begin   local actual_achievement_points = pc.getqf("achievement_points")   if pc.getqf("firstlogin") != 1 then    local Reward = 1    pc.setqf("firstlogin", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Primer_login%".. actual_achievement_points + Reward .."")   else    cmdchat("achievementpoints ".. pc.getqf("achievement_points"))   end  end   --BOSSE  when 691.kill begin   local Reward = 2   local Achievement = "Jefe_Orco"   local killcount = pc.getqf("691")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("691", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 791.kill begin   local Reward = 3   local Achievement = "Lider_esoterico"   local killcount = pc.getqf("791")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("791", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 2493.kill begin   local Reward = 100   local Achievement = "Dragon_azul"   local killcount = pc.getqf("2493")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("2493", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 2492.kill begin   local Reward = 20   local Achievement = "Comandante_Setaou"   local killcount = pc.getqf("2492")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("2492", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 1091.kill begin   local Reward = 5   local Achievement = "Rey_demonio"   local killcount = pc.getqf("1091")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("1091", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 2597.kill begin   local Reward = 20   local Achievement = "Muerte"   local killcount = pc.getqf("2597")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("2597", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 1192.kill begin   local Reward = 12   local Achievement = "Bruja_de_hielo"   local killcount = pc.getqf("1192")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("1192", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 1304.kill begin   local Reward = 5   local Achievement = "Tigre_fantasma"   local killcount = pc.getqf("1304")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("1304", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 1901.kill begin   local Reward = 4   local Achievement = "9_colas"   local killcount = pc.getqf("1901")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("1901", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 2091.kill begin   local Reward = 3   local Achievement = "Reina_araña"   local killcount = pc.getqf("2091")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("2091", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 2206.kill begin   local Reward = 4   local Achievement = "Jefe_logros"   local killcount = pc.getqf("2206")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("2206", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 2191.kill begin   local Reward = 5   local Achievement = "Tortuga_del_desierto"   local killcount = pc.getqf("2191")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("2191", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 692.kill begin   local Reward = 3   local Achievement = "Orco_elite"   local killcount = pc.getqf("692")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("692", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 693.kill begin   local Reward = 5   local Achievement = "Orco_renacido"   local killcount = pc.getqf("693")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("693", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end   --Item shop---  when 50129.use begin  say_title ( "Obten puntos logro")  local actual_achievement_points = pc . getqf ( "achievement_points" )  local p = select ( "Obten 200 puntos logro" )  if p == 1 then  local actual_achievement_points = pc . getqf ( "achievement_points" )  pc . setqf ( "achievement_points" , actual_achievement_points + 200 )  say ( "Enorabuena tienes 200 logros mas" )  say ( "Disfrutalos!" )  item.remove ( "50129", 1 )  end  end   when 50130.use begin  say_title ( "Obten puntos logro")  local actual_achievement_points = pc . getqf ( "achievement_points" )  local p = select ( "Obten 100 puntos logro" )  if p == 1 then  local actual_achievement_points = pc . getqf ( "achievement_points" )  pc . setqf ( "achievement_points" , actual_achievement_points + 100 )  say ( "Enorabuena tienes 100 logros mas" )  say ( "Disfrutalos!" )  item.remove ( "50130", 1 )  end  end   when 50131.use begin  say_title ( "Obten puntos logro")  local actual_achievement_points = pc . getqf ( "achievement_points" )  local p = select ( "Obten 50 puntos logro" )  if p == 1 then  local actual_achievement_points = pc . getqf ( "achievement_points" )  pc . setqf ( "achievement_points" , actual_achievement_points + 50 )  say ( "Enorabuena tienes 50 logros mas" )  say ( "Disfrutalos!" )  item.remove ( "50131", 1 )  end  end  when 50132.use begin  say_title ( "Obten puntos logro")  local actual_achievement_points = pc . getqf ( "achievement_points" )  local p = select ( "Obten 25 puntos logro" )  if p == 1 then  local actual_achievement_points = pc . getqf ( "achievement_points" )  pc . setqf ( "achievement_points" , actual_achievement_points + 25 )  say ( "Enorabuena tienes 25 logros mas" )  say ( "Disfrutalos!" )  item.remove ( "50132", 1 )  end  end  --CANJES--  when 50115.use begin   say_title ( "Canjea tus puntos logro" )local actual_achievement_points = pc . getqf ( "achievement_points" )local p = select ( "Caballo armado - 5 puntos" , "Caballo militar - 30 puntos" , "Bonus mediohumanos +20% por 30min - 50 puntos" , "Bonus HP +5000 por 30min - 60 puntos" , "Armadura divina - 400 logros" , "Mascota de ataque - 30 puntos" , "Mas" )if p == 1 thenif pc . getqf ( "achievement_points" ) <= 4 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 5 )say ( "Has recibido un caballo armado" )horse . set_level ( "11" )horse . unsummon ( )horse . summon ( )pc . give_item2 ( "50052" , 1 )returnelseif p == 2 thenif pc . getqf ( "achievement_points" ) <= 29 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 30 )say ( "Has recibido un caballo militar" )horse . set_level ( "21" )horse . unsummon ( )horse . summon ( )pc . give_item2 ( "50053" , 1 )returnelseif p == 3 thenif pc . getqf ( "achievement_points" ) <= 49 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 50 )say ( "Has recibido 20% fuerza contra mediohumanos por 30min" )affect . add_collect ( apply . ATTBONUS_HUMAN , 20 , 60 * 30 )returnelseif p == 4 thenif pc . getqf ( "achievement_points" ) <= 59 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 60 )say ( "Has recibido 5000hp por 30min" )affect . add_collect ( apply . MAX_HP , 5000 , 60 * 30 )returnelseif p == 5 thenif pc. getqf ( "achievement_points" ) <= 399 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 399 )local armor = select ( "Armd. divina (G)" , "Armd. divina (N)" , "Armd. divina (S)" , "Armd. divina (C)" )if armor == 1 thensay ( "Has recibido la Armadura divina" )pc . give_item2 ( "42080" , 1 )returnelseif armor == 2 thensay ( "Has recibido la Armadura divina" )pc . give_item2 ( "44080" , 1 )returnelseif armor == 3 thensay ( "Has recibido la Armadura divina" )pc . give_item2 ( "46080" , 1 )returnelseif armor == 4 thensay ( "Has recibido la Armadura divina" )pc . give_item2 ( "48080" , 1 )returnendelseif p == 6 thenif pc . getqf ( "achievement_points" ) <= 29 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 29 )say ( "Has recibido la mascota de ataque" )pc . give_item2 ( "30312" , 1 )returnelseif p == 7 thenlocal p2 = select ( "Leon Blanco - 40 puntos" , "Anillo experiencia - 5 puntos" , "Fuerza monstruo +20% 30min - 15 puntos" , "Velocidad movimiento +25% 30min - 10 puntos" , "Mascota de defensa - 25 puntos" , "Cuantos logros tengo?" , "Cerrar" )if p2 == 1 thenif pc . getqf ( "achievement_points" ) <= 39 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 40 )say ( "Has recibido un leon blanco disfrtualo, no se acaba" )pc . give_item2 ( "50110" , 1 )returnelseif p2 == 2 thenif pc . getqf ( "achievement_points" ) <= 4 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 5 )say ( "Disfruta de un anillo de experiencia" )pc . give_item2 ( "71015" , 1 )returnelseif p2 == 3 thenif pc . getqf ( "achievement_points" ) <= 14 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 15 )say ( "Has recibido 20% fuerza monstruo por 30min" )affect . add_collect ( apply . ATTBONUS_MONSTER , 20 , 60 * 30 )returnelseif p2 == 4 thenif pc . getqf ( "achievement_points" ) <= 9 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 10 )say ( "Has recibido 25% velo.movimiento por 30min" )affect . add_collect ( apply . MOV_SPEED , 25 , 60 * 30 )returnelseif p2 == 5 thenif pc . getqf ( "achievement_points" ) <= 24 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 25 )say ( "Has recibido la mascota de defensa" )pc . give_item2 ( "71124" , 1 )returnelseif p2 == 6 thenlocal Reward = 0local Achievement = "Ver_tus_logros"local killcount = pc.getqf("logros")local actual_achievement_points = pc.getqf("achievement_points")pc.setqf("achievement_points", actual_achievement_points + Reward)cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")elseif p2 == 7 thenreturnendendend  --METINS  when 8013.kill begin   local Reward = 8   local Achievement = "Metin_muerte"   local killcount = pc.getqf("8013")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("8013", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 8016.kill begin   local Reward = 5   local Achievement = "Metin_demonio"   local killcount = pc.getqf("8016")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("8016", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 8012.kill begin   local Reward = 6   local Achievement = "Metin_caida"   local killcount = pc.getqf("8012")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("8012", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 8015.kill begin   local Reward = 5   local Achievement = "Metin_dureza"   local killcount = pc.getqf("8015")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("8015", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 8026.kill begin   local Reward = 2   local Achievement = "Metin_85"   local killcount = pc.getqf("8026")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("8026", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  when 8027.kill begin   local Reward = 3   local Achievement = "Metin_90"   local killcount = pc.getqf("8027")   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("8027", killcount + 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)   cmdchat("achievement ".. Achievement .."_destruido#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")  end  --LEVELS  when login or levelup with pc.get_level() >= 15 and pc.getqf("Level15") != 1 begin   local Reward = 2   local Achievement = "Level_15"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level15", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end  when login or levelup with pc.get_level() >= 30 and pc.getqf("Level30") != 1 begin   local Reward = 2   local Achievement = "Level_30"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level30", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end  when login or levelup with pc.get_level() >= 40 and pc.getqf("Level40") != 1 begin   local Reward = 3   local Achievement = "Level_40"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level40", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end  when login or levelup with pc.get_level() >= 50 and pc.getqf("Level50") != 1 begin   local Reward = 4   local Achievement = "Level_50"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level50", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end  when login or levelup with pc.get_level() >= 75 and pc.getqf("Level75") != 1 begin   local Reward = 5   local Achievement = "Level_75"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level75", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end  when login or levelup with pc.get_level() >= 85 and pc.getqf("Level85") != 1 begin   local Reward = 10   local Achievement = "Level_85"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level85", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end  when login or levelup with pc.get_level() >= 90 and pc.getqf("Level90") != 1 begin   local Reward = 25   local Achievement = "Level_90"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level90", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end  when login or levelup with pc.get_level() >= 95 and pc.getqf("Level95") != 1 begin   local Reward = 50   local Achievement = "Level_95"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level95", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end  when login or levelup with pc.get_level() >= 99 and pc.getqf("Level99") != 1 begin   local Reward = 100   local Achievement = "Level_99"   local actual_achievement_points = pc.getqf("achievement_points")   pc.setqf("Level99", 1)   pc.setqf("achievement_points", actual_achievement_points + Reward)     cmdchat("achievement ".. Achievement .."_alcanzado%".. actual_achievement_points + Reward .."")  end    --CHECK EQUIP  when login begin   loop_timer("check_eq", 10)  end  when check_eq.timer begin   local russi = pc.get_armor()   local waffe = pc.get_weapon()   local actual_achievement_points = pc.getqf("achievement_points")   local Reward = 5   if russi==11299 and pc.getqf("achievement_ssp") != 1 then    pc.setqf("achievement_ssp", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."")   elseif russi==11499 and pc.getqf("achievement_swa") != 1 then    pc.setqf("achievement_swa", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."")   elseif russi==11699 and pc.getqf("achievement_mpp") != 1 then    pc.setqf("achievement_mpp", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."")   elseif russi==11899 and pc.getqf("achievement_sk") != 1 then    pc.setqf("achievement_sk", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Armadura negra+9%".. actual_achievement_points + Reward .."")   elseif waffe==189 and pc.getqf("achievement_gifti") != 1 then    pc.setqf("achievement_gifti", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Giftschwert+9%".. actual_achievement_points + Reward .."")   elseif waffe==199 and pc.getqf("achievement_lowenschw.") != 1 then    pc.setqf("achievement_lowenschw.", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Löwenschwert+9%".. actual_achievement_points + Reward .."")   elseif waffe==5129 and pc.getqf("achievement_orchiglocke") != 1 then    pc.setqf("achievement_orchiglocke", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Orchideenglocke+9%".. actual_achievement_points + Reward .."")   elseif waffe==2179 and pc.getqf("achievement_krahenstahl") != 1 then    pc.setqf("achievement_krahenstahl", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Krähenstahlbogen+9%".. actual_achievement_points + Reward .."")   elseif waffe==1139 and pc.getqf("achievement_teufelsflugenchak") != 1 then    pc.setqf("achievement_teufelsflugenchak", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Teufelsflügel-Chakram+9%".. actual_achievement_points + Reward .."")   elseif waffe==3169 and pc.getqf("achievement_Grolli") != 1 then    pc.setqf("achievement_Grolli", 1)    pc.setqf("achievement_points", actual_achievement_points + Reward)    cmdchat("achievement Grollschwert+9%".. actual_achievement_points + Reward .."")   end      endendend
 
Y para que no os quedeis simplemente metiendo la quest y ya ta os voi a explicar como funciona:
 
1 - Lo mas importante de los logros es que cuando alcanzas uno (por ejemplo matar al jefe orco) te suma puntos mediante un pc.setqf:
 
when 691.kill beginlocal Reward = 2pc.setqf("achievement_points", actual_achievement_points + Reward)
 
Como veis ahí al jefe orco (mob de id 691) le asigna los puntos que vale con local Reward = 2 y luego te suma 2 puntos con el pc.setqf("achievement_points", actual_achievement_points + Reward (el reward en este caso seria un +2).
 
Por lo tanto si quereis añadir otro mob a la lista de logros solo tendreis que hacer lo siguiente:
 
when idmob.kill begin            local Reward = puntos -- Poneis cuantos puntos quereis que os de            local Achievement = "Nombre del mob que saldra en el cliente"            local killcount = pc.getqf("idmob")  -- Se usa para que el juego lleve la cuenta de cuantas veces lo mataste            local actual_achievement_points = pc.getqf("achievement_points") -- Calcula cuantos puntos tenes            pc.setqf("693", killcount + 1) -- Aqui os suma 1 al numero de ese mob que llevais            pc.setqf("achievement_points", actual_achievement_points + Reward) -- aqui te suma tus puntos por matarlo            cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."") -- Con esto te saldra la ventana en el cliente diciendo que lo mataste y cuantos puntos tenes        end
 
Ahora os enseñare como hacer los canjes. En mi caso los canjes se hacen mediante un item, pero vosotros podeis hacerlo como querais simplement cambiando el when iditem.use por un when npc.chat."Canje de Logros" o como os apetezca.
 
Veamos como tengo yo los canjes:
 
when 50115.use begin   say_title ( "Canjea tus puntos logro" )local actual_achievement_points = pc . getqf ( "achievement_points" )local p = select ( "Caballo armado - 5 puntos" , "Caballo militar - 30 puntos" , "Bonus mediohumanos +20% por 30min - 50 puntos" , "Bonus HP +5000 por 30min - 60 puntos" , "Armadura divina - 400 logros" , "Mascota de ataque - 30 puntos" , "Mas" )if p == 1 thenif pc . getqf ( "achievement_points" ) <= 4 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 5 )say ( "Has recibido un caballo armado" )horse . set_level ( "11" )horse . unsummon ( )horse . summon ( )pc . give_item2 ( "50052" , 1 )returnelseif p == 2 thenif pc . getqf ( "achievement_points" ) <= 29 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 30 )say ( "Has recibido un caballo militar" )horse . set_level ( "21" )horse . unsummon ( )horse . summon ( )pc . give_item2 ( "50053" , 1 )returnelseif p == 3 thenif pc . getqf ( "achievement_points" ) <= 49 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 50 )say ( "Has recibido 20% fuerza contra mediohumanos por 30min" )affect . add_collect ( apply . ATTBONUS_HUMAN , 20 , 60 * 30 )returnelseif p == 4 thenif pc . getqf ( "achievement_points" ) <= 59 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 60 )say ( "Has recibido 5000hp por 30min" )affect . add_collect ( apply . MAX_HP , 5000 , 60 * 30 )returnelseif p == 5 thenif pc. getqf ( "achievement_points" ) <= 399 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 399 )local armor = select ( "Armd. divina (G)" , "Armd. divina (N)" , "Armd. divina (S)" , "Armd. divina (C)" )if armor == 1 thensay ( "Has recibido la Armadura divina" )pc . give_item2 ( "42080" , 1 )returnelseif armor == 2 thensay ( "Has recibido la Armadura divina" )pc . give_item2 ( "44080" , 1 )returnelseif armor == 3 thensay ( "Has recibido la Armadura divina" )pc . give_item2 ( "46080" , 1 )returnelseif armor == 4 thensay ( "Has recibido la Armadura divina" )pc . give_item2 ( "48080" , 1 )returnendelseif p == 6 thenif pc . getqf ( "achievement_points" ) <= 29 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 29 )say ( "Has recibido la mascota de ataque" )pc . give_item2 ( "30312" , 1 )returnelseif p == 7 thenlocal p2 = select ( "Leon Blanco - 40 puntos" , "Anillo experiencia - 5 puntos" , "Fuerza monstruo +20% 30min - 15 puntos" , "Velocidad movimiento +25% 30min - 10 puntos" , "Mascota de defensa - 25 puntos" , "Cuantos logros tengo?" , "Cerrar" )if p2 == 1 thenif pc . getqf ( "achievement_points" ) <= 39 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 40 )say ( "Has recibido un leon blanco disfrtualo, no se acaba" )pc . give_item2 ( "50110" , 1 )returnelseif p2 == 2 thenif pc . getqf ( "achievement_points" ) <= 4 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 5 )say ( "Disfruta de un anillo de experiencia" )pc . give_item2 ( "71015" , 1 )returnelseif p2 == 3 thenif pc . getqf ( "achievement_points" ) <= 14 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 15 )say ( "Has recibido 20% fuerza monstruo por 30min" )affect . add_collect ( apply . ATTBONUS_MONSTER , 20 , 60 * 30 )returnelseif p2 == 4 thenif pc . getqf ( "achievement_points" ) <= 9 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 10 )say ( "Has recibido 25% velo.movimiento por 30min" )affect . add_collect ( apply . MOV_SPEED , 25 , 60 * 30 )returnelseif p2 == 5 thenif pc . getqf ( "achievement_points" ) <= 24 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 25 )say ( "Has recibido la mascota de defensa" )pc . give_item2 ( "71124" , 1 )returnelseif p2 == 6 thenlocal Reward = 0local Achievement = "Ver_tus_logros"local killcount = pc.getqf("logros")local actual_achievement_points = pc.getqf("achievement_points")pc.setqf("achievement_points", actual_achievement_points + Reward)cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")elseif p2 == 7 thenreturnendendend
 
*Si os fijais la ultima opcion de la tienda de canjes te permite ver tus logros, para ello le hice un logro que te sume 0 puntos pero que te enseña cuantos tienes:
 
elseif p2 == 6 thenlocal Reward = 0local Achievement = "Ver_tus_logros"local killcount = pc.getqf("logros")local actual_achievement_points = pc.getqf("achievement_points")pc.setqf("achievement_points", actual_achievement_points + Reward)cmdchat("achievement ".. Achievement .."_derrotado#".. killcount + 1  .."%".. actual_achievement_points + Reward .."")
 
Asi que si necesitais hacer vuestra opcion de ver logros ahi teneis ^^
 
Tal como eso son todos los canjes, si quereis hacer vuestros propios canjes os hago aqui un pequeño script de canje para explicaros como seria:
 
when 20095.chat."Canjear mis logros" begin say_title("Canjear mis logros") say("") say("Hola jugador, si tienes logros") say("yo te los puedo cambiar por cositas.") say("") say("Si no tienes intenta conseguir alguno") say("porque merece la pena") say("") say_reward("Quieres canjear tus punots?") local canje = select ("Si" , "No") if canje == 1 then say_title("Canjes de logros") say("") say("Elige lo que quieras") local elegir = select ("Quinto bonus - 3 logros" , "Añadir 6-7 bonus - 4 logros" , "Cambiar 6-7 bonus - 5 logros" , "Caballo armado - 6 logros" , "Caballo militar - 8 logros" , "Cerrar") if elegir == 1 then if pc . getqf ( "achievement_points" ) <= 2 thenchat( "Lo siento necesitas mas puntos" )returnend pc.give_item2("70024", 1) local actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 3 ) return elseif elegir == 2 then if pc . getqf ( "achievement_points" ) <= 3 thenchat( "Lo siento necesitas mas puntos" )returnend pc.give_item2("71051", 1) local actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 4 ) return elseif elegir == 3 then if pc . getqf ( "achievement_points" ) <= 4 thensay ( "Lo siento necesitas mas puntos" )returnend pc.give_item2("71052", 1) local actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) return elseif elegir == 4 then if pc . getqf ( "achievement_points" ) <= 5 thenchat( "Lo siento necesitas mas puntos" )returnend  local actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 6 )chat ( "Has recibido un caballo armado" )horse . set_level ( "11" )horse . unsummon ( )horse . summon ( )pc . give_item2 ( "50052" , 1 )return elseif elegir == 5 then elseif p == 2 thenif pc . getqf ( "achievement_points" ) <= 7 thensay ( "Lo siento necesitas mas puntos" )returnend  local actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 8 )chat( "Has recibido un caballo militar" )horse . set_level ( "21" )horse . unsummon ( )horse . summon ( )pc . give_item2 ( "50053" , 1 )return elseif elegir == 6 then return end elseif canje == 2 then return end end
 
Este script es un pequeño regalo para vosotros, lo hice ahora para que podais usar otro si no quereis el que tenia en el extasis.
 
*Para meterla en vuestra quest podeis quitar mi tienda de canjes y pegar esta si quereis, o hacerla como quest separada.
 
Por ultimo os explicare como funcionan los canjes con un ejemplo:
 
local p = select ( "Caballo armado - 5 logros")if p == 1 thenif pc . getqf ( "achievement_points" ) <= 4 thensay ( "Lo siento necesitas mas puntos" )returnendlocal actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 5 )say ( "Has recibido un caballo armado" )horse . set_level ( "11" )horse . unsummon ( )horse . summon ( )pc . give_item2 ( "50052" , 1 )return
 
Empieza con un local = select para que escojais vuestro premio y os aconsejo que pongais ahi cuantos logros cuesta como hice yo.
 
Luego puse una restriccion para que si teneis menos puntos que los que pide el item no os deje comprarlo:
 
if pc . getqf ( "achievement_points" ) <= 2 thenchat( "Lo siento necesitas mas puntos" )returnend
 
Funciona de la siguiente manera: donde pone <= 2 teneis que poner un punto menos que los que pide, ya que eso dice que si tienes esos puntos o menos no te deje comprar.
 
Despues del return end ya solo teneis que poner el comando para que os quite los puntos que es este:
 
local actual_achievement_points = pc . getqf ( "achievement_points" )pc . setqf ( "achievement_points" , actual_achievement_points - 5 ) --Poneis ahi los que quereis que quite
 
Y lo que quereis que os dea justo debajo de esas dos lineas:
 
pc.give_item2("71052", 1)  --- Ahi poned lo que quereis que dea
 
Y eso es todo zoneros, que disfruteis del sistema de logros !!! :D
------------------------------------------------------------------------------

 

 

Cumprimentos,

HenriqueSoares

Share this post


Link to post
Share on other sites

4 answers to this question

  • 0

esta quest esta uma confusão. omg

Share this post


Link to post
Share on other sites
antiblock
Elveron
  • 0

yolo identation

Share this post


Link to post
Share on other sites
  • 0

yolo identation

 

fui claro no que disse: 

E como não percebo mesmo nada de quests decidi vir postar aqui a minha dúvida.. Desde já agradeço a todos que tentarão ajudar e por aqueles que tiveram paciência de ler o tópido :3

 

Então como fica alguém poderá adicionar e postar aqui ela com os end's correctos? Ou então outra quest mais bem estruturada? 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this