Diferencia entre revisiones de «Smart scripts»
Ir a la navegación
Ir a la búsqueda
| Línea 124: | Línea 124: | ||
[[event_type]] | [[event_type]] | ||
{| class="wikitable" | [[EXPANDIR LA TABLA]] | ||
{| class="mw-collapsible mw-collapsed wikitable" | |||
! style="background:PaleGreen;" | Nombre | ! style="background:PaleGreen;" | Nombre | ||
! style="background:PaleGreen;" | Valor | ! style="background:PaleGreen;" | Valor | ||
| Línea 173: | Línea 175: | ||
[[target_type]] | [[target_type]] | ||
*Define el target del evento y/o la acción. | *Define el target del evento y/o la acción. | ||
[[EXPANDIR LA TABLA]] | |||
{| class="mw-collapsible mw-collapsed wikitable" | |||
! style="background:PaleGreen;" | Nombre | |||
! style="background:PaleGreen;" | Valor | |||
! style="background:PaleGreen;" | Target Parametro 1 | |||
! style="background:PaleGreen;" | Target Parametro 2 | |||
! style="background:PaleGreen;" | Target Parametro 3 | |||
! style="background:PaleGreen;" | Target Parametro 4 | |||
! style="background:PaleGreen;" | Target X | |||
! style="background:PaleGreen;" | Target Y | |||
! style="background:PaleGreen;" | Target Z | |||
! style="background:PaleGreen;" | Target O | |||
! style="background:PaleGreen;" | 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]] | [[comment]] | ||
*Al comentar en Smart AI se usa una plantilla como la siguiente: | *Al comentar en Smart AI se usa una plantilla como la siguiente: | ||
Revisión del 01:24 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.
- 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 |
- Incremento de id ligad a cada 'entryorguid' y 'source_type' (0, 1, 2, ...).
- 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.
| 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 (?).
- Probabilidad de que el evento tenga lugar, en porcentaje (0-100%).
- 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.
- Acción que se usará si el evento es desencadenado.
- Define el target del evento y/o la acción.
| 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 |
- 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.).