Jump to content

caanmasu

Members
  • Content Count

    209
  • Joined

  • Last visited

  • Days Won

    11

caanmasu last won the day on June 23 2020

caanmasu had the most liked content!

6 Followers

About caanmasu

  • Rank
    Aficionado

Recent Profile Visitors

1,261 profile views
  1. 1. Es "send_letter" 2. Puedes usar los caracteres especiales siempre y cuando no estén al inicio o al final de la línea 3. Esto se te va a bugear porque tienes un [ al inicio de la línea
  2. Hello amigo No te cae el objeto porque tienes que tener al menos uno en el inventario, así está en tu evento. if pc.count_item(50011) >= 0 then local porc = math.random(1,16) if porc <= 2 then game.drop_item_with_ownership("50011", 1) syschat("Você Dropou o Bau Arca de Luar, Pegue seu Premio!") end end Fíjate que está diciendo que si el personaje ya tiene el objeto, que le dropee. Pero si no tiene el objeto nunca le va a caer. Yo quitaría esa condición
  3. Hola mis cracks! Soy yo de nuevo, Camilo! Yo sé, no he llegado aún pero me faltan 3 puntos para llegar a los 400 3 reacciones a este mensaje y llegamos GOGOGO 400 ayudas, experiencias, formas de compartir he vivido en este foro de no solo hispanos sino también latinos e incluso una que otra persona de otro idioma/país. Fue en este foro donde aprendí lo básico, y bueno, hace años atrás había otro foro que ahora no existe. 400 veces me agradecieron por ayudarles 400 veces valoraron mi voluntario trabajo 400 veces dijeron que tenía que seguir No me estoy despidiendo, no me malinterpreten xD Estaré tiempo por fuera, así que no podré ayudarles por el momento pero cuando vuelva ¡habrá sorpresas! Últimas cosas que hice en Metin2: - Un programa que asigna la experiencia oficial de cada monstruo y personalizada con un multiplicador. Tanto para MySQL como para txt. - Las misiones del oficial hasta el nivel 90. Tanto las principales como las "new quests" como las secundarias. - Un programa que reemplaza líneas en otro idioma (turco, por ejemplo) por líneas en español en el cliente. Es decir, es un traductor. E incluso si no tienes las líneas traducidas, hay una forma de traducirlas con el Traductor de Google y con un solo clic se ajustan al archivo listo para meter al cliente. Hice otras cosas pero ahora no me acuerdo. Bien, cracks; no etiqueto a nadie porque si me falta alguien me linchan xD Éxitos para todos! No estaré activo en el foro por un tiempo. Con los 400 puntos vamos por juegos de azar y... lo que diga tu imaginación!
  4. Hola! En el when de los kills debes agregar debajo: if game.get_event_flag("mondlicht_event") == 0 then return end Quedaría así: when 8001.kill or 8002.kill or 8003.kill or 8004.kill or 8005.kill or 8006.kill or 8007.kill or 8008.kill or 8009.kill or 8010.kill or 8011.kill or 8012.kill or 8013.kill or 8014.kill or 8017.kill or 8018.kill or 8019.kill or 8024.kill or 8025.kill or 8026.kill or 8027.kill or 8054.kill or 8055.kill or 8056.kill begin if game.get_event_flag("mondlicht_event") == 0 then return end if pc.count_item(50011) >= 0 then local porc = math.random(1,16) if porc <= 2 then game.drop_item_with_ownership("50011", 1) syschat("Você Dropou o Bau Arca de Luar, Pegue seu Premio!") end end end Pero igual te recomiendo la quest del evento Luz de luna de Marty Sama. Yo ahorita no lo puedo buscar Ando inactivo en el foro, estoy de pasadaaaa Espero que te sirva
  5. Gracias por sus comentarios! cracks! Parece que les gustó mucho, me han escrito varias personas. De navidad voy a adjuntar un programa que facilitará muchísimo las cosas. Todavía no les diré qué es, esperemos el 24!
  6. Hola! Estaba intentando arreglar la experiencia de los monstruos del juego. Vi muchos mob_proto.txt y la exp está totalmente modificada, que incluso está muy mal distribuida. Además cambiar la experiencia ya sea aumentarla o disminuirla se volvió más difícil porque ya los srvs no van por db, así que no se hará con una sencilla query. Estaba claro que no iba a cambiar la experiencia de los monstruos 1 a 1. Aparte de que si en algún momento iba a cambiar la experiencia otra vez, tenía que cambiar los datos de nuevo uno a uno. Creí que había alguna manera de pasar el txt a sql, luego hacer una query y volver a convertir a txt. Pero este procedimiento es demorado y no cualquiera lo podría hacer. Además de todo eso, tenía que cambiar la exp de dos servidores, uno por db y el otro por txt. Me imaginé crear la solución y me puse manos a la obra. Unas 4 horas me bastó para crear lo que les voy a mostrar: El programa lo que hace es asignar la exp oficial de todos los monstruos (menos Ochaos para arriba) con un multiplicador. Es decir, si pones 1, te pondrá la exp tal cual como está en el oficial. Si pones 2, asignará el doble de exp del oficial, y así. Puedes elegir la opción txt o sql, según como esté configurado el proto de tu servidor. Así luce el programa cuando lo inicias: Luego eliges el multiplicador, yo pondré 3. Luego selecciono el botón de txt en caso de que tenga dumb_proto. Aparecerá un área de texto donde te muestra cada monstruo, experiencia que tenía antes y experiencia que tiene ahora. En la experiencia que tiene ahora pues me aparece la exp del mob_proto.txt oficial porque de ahí tomé los datos... Y se me generó un archivo llamado new_mob_proto.txt. Ahora abro el archivo y... Aquí está el nuevo mob_proto.txt listo para subir al servidor. Y bueno, en el caso del servidor que el proto va por db solo se elige el botón de sql (query) Ya cambió la columna de PREV_EXP a OFFICIAL_EXP. El archivo generado se llama query_mysql_exp_mob_proto.txt, y se ve así: Está listo para poner en query y ya. Bueno eso era lo que les quería mostrar. Con solo elegir un número (no necesariamente entero) y un clic puedes modificar la experiencia de los monstruos basado en datos oficiales. Los datos de los vnum de los monstruos y la respectiva experiencia está en un archivo llamado name_exp.txt que tengo ahí en la carpeta. Si quieres tener mi programa escríbeme al privado y hacemos un trato. ¿Te gustó mi programa? ¿Te pareció útil? Da Like y comenta! Discord: Camilo#0869 Saludos para todos! Cracks!
  7. Intenta lo que te dice Zauron, clic en Propiedades al archivo qc, le pones en Permisos el 777. E intenta ejecutarlo de nuevo. Si no funciona, escríbeme al Discord
  8. Para que el sistema agarre un objeto al azar dinámicamente debes hacer esto: local items = {19, 29, 39, 49, 59} --lista de vnum de ítems pc.give_item2(items[number(1, table.getn(items))]) Si te enredaste, míralo de esta forma, que es lo mismo: local items = {19, 29, 39, 49, 59} --lista de vnum de ítems local cant_items = table.getn(items) --table.getn arroja la cantidad de elementos que hay en la tabla enviada local item_elegido = number(1, cant_items) --en este caso number elige un número al azar entre 1 y la cantidad de elementos... pc.give_item2(items[item_elegido]) number es lo mismo que math.random
  9. Holaa! Quiero hacer dos aportes más 1. Hay un programa para editar el mob_drop_item.txt 2. Hay un comando para recargar el mob_drop_item.txt sin tener que hacer reboot. Solo haces /rel m. Pero tienes que implementarlo por C++. [Hidden Content] Saludos!
  10. Hay que revisar primero si en sus files tiene esa función. Igual montarla no es problema
  11. Mira este post Y luego, para añadir quests haces esto: Vas al PuTTY, te conectas, normal Digitas: ln -s tu_ruta_hasta_quest / donde tu_ruta_hasta_quest va /usr/game.../quest. Al final va un espacio y un "/", tenlo en cuenta (este paso solo se hace una vez) Ahora debes ir al directorio donde está el compilador (archivo qc, o sea, quest compiler), así: cd /quest Ahora se compila el archivo. El "./" significa que se va a ejecutar un archivo. Y el qc es el compilador. En dirección_de_la_quest pones la ruta, digamos, give_basic_weapon.quest ./qc dirección_de_la_quest Si el archivo se encuentra en una carpeta llamada por ejemplo, basic; pones ./qc basic/give_basic_weapon.quest Luego en el juego haces el comando: /rel q Esto es para cargar las quest. Solo es válido para el mapa actual. En el caso de que metas una quest con un when letter tienes que necesariamente reiniciar el servidor para que funcione el pergamino de misión. Y de paso al reiniciar pues ya funcionarán las quests en todos los mapas. Para borrar una quest, debes borrarla de donde se almacena. Las quests se almacenan en quest/object. Es complicado borrar una a una desde el object, así que hice esta guía de apoyo con un archivo: Si quieres compilar todas las quest que tienes en una lista, debes agregarlas en quest/locale_list, generalmente se llama así. Si quieres cargar de nuevo TODAS las quest, debes conocer cómo se hacen en tus files ya que varía mucho en cada file.
  12. repeat pc.give_exp2(pc.get_next_exp()) until pc.level >= 81 pero con el efecto de subir nivel se te va a desconectar el pj
  13. quest drop_piedras_4 begin state start begin function esMetin() return { [8001] = 0, --este estructura la puse así para que cada vez que mate no tenga que hacer un ciclo [8002] = 0 } end when kill with drop_piedras_4.esMetin()[npc.get_race()] != nil begin --en la tabla que puse arriba asigné números 0 (o podía poner cualquier cosa que no sea nil) para que logre detectar el vnum. Ya que toda tabla tiene sus index por defecto en nil. Al irme directamente a la posición con npc.get_race() no tendría que recorrer la tabla. if prob(0.75) then --acá está mi función "prob", esto significa 0.75% local rango_piedras = {28430, 28443} local piedra_azar = number(0, rango_piedras[2] - rango_piedras[1])+rango_piedras[1] --acá elijo un número al azar entre 0 y la diferencia en el rango, o sea, 13. Luego le sumo el vnum base y ya obtengo la piedra. game.drop_item_with_ownership(piedra_azar) end end end end --Mi función del questlib.lua function prob(probabilidad) -- formato de probabilidad: 100, 80, 55, 32.5, 1, 0.3, 0.07 local base = 1 if probabilidad >= 1 then return math.random(1, base*100) <= probabilidad else for i = 1, string.len(probabilidad)-1 do base = base*10 end return math.random(1, base) <= probabilidad*(base/10) end end Lo hice de esta manera, comentado obviamente para transmitir el conocimiento. Ojo, no la probé xD Vamos crackkksss! Esta función será útil algún día xD
  14. caanmasu

    RETO quest #1

    ¿Qué pasó amigos? bueno, aquí va una pista: para poder dar los objetos a todos los pjs del mapa primero hay que tener "guardados los pjs" en una tabla ya que de alguna parte los tengo que sacar xD Y por mi parte no usaré db para esto. Así que aquí les va el VID. El VID (Virtual ID) es "identificador virtual". Todo "character" (entiéndase como personaje, NPC, mob) tiene un VID mientras esté "activo" o "online". Todo NPC o mob tiene un VID, y si no hay, entonces es 0. Todo personaje tiene un VID, y si está desconectado pues es 0. La función que retornan los VID son npc.get_vid() o find_pc_by_num(String nombre). Esa fue una gran pista, así que si alguien se anima a seguir pues adelanteee!
×
×
  • Create New...