Jump to content

Break

Admin
  • Contador contenido

    7.006
  • Ingreso

  • Última visita

  • Días ganados

    45

Actividad de reputación

  1. Gracias
    Break reacted to Dilong in [PETICION]Quest Caballo Militar   
  2. Me Gusta
    Break reacted to Nicolas.Tizeira in [CLASE 2] React Js - Handling Events, Virtual DOM, Arrays, Funciones, Asincronia, Callbacks, Promises y Axios   
    Handling Events
    No voy a explicar teoria sobre Handling Events, supongo que todos sabemos lo que es, paso a mostrarles como se realiza en React y nada mas.
    Conocemos que un Handling Event en Javascript se realiza de la siguiente forma:
    <button onclick="saludar()"> Click me </button> Pero en React Js se realiza de la siguiente forma:
    <button onClick={saludar()}> Click me </button> Y dentro de un componente que vimos como crearlos la clase pasada, nos quedaria de la siguiente forma:
    class BotonSaludar extends Component { saludar = () => { alert('Hello World!'); } render() { return ( <button onClick={this.saludar}> Click me </button> ); } } Entonces esto seria un solo componente, un solo archivo js, como vimos en el ejercicio anterior, y exportandolo, ya podemos usar este boton en cualquier lugar de nuestra web application llamandolo con:
    <BotonSaludar/> VIRTUAL DOM
    Virtual DOM es una abstraccion del DOM, y es UNICO de React Js, es una copia fiel del DOM normal que todos conocemos.
    DOM
    Es una representación estructurada del documento HTML y define de qué manera los programas pueden acceder al fin de modificar, tanto su estructura, estilo y contenido.


     
    Pero... ¿que sucede si se reconstruye el DOM cada vez que hay cambios?

    Si, se volveria loco nuestro señor pintor jaja, y ESTO es lo que viene pasando EN TODOS los lenguajes de programacion de vistas, como html5. Cada vez que se realiza un cambio en la vista, se recontruye TODO el DOM, y asi millones de veces por cada client. Y aca viene una de las cosas mas novedosas de React Js.

    React implementa Virtual DOM.
    React crea una copia ligera del DOM y en cada cambio lo compara con el DOM Real. En lugar de renderizar el DOM completo en cada cambio, los aplica exclusivamente en las partes que varían.

    Métodos de arrays
    forEach
    Ejecuta la función callback una vez por cada elemento presente en el array en orden ascendente.
    unArray.forEach(function(value, index){ console.log("En el indice: " + index + " está el valor: " + value); }); find
    Devuelve el valor del primer elemento del array que cumple la función de prueba proporcionada. En caso de no encontrarla, devuelve undefined.
    var inventario = [ {nombre: 'manzanas', cantidad: 2}, {nombre: 'bananas', cantidad: 0}, {nombre: 'cerezas', cantidad: 5} ]; inventario.find(function(fruta){ return fruta.nombre == 'cerezas' }); Nos devuelve: { nombre: 'cerezas', cantidad: 5 } map
    map llama a la función callback provista una vez por elemento de un array, en orden, y construye un nuevo array con los resultados.

    var results = [10,8,9,31].map(function(value){ return value % 2; }); Devuelve: [0,0,1,1] ¿Y si quisiera los resultados por separado?
    var results = [10,8,9,31].map(function(value){ return value % 2; }); first = results[0]; second = results[1]; third = results[2]; En este caso lo que haremos sera destructurarlo:
    var results = [10,8,9,31].map(function(value){ return value % 2; }); [first, second, third] = results; var results = [10,8,9,31].map(function(value){ return value % 2; }); [first, second, ...rest] = results; Y el destructurado tambien nos funciona con objetos:
    var o = {p: 42, q: true}; var {p, q} = o; filter
    filter llama a la función dada callback para cada elemento del array , y construye un nuevo array con todos los valores para los cuales callback retorna un valor verdadero.

    [10,8,9,31].filter(function(value){ return value%2==0; }); Devuelve: [10,8] reduce
    El método reduce() aplica una función a un acumulador y a cada valor de un array (de izquierda a derecha) para reducirlo a un único valor.

    [3,4,10].reduce(function(accumulator,currentValue){ return accumulator + currentValue; },[initialValue]); Devuelve: 17
    Hora de la practica
    var productos = [ {nombre: 'mouse', categoria: 'computadora', cantidad: 2}, {nombre: 'teclado', categoria: 'computadora', cantidad: 0}, {nombre: 'almohadon', categoria: 'deco', cantidad: 0}, {nombre: 'cartera', categoria: 'moda', cantidad: 0}, {nombre: 'iphone 8', categoria: 'celulares', cantidad: 5} ]; a. Imprimir los nombres de todos los productos por consola.
    b. Imprimir cantidad disponible de iphone 8.
    c. Aumentar 2 cantidades en todos los productos.
    d. Imprimir solo los productos que pertenecen a la categoría computadora.
    e. Imprimir stock total.

    Funciones
    Definición de una función
    Declaramos una función con un nombre para hacer referencia e invocar la función.
    function cuadrado(lado) { return lado*lado } cuadrado(5) Devuelve = 25 Expresión de una función
    Asignamos una función anónima a una variable. Podemos invocar la función utilizando la variable.
    var cuadrado = function(lado) { return lado*lado } cuadrado (5) Devuelve = 25 function declarations vs function expressions
    anterior(5); doble(5); var doble = function(num){ return num*2; }; function anterior(num){ return num-1; } anterior(5); //4 doble(5); //Error var doble = function(num){ return num*2; }; function anterior(num){ return num-1; } Scope
    El alcance de una variable determina su accesibilidad.
    function next(){ var a = 6; return a+1; } En este caso "a" es una variable LOCAL. var a = 6; function next(){ return a+1; } Y en este caso "a" es una variable GLOBAL. Closure
    function padre(){ var a = 1; function closure(){ console.log(a); } closure(); } Cuando al anidar funciones, una función crea una variable local y una función interna, ésta función interna es un closure y solo está disponible dentro de la función padre. A diferencia de la función padre, el closure no tiene variables locales y usa las declaradas dentro de padre().
    Ahora para ver si entendimos, en el siguiente codigo que imprimiria en la consola?
     
    function saludoConVar() { var saludo = "Hola"; if (true) { var saludo = “Chau”; console.log(saludo); } console.log(saludo); } Si efectivamente, en consola imprimiria las dos veces CHAU.
    Let ES6
    Permite declarar variables limitando su alcance (scope) al bloque, declaración o expresión donde se está usando.
    function saludoConLet() { let saludo = "Hola"; if (true) { let saludo = "Chau"; console.log(saludo); } console.log(saludo); } Y ahora si, nos imprimiria en el primer console.log un Chau y en el siguiente un Hola.

    Hora de la practica
    a. Definir una función que reciba un número X e imprima los primeros X números de la sucesión Fibonacci. Los números de Fibonacci deben ser generados por la función.
    0,1,1,2,3,5,8,13,21,34,55,... b. ¿Qué creen que imprimirá por consola el siguiente código? ¡No ejecutar el código!
    var frutas = ["Cereza", "Manzana", "Melón", "Frutilla"]; for(var i = 0; i <= frutas.length; i++){ setTimeout( function(){ console.log(frutas[i]); }, 2000); }.  
    c. Ejecutar el código anterior. ¿Qué imprime por consola y por qué?

    d. ¿Cómo harían para que imprima por consola cada elemento del array cada 2 segundos?
     

    Podemos tratar a las funciones como variables. Esto nos da la posibilidad de:
    Almacenarla en variables:
    var doble = function(a){ return a*2; }
    var doble = function(a){ return a*2; } Retornarla:
    function vuelto(monto){ precio = 100; function calcVuelto(){ return precio-monto; } return calcVuelto(); } Y pasarla como argumento:
    function a(){ console.log("a"); } function b(a){ console.log("b"); a(); } Y si te pregunto ¿Que hace esto? ¿Que responderias?
     
    function username(unaFuncion){ var name = prompt("Ingrese su nombre"); unaFuncion(name); } function welcome(name){ alert("Bienvenido " + name + "!"); } username(welcome); PARA SEGUIR LA CLASE UNITE A SLACK, AHI RESPONDES ESTAS PREGUNTAS Y YO TE IRE RESPONDIENDO PARA QUE SEPAS QEU VAS ENTENDIENDO.
    Callback
    Callback es una función que se pasa por parámetro a otra función y en principio se ejecuta una vez que se haya terminado de ejecutar la función anterior.
    Cuando enviamos una función anónima a un evento, estamos utilizando Callbacks.
    Un Callback funciona como un Closure.
    ¿Y esto que hace?
    function funcionA(funcionB){ console.log("a"); setTimeout(function(){ funcionB() },1000); console.log("c"); } function funcionB(){ console.log("b"); } funcionA(funcionB);
    Asincronía en JS
    Asincronía en JS
    ◆ Callbacks (ES5)
    ◆ Promises (ES6)
    ◆ Async/await (ES7)
    Callbacks
    Callback -> Procesos asincrónicos
    function primero(callback){ setTimeout(function(){ callback(); },1000); } function segundo(){ console.log("Ejecutando callback"); } console.log(‘antes’); primero(segundo); console.log(‘despues’); //antes //despues //Ejecutando callback function primero(callback){ setTimeout(function(){ console.log("Primero"); callback(); },1000); } function segundo(callback){ setTimeout(function(){ console.log("Segundo"); callback(); },1000); } function tercero(){ console.log("Tercero"); } Esto seria: primero(segundo(tercero)); Callback hell
    primero(function(){ segundo(function(){ tercero(function(){ cuarto(function(){ ... }); }); }); });
    Hora de la practica
    a. Consultar datos de un pokemón haciendo llamado ajax a pokeAPI (Por ejemplo: Pidgey) e imprimir por consola su nombre y peso.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    b. A partir de la consulta anterior, imprimir por consola el nombre y peso de su próxima evolución (Es decir, Pidgeotto).
    c. ¿Cómo haríamos si queremos también imprimir los datos de su próxima evolución? (En nuestro ejemplo, Pidgeot). ¿Qué comportamiento se repite?

    Promises
    Promises
    Una Promesa es un objeto que representa la terminación o el fracaso eventual de una operación asíncrona.
    Representa un valor que puede estar disponible ahora, en el futuro o nunca.
    const promise = f(); promise.then(exitoCallback).catch(errorCallback); function f(){ return (new Promise((resolve, reject) => { var ok = Math.round(Math.random()); if(ok){ var foo = "Todo ok"; resolve(foo); } else { reject(new Error("Ocurrio un error")); } }) )} const promise = f(); promise.then(foo => console.log(foo)).catch(error => console.log(error)); En esta promise que acabamos de ver si la promise se ejecuta bien nos devolvera "Todo ok" y si hay un error durante la ejecucion de la promise nos devolvera el Error.
    const promise = f(); promise .then(function(response1){ //código }) .then(function(response2){ //código }) .then(function(response3){ //código }) .then(function(responseN){ //código }) .catch(errorCallback); Const
    Puede recibir un valor en el momento de la declaración. Luego no puede ser modificada.
    const pi = 3.14; pi = 3.141592635; //Error!! COMO DIJE, NO SE PUEDE MODIFICAR PARA ESO SE USAN VARAIBLES NO CONSTANTES. Y ahora practiquemos con promises... asi que...
     

    Hora de la practica
    a. Modificar el ejercicio anterior para manejar el código asíncrono con promesas.
    b. Instalar la librería Axios y utilizarlo para peticiones HTTP del ejercicio anterior.

    Y bueno para ir terminando la clase de hoy y no hacerlo mas extenso veremos axios y damos por finalizada esta clase.
    AXIOS
     
    AXIOS
    AXIOS es una librería de Javascript para hacer pedidos asincrónicos HTTP (AJAX) a través de promesas
     
    npm install axios import Axios from 'axios'; Ya voy asumiendo donde van cada comando, y cada cosa, por  eso ya no lo nombre, si siguen atentamente las clases y repasan o realizan las practicas, no hara falta explciarles que el import va en el componente que crearon y que necesitan que usea axios o lo que sea.
    AXIOS - GET
    Axios.get(url) .then(callbackSuccess) .catch(callbackFail); Por ejemplo, usaremos la api de pokemon con la que estuvimos practicando:
    Axios.get('https://pokeapi.co/api/v2/pokemon') .then((response)=>console.log(response)) .catch((error)=>console.log(error)); AXIOS - POST
    Axios.post(url, data) .then(callbackSuccess) .catch(callbackFail); Por ejemplo asi se realiza un post dentro de nuestra api:
    Axios.post('/user', {name:'Pepe', age:'18'}) .then((response)=>console.log(response)) .catch((error)=>console.log(error));  
    Y con esto terminamos la clase de hoy, fue mucho mas rapida y consisa que la anterior, y cada vez nos vamos mentiendo mas a fondo de lo que trata esta hermosa libreria. Veremos como desarrollare la proxima clase no puedo decirles que veremos la proxima, por que la verdad aun no la pense.... en la semana les dire como proseguiremos, les deseo mucha suerte, buen desarrollo y los espero es Slack para despejar dudas y compartir codigo entre todos!
  3. Haha
    Break reacted to nero999 in fallo con la web   
    Gracias!! :D
  4. Me Gusta
    Break got a reaction from nero999 in fallo con la web   
    Con eso no hacemos nada, puede ser muchas cosas pero el error más común es: 
    Fíjate cuando tu creas una cuenta desde el navicat manualmente, si te obliga a rellenar una columna, si es así es que tienes una columna que no se puede quedar ''NULL'' y al hacer el insert desde la web, si esa columna no la rellenas, rechaza el insert y por tanto no se registra la cuenta. 
     
    Si quieres que le eche un vistazo, mándame team viewer por privado y lo miramos.
    Un saludo!
     
  5. Me Gusta
    Break reacted to Nicolas.Tizeira in [PROYECTO] Administrador Total [v0.0.1]   
    Un millon de disculpas a todos, como veran me atrase bastante con el proyecto por motivos personales, otros proyectos y otras tareas que tuve que realizar en mi ambiente laboral. Hace unos dias retome el proyecto y segui avanzando, cambie un poco la tematica por tema de seguridad, y el open source lo publicare por GitLab en un repositorio para todo aquel que quiera realizarle modificaciones personales, aunque recomiendo que lo mejor seria que despejen sus dudas y hagan sus peticiones, y yo mismo incluyo las mejoras que quieran... ¿por que esto? Claro si quieres meterte a investigar el codigo y hacerlo por tu cuenta no hay ningun problema, pero como yo soy el programador del sistema estare mas famialerizado y podre realizar lo que necesiten en menor tiempo.

    Estoy terminando de pulir la instalacion que daba errores en console.log, les dejo un fotito:




    Como ven ya pude ir puliendo el console.log, mi idea es entregarles un proyecto lo mas limpio de errores y warning posible, una web application optima.

    Nuevamente disculpen la tardanza, ya retome la programacion del mismo y prometo en poco tiempo brindarles la primer version.
  6. Haha
    Break reacted to Kratos in [Petición]Logo   
    Hola! mira aqui te dejo uno sencillo que te hice yo mismo espero te guste. ATT: Darkthegame 

    Debes iniciar sesión para ver el contenido del archivo adjunto en esta publicación.
  7. Me Gusta
    Break reacted to Zart in Item para invocar boss   
    quest invoca begin state start begin when item_id.use begin mob.spawn(mob_id, pc.get_local_x(), pc.get_local_y(), 5, 0, cantidad) end end end Me había equivocado, disculpa. Recuerda modificar item_id, mob_id y cantidad a tu gusto.
  8. Me Gusta
    Break got a reaction from Anthony's in [Opinión] City's y Mapas   
    El mapa visualmente esta muy chulo, pero a mi personalmente me agobia que haya tanta infraestructuras, y más siendo la city que es la zona donde vas a estar más tiempo. Un consejo, donde esté la plaza quita los árboles, para cuando los usuarios estén en la plaza no se agobien, en los duelos etc...
     Pero por lo demás esta muy bien, cada npc ambientado con su zona de trabajo. 
     
    En pocas palabras: Buen trabajo.
    Pd: la crítica que te he realizado es personal, y no voy con intención de ofender ni a menospreciar tu trabajo.
  9. Me Gusta
    Break reacted to Anthony's in [Opinión] City's y Mapas   
    Buenas,
    Aquí iré publicando vídeos de mis Mappeos que ya están testeados y funcionales en algunos servidores, espero que os gusté y me deis vuestra opinión para mejorar en futuros trabajos.
     
     
  10. Haha
    Break reacted to Dilong in a alguien le ha pasado esto?   
    navicat >> mob_proto >> design table >> Character set >> latin1 -- cp1252 west european >> collation >> latin1_bin >> ahora ve agregando de nuevo todos los acentos y ñ a los npc (no hace falta hacer eso a los mobs, el cambio no sera visible, solo en npc´s)
  11. Me Gusta
    Break 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    
  12. Haha
    Break reacted to Dilong in transportar al momento de loguear   
    quest teleport_rank begin state start begin when login with pc.get_alignment()== 50000 begin notice("texto") pc.warp(x,y) end end end  
  13. Gracias
    Break got a reaction from Innocent in Solución para -->CArea::LoadObject Property() Load ERROR   
    Buenas zoneros, pues tenia un error en el cliente en concreto era este: 
    Leyendo por otros foros etc, empece a probar cosas y me di cuenta que el error viene del property como era lógico.
    Pero en concreto es que cuando se implemento el mapa en el cliente, su property se introdujo pero, no en la carpeta property si no en otra carpeta por lo cual el cliente no lo abre  ''Load ERROR''.
    Entonces la solución de este problema es, ir al locale atlasinfo e ir quitando los últimos mapas y detectar cual es el mapa que tira error.
    Cuando lo detectéis lo único que tenéis que hacer es buscar el mapa por google, meter la carpeta del property del mapa, en la carpeta correcta que es en property.eix / epk y error solucionado. Cualquier duda comentar o escribirme.
    ¡Saludos y espero que sea de ayuda!
  14. Haha
    Break reacted to mtcosmos in [SG]Interfaz de caballo[Horse gui]   
    Pero alomejor otro tiene idea... nose xd
  15. Gracias
    Break reacted to Nicolas.Tizeira in [PROYECTO] Administrador Total [v0.0.1]   
    ¡Bienvenidos colegas de Metin2Zone!


     
    Hoy les presento mi primer tema en el foro, les traigo un proyecto que estoy comenzando a desarrollar el cual llamo "Administrador Total" o por su siglas AT y que sera gratuito para la comunidad. El programa esta realizado desde su raíz completamente por mi, trabaja bajo el lenguaje de objeto pascal y una framework bastante especial e elegante que logre dominar en mis últimos estudios.

    Voy a estar subiendo constantemente actualizaciones al tema, con los avances y los nuevos links de descarga. El programa tendrá 2 versiones para usarse ustedes pueden optar por la que crean mas cómoda, paso a comentarles cuales son:

    1) El programa consta de 1 solo archivo que sera una librería, si, un .dll el cual se llamara AT.dll este se debe montar como isapi en un servidor IIS (Internet information services) y bueno redirigiendo las paginas como deben obtendrán el programa funcionando en la web.
    2) El programa consta de un carpeta "servidor", la cual deben instalar en su dedicado o el servidor que usen para hospedaje web, habilitar el puerto 8028 (80 por servicio web, 28 por las siglas AT) y si esta todo bien instalado ejecutan el .exe que se encuentra en la carpeta servidor, este levantara un servicio y funcionara como servidor sin tener que realizar la tarea compleja de montar un servicio sapi en IIS.

    En mi opinión, prefiero por estética y seguridad la opción de montar un servicio ISAPI en IIS. Pero como es una tarea compleja para alguien que nunca monto un isapi en IIS, se puede optar por la salida fácil que también se las brindo.
     
    AT - v0.0.1
    (Fecha de publicación: Lunes 15 de Enero de 2018)

    Hay que tener en cuenta que es la primer versión del programa, por lo tanto es sencillo no tiene muchas opciones actualmente, pero día a día sigo agregando cosas y programando nuevos menús, los cuales iré subiendo en nuevas versiones. Se agradece cada granito de arena que aporten con ideas nuevas para el programa y cosas que creen necesarias agregar que faciliten el mantenimiento y control de un servidor desde un solo programa integral.
     
    Instalación del Sistema
    Método por ISAPI
    Método por Servidor Local
    Fotos del Sistema
    Descargas
    Por ahora solo les presento el proyecto que voy a ofrecerles, y de paso, ya dejo armada la guía de como instalarlo, en cuanto termine la primer versión por completo y pase la prueba de testeo sera subida la descarga, el tiempo estimado es el lunes 15 de enero, luego iré actualizando el post con nuevas fechas de lanzamiento de nuevas actualizaciones, sera básicamente el mismo método, les diré el numero de versión el contenido nuevo que tendrá y la fecha en que se estima que estará subida para descargar. A medida que voy realizando cosas nuevas voy ampliando la galería de fotos, claramente no puedo poner fotos de TODO lo que contiene el programa, pero pondré variadas para mostrar aproximadamente como es el programa en cada menú.
     
    Para los que controlan servidores en masa en alguna empresa o trabajaron de algo parecido, podría decirles que estoy intentado crear una especia de Nagios (para los que lo conocen, en el ámbito de servidores es muy conocido por las empresas que contienen una cantidad increíble de servidor que mantener bajo control) pero exclusivamente para Metin2 sumado a muchas otras opciones mas de mantenimiento especificas de Metin2.
     
    Muchas gracias por leerme, espero que les guste mi proyecto y aporte. Cualquier idea que se les ocurra es muy bienvenida.
  16. Gracias
    Break reacted to Dilong in Translate   
    Usen el translate que puse en este serverfile, la calidad de las traducciones son mejores al translate que habia en este post
     
  17. Me Gusta
    Break reacted to Dilong in Actualizacion de FIles   
    No confundas serverfiles con el sistema operativo freebsd, son dos cosas diferentes, y al ser unos files viejos como tratas de decir, si o si deberia de funcionar en cualquier version de ese sistema operativo, que no haya sido preparado como debe ser ya es otra cosa
  18. Me Gusta
    Break reacted to xPepe in Actualizacion de FIles   
    Pues si te quedas con la ayuda de una sola persona vas apañado. Pero oye, es tu error, si tan interesado estas en que alguien te ayude tu sabrás que tendrás que hacer.
  19. Gracias
    Break reacted to Randaron in Cliente 2008 Virgen 100%   
    Buenas tardes , Vengo a traer un cliente virgen 2008 para los que quieran trabajar files antiguos !


    Link:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Puede descomprimir los archivos en el paquete con EterNexus y para iniciar el cliente puede crear un archivo .bat con el texto de inicio metin2.bin dentro de él.
  20. Haha
    Break reacted to Randaron in Systema Expasion de Inventarios   
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Buen aportaso loco ! que dios que vendiga jajajaja !
  21. Me Gusta
    Break got a reaction from Emir Sanchez in Systema Expasion de Inventarios   
    Buenas zoneros, pues estaba buscando el sistema de inventarios de expansión y no estaba en el foro. Me he animado a compartirlo aquí también con vosotros.
    Vídeo del sistema:
     
    Link de descarga: 
     
    Fuente metin2dev.org
    Espero que os sirva.
    ¡Saludos!
  22. Gracias
    Break got a reaction from sol in problemas al crear iconos   
    El error viene de las lineas del item_proto que has implementado, como si solo ocupase un slot, tienes que poner que ocupa 3 slot y ya esta.
     
    Edit: Te dejo una foto con unas lineas de armas y te señalo la columna de los slots.
     
    ¡Espero que te sea de utilidad!
  23. Sorprendido
    Break reacted to Lishel Dawson in [C++]Fix trade duel duplicar items.   
    Holi a todos/as, haciendo la solución que se da para fixear la shop offline, me tira este error:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. he de destacar que te falta una  " comillas, en el comentario de "No puedes abrir una tienda durante un duelo". Jijijijiji , ¿Me podéis ayudar en este error? porfis 
    Debes iniciar sesión para ver el contenido del archivo adjunto en esta publicación.
  24. Haha
    Break reacted to Randaron in Solución para -->CArea::LoadObject Property() Load ERROR   
    Bien crack !
  25. Gracias
    Break got a reaction from Yuri Cesar in Solución para -->CArea::LoadObject Property() Load ERROR   
    Buenas zoneros, pues tenia un error en el cliente en concreto era este: 
    Leyendo por otros foros etc, empece a probar cosas y me di cuenta que el error viene del property como era lógico.
    Pero en concreto es que cuando se implemento el mapa en el cliente, su property se introdujo pero, no en la carpeta property si no en otra carpeta por lo cual el cliente no lo abre  ''Load ERROR''.
    Entonces la solución de este problema es, ir al locale atlasinfo e ir quitando los últimos mapas y detectar cual es el mapa que tira error.
    Cuando lo detectéis lo único que tenéis que hacer es buscar el mapa por google, meter la carpeta del property del mapa, en la carpeta correcta que es en property.eix / epk y error solucionado. Cualquier duda comentar o escribirme.
    ¡Saludos y espero que sea de ayuda!
×
×
  • Crear nuevo...