Smart scripts
Ir a la navegación
Ir a la búsqueda
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.
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 | |
| SMART_EVENT_RESPAWN | 11 | Condición del respawn | Condicion del MapId | Condición de la ZoneId | Sobre la reaparición de objetos/criaturas | ||
| SMART_EVENT_TARGET_HEALTH_PCT | 12 | HPMin% | HPMax% | RepeatMin | RepeatMax | Porcentage de salud del objetivo | |
| SMART_EVENT_TARGET_CASTING | 13 | Repeticion Min. | Repetición Max. | id del hechizo | Hechizo al objetivo | ||
| SMART_EVENT_FRIENDLY_HEALTH | 14 | Déficit de HP(salud) | Rádio | Repetición Min. | Repetición Max. | Déficit de salud - amistoso | |
| SMART_EVENT_FRIENDLY_IS_CC | 15 | Radio | Repetición Min. | Repetición Max. | cuando una unidad amiga dentro de un cierto rango está bajo el efecto de un hechizo de control de masas | ||
| SMART_EVENT_FRIENDLY_MISSING_BUFF | 16 | Id del hechizo | Radio | Repetición Min. | Repetición Max. | Unidad amistosa, perdida de Buff | |
| SMART_EVENT_SUMMONED_UNIT | 17 | Criatura Id, para ninguno dejar en 0 | Repatición Min. | Repatición Max. | Unidad invocada por criatura/objeto | ||
| SMART_EVENT_TARGET_MANA_PCT | 18 | Mana Maz.% | Mana Min.% | Repetición Min. | Repetición Max. | Porcentaje de maná del objetivo | |
| SMART_EVENT_ACCEPTED_QUEST | 19 | ID de la misión (0 ninguna) | Tiempo Min. | Tiempo Max. | Misión aceptada | ||
| SMART_EVENT_REWARD_QUEST | 20 | ID de la misión (0 ninguna) | Tiempo Min. | Tiempo Max. | Mision Recompensada | ||
| SMART_EVENT_REACHED_HOME | 21 | Sobre la criatura que llega a casa | |||||
| SMART_EVENT_RECEIVE_EMOTE | 22 | EmoteId | Tiempo Min. | Tiempo Max. | Recibe el emote | ||
| SMART_EVENT_HAS_AURA | 23 | Id del hechizo | Numero de STacked | Repetición Min. | Repetición Max. | Sobre el aura de la criatura | |
| SMART_EVENT_TARGET_BUFFED | 24 | Id del hechizo | Numero de STacked | Repetición Min. | Repetición Max. | Buff de spell sobre el objetivo | |
| SMART_EVENT_RESET | 25 | Aparecer o reaparecer despues del combate | |||||
| SMART_EVENT_IC_LOS | 26 | Ignora criatura hostil (0/1) | Rango (distancia) Max. | Tiempo Min. | Tiempo Max. | ||
| SMART_EVENT_PASSENGER_BOARDED | 27 | Tiempo Min. | Tiempo Max. | Cuando la criatura se sube al vehiculo | |||
| SMART_EVENT_PASSENGER_REMOVED | 28 | Tiempo Min. | Tiempo Max. | Cuando la criatura se baja al vehiculo | |||
| SMART_EVENT_CHARMED | 29 | 0 (al aplicar el encanto) / 1 (al quitar el encanto) | Criatura encantada | ||||
| SMART_EVENT_CHARMED_TARGET | 30 | Criatura encantada al objetivo | |||||
| SMART_EVENT_SPELLHIT_TARGET | 31 | Id del hechizo | Escuela | Tiempo Min. | Tiempo Max. | Hechizo sobre el objetivo | |
| SMART_EVENT_DAMAGED | 32 | Daño Min. | Daño Max. | Tiempo Min. | Tiempo Max. | Daño sobre la criatura | |
| SMART_EVENT_DAMAGED_TARGET | 33 | Daño Min. | Daño Max. | Tiempo Min. | Tiempo Max. | Daño al objetivo | |
| SMART_EVENT_MOVEMENTINFORM | 34 | MovementType(any) | PointID | MovemenType |
- 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.
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 |
- 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.).