• Anuncios

    • Guest

      RGPD (LEY DE 25 DE MAYO DE 2018)   24/05/2018

      Pueden ver el original RGPD del servidor en este enlace (inglés). Opcionalmente, pueden ver una versión adaptada al español aquí: ¡Es muy importante leer y aceptar esto antes de seguir jugando!
    • Terënas

      ¿Necesitas ayuda?   16/08/2018

      Bienvenidos al foro en español de Firestorm
      Si es tu primera vez y no sabes dónde solicitar ayuda para resolver tu problema, te dejamos unos enlaces que seguro te serán de utilidad.   ¿Tienes un problema dentro del juego? ¿No puedes entrar al juego? ¿Compraste puntos y no te han llegado? ¿Fuiste sancionado y quieres apelar? ¿Perdiste una montura u objetos? ¿Encontraste a un jugador haciendo trampa? ¿Compraste algo en la tienda y no te ha llegado? ¿Encontraste un bug (error o fallo) en el juego?   Si deseas contactar con un miembro del Staff puedes ver la lista completa de miembros en el siguiente enlace:    
    • Guest

      ¡Avatares personalizados ahora disponibles!   12/04/2020

      ¡Saludos, usuarios del foro de Firestorm!   ¡A petición popular de los usuarios y debido a los múltiples problemas con la sincronización de avatares del foro con los avatares de la cuenta de los jugadores, ahora los usuarios del foro podrán seleccionar un avatar personalizado y una imagen de fondo en sus perfiles del foro! Para poder cambiar vuestro avatar, deberán acceder a vuestro perfil del foro y pulsar en el icono de imagen que encontrarán junto a vuestro avatar: 1) La imagen no podrá superar los 250 Kb de tamaño. 2) La resolución máxima será de 170x170px.   Para poder cambiar vuestro fondo de perfil, deberán pulsar en el botón de Foto de portada (deberán pulsar a la derecha de dicho botón, por alguna extraña razón): 1) La imagen no podrá superar los 750 Kb de tamaño.   ¡No olviden respetar las normas de cortesía y normas sociales especificadas tanto en el post de normas del foro como en el post de código de conducta del servidor, o su cuenta del foro será sancionada acorde a la gravedad de la falta cometida!   Un saludo y pasen un buen día.
    • Guest

      ¡Cambios de nombre del foro!   27/05/2020

             Nos alegra comunicarles que todo aquel que quiera cambiar su nombre, ya sea porque tenga su correo en su perfil de foro, o simplemente porque haya decidido cambiarlo, ahora podrá hacerlo.   Simplemente tendrá que comentar en este post con el nombre que desea tener en el foro para que su solicitud sea atendida.   No se admitirán nombres que resulten ofensivos y/o inapropiados (sexual, racista, terrorista, etc).                       ¡Un saludo a todos!

Buscar en La Comunidad

Showing results for tags 'parches'.

  • Buscar por tags

    Añade tags separandolos por comas.
  • Buscar por autor

Tipo de Contenido


Foros

  • Información General
    • Noticias
    • Información
    • Normas
    • Reclutamiento
    • Eventos
  • Desarrollo
    • Noticias de desarrollo
    • Actualizaciones
    • Opinión de los usuarios
    • Sección de Aprendizaje
    • Enviar un Parche
  • Comunidad
    • Discusiones Generales
    • Presentaciones
    • Taberna
    • Tutoriales y Guías
    • Media y Addons
    • Clases
  • Reinos
    • Dragonflight
    • Oribos
    • Sethraliss
    • Sylvanas
    • Greymane
    • Gul'dan
    • Garrosh
    • Deathwing
    • Icecrown
  • Soporte
    • Soporte Técnico
    • Sugerencias
    • Entrega de monturas y objetos perdidos
    • Archivo del Foro
  • Como registrarse en el foro
    • (Esto solo lo pueden ver los Invitados / Guests)

Formularios

  • Reportar a un jugador
    • Reino
    • Tu personaje aquí
    • Nombre del infractor
    • Fecha
    • Infracción
    • Descripción y pruebas
  • Soporte Técnico
    • Nombre de su personaje
    • Problema
    • Sistema Operativo
    • Más información del S.O
    • ¿Cómo descargó el juego?
    • Breve descripción
    • Describa su problema
  • Apelar una sanción
    • Reino
    • Nombre de su personaje
    • Correo de la cuenta sancionada
    • Fecha de la sanción
    • Explicación
  • Sugerencias
    • Nombre de la sugerencia
    • Tipo de sugerencia
    • Reino
    • Ventajas que supondría a Firestorm
    • Descripción
  • Entrega de monturas
    • Nombre de su personaje
    • Reino
    • Información
  • Entrega de objetos perdidos
    • Nombre de su personaje
    • Reino
    • Información

Encontramos 10 resultados

  1. Antes de nada vamos a explicar lo que deberia ser el procedimiento normal a la hora de arreglar un bug reportado,lo que deberia hacer cualquier programador,desarrollador,developer, llamalo x. 1- Verificar que el reporte es cierto y el bug existe ya sea de manera general o especifica para 1 determinado player. 2- Investigar,recopilar toda la informacion que sea relevante e intentar reproducirlo para averiguar que produce el bug concretamente. 3- Una vez localizado el problema, crear el parche para arreglarlo. 4- Aplicarlo y testearlo para asegurarse que funciona y no surge ningun otro problema o bug. Creo que la manera mas sencilla de abordar el arreglo de misiones sera exponiendo los diferentes tipos de problemas y para ello iremos creando una lista de bugs mas comunes y no tan comunes con sus respectivas soluciones. Esto no implica que la solucion a determinado bug sea siempre la que pongamos aqui. Si fuera tan facil, todas las misiones estarian ya arregladas hace tiempo. De ahi la importancia de investigar cada bug detenidamente. * En todos los ejemplos usaremos ids de npcs,quests,etc. inventados. Doy por hecho que habeis leido las otras guias y ya sabeis mas menos como se hacen parches o teneis la nocion basica de ello. Tipos de bugs y parches: 1- Bug: He completado la mision pero al querer entregarla el npc no muestra la ventana de dialogo para completar la mision. Razon: el npc carece de la flag de questgiver o el npc no tiene añadida la mision para completarla. Parche/solucion: UPDATE `creature_template` SET `npcflag`=npcflag|2 WHERE `entry`=80800;-- Añadimos al npc la flag de questgiver DELETE FROM `creature_questender` WHERE `id`=80800 AND `quest`=34000; INSERT INTO `creature_questender` (`id`,`quest`) VALUES (80800,34000);-- Añadimos la mision al npc. 2- Bug: He completado la mision pero al querer entregarla el npc muestra una ventana diciendo grettins y no me deja entregarla. Razon: el npc no tiene añadida la mision para completarla. Parche/solucion: DELETE FROM `creature_questender` WHERE `id`=80800 AND `quest`=34000; INSERT INTO `creature_questender` (`id`,`quest`) VALUES (80800,34000);-- Añadimos la mision al npc. 3- Bug: He completado la mision y al querer entregarla el npc muestra la ventana de completarla pero el boton de completar no hace nada. Razon: Esto puede ser debido a muchisimas cosas por lo que este tipo de bug necesita ser investigado directamente en la base de datos la mayoria de las veces. Puede ser desde algun requerimiento de la mision tipo razas permitidas,objetivos duplicados o con datos erroneos,alguna condicion de la tabla condiciones...Por lo que para este no haremos un parche concreto ya que podrian ser muchos diferentes. 4- Bug: No se completan los objetivos cuando mato los npcs que dice. Razon: Hay algun dato mal en la tabla quest_template_objetives. O bien la id del objetivo no es la correcta o no esta añadida, o bien el tipo de objetivo no es el correcto. Parche/solucion: DELETE FROM `quest_template_objective` WHERE `questid`=33915 AND `objectid`=76820; INSERT INTO `quest_template_objective` (`QuestID`, `Type`, `Index`, `ObjectID`, `Amount`, `Flags`, `UnkFloat`,`Description`, `VisualEffects`, `BuildVerified`) values (33915,0,0,76820,1,1,0,'','',1); -- Indica que el objetivo es matar 1 criatura con id 76820 type=0 es matar una criatura type=1 es conseguir un objeto type=2 entregar la mison a un npc type=3 interactuar con un npc * Normalmente esta tabla no se toca, ni se deberia tocar ya que los datos son copiados directamente del oficial. 5- Bug: el npc no me muestra la siguiente mision al completar la que tenia o bien he abandonado una mision y al querer volverla a coger no me la muestra y muestra otra diferente. Razon: no se ha establecido el orden de la linea de misiones por lo que se muestran de forma aleatoria. Parche/solucion: UPDATE `quest_template` SET `PrevQuestId`=0,`NextQuestId`=34000 WHERE `id`=33999;-- primera mision de la cadena de misiones UPDATE `quest_template` SET `PrevQuestId`=33999,`NextQuestId`=34001 WHERE `id`=34000;-- segunda UPDATE `quest_template` SET `PrevQuestId`=34000,`NextQuestId`=34002 WHERE `id`=34001;-- tercera UPDATE `quest_template` SET `PrevQuestId`=34001 WHERE `id`=34002;-- cuarta(ultima) Hasta aqui los tipos de bug mas comunes y "faciles" de arreglar. Existen otro tipo de bugs de este estilo pero que no son tan comunes por lo que no los mencionaremos. Si alguien tiene alguna pregunta sobre otro tipo de bug, puede hacerla en este tema. Todos estos bugs se pueden arreglar porque partimos de que esas misiones no necesitan ser scriptadas o ya lo tienen hecho. Despues existen las misiones que no estan scriptadas, esto quiere decir que los npcs tienen que realizar alguna accion o evento para que los objetivos sean cumplidos. Este tipo de misiones fallan porque no tienen el script o el script es erroneo. Creo que sabeis a cuales nos referimos, sino, pues son esas en las que aceptamos la mision y el npc deberia caminar hacia un lugar, o al acercarnos a un sitio deberia aparecer un npc u otras acciones que iremos viendo mas a fondo segun avancemos en las guias. Para todas estas misiones que requieren de una accion por parte del npc o npcs se usa la tabla smart_scripts. Este tipo de parches es lo que se llaman SAIs. Y como esto ya es un tema bastante mas complejo, lo dejaremos para la siguiente guia. Espero que a los que se interesaron un poco por el tema de arreglar cosas, esta miniguia les haya picado un poco mas la cosa y les haya gustado. Cualquier duda, ponerla por aqui debajo. Saludos y hasta la proxima.
  2. Identificación de los nombres de las columnas locales _loc1: Esta columna corresponde al cliente Koreano. locales _loc2: Esta columna corresponde al cliente Frances. locales _loc3: Esta columna corresponde al cliente Aleman. locales _loc4: Esta columna corresponde al cliente Chino. locales _loc5: Esta columna corresponde al cliente Taiwanese. locales _loc6: Esta columna corresponde al cliente Español (España). locales_loc7: Esta columna corresponde al cliente Español (Latino America). locales _loc8: Esta columna corresponde al cliente Ruso. Ingles - no necesitado.Viene por defecto en el wow. Herramientas Útiles - IMPORTANTE Aquí estan algunas herramientas: $B: Cambio de linea. $N: Nombre del jugador (Ejemplo: Bievenido Paco) $R: Raza del jugador (Ejemplo: Bienvenido Pandaren) $C: Clase del jugador (Ejemplo: Bievenido Guerrero) $G: Diferencia entre hombre o mujer. Pon hombre primero y luego mujer (y un punto ":" en el medio) Modelo de Sentencias SQL para la traducción de Misiones Una misión esta compuesta de 17 partes (y por lo tanto de 17 textos que podrían ser traducidos): Title: Nombre de la misión. Details: Detalles de la misión. Objetives: Objetivos de la mision. OfferRewardText: Texto que se muestra mientras estas en la mision y hablas con el que completa la mision (objectivos completados). RequestItemsText:Texto que se muestra mientras estas en la mision y hablas con el que completa la mision (objectivos NO completados). EndText: sin tratar. CompletedText: sin tratar. ObjectiveText1: Objetivo 1 ObjectiveText2: Objetivo 2 ObjectiveText3: Objetivo 3 ObjectiveText4: Objetivo 4 QuestGiverTextWindow: sin tratar. QuestGiverTargetName: sin tratar. QuestTurnTextWindow: sin tratar. QuestTurnTargetName: sin tratar. No os dare un ejemplo de como hacerlo en el juego, por el contrario os mostrare como hacerlo con sql. Nota: el siguiente ejemplo es para traducir a frances,si vas a traducir a español usa la columna _loc6. Titulo: UPDATE locales_quest SET `Title_loc2`="#1" WHERE `entry`='#2'; /* Donde: #1 es el nombre de la mision #2 corresponde a la id de la mision (wowhead) */ Detalles: UPDATE locales_quest SET `Details_loc2`="#1" WHERE `entry`='#2'; /* Donde: #1 corresponde a los detalles de la mision. #2 corresponde a la ide de la mision (wowhead) */ Objetivos: UPDATE locales_quest SET `Objectives_loc2`="#1" WHERE `entry`='#2'; /* Donde: #1 corresponde a los objetivos de la mision #2 corresponde a la id de la mision (wowhead) */ Texto de oferta de recompensa: UPDATE locales_quest SET `OfferRewardText_loc2`="#1" WHERE `entry`='#2'; /* Donde: #1 es el texto que se visualiza mientras estas en la mision con los objetivos ya completados(Mision completada) #2 corresponde al id de la mision (wowhead) */ Texto piezas requeridas: UPDATE locales_quest SET `RequestItemsText_loc2`="#1" WHERE `entry`='#2'; /* Donde: #1 es el texto que se ve mientras estas en la mision sin haber completado los objetivos (Mision no completada) #2 corresponde a la id de la mision (wowhead) */ Texto del objetivo 1: UPDATE locales_quest SET `ObjectiveText1_loc2`="#1" WHERE `entry`='#2'; / * Where: #1 es el texto del objetivo 1 #2 corresponde a la id de la mision (wowhead) */ Texto del objetivo 2: UPDATE locales_quest SET `ObjectiveText2_loc2`="#1" WHERE `entry`='#2'; /* Donde: #1 es el texto del objetivo 2 #2 corresponde a la id de la mision (wowhead) */ Texto del objetivo 3: UPDATE locales_quest SET `ObjectiveText3_loc2`="#1" WHERE `entry`='#2'; /* Donde: #1 es el texto del objetivo 3 #2 corresponde a la id de la mision (wowhead) */ Texto del objetivo 4: UPDATE locales_quest SET `ObjectiveText4_loc2`="#1" WHERE `entry`='#2'; /* Donde: #1 es el texto del objetivo 4 #2 corresponde a la id de la mision (wowhead) */ Mision de ejemplo: À la recherche du varech Example Title: À la recherche du varech Details: Je peux préparer une potion d'invisibilité pour Maybell, qui lui permettra de s'échapper du vignoble des Maclure et de rejoindre Tommy Joe. Mais pour préparer cette potion, j'ai besoin de varech cristallin.$B$BCette plante pousse habituellement dans l'océan, mais parfois les murlocs en récoltent. Il faut aller voir si les murlocs près du lac de Cristal n'en auraient pas en ce moment. Le lac de Cristal est à l'est de Comté-de-l’Or. Objectives: Apportez 4 Feuilles de Varech cristallin à William Pilon de Comté-de-l’Or. OfferRewardText: Vous avez les feuilles. Bien joué ! Maintenant, juste un instant, le temps que je concocte la potion... RequestItemsText: Avez-vous ce varech cristallin ? Je suis sûr que Maybell est impatiente de voir son galant... ObjectiveText1: Feuille de varech cristallin Credits for Mikrole.
  3. Creditos van para Narfnarf del foro internacional. Esta guia fue hecha por el, yo solo la he adaptado a español (es un conocido y no creo que le moleste que la ponga aqui ). Vamos a dar por hecho que habeis seguido las guias anteriores y teneis los conocimientos basicos de sql. 1.NPC flag. Para comenzar necesitaremos hacer un UPDATE del NPC flag en la tabla creature_template. Esto es importante ya que no sabemos si el npc es un vendedor ya o necesita que le hagamos serlo. Esta columna es bitmask, lo que significa que puede tener varias flags (valores) y tener diferentes combinaciones posibles. <code> UPDATE `creature_template` SET `npcflag`=???? WHERE `entry`=XXXX; </code> -- ???? = bitmask, la lista completa de valores podeis encontrarlas en la wiki de trinity. A continuacion pondremos las mas usadas: -- 128 = vendedor unicamente -- 4224 = vendedor + reparador -- 4227 = vendedor + reparador + dador de misiones/acabador de misiones -- 65665 = posadero + vendedor Puedes encontrar un ejemplo con detallada informacion mas abajo :). 2.Valores,tablas y columnas. Usaremos la tabla npc_vendor. Esta tabla tiene 7 columnas descritas mas abajo. Podemos borrar 1 item o todos dependiendo de lo que necesitemos. Yo borrare todo en este ejemplo. <code> DELETE FROM `npc_vendor` WHERE `entry`=XXXX; INSERT INTO `npc_vendor`(`entry`,`item`,`slot`,`maxcount`,`incrtime`,`ExtendedCost`,`type`) VALUES </code> -- `entry` = la id del npc (el final de la direccion en wowhead) -- `item` = la id del item (el final de la direccion en wowhead) -- `slot` = El hueco del item. Si 1 = esquina arriba a la izquierda del vendedor, si 2 = el hueco siguiente al 1,esquina derecha arriba, etc etc. Si lo dejas = 0 el hueco sera asignado automaticamente. -- `maxcount` = El numero de copias que el vendedor tiene de ese item. Unicamenente se usa para copias limitadas, la mayoria de las veces se deja =0, ilimitadas copias. -- `incrtime` = Cantidad de tiempo en rellenar los items que han sido vendidos, solo es necesario si `maxcount` es distinto de 0. -- `ExtendedCost` = El coste de un item cuando no es dinero,ejemplo una currency o puntos de conquista,etc. -- `type` = Si es normal item = 1, si es una currency = 2 Eso fue todo. La guia es realmente simple (y la tabla) para aprender,yo espero. Terminare con un ejemplo para arreglar http://www.wowhead.c...hant-greefield <code> UPDATE `creature_template` SET `npcflag`=131 WHERE `entry`=58718;-- `npcflag`= 131 = 128 (vendedor) + 2 (mision) + 1 (mostrar menu) DELETE FROM `npc_vendor` WHERE `entry`=58718; INSERT INTO `npc_vendor` (`entry`, `item`, `maxcount`, `incrtime`,`ExtendedCost`, `type`) VALUES (58718, 85267, 0, 0, 0, 1), (58718, 79102, 0, 0, 0, 1), (58718, 80591, 0, 0, 0, 1), (58718, 80592, 0, 0, 0, 1), (58718, 80593, 0, 0, 0, 1), (58718, 80594, 0, 0, 0, 1), (58718, 80595, 0, 0, 0, 1), (58718, 80809, 0, 0, 0, 1), (58718, 84782, 0, 0, 0, 1), (58718, 84783, 0, 0, 0, 1), (58718, 85153, 0, 0, 0, 1), (58718, 85158, 0, 0, 0, 1), (58718, 85162, 0, 0, 0, 1), (58718, 85163, 0, 0, 0, 1), (58718, 85215, 0, 0, 0, 1), (58718, 85216, 0, 0, 0, 1), (58718, 85217, 0, 0, 0, 1), (58718, 80590, 0, 0, 0, 1), (58718, 85268, 0, 0, 0, 1), (58718, 85269, 0, 0, 0, 1), (58718, 89197, 0, 0, 0, 1), (58718, 89202, 0, 0, 0, 1), (58718, 89233, 0, 0, 0, 1), (58718, 89326, 0, 0, 0, 1), (58718, 89328, 0, 0, 0, 1), (58718, 89329, 0, 0, 0, 1), (58718, 89847, 0, 0, 0, 1), (58718, 89848, 0, 0, 0, 1), (58718, 89849, 0, 0, 0, 1), (58718, 95445, 0, 0, 0, 1), (58718, 95447, 0, 0, 0, 1), (58718, 95449, 0, 0, 0, 1), (58718, 95451, 0, 0, 0, 1), (58718, 95454, 0, 0, 0, 1), (58718, 95457, 0, 0, 0, 1); </code> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Cualquier cosa, no dudeis en preguntar. Hasta la proxima.
  4. Buenas, voy a ser breve con esta. Cualquier duda preguntar abajo como siempre. Esto os valdra para,por ejemplo, algo que anda pidiendo mucho la gente que es meterle las magias a los guardias de las ciudades principales. Lo que vamos a hacer es lo que se llama una SAI o smart_script. Vamos a usar el siguiente reporte: https://firestorm-servers.com/es/report/see_report/3659 Primero metemos las magias en la tabla de el npc,en creature_template,la primera linea. En la segunda linea indicamos en la tabla de la criatura que esta tendra una SAI, sin esto no funcionaria nada. Y a continuacion, hacemos la SAI. UPDATE `creature_template` SET `spell1`=9080,`spell2`=11972,`spell3`=14516,`spell4`=16100 WHERE `entry`=13839; UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=13839; DELETE FROM `smart_scripts` WHERE `entryorguid`=13839; INSERT INTO `smart_scripts`(`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`, `action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES (13839,0,0,0,4,0,100,0,0,0,5000,5000,11,16100,0,0,0,0,0,17,20,40,0,0,0,0,0,'Royal DreadGuard- SMART_ACTION_CAST Shoot '), (13839,0,1,0,0,0,100,0,0,0,30000,30000,11,9080,0,0,0,0,0,2,0,0,0,0, 0, 0, 0,'Royal DreadGuard- SMART_ACTION_CAST Harmstring '), (13839,0,2,0,0,0,100,0,0,0,10000,10000,11,14516,0,0,0,0,0,2,0,0,0,0, 0, 0, 0,'Royal DreadGuard- SMART_ACTION_CAST Srike'), (13839,0,3,0,0,0,100,0,0,0,35000,35000,11,11972,0,0,0,0,0,2,0,0,0,0, 0, 0, 0,'Royal DreadGuard- SMART_ACTION_CAST Shield Bash'); entryorguid= la id del npc source_type=0 siempre ya que significa que es una criatura,npc. id= significa el orden de los eventos. link=al evento que quieres que suceda despues, Se explicara mas adelante en otra guia, cuando se use. event_type= el evento que tiene que ocurrir para que se ejecute esa linea o accion. En la wiki de trinity podeis ver las que hay. En nuestro caso hemos usado el evento 4. Significa que cuando entre en agroo casteara esa magia. event_chance= la probabilidad de que ocurra. Normalmente es 100 porque queremos que ocurra siempre. Para hacer castear magias de forma aleatoria se pondria menos,¿logico no? event_flags= la cantidad de veces que queremos que se repita el evento. Sirve para limitarlo a x numero de veces. event_param3 y event_param4= al minimo y maximo de tiempo en el que queremos que el evento sea chekeado para ocurrir otra vez. Digamos que para decirle que tire la magia cada 10 segundos por ejemplo. El valor es en milisegundos. Si queremos que sean 10 segundos, tendremos que poner 10000. action_type= la accion que queremos que ocurra cuando se de el evento que pusimos. En este caso sera castear magias en los 4 eventos que pusimos. Corresponde al valor 11. action_param1= la id de la magia que tirara. target_type= sobre quien se ejecutara la accion. En el primer evento hemos puesto al player que se encuentre en el rango de 20-40 yardas. El valor 17 corresponde al player en rango. En las otras 3 hemos puesto el valor 2 que corresponde a la victima, o lo que es lo mismo al player que coja el agroo. Os he explicado solo las columnas que hemos usado y alguna mas. Cuando se haga otra guia se explicaran las que vayan haciendo falta. Explicando esta SAI de forma resumida, lo que hara sera: Cuando un jugador este en rango de 20-40 yardas el guardia usara la magia shoot para dispararle cada 5 segundos hasta que entre en un rango inferior a 20 yardas o se aleje fuera de la zona de agroo. Si se acerca mas de 20 yardas, el guardia le tirara la magia Harmstring cada 30 segundos, Srike cada 10 segundos y Shield Bash cada 35 segundos.
  5. TEORÍA Un NPC puede ser muchas cosas, es decir, puede ser un reparador, un instructor de clase o simplemente un NPC estático. Para poder realizar esto sera necesario usar una única tabla. creature_template: entry: ID del NPC que le queremos asignar una función. npcflag: Representa el funcionamiento que va a tener dicho NPC. A continuación se mostrar los diferentes tipos. 1 Gossip: Si el NPC tiene más opciones. 2 Quest Giver: Si el NPC empieza o termina alguna misión. 16 Trainer: El NPC es un entrenador 32 Class Trainer: El NPC es un entrenador de clase. 64 Profesion Trainer: El NPC es un entrenador de profesión. 128 Vendor: El NPC es un vendedor. 4096 Repairer: El NPC es un reparador. 8192 Flight Master: El NPC es un maestro de vuelo. 16384 Spitirt Healer: El NPC es el ángel que resucita cuando mueres. 65536 Innkeeper: El NPC es un tabernero. 131072 Banker: El NPC es un banquero. 524288 Tabard Designer: El NPC es un diseñador de Tabardos (Hermandad). 2097152 Auctioneer: El NPC es un subastador. 4194304 Stable Master: El NPC es un maestro de establo. 8388608 Guid Banker: El NPC es un banquero de hermandad. Así pues, al contrario que en otras reparaciones, no vamos a borrar (DELETE) ni a insertar (INSERT INTO), si no que vamos a sobrescribir (UPDATE). Mediante esta opción podemos cambiar de una forma rápida una columna de un registro, sin interferir en las demás columnas. !OJO¡ Siempre que vallamos a usar la sentencia UPDATE, debemos asegurarnos que la clave principal (entry) sea la correcta. La sentencia SQL a usar sera: UPDATE `tabla` SET `columna`=XXXXX WHERE `entry`=XXXXX; En el caso que nuestro NPC realice diferentes funciones, la sentencia SQL variaría un poco. En este caso seria: UPDATE `tabla` SET `columna`='columna'|XXX|XXX|XXX WHERE `entry`=XXXXX; EJEMPLO PRÁCTICO Vamos a realizar un par de ejemplos prácticos. Tenemos al NPC 84861 Dr. Hadley Ricard, quien es un NPC con el funcionamiento de un Quest Giver, pero no tiene esa opción y no podemos hablar con el. Para ello, vamos a ejecutar la siguiente sentencia atendiendo a su ID, y al npcflag: Quest Giver, que le corresponde el 2. Una vez tenemos los datos usamos la sentencia anterior mostrada y sustituimos. UPDATE `creature_template` SET `npcflag`=2 WHERE `entry`=84861; Ya tenemos actualizado el npcflag del NPC, pero ahora el NPC 88228 Sargento Faucefasta es un NPC que también un Quest Giver, pero también hace función de vendedor. Para ello la sentencia atendiendo de la ID y las npcflag: Quest Giver (2) y Vendor (128) UPDATE `creature_template` SET `npcflag`=`npcflag`|2|128 WHERE `entry`=84861; Ya tendríamos el NPC actualizado, ahora ya sera un vendedor y misionero. Un Saludo
  6. Hola, posteo aquí porque no sé dónde postear mi consulta. El tema es el siguiente, quería saber si puedo actualizar Cataclysm (4.3.4) a Mist of Pandaria (5.4.1) a base de parches que son cuatro. Pero yo solo quiero actualizar a Pandaria, no que siga a Draenor. El caso es que al amigo que quiero ayudar con ese tema no tiene un buen internet como para descargar 21gb que es lo que pesa Pandaria, seria eterno. Así que optó por hacerle una copia a su versión de 4.3.4 y actualizar la misma a base de parches. Las preguntas son. ¿Se puede hacer eso? Y si es así ¿Dónde puedo conseguir los parches? He buscado por muchos sitios, y he encontrado desde la 5.0 a la 5.3 pero no encuentro la 5.4 por ningun sitio. Y por último necesitaría que alguien con experiencia me diera indicaciones de cómo instalar dichos parches, si hay que meterlos en una carpeta en específico, etc. Desde ya gracias.
  7. Bueno va siendo hora de ir al meollo de la cuestion. Eso si, poco a poco. Asi es que hoy vamos a hacer una pequeña introduccion en la que mencionaremos las tablas mas usadas y relacionadas con el arreglo de misiones, y explicaremos por encima para que sirve cada una. Tablas: 1- quest_template : En esta tabla se recogen la mayoria de datos de la mision. Si es normal,diaria,semanal,los requisitos como level minimo,mision anterior necesaria o la que le sigue,las razas o clases que pueden hacerla,si al coger la mision te da un item para usarlo y completarla,los textos de la mision al empezarla,completarla o los textos de los mismos objetivos a conseguir,nombre de la mision,etc.... 2- quest_template_objectives: Esta tabla recoge todos los objetivos necesarios para completar la mision,el tipo de objetivo,la cantidad de items o criaturas que se necesitan,si es hablar con un npc,etc. 3- creature_queststarter y creature_questender: estas dos tablas recogen los npcs que empiezan y acaban las misiones, respectivamente. 4- gameobject_questarter y gameobject_questender: lo mismo que las del punto 3 pero en este caso son objetos en vez de npcs. Basicamente esas son las importantes en cuanto a las misiones en si se refiere. Pero hay otras que tambien se ven envueltas y que son, muchas veces, necesario mirar para arreglar una mision tambien. 5- creature_template: recoge lo que es la base de las caracteristicas de un npc,digamos el esqueleto del mismo. Si ponemos por ejemplo que en creature_template el minlevel sea 90, todas las criaturas con esa id spawneadas en el mapa tendran minimo ese level. 6- creatures: son las criaturas como tal spawned en el mundo. 7- gameobject_template: igual que el 5 pero con objetos. 8- gameobject: igual que el 6 pero con objetos. 9- smart_scritps: aunque es la ultima que pondre por ahora no por ello es la menos importante.Es mas, posiblemente sea la mas importante ya que con esta arreglaremos las misiones mas complejas y ademas nos permite hacer muchisimas cosas debido a la diversidad que tiene. Esta tabla se encarga de scriptar criaturas u objetos.Hablando claro, de que las criaturas u objetos realicen acciones como andar,hablar,atacar,lanzar magias,completar objetivos,etc. Por ahora, hasta aqui hemos llegado con la breve introduccion. Creo que no me deje ninguna tabla importante, si me acuerdo de alguna que no este ya la añadire. En breve continuare con otra miniguia para ir arreglando bugs simples e iremos haciendolo mas complejo poco a poco. Para los mas atrevidos, podeis echar un vistazo a estas tablas u otras en el enlace que dejare a continuacion : https://trinitycore.atlassian.net/wiki/display/tc/World Saludos y hasta la siguiente.
  8. Buenas, dado que creo que hay o deberia haber mucho interesado en el tema de los logros y sus recompensas, hoy os voy a dejar unas plantillas para que podais mandar vuestros propios parches para arreglar las recompensas de los logros, tanto de titulos como de items/monturas. Antes de nada voy a explicar brevemente algo que creo que debe quedar claro: - Logro/Achievement = el mensajito en amarillo que salta cuando consigues cumplir con los requerimientos de algo,una coleccion,matar un jefe... Puedes comprobar el logro dando a la "y" de tu teclado. Ejem: "Has conseguido 250 monturas diferentes" - Titulo = Una recompensa que te permite mostrar que has conseguido un logro, poniendote dicho titulo detras de tu nombre encima del pj. Puedes ponerte el titulo dando a la "c" de tu teclado y en la derecha arriba dando al icono del pergamino. Ejem: titulo "David el inmortal" por conseguir el logro de matar al jefe lich king. - Recompensa = un item que te es enviado siempre al correo cuando consigues un determinado logro. Ejem: Te mandan la moto al correo por conseguir el logro de las 35 reliquias. Recompensa de un item: Vamos a añadir la recompensa de una montura por conseguir el logro de las 250 monturas,la cual sera mandada al correo: www.wowhead.com/achievement=9598 -- Alliance <code/> DELETE FROM `achievement_reward` WHERE `entry`=9598; INSERT INTO `achievement_reward` (`entry`, `title_A`, `title_H`, `item`, `sender`, `subject`, `text`) VALUES (9598,0,0,69226,29611,'','Congrats!'); -- 250 mounts </code> -- www.wowhead.com/achievement=9599 -- Horde <code/> DELETE FROM `achievement_reward` WHERE `entry`=9599; INSERT INTO `achievement_reward` (`entry`, `title_A`, `title_H`, `item`, `sender`, `subject`, `text`) VALUES (9599,0,0,69226,10540,'','Congrats!'); -- 250 mounts </code> -- entry es la id del logro que encontraremos en wowhead. -- tittle_A es la id del titulo correspondiente a la alianza (casi siempre el de alianza tiene distinta id que el de la horda) Y a veces el logro solo lo da para una de las dos facciones. -- title_H es la id del titulo correspondiente a la horda. -- item es la id de la recompensa,en este caso montura o lo que sea. -- sender es la id del npc que envia el correo, vamos a dejar las que os pongo yo siempre para no hacerme comprobar la id cada vez que subais un parche -- subject es el titulo del correo, si lo dejamos en blanco no pasa nada. -- text es lo que llevara escrito el correo, si lo dejamos en blanco tampoco pasa nada. Recompensa de un titulo: Añadimos el titulo por conseguir reverado con una faccion. -- www.wowhead.com/achievement=9472/Steamwheedle Perservation Society -- En este caso es para allianza y horda , a veces solo es para uno. -- #9472/Achievement reward- Steamwheedle Perservation Society <code> DELETE FROM `achievement_reward` WHERE `entry`=9472; INSERT INTO `achievement_reward` (`entry`, `title_A`, `title_H`, `item`, `sender`, `subject`, `text`) VALUES (9472,421,421,0,0,'',''); -- Tittle Steamwheedle Perservation Society </code> Como veis, los titulos no se mandan por correo por lo que item,sender seran siempre 0 y subject,text con dos comillas '' . A veces puede ser que la recompensa puede ser titulo e item, creo que eso no hace falta explicarlo como se haria ¿no? Creo que no se me queda nada por el tintero, cualquier duda preguntar. NOTA IMPORTANTE: Si el logro esta bug,es decir, si el logro no salta cuando cumplis los requerimientos aunque añadamos la recompensa, esta nunca nos llegara. Para que nos llegue tiene que saltarnos el texto en amarillo (como explique arriba) al conseguir el logro,sino byebye recompensa... Ahora espero veros subiendo parches como locos de los logros que os interesan y asi de paso me ahorrais trabajo .
  9. TEORÍA Para implementar en un NPC una misión que no esta usaremos 2 diferentes tablas. creature_queststarter: En esta tabla se guarda que misión empieza un NPC. Sus campos: id: Corresponde al NPC que da la misión. quest: Corresponde a la ID de la misión. creature_questender: En esta tabla se guarda que misión termina un NPC. Sus campos: id: Corresponde al NPC que da la misión. quest: Corresponde a la ID de la misión. Una vez que sabemos esto podemos empezar con un simple ejemplo. Como sabemos antes de hacer cualquier acción de insertar algo a la base de datos, primeros debemos asegurarnos que no existe nada con los identificadores que vamos a trabajar ( ID y Quest), para ello primero, ejecutamos una sentencia de DELETE. DELETE FROM `tabla` WHERE `id`=XXXXX AND `quest`=XXXXX; Por lo tanto, realizamos un borrado de un registro de la tabla "tabla" cuando ID y quest concuerden con el registro. En el caso de que no exista un registro con los datos introducidos, la sentencia SQL no realizara "nada". Ahora realizaremos una sentencia de INSERT INTO, para insertar un registro en una tabla especifica. INSERT INTO `tabla`(`id`, `quest`) VALUES (XXXXX, XXXXX); Por lo tanto, hemos especificado una tabla que contiene, esas 2 columnas, y vamos a insertar unos valores, que han de estar en el mismo orden que las columnas. Es decir el 1º valor corresponderá a la ID del NPC, y el segundo valor a la ID de la misión. EJEMPLO PRÁCTICO Vamos a realizar un ejemplo practico. Para empezar tenemos esta misión El Buen Doctor(35146) que la empieza el NPC Marybelle Walsh(84632) y termina en el NPC Dr. Hadley Ricard(84861) 1º Establecemos el comienzo de la misión Y seguidamente la finalización de la misión: DELETE FROM `creature_queststarter`WHERE `id`=84632 AND `quest`=35146; INSERT INTO `creature_queststarter`(`id`, `quest`) VALUES (84632, 35146); DELETE FROM `creature_questender`WHERE `id`=84861 AND `quest`=35146; INSERT INTO `creature_questender`(`id`, `quest`) VALUES (84861, 35146); Una vez tengamos esto, ya esta implementado la misión en los NPC a los que corresponde. Un Saludo
  10. Buenas, visto que hay algunos interesados intentare ir creando pequeñas guias practicas para arreglar cosas basicas en wow. 1- Añadir loot a un npc o criatura: 1.1. Tablas usadas: creature_template y creature_loot_template. 1.2.. Significado de cada columna en la tabla: - Entry = la id del npc o criatura a la que añadiremos el loot. Buscando en wowhead, en el propio link veremos la id. - Item = la id del item que saldra en el loot. Tambien se puede ver en wowhead de la misma manera que la entry. - Chanceorquestchance = la probabilidad de que salga ese item. Actualmente usando la que sale en wowhead. - Lootmode = esto no lo explicaremos, siempre lo dejaremos con valor 1. - Groupid = tampoco lo explicaremos, siempre lo dejaremos con valor 0. - MincountorRef = la cantidad minima de ese item que saldra en el loot. Se mira en wowhead. - Maxcount = la cantidad maxima de ese item que saldra en el loot. Se mira en wowhead. - Itembonuses = tampoco lo explicaremos, el valor es tipo texto por lo que lo dejaremos siempre con el valor ''. Dos comillas, la tecla despues de la interrogacion. 1.3. Significado del codigo sql: Ejemplo: Vamos a añadir loot a este npc: http://www.wowhead.com/npc=85026 <code/> UPDATE `creature_template`SET `lootid`=85026 WHERE `entry`=85026; DELETE FROM `creature_loot_template` WHERE `entry`=85026; INSERT INTO `creature_loot_template` (`entry`,`item`,`chanceorquestchance`,`lootmode`,`groupid`,`mincountorref`,`maxcount`,`itembonuses`) VALUES (85026,120945,100,1,0,1,1,''), (85026,119410,40,1,0,1,1,''), (85026,119178,16,1,0,1,1,''); </code> 1.3.1. La primera linea, el UPDATE, es para indicar que el npc tendra todo el loot que abarca la id 85206. El lootid de la tabla creature_template sera siempre la misma id que la del npc o criatura al que vamos a añadir el loot. Si olvidamos poner este valor en la tabla creature_template, aunque hayamos añadido todos los items al loot, la criatura nunca dara los items. 1.3.2. La segunda linea,el DELETE, debemos hacerlo siempre para evitar que haya duplicidad de ids de los items y asi evitar que nos de error el parche al introducirlo. Se hara añadiendo como condicion unicamente la entry (la id del npc o criatura) si se piensa añadir todo el loot del npc, ya que de esta manera se borraran todos los items que pudiera dar. Si por el contrario solo queremos añadir 1 o varios items al loot y no sabemos o no estamos seguros si tiene algun item ya, usaremos dos condiciones en el DELETE especificando la entry del npc y la id del item que queremos introducir para que sea borrado en caso de que exista y evitar la duplicidad. Ejemplo: DELETE FROM `creature_loot_template` WHERE `entry`=85026 AND `item`=120945; De esta manera solo borraremos la fila que contiene el item 120945. Lo hariamos asi para cada item que queramos introducir, salvo que queramos introducir todos como ya dije anteriormente. 1.3.3. La tercera fila, el INSERT INTO, es la que introducira todos los items en el loot de la criatura. Cada linea es 1 item. En la primera vemos, que se añade el item 120945 con una probabilidad de que salga del 100%. Como la cantidad que saldra sera 1, tanto en minimo como maximo pondremos 1. Si la cantidad que sale es 3, pondriamos 3 en minimo y maximo. Si la cantidad fuera de 1 a 3, pondriamos minimo 1 y maximo 3. 2- Añadir loot a un objeto: 2.1. Tablas usadas : gameobject_template y gameobject_loot_template. 2.2. Las columnas de gameobject_loot_template son las mismas que en npc/criatura. En la tabla gameobject_template en lugar de usar la columna lootid para añadir la id del loot, usaremos la columna llamada data1 . 2.3. Significado del codigo sql: Ejemplo: Vamos a añadir loot a este objeto http://www.wowhead.com/object=235313 <code> UPDATE `gameobject_template`SET `data1`=235313 WHERE `entry`=235313; DELETE FROM `gameobject_loot_template` WHERE `entry`=235313 and `item`=116913; INSERT INTO `gameobject_loot_template` (`entry`,`item`,`chanceorquestchance`,`lootmode`,`groupid`,`mincountorref`,`maxcount`,`itembonuses`) VALUES (235313,116913,100,1,0,1,1,''); </code> Y bueno creo que no me deje nada, ¿bastante facil no? Recordar si subis parches, hacerlo en la seccion correcta. Procurare echarle un vistazo de vez en cuando. Cualquier duda, ya sabeis. Saludos.