Tutorial Phasemask para World of Warcraft

mariodanny91

Guardian
Desde
2 Feb 2020
Mensajes
207
Reacciones
222
Honor
80
Tutorial Phasemask para World of Warcraft:

En esta guía, enseñaré una de las maneras de hacer una fase para el emulador JadeCore que está basado en TrinityCore.
Les servirá de conocimiento base para otros emuladores más actualizados y motivarlos a investigar mas sobre el tema.
Vale aclarar que todo lo planteado aquí es de manera autodidacta no soy programador, solo comparto lo que he aprendido.
Para esta guia deben tener instalado algun gestor de base de datos como Navicat, SQLyog, HeidiSQL o via web phpmyadmin.

Link del Tutorial de Script C++ World of Warcraft 1.
Link del Tutorial de Script C++ World of Warcraft 2.
Link del Tutorial de Script C++ World of Warcraft 3.

Punto sobre los cuales hablare:
-Como crear una fase por phasemask en base de datos.

Primeramente empezaremos analizando la estructura de las tablas que utilizaremos:

-phase_definitions

zoneidId de la zona donde ocurrira la fase.
entryEntry unica para cada fase.
phasemaskNumero de fase expresado en mascara de bits (he utilizado hasta las phasemask 134217728).

0x00000001 = 1
0x00000002 = 2
0x00000004 = 4
0x00000008 = 8
0x00000010 = 16
0x00000020 = 32
0x00000040 = 64
0x00000080 = 128
0x00000100 = 256
0x00000200 = 512
0x00000400 = 1024
0x00000800 = 2048
0x00001000 = 4096
0x00002000 = 8192
0x00004000 = 16384
0x00008000 = 32768
0x00010000 = 65536
0x00020000 = 131072
0x00040000 = 262144
0x00080000 = 524288
0x00100000 = 1048576
0x00200000 = 2097152
0x00400000 = 4194304
0x00800000 = 8388608
0x01000000 = 16777216
0x02000000 = 33554432
0x04000000 = 67108864
0x08000000 = 134217728
0x10000000 = 268435456
0x20000000 = 536870912
0x40000000 = 1073741824
0x80000000 = 2147483648
terrainswapmapId del terrain que se desea incluir en la fase (sniff data) son para fases donde el mapa cambia por algun evento Ej. la quest donde sanan a Sen-zin su la tortuga
flagsFlag para gestionar las fases (PhaseMgr.h-->PhasingFlags)
Si el valor de la flag es 0, automaticamente suma las phasemask.

PHASE_FLAG_OVERWRITE_EXISTING = 1,
// sobreescribe la fase existente y no se suma a la fase anterior.
PHASE_FLAG_NO_MORE_PHASES = 2,
// detiene el calculo de fases despues de esta(no mas fases seran aplicadas)
PHASE_FLAG_NEGATE_PHASE = 4,
// resta de la fase actual.
commentcomentario

-conditions

SourceTypeOrReferenceIdLa numero 24 (CONDITION_SOURCE_TYPE_PHASE_DEFINITION) ubicado en ConditionMgr.h-->ConditionSourceType
SourceGroupId de la zona en zoneid-->phase_definitions
SourceEntryentry-->phase_definitions
SourceId0
ElseGroup0 ó 1
Si queremos que la fase tenga dos condiciones y al cumplirse una de las dos entonces se realice el cambio de fase

ConditionTypeOrReferenceTipo de condicion utilizado para que la fase cambie (ConditionMgr.h-->ConditionTypes
Las demas columnas dependen del ConditionTypeOrReference escogido.

-creature o gameobject

En creature o gameobject solamente agregaremos un valor en la columna phaseMask a los npc o gameobject correspondiente a cada fase.

Ahora vamos a la parte de SQL:

SQL:
Necesitas, Acceder o Registrarse para ver el contenido.

SQL:
Necesitas, Acceder o Registrarse para ver el contenido.

SQL:
Necesitas, Acceder o Registrarse para ver el contenido.


En caso de ser una fase donde NO sea un evento cerrado a solamente los npc o gameobject propios de dicho evento, se le sumaria 1 a la phaseMask:

SQL:
Necesitas, Acceder o Registrarse para ver el contenido.

SQL:
Necesitas, Acceder o Registrarse para ver el contenido.

SQL:
Necesitas, Acceder o Registrarse para ver el contenido.

*No ejecuten este ejemplo en su base de datos, puede que no coincida con ningun npc o gameobject.
 
Desde
19 Oct 2019
Mensajes
807
Reacciones
495
Honor
82
Tutorial Phasemask para World of Warcraft:

En esta guía, enseñaré una de las maneras de hacer una fase para el emulador JadeCore que está basado en TrinityCore.
Les servirá de conocimiento base para otros emuladores más actualizados y motivarlos a investigar mas sobre el tema.
Vale aclarar que todo lo planteado aquí es de manera autodidacta no soy programador, solo comparto lo que he aprendido.
Para esta guia deben tener instalado algun gestor de base de datos como Navicat, SQLyog, HeidiSQL o via web phpmyadmin.

Link del Tutorial de Script C++ World of Warcraft 1.
Link del Tutorial de Script C++ World of Warcraft 2.
Link del Tutorial de Script C++ World of Warcraft 3.

Punto sobre los cuales hablare:
-Como crear una fase por phasemask en base de datos.

Primeramente empezaremos analizando la estructura de las tablas que utilizaremos:

-phase_definitions

zoneidId de la zona donde ocurrira la fase.
entryEntry unica para cada fase.
phasemaskNumero de fase expresado en mascara de bits (he utilizado hasta las phasemask 134217728).

0x00000001 = 1
0x00000002 = 2
0x00000004 = 4
0x00000008 = 8
0x00000010 = 16
0x00000020 = 32
0x00000040 = 64
0x00000080 = 128
0x00000100 = 256
0x00000200 = 512
0x00000400 = 1024
0x00000800 = 2048
0x00001000 = 4096
0x00002000 = 8192
0x00004000 = 16384
0x00008000 = 32768
0x00010000 = 65536
0x00020000 = 131072
0x00040000 = 262144
0x00080000 = 524288
0x00100000 = 1048576
0x00200000 = 2097152
0x00400000 = 4194304
0x00800000 = 8388608
0x01000000 = 16777216
0x02000000 = 33554432
0x04000000 = 67108864
0x08000000 = 134217728
0x10000000 = 268435456
0x20000000 = 536870912
0x40000000 = 1073741824
0x80000000 = 2147483648
terrainswapmapId del terrain que se desea incluir en la fase (sniff data) son para fases donde el mapa cambia por algun evento Ej. la quest donde sanan a Sen-zin su la tortuga
flagsFlag para gestionar las fases (PhaseMgr.h-->PhasingFlags)
Si el valor de la flag es 0, automaticamente suma las phasemask.

PHASE_FLAG_OVERWRITE_EXISTING = 1,
// sobreescribe la fase existente y no se suma a la fase anterior.
PHASE_FLAG_NO_MORE_PHASES = 2,
// detiene el calculo de fases despues de esta(no mas fases seran aplicadas)
PHASE_FLAG_NEGATE_PHASE = 4,
// resta de la fase actual.
commentcomentario

-conditions

SourceTypeOrReferenceIdLa numero 24 (CONDITION_SOURCE_TYPE_PHASE_DEFINITION) ubicado en ConditionMgr.h-->ConditionSourceType
SourceGroupId de la zona en zoneid-->phase_definitions
SourceEntryentry-->phase_definitions
SourceId0
ElseGroup0 ó 1
Si queremos que la fase tenga dos condiciones y al cumplirse una de las dos entonces se realice el cambio de fase

ConditionTypeOrReferenceTipo de condicion utilizado para que la fase cambie (ConditionMgr.h-->ConditionTypes
Las demas columnas dependen del ConditionTypeOrReference escogido.

-creature o gameobject

En creature o gameobject solamente agregaremos un valor en la columna phaseMask a los npc o gameobject correspondiente a cada fase.

Ahora vamos a la parte de SQL:

SQL:
Necesitas, Acceder o Registrarse para ver el contenido.

SQL:
Necesitas, Acceder o Registrarse para ver el contenido.

SQL:
Necesitas, Acceder o Registrarse para ver el contenido.


En caso de ser una fase donde NO sea un evento cerrado a solamente los npc o gameobject propios de dicho evento, se le sumaria 1 a la phaseMask:

SQL:
Necesitas, Acceder o Registrarse para ver el contenido.

SQL:
Necesitas, Acceder o Registrarse para ver el contenido.

SQL:
Necesitas, Acceder o Registrarse para ver el contenido.

*No ejecuten este ejemplo en su base de datos, puede que no coincida con ningun npc o gameobject.
phaseid es mejor :V
 

Crea una cuenta o inicia sesión para comentar

Debes ser usuario para poder dejar un comentario.

¡Regístrate!

Crea una cuenta en nuestra comunidad. ¡Es fácil!

Acceder

¿Ya tienes una cuenta? Accede aquí

3,742Temas
24,621Mensajes
15,332Usuarios
PalerkÚltimo usuario
Top