Jump to content

aerandir

Miembro
  • Contador contenido

    8
  • Ingreso

  • Última visita

Información del perfil

  • Sexo
    Masculino
  • Localización
    i+d metin2

Visitantes recientes al perfil

1.170 visitas al perfil

aerandir's Achievements

  1. He descubierto la solucion para las texturas de armaduras que tienen un brillo excesivo. El error esta en que a esas texturas les falta el canal alfa de imagen. Quien sepa manejar photoshop podrá crearla facilmente. Para quien no sepa usar el programa, si teneis otra textura igual que la armadura que tiene el error tambien podeis duplicar el canal alfa. Para aquellos que no sabeis usar photoshop, debeis abrir la imagen que tiene el error en photoshop, yo he usado cs2, y otra imagen que sea exactamente igual a la primera pero que tenga el canal alfa en la ventana de capas. Seleccionando la imagen que está correcta, os vais en la ventana de capas a la pestaña canales, seleccionais el canal alfa y pulsais botón derecho encima de la imagen. Seleccionais "duplicar capa" y os aparece una ventana de dialogo para ponerle nombre y debajo aparece una opción "documento" la cual podeis seleccionar la imagen que no tiene canal alfa y asi podeis copiarlo. Una vez teneis la imagen que no tenia canal alfa, con el canal alfa copiado, debeis guardar la imagen como archivo .dds con la opción: DXT3 ARGB 8 bpp | explicit alpha (al menos es la que yo he usado). Con eso tendreis la imagen completa y lista para ponerle los brillos por defecto del itemproto del cliente (specular). Espero esto ayude al menos un poco. Un saludo PD: Os adjunto 3 imagenes con info de los pasos más importanto, cualquier cosa preguntad
  2. Voy a revisar todo por si se me ha pasado algo. Tambien te subire el mapa a ver si es por eso. Confirmo que a mi me funciono el sistema. ¿Te sale algun mensaje cuando hablas con yu-hwan? mandame privado
  3. Hola. Tras mucho tiempo sin pasar por aqui ni mirar metin vuelvo para daros una solucion, como ya hace mas de un año di a la guerra de gremios (por esos entonces en univjuegos). He conseguido "Desbuguear" el combate de arena. Sois el primer sitio donde lo publico. Lo probe con los files de DAROO. Puede que no coincidan las rutas pero si los archivos de vuestro server. NOTA: REALIZAD COPIA DE SEGURIDAD PRIMERO. Empezamos. Lo primero, buscamos en el cliente el archivo atlasinfo.txt (normalmente en el root.epk-eix) y añadimos lo siguiente mirad que no haya uno ya: NOTA:CUANDO COPIAIS ESTE TEXTO OS PONE ESPACIOS. DADLE TAB'S metin2_map_duel 844800 0 1 1metin2_map_duel 848400 100 1 1 Ahora vamos al servidor. Buscamos la ruta /usr/home/game/ y en los archivos CONFIG de las carpetas channel y game99 (segun tengais): channel1, 2, 3, 4: Añadid el numero 90 a la lista de MAP_ALLOW y mirad que no este el numero 112 en la lista. Game99: Revisad que en la lista MAP_ALLOW tengais el numero 112 (y que no tengais ningun mapa con numero 90) A continuacion vais a la carpeta de los mapas (/usr/home/game/share/locale/germany/map) y en ella buscais y editais archivo Index: Buscad 112 metin2_map_duel cambiad por: 90 metin2_map_duel (Si no esta ninguno, poneis solo el 90 metin2_map_duel y mirad bien que no haya mapa con numero 90) Despues vais a la carpeta del pais (en mi caso germany: /usr/home/game/share/locale/germany) y editais el archivo settings.lua: Buscad si teneis estas lineas: arena.add_map(112, 8534, 101, 8564, 101)arena.add_map(112, 8584, 101, 8614, 101)arena.add_map(112, 8534, 155, 8564, 155)arena.add_map(112, 8584, 155, 8514, 155) Si estan, editadlas por: arena.add_map(90, 8534, 101, 8564, 101)arena.add_map(90, 8584, 101, 8614, 101)arena.add_map(90, 8534, 155, 8564, 155)arena.add_map(90, 8584, 155, 8514, 155) Si no estan, solo poned las ultimas (arena.add_map(90) Por ultimo el archivo de la quest (La traduccion es mala, pero funciona xD) quest arena_manager begin state start begin when 20017.chat."Combate de Arena." begin if game.get_event_flag("arena_close") > 0 then say("Lucha en progreso vuelva mas tarde.") say("") return end if not npc.lock() then say("Duelo en progreso.") say("") return end local useMinLevel = game.get_event_flag("arena_use_min_level") if useMinLevel == 0 then useMinLevel = 25 ; end if pc.get_level() < useMinLevel then say("Usted debe estar al mismo nivel "..useMinLevel.." para utilizar la arena.") say("") npc.unlock() return else say("Escriba el nombre de su oponente.") say("") local sname = input() if sname == "" then say("Su adversario no puede entrar.") npc.unlock() return else say(sname.." Solicitud de envio a la lucha.") say("") local opp_vid = find_pc_by_name(sname) if opp_vid == 0 then say(sname.." no esta conectado.") say("") npc.unlock() return elseif opp_vid == pc.get_vid() then say("Usted no puede desafiarse a si mismo.") say("") npc.unlock() return end local old = pc.select(opp_vid) local opp_level = pc.get_level() pc.select(old) if opp_level < useMinLevel then say("El oponente debe ser "..useMinLevel.." Minimo.") say("") npc.unlock() return end if not npc.is_near_vid(opp_vid, 10) then say("El oponente debe estar a su lado.") say(sname.." esta demasiado lejos.") say("") npc.unlock() return ; end local a = arena.is_in_arena(opp_vid) if a == 0 then say(sname.."El oponente se ha desconectado.") say("") npc.unlock() return ; end local agree = confirm(opp_vid, pc.name.." Aceptar la lucha?", 30) if agree != CONFIRM_OK then say(sname.." Negar la lucha?") say("") npc.unlock() return end s = arena.start_duel(sname, 3) if s == 0 then say("Ha ocurrido un error.") say("Intentalo de nuevo mas tarde.") say("") elseif s == 2 then say("Estan combatiendo en este momento.") say("") elseif s == 3 then say("En este momento el campo de") say("entrenamiento esta totalmente") say("ocupado. Por favor, espera.") say("") end end end npc.unlock() end when 20017.chat."Lista de los combates." begin local g = arena.get_duel_list() local arena_name = {} local arena_observer = {} table.foreachi(g, function(n, p) arena_name[n] = p[1].." vs "..p[2] arena_observer[n] = { p[3], p[4], p[5] } end ) table.insert(arena_name, "Combate") table.insert(arena_observer, 0) local count = table.getn(g) if count == 0 then say("No se permite pelear ahora.") say("") return ; else say("En este momento "..hay.." observadores.") say("") wait() end if table.getn(g) != 0 then local s = select_table(arena_name) if table.getn(arena_observer) == s then return ; end if table.getn(arena_observer) >= s then arena.add_observer(arena_observer[s][1], arena_observer[s][2], arena_observer[s][3]) end end end endend Un saludo
  4. reescribo mi post de http://metin2zone.ne...rras-de-gremio/ +++ Antes de nada mirad que tengais las carpetas de los mapas (el nombre viene en donde hay que revisar el index) Añadir al map allow (SOLO en el config de GAME 99) 110 111 112 113 (OBVIAMENTE QUITARLOS SI LOS TIENES EN LOS CONFIG DE LOS CHANNELS) Revisar en el index que sean: 110 metin2_map_t3 111 metin2_map_t4 112 metin2_map_duel 113 metin2_map_oxevent Con ello, abrid guerra de gremio y funciona sin caerse a los 2 mins. Para ox, con eso tambien vale. Solo debereis escribir con un personaje gm /warp 8964, 215 (el mapa ox por la parte de fuera) /m 20358 (invocais flores sin nombre) y a funcionar tambien. (La entrada es desde uriel) Si quereis mi quest de ox pasaros por el link, alli la tengo puesta un saludo
  5. Zenok, es la quest de la guerra de imperio. Si lo activas y tienes los mapas y los regen bien puestos, activas la guerra y es funcional 100% (Al menos hasta lo que he podido probar yo, tengo que hablar con unos amigos para probarla full) Nota: Los mapas necesarios eran los sungzi (flame, pass_flame, snow .... Ahora mismo no recuerdo cuales xDDD los buscare de todos modos)
  6. Keko, la base del codigo lo encontre en un post perdido de epvp hace mas de un año, no poseo ni la fuente. Yo mismo lo postee en universojuegos, la traigo aqui de nuevo para que quien este intentando implementar algun peinado, que le sirva de ayuda y tenga la previsualizacion del mismo. Dante, ¿De donde lo conseguiste? (Verdaderamente no vi el post, de todos modos, aqui esta mejor porque repara ese bug) **** Añado foto, no tengo peinados nuevos disponibles, pero para que os hagais una idea a que imagen me refiero:
  7. Hola: Para el que no pueda ver la imagen de la vista previa de nuevos peinados (probado en clientes 2010): (ANTES HACED COPIA DE SEGURIDAD DE VUESTRO ROOT) 1 - Descompila root.epk-.eix. 2 - Busca el archivo uitooltip.py 3 - Busca este texto (mas o menos por la linea 1000) def __IsHair(self, itemVnum): return (self.__IsOldHair(itemVnum) or self.__IsNewHair(itemVnum) or self.__IsNewHair2(itemVnum)) def __IsOldHair(self, itemVnum): return itemVnum > 73000 and itemVnum < 74000 def __IsNewHair(self, itemVnum): return itemVnum > 74000 and itemVnum < 75000 def __IsNewHair2(self, itemVnum): return itemVnum > 75000 and itemVnum < 77000 def __AppendHairIcon(self, itemVnum): itemImage = ui.ImageBox() itemImage.SetParent(self) itemImage.Show() if self.__IsOldHair(itemVnum): itemImage.LoadImage("d:/ymir work/item/quest/"+str(itemVnum)+".tga") elif self.__IsNewHair(itemVnum): itemImage.LoadImage("d:/ymir work/item/quest/"+str(itemVnum-1000)+".tga") elif self.__IsNewHair2(itemVnum): itemImage.LoadImage("icon/hair/%d.sub" % (itemVnum)) itemImage.SetPosition(itemImage.GetWidth()/2, self.toolTipHeight) self.toolTipHeight += itemImage.GetHeight() #self.toolTipWidth += itemImage.GetWidth()/2 self.childrenList.append(itemImage) self.ResizeToolTip() 4 - Sustituye por esta otra: def __IsHair(self, itemVnum): return (self.__IsOldHair(itemVnum) or self.__IsNewHair(itemVnum) or self.__IsNewHair2(itemVnum) or self.__IsNewHair3(itemVnum)) def __IsOldHair(self, itemVnum): return itemVnum > 73000 and itemVnum < 74000 def __IsNewHair(self, itemVnum): return itemVnum > 74000 and itemVnum < 75000 def __IsNewHair2(self, itemVnum): return itemVnum > 75000 and itemVnum < 77000 def __IsNewHair3(self, itemVnum): return ((xxx-1 < itemVnum and itemVnum < xxx+1)) def __AppendHairIcon(self, itemVnum): itemImage = ui.ImageBox() itemImage.SetParent(self) itemImage.Show() if self.__IsOldHair(itemVnum): itemImage.LoadImage("d:/ymir work/item/quest/"+str(itemVnum)+".tga") elif self.__IsNewHair3(itemVnum): itemImage.LoadImage("icon/hair/%d.sub" % (itemVnum)) elif self.__IsNewHair(itemVnum): itemImage.LoadImage("d:/ymir work/item/quest/"+str(itemVnum-1000)+".tga") elif self.__IsNewHair2(itemVnum): itemImage.LoadImage("icon/hair/%d.sub" % (itemVnum)) itemImage.SetPosition(itemImage.GetWidth()/2, self.toolTipHeight) self.toolTipHeight += itemImage.GetHeight() #self.toolTipWidth += itemImage.GetWidth()/2 self.childrenList.append(itemImage) self.ResizeToolTip() Nota: (Lo que cambia) def __IsNewHair3(self, itemVnum): return ((xxx-1 < itemVnum and itemVnum < xxx+1)) xxx-1 = el numero del item -1 xxx+1 = el numero del item +1 Ejemplo Nuevo peinado 74800 def __IsNewHair3(self, itemVnum): return ((74799 < itemVnum and itemVnum < 74801)) Con esto se aÑaden las vistas en miniatura de los peinados AÑado (yo y mi cabecita... se me va): Para que la imagen se vea, debeis aÑadir el numero de item con 2 archivos en el icon.epk -eix. Descompilamos icon, vamos a la carpeta hair. Ahi creamos un archivo de texto con la extension .sub con el siguente texto; title subImage version 2.0 image "74800.dds" left 0 top 0 right 96 bottom 96 (Nota; el archivo se llamara segun el ejemplo 74800.sub. Donde dice image, ponemos el nombre de la imagen) Asociado, en la misma carpeta, ponemos la imagen (en el caso del ejemplo, 74800.dds). Nota2: Tambien podeis poner varios seguidos: EJ: def __IsNewHair3(self, itemVnum): return ((74799 < itemVnum and itemVnum < 74851))
  8. +++ Antes de nada mirad que tengais las carpetas de los mapas (el nombre viene en donde hay que revisar el index)Añadir al map allow (SOLO en el config de GAME 99)110 111 113(OBVIAMENTE QUITARLOS SI LOS TIENES EN LOS CONFIG DE LOS CHANNELS)Revisar en el index que sean:110 metin2_map_t3111 metin2_map_t4113 metin2_map_oxeventCon ello, abrid guerra de gremio y funciona sin caerse a los 2 mins.Para ox, con eso tambien vale, haced lo siguiente/warp 8964, 215 (el mapa ox por la parte de fuera)/m 20358 (invocais flores sin nombre) y a funcionar tambien.Aqui teneis mi quest para el ox, con esto 100%: quest oxevent_manager beginstate start beginwhen 20011.chat."Evento OX" beginsay_title("Uriel:")say("¿Te ves muy inteligente?")say("Hay un evento para que puedas demostrarlo.")say("Se llama evento OX. Si ganas la competicion,")say("obtendras una gran recompensa.")if game.get_event_flag("oxevent_status") == 0 thenwait()say_title("Uriel:")say("En este momento no esta activado el evento.")say("En el momento en el que sea activado lo")say("podras ver en tu pantalla de ordenador.")say("Enviare un mensaje a todos los usuarios")say("conectados en ese momento.")elseif game.get_event_flag("oxevent_status") == 1 thenwait()say_title("Uriel:")say("¿Quieres participar en el evento?")local s = select("Si", "Ver el evento", "Cerrar")if s == 1 thensay_title("Uriel:")say("Voy a teletransportarte a la competicion")say("para que puedas participar.")wait()pc.warp(896500, 24600)elseif s == 3 thensay_title("Uriel:")say("¿Solo quieres verlo?")say("Voy a teletransportarte a la competicion")say("para que lo puedas ver.")wait()pc.warp(896300, 28900)endelseif game.get_event_flag("oxevent_status") == 2 thensay_title("Uriel:")say("El acceso esta cerrado. Solo puedes")say("ver el evento. ¿Quieres verlo?")local s = select("Ver evento", "Cancelar")if s == 1 thensay_title("Uriel:")say("Voy a teletransportarte a la competicion")say("para que lo puedas ver.")wait()pc.warp(896300, 28900)endendendwhen 20358.chat."Evento OX" with pc.is_gm() beginlocal stat = oxevent.get_status()if stat == 0 thensay_title("Evento Ox:")say("¿Desea iniciar el evento OX?")local s = select("Si", "No")if s == 1 thenlocal v = oxevent.open()if v == 0 thensay_title("Evento Ox:")say("El evento OX no esta activado.")elseif v == 1 thensay_title("Evento Ox:")say("El evento OX ha sido activado.")notice_all("¡Han activado un evento OX!")notice_all("¡Habla con Uriel si quieres participar!")elsesay("¡Error! El evento no ha sido iniciado.")endendelseif stat == 1 thensay_title("Evento Ox:")say("Hay "..oxevent.get_attender().." participantes.")say("¿Deseas cerrar el acceso?")local s = select("Si", "No")if s == 1 thenoxevent.close()say_title("Evento Ox:")say("¡El acceso ha sido cerrado!")endelseif stat == 2 thensay_title("Evento Ox:")say("¿Que quieres hacer?")local s = select("Preguntar", "Premiar a jugadores", "Salir", "Cerrar")if s == 1 thenlocal v = oxevent.quiz(1, 30)if v == 0 thensay_title("Evento Ox:")say("¡El evento OX se está ejecutando todavia!")elseif v == 1 thensay_title("Evento Ox:")say("Se ha lanzado una pregunta")elsesay_title("Evento Ox:")say("Se esta realizando una pregunta, espera.")endelseif s == 2 thensay_title("Evento Ox:")say("Por favor, introduce el numero del objeto que ofreces.")local item_vnum = input()say_title("Evento Ox:")say("Por favor introduce la cantidad del objeto.")local item_count = input()oxevent.give_item(item_vnum, item_count)say_title("Evento Ox:")say("Hay "..oxevent.get_attender().." Jugadores.")say("Has enviado el objeto indicado como premio.")elseif s == 3 thenoxevent.end_event()notice_all("¡El evento OX ha finalizado!")say_title("Evento Ox:")say("Ha finalizado el evento OX.")endelseif stat == 3 thensay_title("Evento Ox:")say("Por favor, espere un momento.")elsesay("¡Ha ocurrido un error!")endendendendendun saludo
×
×
  • Crear nuevo...