Bueno, ya que estaba hablando con vampirito, e decidido hacer el baul del aprendiz, esta bastante simplificado con 1 array muy facilmente modificable.
Aqui os la dejo.
Link: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
En el adjunto os dejo el descompilador que he usado para el item_proto y el mob_proto del cliente.
Y en el otro adjunto el item_names.txt, item_proto.txt, mob_names.txt, mob_proto.txt, totalmente en español y actualizados a fecha de hoy. También están el item_proto, y mob_proto, compilados y descompilados del cliente.
Saludos!
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
Hola Amigos de Zone Pues vi que alguien "Creo vendía este sistema o no se"
Pero aca se los traigo yo :s
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.
Descarga
Por lo tanto: Una funcion es una accion que se desarrolla en una quest. Si lo pensais de esta manera, los otros elementos de una quest son como preposiciones, adverbios, etc que ayudan a enlazar o condicionar las funciones: que son como los verbos dentro del lenguaje de las quests (si os fijais la funcion say es como pensar en el verbo decir).
En la lengua hay muchos verbos, hay muchas funciones de las quests tambien??
Por supuesto! La cantidad de funciones que nos permite utilizar un game de metin2 es enorme, y es como la tabla periódica de los elementos: os puede acojonar diciendo que hay que saberselos todos, pero no es necesario saberselos todos, sino entender como funcionan (saberse unos cuantos claros) y mediante la práctica y la revision de otras quests aprender a utilizarlos.
Y cuando estoi haciendo una quest que funcion debo usar??
Eso depende de la quest, si tu quieres hacer una quest en la que un npc te habla pues usarás la funcion say, si quieres dar un item a un personaje utilizarás la funcion pc.give_item2, etc Cada quest es un mundo, pero vereis que hay una serie de funciones que se suelen utilizar con mas frecuencia.
Por lo tanto, me dejo de explicaciones y vamos al rollo
Funciones habituales y como utlizarlas:
Funciones numero 1 - Say , chat y notice_all:
La que para mi es la funcion más utilizada de todas es la funcion:
say
Esta funcion nos permite que el personaje que está jugando a nuestro servidor vea un diálogo en su pantalla, ya sea un diálogo empezado por un item, por un npc, en un momento concreto (logeandote, siendo cierto nivel, entrado a cierto mapa...).
El funcionamiento básico de la funcion say es el siguiente:
say("Texto")
Como veis ponemos la funcion say, luego abrimos un partentesis y entre " " ponemos el texto que queremos que se vea en el juego. Ojo! Si se os cuela alguno de los " " al principio o al final del texto, la quest no irá correctamente.
Cada vez que que pongais otro say os pondra la nueva linea debajo de la anterior, es decir:
say("Hola keko")
say("estas enseñando a usar el say")
Este texto tendra 2 lineas, la primera dirá: hola keko, y la segunda estará justo debajo de la primera y dirá: estas enseñando a usar el say.
Un pequeño detalle: cuando usamos un say es como cuando escribimos en una libreta, no podemos escribir infinitamente, sino que cada linea tiene una cantidad de letras en las que pasa a la siguiente linea aunque no pongamos otro say.
Lo bueno es que el zonero Elite ha compartido un archivo para el root de vuestro cliente que os permite alagar ese número de palabras, y aqui lo teneis en el spoiler por si quereis ponerlo en vuestro cliente, si no tened en cuenta que muchas palabras en un say harán que se escriban en varias lineas.
Ahora otro detalle: si queremos dejar una linea en blanco (seria como darle a enter si escribieramos normal) simplemente tendreis que poner un say sin nada dentro, de esta manera:
say("")
Es algo que yo os aconsejo como creador de quests, ya que quedan mucho mas ordenado un diálogo con espacios entre párrafos, y aunque puedes ponerlo todo seguido siempre queda más bonito esteticamente.
Otra cosa a tener en cuenta es que hay varios tipos de says, que son los siguientes:
say_title("Curso de quests: Capitulo especial")
- El say_title nos permite escribir (como dice su nombre) el tÃtulo de un diálogo, que se distingue porque sale de color blanco en la quest.
say_reward("Enseña a metin2zone como usar el say")
- El say_reward significa literalmente que es un say para una recompensa, y si lo ponemos en nuestra quests se verá de un color mas oscuro que el resto del diálogo.
say_red("Metin2Zone curso de quests")
say_blue("Metin2Zone curso de quests")
say_yellow("Metin2Zone curso de quests")
- El say_color se utiliza si antes habÃas añadido al questlib de vuestro servidor la libreria de BlackYuko que hace que las funciones say_red/blue/green/etc enlacen con la funcion que permite cambiar el color de un say y asà poder ver en nuestros diálogos lineas de diferentes colores.
En el spoiler teneis el post de BlackYuko por si quereis usar says en colores.
Por último, puede haber casos en los que querais mostrar una variable en un say (el siguiente capi habla sobre las variables no os preocupeis si no os enterais mucho) lo hareis de la siguiente manera:
say("Hola, me llamo "..pc.get_name().."")
Como veis, para mostrar la variable del nombre teneis que ponerlo entre ".. .." con la funcion que quieres mostrar como texto entre ellos.
La funcion chat funciona igual que la funcion say, pero simplemente os saldrá el dialogo escrito en la barra de chat en vez de una ventana.
chat("Hola")
Por ultimo otra funcion muy comun es la de notice_all("Texto"), que escribira el dialogo como si un gm hablara poniendo /n
notice_all("Tonto el que lo lea")
Esta funcion tiene una variante que es notice_in_map, que no se utiliza mucho pero que hace lo mismo que un notice_all pero solo en el mapa en el se activa el dialogo.
quest ejemplo begin
state start begin
when 70045.use with pc.get_map_index() == 103 begin
notice_in_map("los que esteis en este mapa me leereis")
end
end
end
Os habreis quedado pensando: tanto rollo para aprender a usar el say??? Pues sÃ, por mucho que parezca la funcion más básica tiene sus detalles que es bueno saber para utlizarla lo mejor posible.
Funciones numero 2 : Los pc.algo
En la ultima parte de la explicacion del say os habreis fijado (espero) que he usado la funcion pc.get_name() para explicaros como mostrar eso en una quest. Pues hay una serie de funciones que afectan al personaje al que va encaminada la quest: ya sea para cojer información del jugador al que afectan, para poner una condicion al personaje, o para añadir algo informacion al personaje.
- pc.get_name() , pc.get_level() , pc.get_empire() , pc.get_map_index() , pc.get_hp() , pc.get_sp() , pc.get_exp() , pc.get_job() , pc.get_sex() , pc.get_local_x , pc.get_local_y , etc : Cada una de estas funciones nos proporciona informacion del personaje al que afectan y en el orden en el que están: nos dan su nombre, nivel, reino, mapa en que esta, cantidad de hp, cantidad de sp, de exp, profesion (cuerpo/magia negra, etc) , sexo , cordes x en la que se encuentra y cordes y en las que se encuentra.
Para usarlas simplemente debereis escribirlas asi como las puse. Ojo! No os olvideis nunca del parentesis en funciones que lo necesitan, o no funcionaŕan (pc.get_map_index == 240 esta mal escrito, tiene que ser pc.get_map_index() == 240).
Se utiliza para 2 cosas: comparar el nivel del pj con el nivel que queramos a la hora de hacer una condicion, o para mostrarlo en un diálogo (recordad que es entre ".. .." en el segundo caso). Veamos ejemplos de algunas de ellas.
quest nombre begin
state start begin
when login with pc.get_hp() <= 0 begin
chat("jajajajaja estas muerto")
end
end
end
quest nombre2 begin
state start begin
when login begin
chat("Bienvenido al servidor "..pc.get_name()..", que lo pases bien")
end
end
end
quest item begin
state start begin
when item.use begin
if pc.get_empire() == 1 then
notice_all("Soi del reino shinsoo")
elseif pc.get_empire() == 2 then
notice_all("Soi del reino chunjoo")
elseif pc.get_empire() == 3 then
notice_all("Soi del reino jinno")
end
end
end
end
quest exp begin
state start begin
when login with pc.get_exp() < 0 begin
local exppj = pc.get_exp()
chat("Anda tienes exp negativa")
chat("te la pondre en 0 otra vez")
pc.give_exp2(-exppj)
end
end
end
quest nivel begin
state start begin
when levelup begin
chat("Has subido a nivel "..pc.get_level()..", enorabuena")
end
end
end
Bien creo que ya os haceis una idea de como va la cosa, pasemos a otras funciones del tipo pc.algo muy utilizadas:
- pc.give_item2("iditem" , cantidad) , pc.remove_item("iditem", cantidad) , pc.count_item("iditem", cantidad) : Otras de las funciones mas utlizadas de todas. Estas funcione nos permite dar un objeto, quitar un objeto o comprobar si tiene un objeto el jugador al que afecte la quest.
La forma de escribir esta funcion es la que pongo ahi: especificando en el parentesis la id del item y la cantidad del mismo. Veamos algunos ejemplos:
quest toma begin
state start begin
when 20095.chat."Regalitooo" begin
say("Hola feo, quieres un item?")
say("")
local regalo = select ("Si" , "No")
if regalo == 1 then
pc.give_item2("27003", 200) -- aqui esta el que nos interesa
chat("toma potas!")
elseif regalo == 2 then
return
end
end
end
end
quest curso begin
state start begin
when 70044.use begin
pc.give_item2("71042", 1)
pc.remove_item("70044", 1)
end
end
end
quest hola begin
state start begin
when 20095.chat."Condiciones" begin
if pc.count_item("27003") < 200 then
say("Vaya no tienes lo que quiero")
say("vente otro dia")
return
end
say("Yupi tienes mis potas!")
say("me las quedo y te doi unas peores muajaja")
pc.remove_item("27003", 200)
pc.give_item2("27002", 200)
end
end
end
Vamos con otras funcion muy habituales:
- pc.warp(cordesx , cordesy) : Esta funcion nos permite llevar a un personaje a unas cordes concretas, que debemos especificar en el parentesis, poniendo al final de las cordes los dos ceros tipicos de un atlasinfo.
Nota: el tiempo se puede escribir en segundos o multiplicando. Si lo hacemos en segundos pues ponemos por ejemplo 60 y durará un minuto, y si lo hacemos multiplicando 60*5 son 5 minutos, 60*60*5 son cinco horas y asÃ.
quest montura begin
state start begin
when 70044.use begin
pc.mount(20110, 60*30)
pc.remove_item("70044" , 1)
end
end
end
- pc.change_money(cantidad) y pc.give_exp2(cantidad): Estas dos funciones os sirven para dar yang (change_money) o exp a un personaje (give_exp2).
Para usarlas simplemente debeis poner entre el parentesis la cantidad de yang o exp que quereis dar al personaje
quest famoso begin
state start begin
when 20094.chat."Soi famoso" begin
say_title("La fama")
say("")
say("Si quieres hablarme")
say("tendras que darme 500k")
local fama = select ("Lo hare" , "Paso")
if fama == 1 then
pc.change_money(-500000)
say("Ala, ya hablaste conmigo")
elseif fama == 2 then
return
end
end
end
end
quest expmas begin
state start begin
when 70042.use begin
pc.give_exp2(100000)
pc.remove_item("70042", 1)
chat("Toma exp!")
end
end
end
- pc.is_gm() , pc.is_dead() , pc.is_guild_master() , pc.is_polimorphed() : Este tipo de funciones os permiten que tenga lugar la accion si el personaje cumple lo que dice la funcion, como puede ser ser gm, estar muerto, ser jefe de gremio, estar polimorfado, etc
quest gm begin
state start begin
when login with pc.is_gm() begin
chat("Bienvenido a tu servidor gm")
end
end
end
quest caballo begin
state start begin
when 70045.use begin
if pc.is_polymorphed() then
chat("No puedes montarte a una montura polimorfado")
return
end
pc.mount("20111", 60*60*60*60*5)
end
end
end
Y por supuesto hay muchas mas funciones que afectan a un personaje, pero tendreis que ir descubriendolas y probandolas :yaoming: , yo solo os dire algunas.
3 - Funciones varias:
Veamos ahora algunas funciones que no son diálogos ni pc.algo:
- mob.spawn(mob, cordesx, cordesy, cantidad) : Con esta funcion podreis invocar un mob en el mapa en el que os encontreis en unas cordes concretas.
Para usarla ponemos la id del mob, las cordes x, las cordes y y la cantidad de ese mob.
quest itemmaldito begin
state start begin
when 70042.use begin
chat("Ha aparecido un monstruo en el mapa")
mob.spawn(1903, 340, 250, 1)
pc.remove_item("70042" , 1)
end
end
end
- affect.add_collect(apply.bonus,cantidad,tiempo) y affect.remove_collect(apply.bonus,cantidad,tiempo): Estas dos funciones os permiten dar un bonus a un personaje, durante un tiempo determinado y quitarselo.
Para usarlas pondremos en el parentesis el nombre que el bonus tiene en la tabla item_attr o item_attr_rare del navicat, la cantidad, y el tiempo (como explique antes) que durará. Si quereis que deje de tener efecto el bonus antes del tiempo estipulado pondreis la funcion igual pero con affect.remove en vez de affect.add.
quest fuerza begin
state start begin
when 70072.use begin
affect.add_collect(apply, ATT_SPEED, 15, 60*15)
chat("Has ganado 15% de velocidad de ataque")
chat("durante media hora, aprovechala")
end
end
end
- horse.summon() , horse.unsummon(), horse.set_level("nivel") , horse.advance() , horse.ride(), etc: Las funciones tipicas de un caballo, como son las de invocarlo, mandarlo al establo, subirlo a un nivel concreto , subirlo un nivel o montar el caballo.
La funcion de ponerle un nivel debe llevarlo en el parentesis:
quest librocaballo begin
state start begin
when 50053.use begin
horse.summon()
horse.ride()
end
end
end
- pc.setqf y pc.getqf, game.set_event_flag y game.get_event_flag : Estas 4 funciones son muy comunes pero tendrán sus capÃtulos aparte explicando su funcionamiento.
Como veis hay muchisimas funciones y aqui solo os he explicado unas pocas, si quereis saber todas las que hay yo suelo mirarlo en este post:
Y bueno eso es todo amigos!! El mundo de las quest se os va desvelando cada vez más, espero que ahora ya podais hacer mejor vuestras quests y preparaos porque va a haber un examen!! :trolldad:
Hola a los que vienen del anterior contenido mio de creación de servidores PARTE 1..
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
Aquí les dejo lo que he logrado recopilar, ojala no les moleste el formato y me disculpen.. esto les será muy útil, porlomenos
a los que vienen de la parte 1 y están empezando.
No he logrado organizar la mayoría de la información, muchas gracias a los que me enseñaron estas cosas, aunque no es mucho no abarca todo, solo lo esencial
recuerden, '/i 2222' sea 'i' o 'm' en los numeros cambian por las ID, con sus cuentas GM para invocar los objetos etc
Debes iniciar sesión para ver el contenido del enlace en esta publicación. Click Aquí*
Index
1-Ser GM
2-Comandos GM
3-Edición Armas, Armaduras etc - Ataque, Bonos, Defensa, Renombrar, Descripción MySQL y Proto del cliente
4-Edición Herrero, probabilidad fallo
5-Edición Quest - Creación, Carga, Borrado, Editar - Configuración Notepad++ entendible
6-Edición Drop de Monstruos
7-Edición Tiendas de NPC
8-Implementar Armas Armaduras Monturas
9-Como poner Contraseña en Navicat MySQL5 generarlas o traducir a texto
La mayoría son livianos, bueno hasta aquí llegue, hasta nunca xd
ACTUALIZADO 04/2021
PARTE 1
Explicación por mi
Créditos a: Nilsonmax Programas Juegos MAX y BESTPRODUCTION
Para Los nuevos.. es como montar un Windows en VirtualBox, solo que no hay pasos de instalación (es mas rápido si es que descargan uno ya hecho) de ahí
es solo configurar 2 programas y abrir el cliente, editando un pequeño texto en Pack
Semi Español, nivel max 120 versión 40k,32 bits (la que les enseñare), funciona 12/2020 probado por mi
En la misma pagina pueden encontrar el VDI 64 bits y el cliente full español, pero es solo una versión de test antigua no actual
DESCARGA
1- Debes iniciar sesión para ver el contenido del enlace en esta publicación. (que es el aqui enseño es la pagina de Nilsonmax)
2- Debes iniciar sesión para ver el contenido del enlace en esta publicación. si o si necesario y Debes iniciar sesión para ver el contenido del enlace en esta publicación. y root corregido Debes iniciar sesión para ver el contenido del enlace en esta publicación. para después utilizar
3- Virtualbox (Freeware buscar de la pagina oficial)
4- Hamachi (Opcional, multijugador a distancia, buscar de la pagina oficial)
5- WinSCP (Freeware solo necesario en la Parte 2, para edición)
6- Notepad++/Bloc de notas (para editar los textos y archivos .py)
7- Navicat MySQL 5.5 o otro superior premium de preferencia (de youtube mediafire :v)
8- PortMap (Freeware para abrir puertos 80 y 3306)
9- EterNexus File Archiver(esto es para extraer y editar archivos, no es necesario en esta parte solo en la Parte 2, lo encontraran en el Makepack o pueden descargarlo en otro post)
DATOS DE ACCESO: (Aclarar que utilice el BESTPRO 40k)
ESPA VDI freebsd 12.1=>usuario: root clave: 0424nilmary
ESPA Navicat freebsd 12.1=>usuario: remoto clave: R1.mo_To
BESTPRO 40k VDI freebsd 9.2=>usuario: root clave: dev
BESTPRO 40k Navicat freebsd 9.2=>usuario: root clave: /*bestproduction*/
clientes en ambos: usuario: nilsonmax clave:12345678
Video para entender de Brayan y NietzSche(El Cliente .es antiguo):
Pueden ignorar gran parte del video de Nietzsche. solo ver el virtual box como monta el vdi que ip se pone navicat y como cambia el root, solo eso, ya si quieren hacerlo desde 0 configurando su BSD etc pueden verlo completo
**
Otra opció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.)*
Editar nombres de NPC, descripciones de los objetos, traducir armas, cambiar nombres de items, editar valor de ataque de las armas defensa de armadura (MySQL y Item proto) abajo
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.
ANEXO
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
Otros files/en español y 40k una alternativa al español de arriba
Debes iniciar sesión para ver el contenido del enlace en esta publicación. Mas info en el post bien explicado y detallado, y en el esta el post original de Arribal2
Debes iniciar sesión para ver el contenido del enlace en esta publicación. (dice ser la versión final)
Pagina Oficial Para Profundizar mas y si quieren comprar su producción y la versión final ( 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.
Tomen nota de estos programas(estan al inicio del post) y entren en Debes iniciar sesión para ver el contenido del enlace en esta publicación.
Si quieren editar quest (para cambiar algunas cosas como lo que da el baúl de aprendizaje, misiones, bienvenidas) (WinSCP usr /home/game/share/locale/germany/quest) , drop de yang(MySQL), porcentaje y que objetos dropean mobs y metines (WinSCP), introducir nuevas armaduras escudos(cliente root, MySQL y WinSCP)
ACLARACIONES
Según describió puedes descargar otro cliente y igual seria compatible
excepto por algunos que necesitas cambiar la MySQL ver pagina 4 de: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
Esto ha sido solo lo básico, hay clientes mas avanzados con mas equipos y implementaciones
Ahora ya depende de ustedes quizá mas adelante les muestre otras cosas, nos vemos
El pack incluye:
- Cliente
- Source code cliente
- Source code server
- Server files (quests, mapas, cores, etc.)
Son unos server bastante estables y equilibrados, probados con más de 500 usuarios online al mismo tiempo sin problemas de lag o caídas.
Sin bugs.
Actualmente el servidor se encuentra online y podéis probarlo en Debes iniciar sesión para ver el contenido del enlace en esta publicación.
También le podéis echar un ojo a la presentación si queréis ver lo que incluyen: Presentación
Descripción y sistemas:
- Base estable, equilibrada y testeada con cientos de usuarios online.
- Cabos y flechas infinitas
- Instant equip
- Special Storage
- Diálogo destruir objetos
- MP al hacer click en nombre
- Target information
- Shop offline + WON (versión única sin bugs)
- Cambiar CH (versión única sin bugs)
- Pet system
- Inventory slot marking + exchange system
- Rocios en affect bar
- Revivir full hp
- Block/unblock exp
- Estolas
- Biólogo profesional
- Sistema de brillos
- Party buff
- Un jugador por IP en mapas indicados
- Revive event para quests
- Limite de yang 999.999.999.999
- Dungeon info
- Transfiguración
- Dar MDs a todos los player de un imperio en un mapa.
- Dungeons únicas: (Aryas dungeon, Cueva Slime, Bosque Celestial...)
- Dungeons normales: (Nemere, Arrador, Azrael, Torre...)
- Eventos: (Budokan, guerra de reinos, defiende tu metin, sayon, guerra total, evento de caza, trueque sorpresa...)
- Atuendos de armas y armaduras únicos
- Y mucho más... revisa presentación o descarga el servidor.
Server File: Debes iniciar sesión para ver el contenido del enlace en esta publicación. (Elimine base de datos y estan limpios)
WEB programada en Python: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
Puedes revisar el funcionamiento de esta en www.metin2rage.com
1- Mediante el make.sh que viene por defecto en los files de metin2 y que para usarlo para cargar una nueva quest tendreis que hacer lo siguiente:
- Encendeis vuestro servidor hasta despues de logearos.
- Poneis el siguiente comando (o el mismo pero con la ruta en la que este la carpeta quest en vuestros files)
cd /home/game/quest
- Meteis vuestra nueva quest (por ejemplo logeo.quest)
- Ahora abris el archivo locale_list , que puede tener un nombre diferente dependiendo de los files, pero sera algo acabado en (_list).
- Al final del archivo, poneis el nombre de vuestra nueva quest, con el .quest incluido (logeo.quest por ejemplo), LE DAIS UN ENTER AL FINAL DEL ARCHIVO, guardais y cerrais.
- Ahora solo teneis que volver al bsd, y poner:
chmod 777 make.sh && sh make.sh
- Una vez hecho eso ya estara cargada vuestra nueva quest.
- Inconvenientes de este metodo: Cargais la lista entera de quests.
*Si haceis esto con el servidor encendido, poned reload q con vuestro gm y ya estara funcionando la nueva quest.
Bueno, aqui os dejo mi quest de catacumbas, que he echo, estan muy logradas, y son exactas al oficial, no le faltan plantas y el funcionamiento es el mismo, la unica pega que le veo es que no traen los dialogos, si poneis los dialogos del .es, tendreis 1 clon de ellas.
Aqui os dejo el link:
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
Funcionan sin problemas, no hay ningun error aparente.
Teneis que editar el deviltower_zone.quest para que esta os funcione, matando al reaper.
Si teneis algun problema, con ellas, avisarme, tambien decir que falta poner los mobs, bien, cordenadas etc.