Resultados 1 al 2 de 2

Tema: Ejemplo de fix simple. Npc: Twilight Geolord (8320)

  1. #1
    Super Moderator Avatar de Fearless
    Fecha de Ingreso
    20 oct, 08
    Ubicación
    Argentina
    Mensajes
    5,206

    Ejemplo de fix simple. Npc: Twilight Geolord (8320)

    Ejemplo de fix npc: Twilight Geolord (8320). Explicación Smart_script. Rar con fixes de ejemplos varios.


    Agregaremos un script a un npc. Algo bien simple: que castee spells al estar en combate.
    Usamos la tabla: smart_script
    ayuda: https://trinitycore.atlassian.net/wi.../smart_scripts


    Columnas de la tabla

    La tabla tiene muchas columnas y muchísimos posibles usos.
    Seré lo mas conciso posible. Para mas detalles, ver la ayuda de Trinity, y mirar muchos ejemplos de fixes.

    entryorguid source_type id link event_type event_phase_mask event_chance event_flags event_param1 event_param2 event_param3 event_param4

    entryorguid - Si el valor es positivo, hacemos referencia al entry de una creature/gameobject/etc. O sea, todas las creatures que vayan a estar spawneadas, harán lo que le indiquemos.
    Si el valor es negativo, hace referencia al Guid de una creature/gameobject. Es decir, solo la creature que tenga ese guid hará la acción que asignemos, no todas.
    source_type - tipo de objeto: Creature=0 // Gameobject=1 // Areatrigger=2 // Actionlist=9
    id - Cada linea que ingresamos tiene que tener un id único. Solo para identificarlo; esto no quiere decir que lo que haya en el id 4 vaya a ocurrir antes que el id 10.
    link - Si se quiere que al dispararse el id 5, por ejemplo, se realize otra acción mas, se puede linkear a otro id (en caso de hacerlo, ese id linkeado debe tener event_type=61).
    event_type - El evento que tiene que ocurrir para que se haga la acción. Ver la ayuda de TC para saber la lista.
    event_phase_mask - Es complejo, no avanzaremos con esto por ahora.
    event_chance - El porcentaje de probabilidad de que dicho evento realice la acción.
    event_flags - Default 0. Si se pone 1, la acción la hará solo una vez aunque siga ocurriendo el evento. Otros valores son para que las acciones ocurran solo en dungeons normal/hero, o raids normal/hero.
    event_param1 (2,3,4) - parámetros que necesita el evento.. depende de cada uno. Ver ayuda de Tc.


    action_type action_param1 action_param2 action_param3 action_param4 action_param5 action_param6

    action_type - La acción que hará el npc/gameobject cuando ocurra el evento.
    action_param1 (2,3,4,5,6) - parámetros que necesita la acción.. depende de cada una. Ver ayuda de Tc.

    target_type target_param1 target_param2 target_param3 target_x target_y target_z target_o comment

    target_type - El destinatario de la acción.
    target_param1 (2,3,x,y,z,o) - parámetros que necesita el target.. depende de cada uno. Ver ayuda de Tc.
    comment - Comentamos quien, cuando y qué hará en esa linea ingresada.



    Fix
    Código:
    -- Twilight Geolord (8320)
    --  fix de Yugu
    
    SET @Geolord := 11881;
    SET @Boulder := 9483;
    SET @Shock := 13728;
    
    UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@Geolord;
    DELETE FROM smart_scripts WHERE entryorguid=@Geolord AND Source_type=0;
    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
    (@Geolord,0,0,0,0,0,100,0,1000,1000,3500,8000,11,@Boulder,0,0,0,0,0,2,0,0,0,0.0,0.0,0.0,0.0,'Twilight Geolord - In Combat - Cast Boulder'),
    (@Geolord,0,1,0,0,0,100,0,2000,4000,5000,9000,11,@Shock,0,0,0,0,0,2,0,0,0,0.0,0.0,0.0,0.0,'Twilight Geolord - In Combat - Cast Earth Shock');


    Explicación

    Código:
    -- Twilight Geolord (8320)
    --  fix de Yugu
    Queda mas prolijo siempre comentar todo. Cuando lo lea otra persona o lo vuelvas a leer dentro de meses, lo agradecerás.
    Obviamente al ejecutar el script, todo lo que esté comentado no se ejecuta
    Se pueden comentar otras partes del fix, por ejemplo para aclarar que estamos agregando un aura a un npc, que es la que lo cambia de fase, etc.
    -- comentario de una linea
    /* comentario
    de varias
    lineas */



    Código:
    SET @Geolord := 11881;
    SET @Boulder := 9483;
    SET @Shock := 13728;
    Seteamos las constantes para que sea mas fácil la lectura luego.
    En un fix tan chico no hace tanta falta pero sirve para acostumbrarnos.


    Código:
    UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@Geolord;
    ¡Esto es importante!. Cuando agregamos un script a un npc/gameobject/areatrigger, tenemos que avisarle a ese objeto que tiene script. Si no se pone esto, jamás va a ejecutar todo lo que ingresemos.
    Ahí le avisamos al npc @Geolord, que tiene smart_script.
    En caso de que el script sea a un gameobject, correspondería:
    UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI' WHERE `id`=@IdDelObjeto;


    Código:
    DELETE FROM smart_scripts WHERE entryorguid=@Geolord AND Source_type=0;
    Borramos el script que tenga para poder ingresar el nuevo.


    Código:
    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
    (@Geolord,0,0,0,0,0,100,0,1000,1000,3500,8000,11,@Boulder,0,0,0,0,0,2,0,0,0,0.0,0.0,0.0,0.0,'Twilight Geolord - In Combat - Cast Boulder'),
    (@Geolord,0,1,0,0,0,100,0,2000,4000,5000,9000,11,@Shock,0,0,0,0,0,2,0,0,0,0.0,0.0,0.0,0.0,'Twilight Geolord - In Combat - Cast Earth Shock');
    Ingresamos el script.
    En negrita, el id, el evento, la acción, y el target.
    En el id 0, decimos que cuando el npc esté en combate, luego de 1 segundo (con repetición entre los 3,5segs y 8segs), va a castear el spell @Boulder a quien tenga de target en ese momento.
    En el id 1, decimos que cuando el npc esté en combate entre 2 y 4 segundos (con repetición entre los 5segs y 9segs), va a castear el spell @Shock a quien tenga de target en ese momento.
    Fearless - Fearlight - Fearfury - Fearthunder - Fearbringer (H) // Fearfreezing - Fearwild (A)

  2. #2
    Super Moderator Avatar de Fearless
    Fecha de Ingreso
    20 oct, 08
    Ubicación
    Argentina
    Mensajes
    5,206

    Re: Ejemplo de fix simple. Npc: Twilight Geolord (8320)

    Videos tutoriales que complementan los temas de arriba. No habla del fix del ejemplo, pero explica las tablas y demases temas.







    by Wpagani.
    Última edición por Fearless; 15/04/2018 a las 18:34
    Fearless - Fearlight - Fearfury - Fearthunder - Fearbringer (H) // Fearfreezing - Fearwild (A)

Temas Similares

  1. Respuestas: 0
    Último Mensaje: 13/12/2010, 20:01
  2. [NPC] Twilight Stonecaller
    Por Chosky en el foro NPC/Mobs
    Respuestas: 0
    Último Mensaje: 17/03/2009, 01:15
  3. Proyecto ₁₀100
    Por PalaGarcha en el foro General
    Respuestas: 2
    Último Mensaje: 27/09/2008, 18:13
  4. The Twilight Zone
    Por n1tro en el foro Quake Series
    Respuestas: 60
    Último Mensaje: 06/05/2007, 12:34

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •