Jump to content

TheDead

Miembro
  • Contador contenido

    8
  • Ingreso

  • Última visita

Actividad de reputación

  1. Me Gusta
    TheDead reacted to TTV_RANDARON in Nueva interfaz 2021 (Valorada en 75e)   
    Debes iniciar sesión para ver el contenido del archivo adjunto en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  2. Me Gusta
    TheDead reacted to EzekielitohMercury in [PETICION]QUEST   
    Nose si esta bien pruebala y dime
     
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  3. Me Gusta
    TheDead reacted to caanmasu in Mira esta misión de caza :O   
    ¡Hola a todos!
     
    Les traigo una quest de cacería personalizada hecha por mí.
    Mi objetivo, aparte de entregarles algo de calidad, es pedirles una colaboración monetaria para un proyecto de emprendimiento que voy a realizar.
    Mi misión de caza está valuada en 15 USD la quest + 5 USD los datos (toda la parte de los niveles, los jefes, recompensas, etc). El método de pago es PayPal.
     
    La diferencia de mi misión con las otras de caza es que es personalizada.
    Primero unos gif y pantallazos para que no te pierdas:
     
    Aceptar la misión

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Contenido de la misión

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    En batalla

    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Recompensa

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Esa fue solo la misión de nivel 1.
    Luego la misión de nivel 10 es esta:

    No me dejó subir la otra imagen...
    Recompensas misión nivel 10.

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
     
    Detalles de la misión
     
    El personaje cuando empieza, le aparece un pergamino donde hay que aceptar que vas a hacer las misiones. Luego te envía a la primera misión.
    El sistema asigna los monstruos según lo que tengas en tu quest. El sistema solo asigna uno por cada categoría para matar. Por eso vas a ver que en monstruos hay como 20 pero solo aparece 1 en la misión, al azar.
    Cada vez que mates a uno, aparecerá en el chat y te mostrará cuántos llevas y cuántos te quedan. Cuando ya hayas alcanzado el máximo, no volverá a aparecer.
    Cuando completas la cantidad  de monstruos de la categoría, te aparece en blanco, sino, en rojo.
    Para las recompensas, recibes exp, yang e ítems, dependiendo de cómo lo tengas en tu quest. Yo puse que a partir de la de nivel 10 aparezcan ítems, por eso no los vieron en el gif.
    Si el Yang se pasa de 2kkk cuando terminas la misión, no te deja recibir recompensas sino que te toca vaciar un poco tu Yang para poder recibir toda la recompensa.
    Las misiones son continuas, una vez terminas la misión, te aparece la siguiente siempre y cuando cumplas con el nivel requerido.
    Cuando se acabe la última misión y se reclama la recompensa ya no vuelve a salir el pergamino.
     
    Cómo personalizar:
    El [1] es el nivel de la misión.
    Más arriba están las categorías, dejé que 1 fuera metines, 2 monstruos normales y 3 jefes. Así que aquí puedes ver que en metines pide 1 metin de dolor. En monstruos normales pide perros...
    En recompensas puse que diera exp, yang e ítems. Pon true la variable current_level_quest para dar el % de exp según el nivel del personaje. Pon false si quieres que de el % de exp según el nivel de la misión. En exp_perc pues el % de exp.
    Al final de las tablas nunca va la coma, cuidado allí.
    Si no quieres dar exp, pon 0 en exp_perc.
    Si no quieres dar yang pon 0 en yang.
    Si no quieres dar ítems déjalo así como lo tengo allí.
    Todos estos valores se pueden cambiar. Yo los hice según mi jugabilidad pero creo que está bien.

     
    La última misión:
    Aquí tomé los metines de Bosque Encantado. Los monstruos del Templo Ochao y Bosque Encantado. En jefes puse Meley y Jotun.
    Recompensas allí pueden verlo.

     
    Cómo obtener esta misión de caza? hagamos un trato por privado aquí en Zone o Discord: Camilo#0869
     
    Cualquier consulta puedes escribirme al Discord Camilo#0869, yo ayudo mucho con quest/lua, así que no lo dudes.
     
    ¡Muchas gracias por llegar hasta acá!
  4. Me Gusta
    TheDead reacted to KeKo in [Quest+cliente] El sistema de logros   
    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).
     
    ESTA GUIA ES EXCLUSIVA DE METIN2ZONE, QUE NADIE LA COPY PASTEE A OTROS FOROS
     
    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.
     
    Aqui teneis algunas fotos del resultado final (son antiguas del extasis xd):
     

     

     
     
     
    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:
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    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, vais hasta donde pone "CloseSafeBox" y cuando esteis en esa linea le dais a a enter y pegais esto:
     

    # Achievement System START "achievement" : self.__AchievementTest, "achievementpoints" : self.__ShowAchievementPoints, # Achievement System END Quedandoos asi:
     

     
    (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 START def __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:
     

     
     
    *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
     
     
    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 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 --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 (C)" ) 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 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 begin local Reward = 2 pc.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 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 (C)" ) 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 *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 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 .."") 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 then chat( "Lo siento necesitas mas puntos" ) return end 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 then chat( "Lo siento necesitas mas puntos" ) return end 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 then say ( "Lo siento necesitas mas puntos" ) return end 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 then chat( "Lo siento necesitas mas puntos" ) return end 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 then if pc . getqf ( "achievement_points" ) <= 7 then say ( "Lo siento necesitas mas puntos" ) return end 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 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 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 then chat( "Lo siento necesitas mas puntos" ) return end 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 !!!
     
    Creditos: al creador del sistema (que no es mio xd) y a mi por la parte de la quest mia y la traduccion de la original.
  5. Me Gusta
    TheDead reacted to caanmasu in borrar   
    borrar
  6. Me Gusta
    TheDead reacted to Rafa23Alzira in Poner colores en quest [Más Colores]   
    Hola chicos, por inforge vi esta guía de hace tiempo, es para poner color en quest pero con más colores y con una nueva cosa.
    He dejado lo que son los archivos en italiano, si alguien los quiere traducidos los traduzco enseguida.
    Link Original:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Creador:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Vamos al tema:
     
    1- Metemos esto en el questlib.lua

    --** --** Funzioni say colorati --** by BlackYuko --** function say_color(color, text) local rgb = rawget(colors_data, color) say(color256(rgb[1],rgb[2],rgb[3])..text..color256(colors_data.default[1], colors_data.default[2], colors_data.default[3])) end function set_text_color(color) local rgb = rawget(colors_data, color) raw_script(color256(rgb[1],rgb[2],rgb[3])) end colors_data = { ['verde'] = {0,190,0}, ['verde chiaro'] = {0,255,0}, ['verde scuro'] = {0,120,0}, ['verde leggero'] = {144,238,144}, ['verde acqua'] = {102,205,170}, ['rosso'] = {240,0,0}, ['rosso leggero'] = {255,69,51}, ['rosa'] = {255,64,160}, ['rosa scuro'] = {255,0,128}, ['rosa chiaro'] = {255,182,193}, ['corallo'] = {255,127,80}, ['arancione'] = {255,130,0}, ['arancione scuro'] = {255,90,0}, ['fucsia'] = {255,0,255}, ['viola'] = {224,129,255}, ['viola scuro'] = {148,0,148}, ['lilla'] = {200,162,200}, ['marrone'] = {161,63,0}, ['marrone scuro'] = {120,66,0}, ['marrone chiaro'] = {200,164,115}, ['giallo'] = {255,255,53}, ['giallo chiaro'] = {255,255,128}, ['oro'] = {255,191,24}, ['blu'] = {0,0,250}, ['blu scuro'] = {0,0,150}, ['azzurro'] = {128,255,255}, ['azzurro chiaro'] = {193,255,255}, ['turchese'] = {0,255,255}, ['bianco'] = {255,255,225}, ['grigio'] = {128,128,128}, ['nero'] = {0,0,0}, ['default'] = {196,196,196} } 2- Ponemos estás dos nuevas funciones en el quest_functions

    say_color set_text_color Dos imagenes de muestra:
     
     
     
     
     
    ¿Como usarlo?

    Para usarlo ponemos así en los say de la quest: say_color("nombre color", "texto") Una función secundaría:

    set_text_color("rosso") say("Ahora escribira todo el rato rojo") say("Ahora escribira todo el rato rojo") say("Ahora escribira todo el rato rojo") say("Ahora escribira todo el rato rojo") set_text_color("giallo") say("Ahora escribira siempre en amarillo") say("Ahora escribira siempre en amarillo") say("Ahora escribira siempre en amarillo") say("Ahora escribira siempre en amarillo") set_text_color("default") say("Ahora escribiremos como siempre") Imagen de está función secundaria
     
     
     
    Esto ultimo os lo añado yo de extra, como añadir un nuevo color:
     
    Para añadir un color solo debemos hacer esto:
    vamos al questlib y debajo de el color 'nero' copiamos lo siguiente

    ['color'] = {R,G,B}, En color ponemos el nombre del color que vamos a poner. En r,g,b tenemos que poner el color, os dejo una tabla de colores aquí: Debes iniciar sesión para ver el contenido del enlace en esta publicación. Es el R,G,B dec Luego vamos a quest_functions y añadimos el nombre del nuevo color igual que en el questlib
     
    Espero que se haya entendido perfectamente =)
  7. Me Gusta
    TheDead reacted to NazoX in [C++/PY/SCRIPT/CLIENTE MUCHOS FIXS]   
    Bueno pues como dice el título aquí pondré muchos fix que he ido viendo, probando y visto, y encontrado, no cabe decir que siempre haz copia de tus archivos antes de realizar ningún paso de a continuación.

     
    8-Añadido también aquí el fix del herrero que no destruía items.
    buscas bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly en Char_item.cpp del servidor y remplazamos la función por esta:
    9-Buff en party
    Se que hay muchos tutoriales de como añadir buff en un grupo con los chamanes, pero siempre hay algún bug, de que no funciona, o con el tiempo deja de funcionar, etc. Este funciona ya que lo tengo implementado, si estás en grupo, solo puedes dar auras a los miembros del grupo, esto quiere decir, que si viene alguien que no este en el grupo. no podrás darles auras (aunque hará el efecto), si dejas el grupo, todo volverá a la normalidad, podrás darles auras a todo los jugadores.
    #Funciona Implementado : 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    12.Las bolas Polimorfas no funcionan  -  Gracias  Debes iniciar sesión para ver el contenido del enlace en esta publicación. + Fix que algunos no hacen daño, ya que debería darnos un bonus extra de ataque o solo funciona para alguna raza.
    1-Para el fix vamos a nuestro source game y editamos el archivo char.cpp y buscamos:
    Ahora remplazamos toda la función  hasta if (IsPC()) por la siguiente:
    2.Ahora para que funcione el drop de las bolas_polimorfas y funcione al dar click, hacemos lo siguiente:
    1.1-Vamos a nuestro navicat / mob_proto.txt  y buscamos la columna : polymorph_item
    En esta columna, a veces vienen completa, o vacía, bueno, aquí pondremos el id de la bola que va a dropear, puede ser :  
    2.1-Ahora elegimos la que vamos a querer,  que tire el mob.
    NOTA: Con eso hacemos que se asigne ese mob a ese id, lo que significa que cuando el mob tire esa bola se transformará en ese mob que lo dropea.
    Nota2: Podemos ir poniendo el id que queramos de esos en todos los mobs, o usar el mismo id en todos.
    3.Una vez echo eso, vamos a nuestro Winscp/FTP hasta encontrar el archivo:
    Como sabéis aquí va el drop de los mobs, ahora,  si habéis puesto el mismo id en polymorph_item le ponéis ese id a todos los mobs, si habéis puesto otro distinto a cada mob,
    buscáis el grupo de cada mob y le ponéis el id correspondiente.
    #Funciona implementado:

    Debes iniciar sesión para ver el contenido del enlace en esta publicación. 13.Fix bug de que aveces usa .txt o usa sql, <-también sirve para dejar tus files por sql o por txt.
    1.Primer paso, vamos a nuestro src db y editamos el archivo -> ClientManagerBoot.cpp:
    buscamos la siguiente línea:
    Bien, esa es la función que hace que usemos .txt o sql. Si queremos que sel servidor sea por sql, los comentamos así:
    Bien, si queremos que sea por .txt puede pasar 2 cosas, que tengas un #ifdef, por ejemplo #ifdef NOT_ENABLE_TXT que lo que hace es que ejecute sql siempre.
    entonces la solución es bloquear todo los #ifdef #else y #endif que tenga el #idfed NOT_ENABLE_TXT o tu función.
    O el segundo caso que lo tengas ya comentado con /* y */ entonces los quitamos para que se active la función.
    2.Ahora buscamos un poco más abajo las funciones : bool CClientManager::MirrorItemTableIntoDB y bool CClientManager::MirrorMobTableIntoDB()
    Bien, una vez localizadas las funciones, si queremos que sea mediante .sql las comentamos con // o /* y */ .
    Si queremos que sea por .txt, si tienen // o /* y */ lo quitamos, y si usamos un #ifdef algo, normalmente tienen:
    pues quitamos el ifdef, else y endif y su función o la comentamos, (ahora dejaré un ejemplo.) y a compilar!
    Este sería un ejemplo, para los files MartySama v4 que se que hay mucha gente que lo usa. está función, es la original, leyendo sql o con el bug mencionado anteriormente. (solo pondré las funciones si no se hará muy largo:
    Y esta la función corregida y que utilize .txt:
    #Funciona instalado, testado.
    14.Fix título de todas las offlines shops, cuando hay tiendas al entrar al juego, o x cosa, nos sale arriba a la izquierda, muy famosa en la shop de Ken y great  (funciona para todas)
    1.Vamos a nuestra carpeta root y editamos el archivo uiofflineshopbuilder.py (ken, kory, tc, etc) o uiprivateshopbuilder.py (great, una propia, etc)
    buscamos:
    y remplazamos por:
    Ese es el método 1, lo que hace, es que corrige la posición de la flecha de los ajustes, es decir, ya no te hace falta moverla, una vez inicias sesión, ya a parece las tiendas de forma normal, en caso que quieras quitar el título por x motivo, vas a ajustes y realizas la operación.
    2.Dejamos el paso anterior de forma original sin modificar, y buscamos:
    y remplazamos por:
    Con este 2 método, lo que logramos, es que podemos quitar el botón o la función, como queráis llamarlo, de mostrar o ocultar títulos de tienda, con eso, siempre estará activada.
    #Funciona instalado, testado.
    15.Quitar la tasa de 3%  al vender un objeto + que al vender item nos lo venda a 0 yang.
    1.Para la tasa vamos a los archivos shop.cpp & shop_manager.cpp y buscamos en ambos archivos:
    y remplazamos por:
    2.Vender todo a 0 yang, vamos a shop.cpp y buscamos:
    reemplazamos por:
    #Funciona, testado.
    16.Si tenéis tiempo a la hora de cambiar un bonus, (tienes que esperar x minutos/horas/dias/etc) y en los configs, no disponéis de la función TIME_CHANGE_BONUS o algo así esta es una solución alternativa, vamos a char_item.cpp y buscamos:
    y remplazamos por esto:
    17.Hemos creado un nuevo refine_vnum con sus items para mejorar, pero solo me pide yang.
    Izquierda bug, derecha corregido :

    -Esto se debe a que si utilizamos vnum4 y count4, el refinamiento ya no funcionará porque utiliza material_count = 0 y no detecta ninguna columna "vnum" que sea 0.
    -Para solucionarlo nos vamos a nuestro src db archivo ClientManagerBoot.cpp y buscamos:
    if (prt->materials[i].vnum == 0) { prt->material_count = i; break; } y remplazamos por :
    if (!prt->materials[i].vnum || !prt->materials[i].count) break; prt->material_count++; -Tiene que quedar algo así:
    for (int i = 0; i < REFINE_MATERIAL_MAX_NUM; i++) { str_to_number(prt->materials[i].vnum, data[col++]); str_to_number(prt->materials[i].count, data[col++]); if (!prt->materials[i].vnum || !prt->materials[i].count) break; prt->material_count++; } 18.Arreglar ITEM_QUEST, CONFIRM_WHEN_USE , etc en los items.
    -Este problema surge cuando queremos usar ciertas funciones en los items, como por ejemplo STACKABLE para apilar (no ITEM_STACKABLE), CONFIRM_WHEN_USE (te pregunta si quieres usar el objeto, como anillo de exp, guante, etc) o ITEM_QUEST para como indica usar el objeto para una quest, resulta que por alguna razón, los valores no coinciden y en algunos casos no existe ni ciertas definiciones así que seré muy breve, vamos al grano.
    1.Vamos a source game -> Item_lenght.h buscamos la función y la remplazamos por lo siguiente:
    2.Vamos source DB -> ProtoReader.cpp buscamos la función y remplazamos:
    3.Compilamos DB y Game, y de mientras vamos al source cliente -> GameLib -> itemData.h buscamos la función y remplazamos:
    3.1.Ahora vamos a UserInterface -> PythonItemModule.cpp y comentamos esta linea:
    4.Para finalizar vamos a nuestro source de dum_proto ->ItemCSVReader.cpp y buscamos y remplazamos:
    Y listo, ya tendremos todo funcionando, ejemplo de lo que puedes hacer: Gracias a Debes iniciar sesión para ver el contenido del enlace en esta publicación. por orientarme para el fix 😛

    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Iré actualizando todos los días que me sea posible con nuevas cosas.
    Actualizado 31/03/2020
    Actualizado 02/04/2020
    Actualizado 03/04/2020
    Actualizado 16/04/2020
    Actualizado 26/04/2020
    Actualizado 18/05/2020
    Actualizado 21/05/2020
    Actualizado 28/05/2020
    Actualizado 05/ 06/2020
    Actualizado 20/03/2021
    Actualizado 16/09/2023
  8. Me Gusta
    TheDead reacted to leo2993 in [C++] Compilación de binario 40k metin2   
    Compilación del binario 40K
     
    Introducción
    Bienvenidos a aquellos que les gusta y les interesa el tema de metin2 a fondo. Esta guía la hago especialmente para ellos y con el fin de facilitar conocimiento ya que a veces el don de búsqueda nos falla o no conseguimos encontrarlo. El nivel necesario para esto será: PRINCIPIANTE. Esta guía no es para aquellos que saben del tema en profundidad. Dicho esto, empecemos a introducir... ¿Qué haremos?      
    Instalar Visual Studio 2013. Descargar los archivos del binario. Compilar. Probar.  
    Características del cliente:
    Hay que aclarar que lo que aquí ofrezco es gracias a alguien que vino antes y dejo el trabajo a medias. Su nombre es Reboot y es un ex-usuario de Metin2Dev.
    Versión de python actualizada de 2.2 a 2.7 [hecho por mi].
      All mount can attack // todas las monturas pueden atacar.
      All toolset set to v120_xp (Windows xp compatibility)  include source files of the client and library, all set to v120)xp toolset.
      ENABLE_COSTUME_SYSTEM // sistemas de traje
      ENABLE_ENERGY_SYSTEM // sistema de energia
      ENABLE_DRAGON_SOUL_SYSTEM //
      ENABLE_BELT_SYSTEM // CINTURONES
      Cryptopp 5.6.2
      boost 1.55  
     
    Cliente recomendado: Test Client für 40250. Debes iniciar sesión para ver el contenido del enlace en esta publicación.. (VIENE YA PREPARADO POR MI PARA EL BINARIO)
    [LLEVA INCORPORADO EL NEXUS -> DESCOMPILADOR/COMPILADOR DE CLIENTE (EN LA CARPETA PACK)]
    El cliente este en Alemán. Posiblemente pronto suba alguna traducción del cliente para que lo podáis utilizar en español aunque ya haya guías de como traducirlo.
     
    Hay que tener en cuenta que esta guía esta hecha hasta el punto de compilar y tener el ejecutable, NO SOLUCIONAR BUGS QUE PUEDAN APARECER.
     
    Primer punto
     
    La descarga del Visual Studio 2013 la encontraremos en este enlace directo:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Nota: en la instalación sólo nos dedicamos en hacer click en "siguiente" no modificar valores predeterminados.
     



     
     
    Segundo punto
     
    Los archivos del binario los encontraremos en el enlace de Mega:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del archivo adjunto en esta publicación.  
     
    Tercer punto
    Nota: Cualquier modificación en el source del cliente se tendrá que realizar previo a la compilación.
    ABRIMOS EL ARCHIVO CLIENT.SLN CON VISUAL STUDIO Y EN MODO LE ASIGNAMOS RELEASE, APRETAMOS CTRL + SHIFT + B Y ESPERAMOS QUE COMPILE, EL BINARIO ESTARÁ EN LA CARPETA BINARY DONDE DESCOMPRIMIMOS EL RAR DE LOS ARCHIVOS DEL CLIENTE. (En los pasos en fotos utilizo solamente el ratón y ninguna combinación de tecla sino que abro menús y ya.)
     
     
    PASOS EN FOTOS...
     
     

    Debes iniciar sesión para ver el contenido del archivo adjunto en esta publicación.



     
    4. PROBEMOS...
     

    Nota: El cliente debe tener las librerías de Python 2.7 (el cliente preparado no le hace falta)
    Si utilizáis otros cliente deberíais bajaros la carpeta "lib" de la raíz del cliente que deberéis tener para correr el binario:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación..  
     
    Y HASTA AQUI LA GUÍA.
     
     
     
    Especiales agradecimientos a los autores de dicho trabajo como Reboot y Debes iniciar sesión para ver el contenido del enlace en esta publicación..
     
    Y por último vuelvo a recalcar que el trabajo en su 99% no esta hecho por mi. Yo sólo intento aportar a la comunidad una manera fácil de compilar el binario sin dolores y dolores de cabeza que yo sufrí en mi tiempo para alcanzar conocimiento. Tampoco quiere decir que todo es regalado, habrán errores/bugs que puedan aparecer después de esto incluso con el cliente que os recomiendo pero como siempre, mi consejo es que nunca os rindáis. Un cordial saludo a todos y todas de esta comunidad.
     
    Y por último, recordar que si encontráis cualquier bug o error que se me haya pasado por alto o surja de imprevisto no dudéis en dejármelo en la caja de comentarios ! ! !
     
     
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
     
  9. Me Gusta
    TheDead reacted to 【ℛ-𝓝】ℛ𝔂𝓼𝒆 in ➫ ➬ ➩ [SERVERFILES] Compilado 2017-2018-2019   
    ◄ ServerFiles ► Premiumlike
     
    ◄ ServerFiles ► Kuratox3
     
    ◄ ServerFiles ► Battle2
     
    ◄ ServerFiles ► BestProduction 1.8
     
    ◄ ServerFiles ► Melosia2
     
    ◄ ServerFiles ► Rubinum2
     
    ◄ ServerFiles ► Taviona2
     
    ◄ ServerFiles ► Maro2 / Oldline / Nalunia
     
    ◄ ServerFiles ► Mukari2 - Multilenguaje
     
    ◄ ServerFiles ► Drakonia2
     
    ◄ ServerFiles ► Elitarius2
     
    ◄ ServerFiles ► DINOS
     
    ◄ ServerFiles ► 40K pagas - Gratis
     
    ◄ ServerFiles ► con WON listas para montar
     
    ◄ ServerFiles ► Rivality2
     
    ◄ ServerFiles ► con 6ta Raza
     
    ◄ ServerFiles ► Oficial TR by Frozen
     
    ◄ ServerFiles ► Abizu2
     
    ◄ ServerFiles ► Sanii V1.2
     
    [REUPLOAD] ◄ ServerFiles ► Nirvana V2
     
    ◄ ServerFiles ► Athraworld
     
    ◄ ServerFiles ► Play PVP Farm
     
    ◄ ServerFiles ► Metin2Family
     
    ◄ ServerFiles ► Terios.pl
     
    ◄ ServerFiles ► Metin2Gravity
     
    ◄ ServerFiles ► Titania2
     
    ◄ ServerFiles ► Limpios by Undyne
     
    ◄ ServerFiles ► Heroes última versión
     
    ◄ ServerFiles ► Avalter.pl
     
    ◄ ServerFiles ► Lucian (ingles)
     
    ◄ ServerFiles ► Ocelot2606
  10. Me Gusta
    TheDead reacted to Desmint in [SERVERFILES]Lucas2TR 2019-2020   
    Hola amigos de Metin2Zone.
     
    EL dia de hoy les traigo unos files muy buenos que he estado probando y la verdad me parecen muy buenos, los files cuentan con todos los sistemas actuales del metin2 oficial. Así que sin más que decir, les dejo la descripción.
     
    Sistemas:
    - SwitchBoot InGame
    - Union al alma
    - Alquimia Totalmente Funcional
    - Atuendos actuales
    - Monturas Actuales
    - Pets (Pet de mejora + pet de ello)
    - Mapas del Oficial
    - Dungeons del oficial
    - Tienda Offline
    - Visualizaciones de tienda
    - Sistema de estolas
    -Transfiguracion
    - Cambio Rapido de Equipo
    - Moneda Gaya
    - Moneda Won
    - Sistema de Gremio (Oficial)
    - Cambio de Channel
    - Evento Okey
    - Eventos PvP
    - Sistema de Rangos
    - Cambio de Clima
    - Auto Guardar cuentas ingame
    - Proteccion de cuenta (al iniciar el pj se bloquea todo el teclado, no deja realizar la accion de la tecla hasta no ingresar la contraseña
    - 4 Inventarios
    - Sistema de Talismanes del Oficial
    Y Muchos mas sistemas que pueden ir descubriendo dia a dia
     
    -> Datos:
    Pass Mysql: asilzade 
    -> Cuenta Admin InGame
    ID: asilzade
    PASS: 12345
     
    Recomendaciones:
    Editar la opcion de guardado de cuentas en el cliente, pues se aloja en un archivo en la raiz del cliente. Si no se usa una proteccion adecuada para el archivo, en el momento que lo lleguen a subir a un Servidor para subirlo como suyo y sacar provecho (todos lo quieren hacer) los terceros querran este archivo para entrar y desocupar cuentas, por ello, recomiendo que le creen una extencion distinda al archivo y lo protejan, oh busquen la forma de que dicho archivo se aloje en un epk con proteccion anticompilacion...
     
    Imagenes

    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación.
       
    Creditos:
    Metin2Web
     
    Descarga:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  11. Me Gusta
    TheDead reacted to Randaron in Rubinum [SRC,CLIENT,PANEL]   
    Hola hoy os vendo a traer los files Rubinum con todo COMPLETO !
    Admin Panel: 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Ischop: 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Extern: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Rb-website: 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Rubinum-Juego: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Compartir: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Sql: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Juego Define: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    cliente Define: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    Datos del que publico los archivos  
    Nombre: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    SI ALGUIEN ES TAN AMABLE Y LO SUBE A MEGA POR SEPARADO COMO VIENEN EN ESAS DESCARGAS LO AGRADECERIA MUCHO
    ( GRACIAS )
     
    Video:
     
  12. Me Gusta
    TheDead reacted to Pai in [Mini-Release] 4 inventarios.   
    Bueno, aquí un aporte mas o menos nada...
     
    Game y db vanilla y las libs y todo lo demás del cliente.
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Disfrútenlo.
     
    ¡¡Saludos!!
     
     
    Créditos: Vanilla por el game y la db y todo eso.
     
  13. Me Gusta
    TheDead reacted to 【ℛ-𝓝】ℛ𝔂𝓼𝒆 in [SERVERFILES] 40k limpios fix + SRC & binario *15 idiomas*   
    [40250] Archivos limpios + Cliente + Src [15 idiomas disponibles]
    Mi objetivo era hacer que un archivo de servidor r40250 fuera lo más oficial posible en comparación con lo que GF tenía cuando sus archivos se filtraron a principios de 2014.
    No se agregaron nuevos sistemas, solo se corrigieron errores. Aunque pasé varias horas probando, es posible que todavía haya errores. Por favor, infórmeme de los errores para que pueda corregirlos en el
    futuro, quiero que este proyecto esté lo más libre de errores posible.
    Idiomas disponibles: EN / DE / HU / FR / CZ / DK / ES / GR / IT / NL / PL / PT / RO / RU / TR
    Lea Languages.txt para aprender cómo cambiar el idioma predeterminado.
    SSH para VM: root / 123456789
    MySQL: root/ 123456789
    En el juego: admin / 123456789
    Alias y sus comandos:
    iniciar cd /usr/metin2/server && sh start.sh apagar cd /usr/metin2/server && sh close.sh limpiar cd /usr/metin2/server && sh clear.sh backup cd /usr/metin2/server && sh backup.sh cargarquest cd /usr/metin2/server/share/locale/english/quest && python make.py limpiardb cd /usr/metin2/src/db/src && gmake clean comp-db cd /usr/metin2/src/db/src && gmake limpiargame cd /usr/metin2/src/game/src && gmake clean compilargame cd /usr/metin2/src/game/src && gmake  
    Lea Changelog.txt para obtener más información sobre los cambios que hice.
    Agradecimientos especiales a:
    @Mali por los archivos src de cliente y servidor limpios y actualizados.
    @Sanchez por el cliente base 2014.
    @Veltor88 por el paquete de translate.lua.
    @Fazer por el paquete de locale_string.txt.
    Hice un pequeño video sobre la instalación del archivo de servidor (vm) y el cambio de idioma:
     
    Descarga / Download
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    Créditos: TMP4 
     
  14. Me Gusta
    TheDead reacted to Break in [Guía] Cambiar contraseña de Mysql [DEFINITIVA]   
    Hola Metin2Zone, soy consciente de que hay muchas guías de cambiar contraseña de mysql. Pero como he visto en el chat de metin2zone, comentarios de que no le funcionan la guía o que no esta bien explicado. Lo que voy hacer es una guía definitiva, de recuperar contraseña o cambiar la contraseña de mysql fácilmente.
    Nos podemos encontrarnos en los siguientes casos:
    Caso 1: No se cual es la contraseña del Navicat (mysql)
    (Nota: En los comandos aparecerá "Break#" este es el hostname, de mi vps y en el directorio que me encuentro, no le hagáis mucho caso, solo tenéis que copiar lo que viene detrás)
    Break# /usr/local/etc/rc.d/mysql-server stop Pasaremos a parar lo primero de todo la mysql, para así poder editar la contraseña de los usuarios haciendo una entrada forzosa.
    Break# mysqld_safe --skip-grant-tables &
    Con este comando lo que hacemos es iniciar el servidor en modo seguro.
    Conocimiento sobre este comando que estamos haciendo:
    Break# mysql -u root Entramos a la mysql como usuario root
    mysql# use mysql; Nos movemos a la database mysql, que es la base de datos del sistema de mysql, donde se almacenan los usuarios que existen en la mysql entre otras cosas.
    Aquí podemos reemplazar la contraseña que tenia nuestro usuario root, la cual no conocemos, con el siguiente comando:
    mysql# update user set password=PASSWORD("TUPASSWORD") where user='root'; Ahora saldremos de la mysql:
    mysql# quit Por último quedaría ya solo arrancar la mysql:
    Break# /usr/local/etc/rc.d/mysql-server start  
    Hasta aquí, seria el caso que desconozcamos la contraseña del usuario root, también serviría este caso para cambiar la contraseña del usuario root, pero lo veo mucho lío, esto ultimo se ve mucho mejor en el caso 2.
    Caso 1.1- "En caso de que no hubiésemos tenido éxito en realizar el apartado 1, dejo otras maneras de hacerlo" (AGRADECIMIENTOS A
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. por compartir la idea). Para poder cambiar la clave puedes hacerlo desde la maquina o cambiarla desde el filezila o Winscp y aqui tendras dos opciones de cambiarla.

    La primera es descargar el rar y añadirlo en la carpeta /var/db/mysql darle permiso 777 a los 3 archivos y antes de hacer reboot cambiar en todos los config el usuario y contraseña 

    PLAYER_SQL: localhost sebas Juan870614 player
    COMMON_SQL: localhost sebas Juan870614 common
    LOG_SQL: localhost sebas Juan870614 log
    Si tienes Notepad++ abres todos los config de todos los ch de la db y del auth y le cambias todos de una.

    Haces reboot y ya podras entrar a modificarlo ya como tu quieras.
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Caso 1.2- "En caso de que no hubiésemos tenido éxito en realizar el apartado 1 y 1.1, dejo otras maneras de hacerlo que es muy parecida que el 1.1" 
    Abrimos winscp o filezilla y nos vamos al siguiente directorio:
    /var/db/mysql/mysql
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Descomprimimos el .rar en nuestro pc y subimos los archivos que hay dentro a ese directorio, dirá que si queremos reemplazar, le decimos que si y le damos permisos 777
     
    Por defecto los usuarios que existirán son:
    root@localhost
    root@% 
    Ambos usuarios tienen la contraseña: metin2zone
    Ahora, nos vamos al config de alguno de nuestros channel 
     
    PLAYER_SQL: localhost root passdelosfiles player Nos fijamos la palabra que tiene detras del usuario ''root'' y esa es la pass de los files.
    A partir de aquí en vez de cambiar los configs, podemos hacer el Caso 2, y cambiar la pass por la que hay en los configs, que es mucho más rapido, entrando al navicat con el usuario root y pass metin2zone 
    He de recordar que usemos siempre el usuario de ''localhost'' para los files, ya que es más seguro.
     
     
    Caso 2: Conozco la contraseña de mi usuario de mysql pero no se como cambiarla.
    Este es el mas sencillo, abres el navicat y te logeas.
    Una vez logeado le damos a user:

    Y nos saldrán todos los usuarios que existen en nuestra mysql. Seleccionamos el usuario que queramos cambiar la contraseña, en este caso elegiré el usuario Break y le daré a ''Edit User"

    Ahora la nueva password, la pondremos en Password: y en Confirm Password:
    Una vez puesta le damos a Save y ya estaría cambiada.
    Hasta aquí seria el Caso 2.
     
    Espero que os haya resultado útil esta guía, me he intentado explicar lo mejor posible para que todo el mundo pueda utilizar la guía, sin tener mucho conocimiento de la materia.
    Si se os da más caso que tengáis problema con los usuarios de la mysql o algo, decirlo en los comentarios y agrego la solución a esos casos. Por lo pronto solo se me han ocurrido esos dos.
     
     
    ¡Un saludo y hasta la próxima chicos!
     
     
     
     
  15. Me Gusta
    TheDead reacted to SzC in [Aporte]Files eternia2, Pandora   
    Hola buenas tardes, hoy les vengo a traer mi base de Sources con la que todos saben el tiempo que la he trabajado logicamente no es la nueva base pero es la anterior a la nueva base que tengo y es una buena base para los que quieran trabajar un servidor old pvm ya que esta como quien dice preparado para pvm.
    La base todos la pueden recordar en servers como Eternia2 y pandora2 que fue la ultima base que realice para la venta he decidido publicar esta base para que tengan una base decente con la que trabajar.
    RECORDAR QUE ESTÁ TODO EN EL MISMO RAR, FILES, SRC-SzC, MYSQL, TODO Y QUE PUEDEN HACERLO FUNCIONAR DESDE CUALQUIER CLIENTE DE ETERNIA2 O PANDORA2
    Lo que trae es lo siguiente y muchas más cosas pero a decir verdad no recuerdo ni la mitad de ellas dejo de las más importantes:
    - Weapon Costume.
    - Offline Shop.
    - Block de rank (esto permite que agregas el index de x mapa en el config y hace que en ese mapa aunque esten libres nunca bajen rank)
    - Block de items ( esto permite que agregas x map x items en 1 txt y en dicho mapa no se podran usar dichos items)
    - Block de reinos ( esto permite bloquear el crear personajes en X reino a el antojo nuetro)
    * Comandos del bloqueo de reinos /disable numero ejemplo /disable 3 y desactiva el 3 2 o 1 segun el que quieran desactivar o activar igual pero /enable 3
    - Ver todos los registrados de cada reino /total 1 , 2 o 3 respectivamente cada reino para ver el total de pj que tiene cada reino.
    - 3 inventarios.
    - Menu de inventario con sistemas basicos como cambio de equipo de tiempo bonus etc.
    - Totalmente con todo lo del oficial nuevas armaduras level items de evoluciones etc. (preparado hasta level 150 max siempre ampliable)
    - Sistema de budokan, totalwar, evento de jefes y metines automaticos, etc..
    - Trade duel v2. (Sistema de apuesta en los duelos)
    - Hair system (sistema de selecion desde source en el cliente de peinados al crear personaje)
    - Fixeados todos los xploits conocidos. (Incorpora soporte gratuito de fixeo de xploits en caso de salir nuevos)
    - Sistema vrunner (sitema automatico de autolevante el cual levanta un ch al instante)
    - Funciones nuevas muy funcionales como la muy conocida mysql_query agregada desde source para mayor fluidez.
    - Sistema de MDs en inventario 100% c++
    Nota: No daré soporte vía foro ni chat, solo daré soporte a aquellos que son clientes.
    Link reparado por @Dilong:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Disfrutenlo!
  16. Me Gusta
    TheDead reacted to [D]ELARO ✓ in SF MartySama 4.9.89 r88   
    Estos files ya estaban en el foro pero esta caído el link así mismo como en el foro turco, los files son de Legendy con base MartySama en su versión 4.9.89 r88
    #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #
    CONTENIDO:
    Solo traduje a español en cliente y servidor item_proto, mob_proto, locale_game y locale_interface.
    Falta traducir quest, locale_string y algunas cosas mas en locale_interface que son "sistemas" añadidos, pero eso ya será cosa de ustedes.
    Si hay bugs y sus fixes podrían añadirlo en comentarios y yo podría añadirlo despues al post.
    #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #
    VDI: se recomienda asignar al vdi mínimo 4gb de ram, no probé con menor cantidad.
    Mysql 5.6
    GCC6
    Visual Studio 2019
    VDI:
    Usuario: root Contraseña: delaro
    Mysql:
    Usuario: root Contraseña: 12345
    Esta montado directamente en un VDI funcionando sin ningún problema y ya listo para compilar source game.
    Una vez hayan configurado su ip con el comando bsdconfig, para iniciar pueden hacerlo como yo normalmente lo hago, cd /admin ENTER sh admin.sh ENTER y tendrán el menú a la vista, ya solo seria escribir 1 ENTER e iniciaran los 2 channels sin ningún tipo de complicaciones.
    #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #     #
    CUENTA GM:
    Usuario: marty Contraseña: 1
     
    IMAGENES DENTRO DEL JUEGO:
     
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    LINK DE DESCARGA:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
     
  17. Me Gusta
    TheDead reacted to XhebasT1an in VDI SERVER FILES HOVSA   
    Files HOVSA los cuales vi que muchos no pudieron entrar por algún motivo, acá dejo la VDI, el servidor prende y se puede entrar a la cuenta. Cambiar la ip de la VDI  a la que te sirva
     
    Los files que montaron se deben configurar varias líneas del source del binario y del cliente lo cual no se realizo. El archivo Binario y Source es el mismo que estaba en el post anterior
    Info del VDI
    Verificando el VDI se debe realizar el siguiente procedimiento para que no saque error de mysql
    * Vamos a la  ruta var/db/mysql y borramos los siguientes archivos
    auto.cnf
    ib_logfile0
    ib_logfile1
    ibdata1
    Xbastian.org.err
    Xbastian.org.pid
    * En la maquina virtual colocamos el comando
    service mysql-server restart
     
    * reboot
     
    y listo ya nos vamos a la ruta 
    /m2_svfiles/main
    y colocamos comando en la maquina virtual
    sh admin_panel.sh
    1 para prender
    3 para limpiar
     
    Screen dentro del juego
     
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.   con mysql 5.6 por si la necesitan para otro server. Descargar VDI GCC8 11.3 MYSQL 5.7
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Se actualiza con una nueva VDI con mysql 5.7 y se arregla el error que sacaba al intentar compilar las quest que era un error de libreria

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  18. Me Gusta
    TheDead reacted to XhebasT1an in ROM2 Server Files en VDI completo   
    Buenas
     
    Hoy traigo los files ROM2 que están posteados en este foro y en muchos mas pero viene sin la parte del cliente y el pack toca compilarlo por completo, Acá les dejo el cliente completo.
     
    Modificaciones
    1. Se quito el Lycan solo del cliente, ósea que no saldrá para que se pueda seleccionar. Como solo es del cliente no se puede borrar las líneas del item_proto.txt del lycan si lo hacen les sacara error
    2. Se activo el Sistema ver Drop (Target mob system)  el cual ya venia incluido en el Source y Binario pero le habían eliminado las líneas del cliente.
     
     

     
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     



     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    VDI
    usuario:   root
    pass:  mt2zone
     
    mysql
    usuario :  root
    pass:  123456
     
    Para prender  puedes colocar 
    cd /usr/home/Xbastian
    seguido
    sh panel.sh
     
    1 limpiar logs
    2 encender ch1
    3 encender ch2
    3 y 4 encender ch 3 y ch 4
    6 limpiar eso creo
    7 para crear copia del db game y del src
     
    para Compilar source
    cd /usr/Xbastiansrc
    seguido
    gmake
    y esperas que compile todo el source, los archivos salen directamente en la carpeta usr/home/Xbastian/Share/Source la cual tiene los accesos directos ya creados en cada ch
     
    Files con
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. comprimir archivo root y locale  Files sin 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. comprimir archivo root y locale  

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  Si descargas la VDI no es necesario descargarlo
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  Si descargas la VDI no es necesario descargarlo
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  Si descargas la VDI no es necesario descargarlo  
    Aunque son viejos los files no los posteen en otros foros.
  19. Me Gusta
    TheDead reacted to NazoX in MOB_PROTO E ITEM_PROTO(.SQL) ESPAÑOL   
    Buenas chicos, pues edito este post, con nuevos links e imagenes, a lo que vamos.
    1-Descargar el archivo que hay adjunto más abajo para 34k o 2089M
    2-Segunda opción bajar los txt  para 40k o superior.
    3-Para los txt simplemente lo metéis en vuestra carpeta /db del filezilla o winscp
    4- Para instalar la 1 opción vamos al navicat:
    -Después vamos a navicat, -->player-->tables damos botón derecho y ejecutamos en execute files sql Quedaría así:


    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  20. Me Gusta
    TheDead reacted to 【ℛ-𝓝】ℛ𝔂𝓼𝒆 in [UPDATE] Gcc49 Offline   
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    El archivo gcc-4.9-20130804.tar.bz2 lo ponemos dentro de la dirección /usr/ports/distfiles en nuestro FreeBSD

     
    Una vez hecho esto vamos a FreeBSD e ingresamos el siguiente comando
    cd /usr/ports/lang/gcc49/ && make install clean  
    Al ingresar este comando entre 30 segundos y 3 minutos, aparecerá una pantalla azul le damos en OK y la instalación se iniciará ...
    La instalación durará entre 2 y 3 horas, NO cierren el FreeBSD o Putty durante la instalación.
  21. Me Gusta
    TheDead reacted to Shogun in Como preparar FreeBSD para Metin2   
    Dado que el turorial de Serex no funciona en las versiones recientes del S.O., he decidido hacer uno nuevo. Los comandos que tenéis que escribir, están en rojo; el resto son notas. Este tutorial asume que se trata de un FreeBSD recién instalado. Es posible que no funcione correctamente en FreeBSD que ya hayan tenido un uso.
     
    En primer lugar actualizamos el S.O. para que tenga los parches de seguridad más recientes (esto no es estrictamente necesario, pero es buena idea, al igual que debéis mantener vuestro Windows actualizado)
    freebsd-update fetch install    ( ya no creo que nadie usa eso )
    (si aparece una lista de ficheros simplemente pulsad ' y después $, o bien la tecla Avanzar Página hasta que lleguemos al final y ponga "Installing updates")
    Descargaremos los ports (colección de software de FreeBSD):
    portsnap fetch extract
    Ahora instalamos MySQL y Python:
    pkg install mysql56-server
    pkg install python
    Si os pregunta algo le decis que si (y)
    Una vez haya terminado, si nuestro SO es de 64 bits, vamos a instalar las librerías de 32, en este ejemplo se trata de FreeBSD 9.3, simplemente editad el link cambiando ese número por vuestra versión si es diferente:
    cd /tmp fetch Debes iniciar sesión para ver el contenido del enlace en esta publicación. tar jxpvf lib32.txz -C   (si os aparece una serie de errores "cannot unlink..." al hacer esto no os preocupéis, significa que ya están instaladas)   Ahora, para poder usar files antiguos si lo deseamos, instalaremos el paquete de compatibilidad con FreeBSD 7:   cd /usr/ports/misc/compat7x make install clean   ( Actualizado ) Finalmente configuramos mysql para que se inicie con el arranque:   echo mysql_enable="YES" >> /etc/rc.conf   Ahora vamos a iniciar MySQL:   service mysql-server start   Y luego el cliente para comprobar que está funcionando:   mysql   Debería aparecer el prompt mysql>, podemos poner quit para volver al shell de FreeBSD.   Ahora ya podéis subir vuestros files y bases de datos, eso si, recordad hacer esto después de copiar la bd a /var/db/mysql:   mysql_upgrade   (actualiza las bases de datos procedentes de versiones antiguas de MySQL, a la actual)   y   chown -R mysql /var/db/mysql   (damos los permisos correctos)   Si tenéis alguna duda escribidla port aquí y contestare cuando pueda.   Nota: Si alguien le tira errores de libs al encender el server pueden ver esta guia    
  22. Me Gusta
    TheDead reacted to zhas77 in [Instalador automático] -> Metin2 ¡RELEASE!   
    Y en que ruta se instala el archivo?
     
  23. Me Gusta
    TheDead reacted to Break in [Instalador automático] -> Metin2 ¡RELEASE!   
    Hola comunidad,
    He tenido algo de tiempo libre y he empezado a desarrollar un script que realiza la instalación automática de un servidor de Metin2.
     
    Es algo básico, ya que la instalación de un servidor de Metin2 es muy sencilla, pero si te realiza la instalación un script, pues mejor que mejor. A continuación les dejare un vídeo realizando una instalación con el script.
    VIDEO UTILIZANDO EL SCRIPT [YA TERMINADO]
    En el vídeo se instala la base de eternia2.
     
    ¿Como utilizar el script?
    Descargarse el script y ejecutarlo.
    Ejecutamos el siguiente comando:
    fetch http://break.pid2k.es/instalador.sh && sh instalador.sh (He dejado que se obtenga el código por fetch, porque así si actualizo el código, todo el mundo cuando lo vaya a utilizar tendrá las nuevas actualizaciones)
    Si queréis descargaros el script por el navegador y las librerías que se han usado:

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Una vez ya descargado y ejecutado el script seleccionemos la opción deseada.
     
     
    El script controla lo siguiente:
    -> En caso de equivocarse al escribir mal el nombre de los files o de la db, antes de descomprimirlo, comprueba si se encuentra en el directorio raíz. Si no se encuentra, solicita de nuevo introducir el nombre del archivo. (En caso de que no se haya terminado de subir, esperar a que este subido por completo, si no entrareis en un bucle hasta que encuentre el archivo)
     
    -> Si el sistema operativo cuenta con una arquitectura de 64 bits, el script lo reconocerá, y preguntara la versión del sistema operativo para poder así descargarse las librerías de 32 bits del repositorio de freebsd, en caso que el script detecte que es una arquitectura de 32 bits, no preguntara el sistema operativo debido a que no es necesario descargarse las librerías.
     
    -> El script da la opción de subir un archivo ".zip" con las librerías, he de destacar que, si nuestro sistema es de 64 bits, las librerías del metin2 tienen que ir en /usr/lib32/ por lo cual, nuestro archivo .zip a la hora de descomprimirse tiene que hacerlo en esa ruta. Para ello descomprimirlo en vuestro pc, y fijarse si se crea una carpeta llamada usr, dentro otra llamada lib32 y dentro de lib32 que estén las librerías. En caso de que estemos en arquitectura 32 bits, la ruta tendría que ser /usr/lib/. 
     
    -> Si nos equivocamos  al escribir el  nombre .zip de las librerías, el script no se detendrá, simplemente se saltará el paso.
     
    -> Solo da privilegios a los directorios /usr/game y a /var/db/mysql/, en caso de que nuestros files se encuentren en otro directorio hay introducir el comando.
     
    PD: El script no controla las librerías que os hace falta a vuestros files especificos para hacerlos correr, el script mete unas librerías standar.
    Tenéis que añadir las librerías que os falten a sus respectivas rutas.
     
    Comentar que os parece, ya se que la mayoría de aquí sabe preparar la maquina para su servidor de Metin2.  (Solo es un detalle para las personas perezosas, o personas que no saben preparar una maquina) 
     
     
    POR ULTIMO
     
    Si cuento con mucho apoyo sobre este aporte, lo próximo que desarrollaré sera un script que realice copias automáticas a una determinada hora de una maquina a otra, así podemos tener guardadas nuestras copias de seguridad en un vps externo y que elimine cada ''x'' tiempo numero de copias, y solicitar que nos muestre el numero de copias. Con esto siempre tendríamos copias de seguridad de nuestro servidor en todo momento, sin tener que hacer nada.
     
    UPDATE VERSION 2
    Mucha gente le gusta instalar los files Arrival2, he creado el script que instala automaticamente la base de Arrival2 con su mysql, y crea usuarios de mysql.
    No hace falta subir ni los files ni la db, solamente ejecutar el script para ello:
    fetch http://break.pid2k.es/instalador_v2.sh && sh instalador_v2.sh  
    Seleccionamos la opción 3 e instala los files con la db, automáticamente. (También instala las librerías)
     
    Un saludo!
  24. Me Gusta
    TheDead reacted to Dilong in [PETICIÓN]Carpeta Quest.   
    Mas actualizado que esto?, no hay, si quieres quest actuales del oficial debes mandar a hacerlos
    Traducido acorde a los textos del oficial: 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Todas las quest del oficial 2014: 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  25. Me Gusta
    TheDead reacted to ChuchoGamer in Sistema de seguimiento de jefes   
    Hola buenas Aqui les comparto este sistema que esta bastante bueno les dejare video y link de descarga espero que los Disfrutes Traere mas sistemas 

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Link de Descarga 

    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Fuente: Manes2
×
×
  • Crear nuevo...