Diferencia entre revisiones de «Smart scripts»

De TimelessWoW
Ir a la navegación Ir a la búsqueda
Línea 124: Línea 124:
[[event_type]]
[[event_type]]


[[EXPANDIR LA TABLA]]
===EXPANDIR LA TABLA===


{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
Línea 176: Línea 176:
*Define el target del evento y/o la acción.
*Define el target del evento y/o la acción.


[[EXPANDIR LA TABLA]]
===EXPANDIR LA TABLA===


{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"

Revisión del 01:25 10 oct 2025

La tabla `smart_scripts`

Con este sistema podremos programar eventos bastante complejos sin la necesidad de recurrir a scripts.

Dado las grandes posibilidades que presenta sustituye completamente a los eventos programados por Event AI,
así que este último sistema ha quedado obsoleto y ya no se usa.


Estructura

Field Type Attributes KEY NULL Default Extra Comment
entryorguid int(11) signed PRI NO None
source_type tinyint(3) unsigned PRI NO 0
id smallint(5) unsigned PRI NO 0
link smallint(5) unsigned PRI NO 0
event_type tinyint(3) unsigned NO 0
event_phase_mask tinyint(3) unsigned NO 0
event_chance tinyint(3) unsigned NO 100
event_flags tinyint(3) unsigned NO 0
event_param1 int(10) unsigned NO 0
event_param2 int(10) unsigned NO 0
event_param3 int(10) unsigned NO 0
event_param4 int(10) unsigned NO 0
action_type tinyint(3) unsigned NO 0
action_param1 int(10) unsigned NO 0
action_param2 int(10) unsigned NO 0
action_param3 int(10) unsigned NO 0
action_param4 int(10) unsigned NO 0
action_param5 int(10) unsigned NO 0
action_param6 int(10) unsigned NO 0
target_type tinyint(3) unsigned NO 0
target_param1 int(10) unsigned NO 0
target_param2 int(10) unsigned NO 0
target_param3 int(10) unsigned NO 0
target_x float signed NO 0
target_y float signed NO 0
target_z float signed NO 0
target_o float signed NO 0
comment text signed NO Event Comment

Descripción de los campos

Nótese que significa que esa característica/opción no está (aún) implementada.

entryorguid

  • EntryOrGuid > 0: entry de la criatura/ gameobject / etc.
  • EntryOrGuid < 0: guid de la criatura/ gameobject / etc.
  • Depende del valor tomado en source_type.

source_type

  • Fuente del evento: criatura, gameobect, spell.

Consultar la tabla.

Nombre Valor
SMART_SCRIPT_TYPE_CREATURE 0
SMART_SCRIPT_TYPE_GAMEOBJECT 1
SMART_SCRIPT_TYPE_AREATRIGGER 2
SMART_SCRIPT_TYPE_EVENT 3
SMART_SCRIPT_TYPE_GOSSIP 4
SMART_SCRIPT_TYPE_QUEST 5
SMART_SCRIPT_TYPE_SPELL 6
SMART_SCRIPT_TYPE_TRANSPORT 7
SMART_SCRIPT_TYPE_INSTANCE 8
SMART_SCRIPT_TYPE_TIMED_ACTIONLIST 9
SMART_SCRIPT_TYPE_SCENE 10
SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY 11
SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY_SERVERSIDE 12

id

  • Incremento de id ligad a cada 'entryorguid' y 'source_type' (0, 1, 2, ...).

link

  • Método simple para enlazar eventos.
  • Ejemplo: Tenemos un evento (con un entryorguid y un source_type definidos) con id = 0 y link = 1; el evento (que tiene el mismo entryorguid y source_type) con id = 1 sólo podrá ocurrir si el evento con id = 0 ha sido desencadenado.
  • Cuando se usa este método, hay que seleccionar el event_type 61 (SMART_EVENT_LINK).

Volver a smart_scripts.

event_type

EXPANDIR LA TABLA

Nombre Valor Parametro 1 Parametro 2 Parametro 3 Parametro 4 Parametro 5 Comentario
SMART_EVENT_UPDATE_IC 0 Inicio/Mínimo Inicio/Máximo Repite/Mínimo Repite/Máximo En combate
SMART_EVENT_UPDATE_OOC 1 Inicio/Mínimo Inicio/Máximo Repite/Mínimo Repite/Máximo Fuera de combate
SMART_EVENT_HEALT_PCT 2 HPMin% HPMax% RepeatMin RepeatMax Porcentage de salud
SMART_EVENT_MANA_PCT 3 ManaMin% ManaMax% RepeatMin RepeatMax Porcentage de maná
SMART_EVENT_AGGRO 4 NONE
SMART_EVENT_KILL 5 CooldownMin0 CooldownMax1 playerOnly (0/1) Enttry (Si el parámetro 3 es 0) Sobre la muerte de criaturas
SMART_EVENT_DEATH 6 NONE
SMART_EVENT_EVADE 7 NONE
SMART_EVENT_SPELLHIT 8 SpellID School CooldownMin CooldownMax Al golpear com un hechizo a creatura/objeto
SMART_EVENT_RANGE 9 MinDist MaxDist RepeatMin RepeatMax Al objeto dentro del rango
SMART_EVENT_OOC_LOS 10 Ignorar hostilidad - target (0/1) Max Distancia al target CooldownMin CooldownMax Distancia cuando está fuera de combate
  • El evento sólo podrá ocurrir si la criatura/gameobject está en esta fase.
  • El 0 engloba todas las fases (?).

event_phase_mask


event_chance

  • Probabilidad de que el evento tenga lugar, en porcentaje (0-100%).

event_flags

  • Establece si el evento no debería repetirse o sólo debería ocurrir en una determinada dificultad de instancia/mazmorra (si corresponde).
  • Los valores se pueden sumar.

action_type

  • Acción que se usará si el evento es desencadenado.

target_type

  • Define el target del evento y/o la acción.

EXPANDIR LA TABLA

Nombre Valor Target Parametro 1 Target Parametro 2 Target Parametro 3 Target Parametro 4 Target X Target Y Target Z Target O Comentario
SMART_TARGET_NONE 0 Ninguno. Por defecto es el invocador
SMART_TARGET_SELF 1 Auto casteo (así mismo)
SMART_TARGET_VICTIM 2 Nuestro objetivo, con mayor aggro
SMART_TARGET_HOSTILE_SECOND_AGGRO 3 Máxima distancia Solo jugador (0/1) Potencia +1 Segundo con mayor aggro
SMART_TARGET_HOSTILE_LAST_AGGRO 4 Última muerte
SMART_TARGET_HOSTILE_RANDOM 5 Cualquier objetio aleatorio, en nuestra lista de amenazas
SMART_TARGET_HOSTILE_RANDOM_NOT_TOP 6 Cualquier objetio aleatorio, excepto la amenaza superior
SMART_TARGET_ACTION_INVOKER 7 Unidad que provoca que ocurra el evento. (Habitualente player)
SMART_TARGET_POSITION 8 X Y Z Se usan las coordenadas en xyz como parámetros del evento
SMART_TARGET_CREATURE_RANGE 9 Id de la criatira (Para ninguna dejar a 0) Distancia Min. Distancia Max. Criatura con ID específica, dentro de un rango específico
SMART_TARGET_CREATURE_GUID 10 Guid Entry Criatura con GUID específica
SMART_TARGET_CREATURE_DISTANCE 11 Id de la criatura (Para ninguna, dejar en 0) Distancia Max. Criatura con Id específica dentro de rango
SMART_TARGET_STORED 12 id Utiliza objetivos prealmacenados (lista)
SMART_TARGET_GAMEOBJECT_RANGE 13 Id del Go (Para ningino, dejar en 0) Distancia Min. Distancia Max Objeto con id específica dento de un rango específico
SMART_TARGET_GAMEOBJECT_GUID 14 Guid el Objeto Id del Objeto Objeto con Guid específica
SMART_TARGET_GAMEOBJECT_DISTANCE 15 Id del Objeto(Para ninguno, dejar en 0) Distancia Max Objeto con Id específico, dentro de la distancia
SMART_TARGET_INVOKER_PARTY 16 Miembros del grupo del invocador
SMART_TARGET_PLAYER_RANGE 17 Distancia Min. Distancia Max. Jugador denteo de un rango específico
SMART_TARGET_PLAYER_DISTANCE 18 Distancia Max. Jugador dentro de una máxima distancia
SMART_TARGET_CLOSEST_CREATURE 19 Id de la criatura (Para ninguna, dejar en 0) Distancia Max. Muerte (0/1) Cierra la criatura mas cercana dento del rango máximo
SMART_TARGET_CLOSEST_GAMEOBJECT 20 Id del Objeto (Para ninguno, dejar en 0) Distancia Max. Cierra el objeto mas cercano dentro de la distancia
SMART_TARGET_CLOSEST_PLAYER 21 Distancia Max. Cierra el jugador dentro del rango especificado
SMART_TARGET_ACTION_INVOKER_VEHICLE 22 Vehículo de la unidad que provoca la distancia
SMART_TARGET_OWNER_OR_SUMMONER 23 Invocador o propietario
SMART_TARGET_THREAT_LIST 24 Distancia Max. Todas las criaturas de la lista
SMART_TARGET_CLOSEST_ENEMY 25 (NYI) Aun no está implementado
SMART_TARGET_CLOSEST_FRIENDLY 26 (NYI) Aun no está implementado
SMART_TARGET_LOOT_RECIPIENTS 27 (NYI) Aun no está implementado
SMART_TARGET_FARTHEST 28 Distancia Max. Solo Jugador (0/1) isInLos (0/1) Unidad mas alejada de la lista de amenazas
SMART_TARGET_VEHICLE_PASSENGER 29 (NYI) Aun no está implementado
SMART_TARGET_CLOSEST_UNSPAWNED_GAMEOBJECT 30 (NYI) Aun no está implementado
SMART_TARGET_RANDOM_POSITION 40 (NYI) Aun no está implementado
SMART_TARGET_INVOKER_SUMMON 41 (NYI) Aun no está implementado
SMART_TARGET_HOSTILE_RANDOM_PLAYER 42 (NYI) Aun no está implementado
SMART_TARGET_HOSTILE_RANDOM_NOT_TOP_PLAYER 43 (NYI) Aun no está implementado
SMART_TARGET_HOSTILE_RANDOM_AURA 44 (NYI) Aun no está implementado

comment

  • Al comentar en Smart AI se usa una plantilla como la siguiente:

"Nombre de la criatura - Evento - Acción "Minion of Gurok - On spawn - Set Random Movement"

Notas:

  • Actualiza siempre la tabla creature_template o gameobject_template(dependiendo de a quien afecta el evento) con:

UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=XXXXX;

UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI' WHERE `entry`=XXXXX;

  • Si la criatura o gameobject está dentro de una mazmorra, establece event_flags de acuerdo a la dificultad de la estancia (heroica, banda 10j., etc.).