Mensajes recientes

#21
Modding / [APORTE] Mapa Isla Esmeralda
Último mensaje por Nuzak - Abr 20, 2025, 02:29 PM

Todos los créditos a ThunderNet por su publicación original en WoWCreador



Los visitantes no pueden visualizar imágenes en los mensajes, por favor You are not allowed to view links. Register or Login o You are not allowed to view links. Register or Login


Buenas amigos aquí les dejo un patcher del mapa isla esmeralda para WoW 3.3.5


Coordenadas:

3219.962 3038.452 23.231 169


Comando para acceder:

.go xyz 3219.962 3038.452 23.231 169


NOTA:

Ejecute en su base de datos World las dos sql que les adjunte, uno es para el teletransportador y el otro es para la instancia


Descargas

You are not allowed to view links. Register or Login


Contacto:

E-Mail:
You are not allowed to view links. Register or Login
#22
Modding / [VIDEO] Cómo Modificar la Anim...
Último mensaje por Nuzak - Abr 20, 2025, 02:29 PM

Todos los créditos a Laurexp por su publicación original en WoWCreador


En este video te enseñaré paso a paso cómo modificar un objeto en la base de datos de AzerothCore para que al usarlo ejecute una animación personalizada (puede ser un hechizo, buff o debuff), ya sea de tipo vanilla o completamente custom.

¿Qué vamos a explorar?​


  • Cómo trabajar con la base de datos (archivos SQL y consultas en MySQL).

  • La metodología para encontrar la animación adecuada.

  • Cómo utilizar correctamente la documentación oficial de AzerothCore y otros emuladores relacionados.



Este tutorial está diseñado para principiantes, pero también puede ser útil si ya tienes algo de experiencia y buscas una guía clara para lograr resultados concretos.

Recursos útiles mencionados en el video:​

¿Tienes dudas, ideas o sugerencias?

Déjalas en los comentarios y con gusto te responderé.


¿Qué es un fork?​

Un fork es una copia de un proyecto que se utiliza para modificar o adaptar su contenido, separándolo del original.

Es como una rama que crece a partir del tronco de un árbol: el proyecto original sigue su curso, mientras que tu fork puede evolucionar en una dirección distinta según tus necesidades.
#23
Modding / Crear montura Custom para tu S...
Último mensaje por Nuzak - Abr 20, 2025, 02:29 PM

Todos los créditos a hpgrenier por su publicación original en WoWCreador


Para esto necesitaremos un DBC editor, un DB editor, tener acceso a ambas DBC y DB del servidor, y tener el modelo planeado para crear el mismo.

Primer paso: Crear el Spell.

Comenzamos editando el Spell.dbc,nos vamos entonces y buscamos una ID de algún hechizo de invocación de montura, copiamos su base y creamos una nueva linea.

Nos vamos a la columna de EffectBase Point (81 u 82 Por defecto) Y en ella modificamos el Speed que queramos que tenga nuestra montura, por lo general es la velocidad de movimiento terrestre o en vuelo, lo sabreís por lógica. El valor hay que modificarlo a X-1, siendo X la velocidad que queramos que tenga la montura (el 1 es la velocidad por defecto que tiene el personaje, a la cual se le suma el de la montura para tener el total.)

Segundo paso: Crear el NPC mount.

Para esto verificamos el modelo no exceda el tamaño máximo, y que su modelo sea tipo parecido a alguna otra montura, o no será una montura sino una transformación, verificarlo en model viewer (Por ejemplo este dragon es bastaante grande)

Buscamos un NPC y en él, su ModelID será el que tendremos de montura, en mi caso, usaré el modelo 19066 que es de un Atracador del infinito
Los visitantes no pueden visualizar imágenes en los mensajes, por favor You are not allowed to view links. Register or Login o You are not allowed to view links. Register or Login



Teniendo el modelo en mente, creo un NPC con su modelid, y guardo su EntryID para usarlo en la edición del Spell.dbc.

Volvemos al Dbc editor en el Spell que hemos creado/copiado con anterioridad y nos vamos a la columna 111 (EffectMiscValue) que ahí irá el EntryID que hemos guardado anteriormente del npc mount que hemos creado... Con esto ya está listo el hechizo custom de invocación y la montura.

Sólo faltaría hacer un item con el uso de este You are not allowed to view links. Register or Login y así mismo, ponerle un CD de 3s, o tomar un item ya existente, copiarlo y crear uno nuevo tomándolo como base, cambiar el spellid, y parcharlo.

Listo, tendréis monturas nuevas para presumir en vuestros servidores!

Los visitantes no pueden visualizar imágenes en los mensajes, por favor You are not allowed to view links. Register or Login o You are not allowed to view links. Register or Login



PD: Necesitan tener conocimiento previo de edición, parcheo, y manejo de DB para completar esta guía con éxito, o pueden usar la lógica e igualmente tener éxito, cómo sea, espero le sirva de algo a alguien.
#24
Modding / [TUTORIAL] Creación Razas Cust...
Último mensaje por Nuzak - Abr 20, 2025, 02:29 PM

Todos los créditos a Tuerny por su publicación original en WoWCreador


Esta será la última parte de la guía. Tras esto habréis conseguido implementar los Worgens y los Goblin en vuestro server. Bueno, realmente si ya habéis hecho las otras 3 partes del tutorial ya los tenéis implementados, pero aun no podéis acceder a crearlos desde vuestro cliente. Para eso lo que vamos a hacer es cambiar los archivos de la interface que hacen referencia a esto y los modificaremos para que aparezcan nuestras razas custom en la creación de personajes.

Vamos a necesitar para ello varios archivos, los cuales como ya expliqué en la parte 2 los cogeremos de los parches de mayor a menor. Los archivos a extraer de los MPQs originales son los siguientes:

CharacterCreate.lua

CharacterCreate.xml
GlueParent.lua

GlueStrings.lua


Una vez los tengamos empezamos las modificaciones.

CharacterCreate.lua

Aquí estableceremos el número máximo de razas disponibles.

Cambiaremos esta línea:




      Codigo:
   

MAX_RACES = 10;



Por esta otra (añadiendo 2 razas más):




      Codigo:
   

MAX_RACES = 12;



Ahora estableceremos la posición de los iconos de las razas en sus correspondientes casillas.
Buscamos:



      Codigo:
   

RACE_ICON_TCOORDS = {
    ["HUMAN_MALE"]        = {0, 0.125, 0, 0.25},
    ["DWARF_MALE"]        = {0.125, 0.25, 0, 0.25},
    ["GNOME_MALE"]        = {0.25, 0.375, 0, 0.25},
    ["NIGHTELF_MALE"]    = {0.375, 0.5, 0, 0.25},
    ["TAUREN_MALE"]        = {0, 0.125, 0.25, 0.5},
    ["SCOURGE_MALE"]    = {0.125, 0.25, 0.25, 0.5},
    ["TROLL_MALE"]        = {0.25, 0.375, 0.25, 0.5},
    ["ORC_MALE"]        = {0.375, 0.5, 0.25, 0.5},
    ["HUMAN_FEMALE"]    = {0, 0.125, 0.5, 0.75},
    ["DWARF_FEMALE"]    = {0.125, 0.25, 0.5, 0.75},
    ["GNOME_FEMALE"]    = {0.25, 0.375, 0.5, 0.75},
    ["NIGHTELF_FEMALE"]    = {0.375, 0.5, 0.5, 0.75},
    ["TAUREN_FEMALE"]    = {0, 0.125, 0.75, 1.0},
    ["SCOURGE_FEMALE"]    = {0.125, 0.25, 0.75, 1.0},
    ["TROLL_FEMALE"]    = {0.25, 0.375, 0.75, 1.0},
    ["ORC_FEMALE"]        = {0.375, 0.5, 0.75, 1.0},
    ["BLOODELF_MALE"]    = {0.5, 0.625, 0.25, 0.5},
    ["BLOODELF_FEMALE"]    = {0.5, 0.625, 0.75, 1.0},
    ["DRAENEI_MALE"]    = {0.5, 0.625, 0, 0.25},
    ["DRAENEI_FEMALE"]    = {0.5, 0.625, 0.5, 0.75},
};



Y añadimos debajo de los Draenei los iconos de nuestras nuevas razas:




      Codigo:
   

RACE_ICON_TCOORDS = {
    ["HUMAN_MALE"]        = {0, 0.125, 0, 0.25},
    ["DWARF_MALE"]        = {0.125, 0.25, 0, 0.25},
    ["GNOME_MALE"]        = {0.25, 0.375, 0, 0.25},
    ["NIGHTELF_MALE"]    = {0.375, 0.5, 0, 0.25},
    ["TAUREN_MALE"]        = {0, 0.125, 0.25, 0.5},
    ["SCOURGE_MALE"]    = {0.125, 0.25, 0.25, 0.5},
    ["TROLL_MALE"]        = {0.25, 0.375, 0.25, 0.5},
    ["ORC_MALE"]        = {0.375, 0.5, 0.25, 0.5},
    ["HUMAN_FEMALE"]    = {0, 0.125, 0.5, 0.75},
    ["DWARF_FEMALE"]    = {0.125, 0.25, 0.5, 0.75},
    ["GNOME_FEMALE"]    = {0.25, 0.375, 0.5, 0.75},
    ["NIGHTELF_FEMALE"]    = {0.375, 0.5, 0.5, 0.75},
    ["TAUREN_FEMALE"]    = {0, 0.125, 0.75, 1.0},
    ["SCOURGE_FEMALE"]    = {0.125, 0.25, 0.75, 1.0},
    ["TROLL_FEMALE"]    = {0.25, 0.375, 0.75, 1.0},
    ["ORC_FEMALE"]        = {0.375, 0.5, 0.75, 1.0},
    ["BLOODELF_MALE"]    = {0.5, 0.625, 0.25, 0.5},
    ["BLOODELF_FEMALE"]    = {0.5, 0.625, 0.75, 1.0},
    ["DRAENEI_MALE"]    = {0.5, 0.625, 0, 0.25},
    ["DRAENEI_FEMALE"]    = {0.5, 0.625, 0.5, 0.75},
    ["GOBLIN_MALE"]        = {0.625, 0.750, 0.25, 0.5},
    ["GOBLIN_FEMALE"]    = {0.625, 0.750, 0.75, 1.0},
    ["WORGEN_MALE"]        = {0.625, 0.750, 0, 0.25},
    ["WORGEN_FEMALE"]    = {0.625, 0.750, 0.5, 0.75},
};



CharacterCreate.xml

- Ahora vamos a configurar la posición de los iconos en sus respectivos botones y posiciones. Para ello tenemos que buscar la sección de los botones de las razas en CharacterCreate.xml , es algo así:



      Codigo:
   

<CheckButton name="CharacterCreateRaceButton1" inherits="CharacterCreateRaceButtonTemplate" id="1">
    <Anchors>
        <Anchor point="TOP" relativePoint="TOP" x="-50" y="-61"/>
    </Anchors>
</CheckButton>
<CheckButton name="CharacterCreateRaceButton2" inherits="CharacterCreateRaceButtonTemplate" id="2">
    <Anchors>
        <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton1" relativePoint="BOTTOMLEFT" x="0" y="-21"/>
    </Anchors>
</CheckButton>
<CheckButton name="CharacterCreateRaceButton3" inherits="CharacterCreateRaceButtonTemplate" id="3">
    <Anchors>
        <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton2" relativePoint="BOTTOMLEFT" x="0" y="-21"/>
    </Anchors>
</CheckButton>
<CheckButton name="CharacterCreateRaceButton4" inherits="CharacterCreateRaceButtonTemplate" id="4">
    <Anchors>
        <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton3" relativePoint="BOTTOMLEFT" x="0" y="-21"/>
    </Anchors>
</CheckButton>
<CheckButton name="CharacterCreateRaceButton5" inherits="CharacterCreateRaceButtonTemplate" id="5">
    <Anchors>
        <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton4" relativePoint="BOTTOMLEFT" x="0" y="-21"/>
    </Anchors>
</CheckButton>
<CheckButton name="CharacterCreateRaceButton6" inherits="CharacterCreateRaceButtonTemplate" id="6">
    <Anchors>
        <Anchor point="TOP" relativePoint="TOP" x="50" y="-61"/>
    </Anchors>
</CheckButton>
<CheckButton name="CharacterCreateRaceButton7" inherits="CharacterCreateRaceButtonTemplate" id="7">
    <Anchors>
        <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton6" relativePoint="BOTTOMLEFT" x="0" y="-21"/>
    </Anchors>
</CheckButton>
<CheckButton name="CharacterCreateRaceButton8" inherits="CharacterCreateRaceButtonTemplate" id="8">
    <Anchors>
        <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton7" relativePoint="BOTTOMLEFT" x="0" y="-21"/>
    </Anchors>
</CheckButton>
<CheckButton name="CharacterCreateRaceButton9" inherits="CharacterCreateRaceButtonTemplate" id="9">
    <Anchors>
        <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton8" relativePoint="BOTTOMLEFT" x="0" y="-21"/>
    </Anchors>
</CheckButton>
<CheckButton name="CharacterCreateRaceButton10" inherits="CharacterCreateRaceButtonTemplate" id="10">
    <Anchors>
        <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton9" relativePoint="BOTTOMLEFT" x="0" y="-21"/>
    </Anchors>
</CheckButton>



Y lo sustituiremos así:




      Codigo:
   

                            <CheckButton name="CharacterCreateRaceButton1" inherits="CharacterCreateRaceButtonTemplate" id="1">
                                <Anchors>
                                    <Anchor point="TOP" relativePoint="TOP" x="-50" y="-50"/>
                                </Anchors>
                            </CheckButton>
                            <CheckButton name="CharacterCreateRaceButton2" inherits="CharacterCreateRaceButtonTemplate" id="2">
                                <Anchors>
                                    <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton1" relativePoint="BOTTOMLEFT" x="0" y="-10"/>
                                </Anchors>
                            </CheckButton>
                            <CheckButton name="CharacterCreateRaceButton3" inherits="CharacterCreateRaceButtonTemplate" id="3">
                                <Anchors>
                                    <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton2" relativePoint="BOTTOMLEFT" x="0" y="-10"/>
                                </Anchors>
                            </CheckButton>
                            <CheckButton name="CharacterCreateRaceButton4" inherits="CharacterCreateRaceButtonTemplate" id="4">
                                <Anchors>
                                    <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton3" relativePoint="BOTTOMLEFT" x="0" y="-10"/>
                                </Anchors>
                            </CheckButton>
                            <CheckButton name="CharacterCreateRaceButton5" inherits="CharacterCreateRaceButtonTemplate" id="5">
                                <Anchors>
                                    <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton4" relativePoint="BOTTOMLEFT" x="0" y="-10"/>
                                </Anchors>
                            </CheckButton>
                            <CheckButton name="CharacterCreateRaceButton8" inherits="CharacterCreateRaceButtonTemplate" id="8">
                                <Anchors>
                                    <Anchor point="TOP" relativePoint="TOP" x="50" y="-50"/>
                                </Anchors>
                            </CheckButton>
                            <CheckButton name="CharacterCreateRaceButton9" inherits="CharacterCreateRaceButtonTemplate" id="9">
                                <Anchors>
                                    <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton8" relativePoint="BOTTOMLEFT" x="0" y="-10"/>
                                </Anchors>
                            </CheckButton>
                            <CheckButton name="CharacterCreateRaceButton10" inherits="CharacterCreateRaceButtonTemplate" id="10">
                                <Anchors>
                                    <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton9" relativePoint="BOTTOMLEFT" x="0" y="-10"/>
                                </Anchors>
                            </CheckButton>
                            <CheckButton name="CharacterCreateRaceButton11" inherits="CharacterCreateRaceButtonTemplate" id="11">
                                <Anchors>
                                    <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton10" relativePoint="BOTTOMLEFT" x="0" y="-10"/>
                                </Anchors>
                            </CheckButton>
                            <CheckButton name="CharacterCreateRaceButton12" inherits="CharacterCreateRaceButtonTemplate" id="12">
                                <Anchors>
                                    <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton11" relativePoint="BOTTOMLEFT" x="0" y="-10"/>
                                </Anchors>
                            </CheckButton>
                            <CheckButton name="CharacterCreateRaceButton7" inherits="CharacterCreateRaceButtonTemplate" id="7">
                                <Anchors>
                                    <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton12" relativePoint="BOTTOMLEFT" x="0" y="-10"/>
                                </Anchors>
                            </CheckButton>
                            <CheckButton name="CharacterCreateRaceButton6" inherits="CharacterCreateRaceButtonTemplate" id="6">
                                <Anchors>
                                    <Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceButton5" relativePoint="BOTTOMLEFT" x="0" y="-10"/>
                                </Anchors>
                            </CheckButton>



GlueParent.lua

- Aquí pondremos el track correspondiente a cada clase de la siguiente forma:

Buscamos:



      Codigo:
   

GlueAmbienceTracks["CHARACTERSELECT"] = "GlueScreenIntro";



Y justo debajo añadimos:




      Codigo:
   

GlueAmbienceTracks["WORGEN"] = "GlueScreenHuman";
GlueAmbienceTracks["GOBLIN"] = "GlueScreenOrcTroll";



En el siguiente apartado "racelights" deberemos añadir nuestras razas. Buscamos esto:




      Codigo:
   

    CHARACTERSELECT =  {
        {1,     0,  0.00000,        0.00000,        -1.00000,   1.0,    0.15000,    0.15000,    0.15000,    1.0,    0.00000,    0.00000,    0.00000},
        {1,     0,  -0.74919,       0.35208,        -0.56103,   1.0,    0.00000,    0.00000,    0.00000,    1.0,    0.44706,    0.54510,    0.73725},
        {1,     0,  0.53162,        -0.84340,       0.07780,    1.0,    0.00000,    0.00000,    0.00000,    2.0,    0.55,       0.338625,   0.148825},



Y debajo añadimos esto:




      Codigo:
   

    GOBLIN = {   
        {1,     0,  0.00000,        0.00000,        -1.00000,   1.0,    0.15000,    0.15000,    0.15000,    1.0,    0.00000,    0.00000,    0.00000},
        {1,     0,  -0.74919,       0.35208,        -0.56103,   1.0,    0.00000,    0.00000,    0.00000,    1.0,    0.44706,    0.54510,    0.73725},
        {1,     0,  0.53162,        -0.84340,       0.07780,    1.0,    0.00000,    0.00000,    0.00000,    2.0,    0.55,       0.338625,   0.148825},
    },
    WORGEN = {  
        {1,     0,  0.00000,        0.00000,        -1.00000,   1.0,    0.15000,    0.15000,    0.15000,    1.0,    0.00000,    0.00000,    0.00000},
        {1,     0,  -0.74919,       0.35208,        -0.56103,   1.0,    0.00000,    0.00000,    0.00000,    1.0,    0.44706,    0.54510,    0.73725},
        {1,     0,  0.53162,        -0.84340,       0.07780,    1.0,    0.00000,    0.00000,    0.00000,    2.0,    0.55,       0.338625,   0.148825},



Por último buscamos:




      Codigo:
   

-- Function to set the background model for character select and create screens
function SetBackgroundModel(model, name)
    local nameupper = strupper(name);
    local path = "Interface\\Glues\\Models\\UI_"..name.."\\UI_"..name..".m2";
    if ( model == CharacterCreate ) then
        SetCharCustomizeBackground(path);
    else
        SetCharSelectBackground(path);
    end
    PlayGlueAmbience(GlueAmbienceTracks[nameupper], 4.0);
    SetLighting(model, nameupper)
end



Y lo sustituimos por esto, lo cual nos dará el fondo de la pantalla de creación para nuestras razas custom:




      Codigo:
   

-- Function to set the background model for character select and create screens
function SetBackgroundModel(model, name)
    local nameupper = strupper(name);
        if (name == "Goblin" or name == "GOBLIN") then
            name = "Orc";
        end
        if (name == "Worgen" or name == "WORGEN") then
            name = "HUMAN";
        end
    local path = "Interface\\Glues\\Models\\UI_"..name.."\\UI_"..name..".m2";
    if ( model == CharacterCreate ) then
        SetCharCustomizeBackground(path);
    else
        SetCharSelectBackground(path);
    end
    PlayGlueAmbience(GlueAmbienceTracks[nameupper], 4.0);
    SetLighting(model, nameupper)
end



GlueStrings.lua

- Este archivo es para definir la información relativa a los personajes. Nosotros vamos a cambiar varias cosas: la información de la raza y la información de las habilidades.

Buscamos esto:



      Codigo:
   

ABILITY_INFO_BLOODELF1 = "- Habilidad en encantar aumentada.";



Y añadimos por encima de esa línea esto:




      Codigo:
   

ABILITY_INFO_GOBLIN1 = "- Habilidades Goblins, linea 1";
ABILITY_INFO_GOBLIN2 = "- Habilidades Goblins, linea 2";
ABILITY_INFO_GOBLIN3 = "- Habilidades Goblins, linea 3";
ABILITY_INFO_GOBLIN4 = "- Habilidades Goblins, linea 4";
ABILITY_INFO_WORGEN1 = "- Habilidades Huargens, linea 1";
ABILITY_INFO_WORGEN2 = "- Habilidades Huargens, linea 2";
ABILITY_INFO_WORGEN3 = "- Habilidades Huargens, linea 3";
ABILITY_INFO_WORGEN4 = "- Habilidades Huargens, linea 4";



Ahora buscamos esto:




      Codigo:
   

RACE_CHANGE_IN_PROGRESS = "Actualizando raza...";



Y a continuación añadimos:




      Codigo:
   

RACE_INFO_GOBLIN = "Información acerca de los Goblins.";
RACE_INFO_GOBLIN_FEMALE = "Información acerca de las Goblins.";
RACE_INFO_WORGEN = "Información acerca de los Huargens.";
RACE_INFO_WORGEN_FEMALE = "Información acerca de las Huargens.";



Y por fín hemos acabado!!


Sólo nos quedaría descargar el siguiente archivo You are not allowed to view links. Register or Login. Esto se guarda en la ruta "Interface/Glues/CharacterCreate" dentro del parche. Lo mismo los iconos no coinciden con las coordenadas que hemos puesto en el tutorial puesto que este archivo lo hice mucho después de hacer este tuto y lleva muchos más iconos de más razas. Para que sí coincidan habria que usar el BLP del cliente de Cata.

Los archivos .lua van dentro del parche en la ruta "Interface/GlueXML"

You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
#25
Modding / [TUTORIAL] Creación Razas Cust...
Último mensaje por Nuzak - Abr 20, 2025, 02:29 PM

Todos los créditos a Tuerny por su publicación original en WoWCreador


Para la tercera parte del tutorial veremos los datos que debemos introducir en la base de datos a través de nuestro gestor. Yo uso SQLYog para hacerlo y funcionan sin problema. Los comandos SQL que he usado los he visto en la guía de Duende You are not allowed to view links. Register or Login.

Sin más procederemos a modificar nuestra base de datos de la siguiente manera:

- Primero vamos a declarar el lugar de nacimiento de nuestras razas custom. Al no tener Gilneas incorporado en mi server, yo he puesto a los Worgen en la zona de inicio de los humanos y, lo mismo con los Goblin pero donde los orcos.

Para hacerlo ponemos lo siguiente:




      SQL:
   

insert into `playercreateinfo` (`race`, `class`, `map`, `zone`, `position_x`, `position_y`, `position_z`, `orientation`) values('9','1','1','14','-618.518','-4251.67','38.718','1');
insert into `playercreateinfo` (`race`, `class`, `map`, `zone`, `position_x`, `position_y`, `position_z`, `orientation`) values('12','1','0','12','-8949.95','-132.493','83.5312','0');



- Ahora vamos a copiar los stats de otra raza ya creada en las nuestras de la siguiente forma:

Para el Goblin copiamos los stats del Orco:



      SQL:
   

SET @NEW_RACE = 9; // id de la raza nueva
SET @NEW_CLASS = 1; // id de la clase que quieres
SET @COPY_RACE = 2; // id de la raza que vas a copiar los stats
DELETE FROM `player_levelstats` WHERE race = @NEW_RACE AND class = @NEW_CLASS;
INSERT INTO `player_levelstats` (`race`, `class`, `level`, `str`, `agi`, `sta`, `inte`, `spi`)
SELECT @NEW_RACE, @NEW_CLASS, `level`, `str`, `agi`, `sta`, `inte`, `spi` FROM `player_levelstats`
WHERE race = @COPY_RACE AND class = @NEW_CLASS;



Y para el Worgen copiamos los stats de los Humanos:




      SQL:
   

SET @NEW_RACE = 12; // id de la raza nueva
SET @NEW_CLASS = 1; // id de la clase que quieres
SET @COPY_RACE = 1; // id de la raza que vas a copiar los stats
DELETE FROM `player_levelstats` WHERE race = @NEW_RACE AND class = @NEW_CLASS;
INSERT INTO `player_levelstats` (`race`, `class`, `level`, `str`, `agi`, `sta`, `inte`, `spi`)
SELECT @NEW_RACE, @NEW_CLASS, `level`, `str`, `agi`, `sta`, `inte`, `spi` FROM `player_levelstats`
WHERE race = @COPY_RACE AND class = @NEW_CLASS;



- Lo siguiente será añadir información de creación a nuestra raza así:

Para el Goblin copiamos del Orco nuevamente:



      SQL:
   

SET @NEW_RACE = 9;
SET @NEW_CLASS = 1;
SET @COPY_RACE = 2;
DELETE FROM `playercreateinfo_action` WHERE race = @NEW_RACE AND class = @NEW_CLASS;
INSERT INTO `playercreateinfo_action` (`race`, `class`, `button`, `action`, `type`)
SELECT @NEW_RACE, @NEW_CLASS, `button`, `action`, `type` FROM `playercreateinfo_action`
WHERE race = @COPY_RACE AND class = @NEW_CLASS;



Y para el Worgen de los Humanos:




      SQL:
   

SET @NEW_RACE = 12;
SET @NEW_CLASS = 1;
SET @COPY_RACE = 1;
DELETE FROM `playercreateinfo_action` WHERE race = @NEW_RACE AND class = @NEW_CLASS;
INSERT INTO `playercreateinfo_action` (`race`, `class`, `button`, `action`, `type`)
SELECT @NEW_RACE, @NEW_CLASS, `button`, `action`, `type` FROM `playercreateinfo_action`
WHERE race = @COPY_RACE AND class = @NEW_CLASS;



- Por último tendremos que ir a la tabla "playercreateinfo_skills" y deberemos de sustituir (acordaros de la parte 2 del tutorial) el valor decimal de las razas a las que se les permite la skill. Antes si os acordáis, le pusimos la skill 98 a toda la alianza y la 109 a toda la horda.

Entonces buscaremos esas skills (en la columna 3) y volveremos a modificar el valor 1101 por 3149 en la skill 98 y, el valor 690 por 946 en la skill 109.


Con esto ya habremos acabado de configurar nuestra base de datos. Cerramos SQLYog y pasaremos a la parte 4 de la guía para modificar la Interface del cliente para que aparezcan las nuevas razas en el panel de creación.

You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
#26
Modding / [TUTORIAL] Creación Razas Cust...
Último mensaje por Nuzak - Abr 20, 2025, 02:29 PM

Todos los créditos a Tuerny por su publicación original en WoWCreador


En esta segunda parte vamos a ver qué dbcs necesitamos modificar necesariamente para hacer elegibles a nuestras razas.

¿De dónde saco los DBCs?

Para conseguir los dbcs correctos para nuestro server hemos de acudir a nuestro cliente y a sus parches oficiales. Siempre buscaremos los dbcs en los parches de mayor expansión a los de menor. Es decir, si tengo "patch-3.MPQ" y "patch-2.MPQ", extraigo del mayor (patch-3.MPQ) y, si en ese parche no lo encontráis vais bajando: patch-2.MPQ ... patch.MPQ ...

Deciros que los encontraréis casi todos entre los parches "patch-esES-3" y "patch-esES-2" (mi cliente es español)

Bien, ahora os nombraré los dbcs que deberéis extraer antes de empezar:

ChrRaces.dbc

CharBaseInfo.dbc
CharStartOutfit.dbc

SkillLineAbility.dbc
SkillRaceClassInfo.dbc

CreatureModelData.dbc
CreatureDisplayInfo.dbc

CreatureDisplayInfoExtra.dbc
CharSections.dbc

CharacterFacialHairStyles.dbc
CharHairGeosets.dbc


Os voy a ir explicando lo que hay que ir haciendo en cada dbc para que lo entendáis mejor:

ChrRaces.dbc

En esta dbc se define a las razas como jugables, el ID que le asignamos en el precompilado, la facción, el display, etc... para entenderla mejor aun visitad You are not allowed to view links. Register or Login

Cogeremos las líneas del Goblin y del Fel_Orc y las modificaremos así:




      Codigo:
   

23,1,1,0x0,6894,6895,"Go",7,7,15007,0x448,"GoblinOld",0,0x2,"GoblinOld",,,,,,,,,,,,,,,,0xFF01FE,,,,,,,,,,,,,,,,,0xFF01EC,,,,,,,,,,,,,,,,,0xFF01EC,"NORMAL","NONE","NORMAL",0,
24,5,1,0x0,16981,16980,"Fo",7,7,15007,0x448,"FelOrc",0,0x2,"Fel Orc",,,,,,,,,,,,,,,,0xFF01FE,,,,,,,,,,,,,,,,,0xFF01EC,,,,,,,,,,,,,,,,,0xFF01EC,"NORMAL","NORMAL","NORMAL",0,



Y añadiremos las razas custom que declaramos en la parte 1 del tutorial:




      Codigo:
   

12,12,1,0x102C,40029,40030,"Ta",7,7,15007,0x448,"Worgen",81,0x0,"Worgen",,,,,,,,,,,,,,,,0xFF01FF,,,,,,,,,,,,,,,,,0xFF01EC,,,,,,,,,,,,,,,,,0xFF01EC,"NORMAL","HAIR","HORNS",0,
9,12,1,0x102D,40032,40033,"Go",1,7,15007,0x448,"Goblin",21,0x1,"Goblin",,,,,,,,,,,,,,,,0xFF01FF,,,,,,,,,,,,,,,,,0xFF01EC,,,,,,,,,,,,,,,,,0xFF01EC,"NORMAL","PIERCINGS","NORMAL",0,



CharBaseInfo.dbc

Esta dbc se encarga de relacionar ID de raza con ID de clase. Con lo cual deberemos añadir las razas custom (en este caso sólo haremos el warrior) y asignarles una clase. Así que hacemos lo siguiente, añadimos esto:



      Codigo:
   

9,1,
12,1,



CharStartOutfit.dbc

Aquí es donde vamos a declarar los items que van a usar nuestras razas custom cuando las creemos. Lo que tenemos que hacer es añadir las siguientes líneas (recordad que es para warrior): (Más info de la tabla You are not allowed to view links. Register or Login



      Codigo:
   

380,9,1,0,0,38,39,40,0,49778,-1,-1,6948,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9891,9892,10141,-1,2380,-1,-1,6418,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,7,8,-1,17,-1,-1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
381,9,1,1,0,38,39,40,0,49778,-1,-1,6948,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9891,9892,10141,-1,2380,-1,-1,6418,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,7,8,-1,17,-1,-1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
382,12,1,0,0,6125,139,140,6948,49778,0,-1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9995,9988,9992,6418,22291,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,7,8,0,17,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
383,12,1,1,0,6125,139,140,6948,49778,0,-1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9995,9988,9992,6418,22291,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,7,8,0,17,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,



SkillLineAbility.dbc

Esta dbc es la encargada de asignar las skills a los personajes. Por ejemplo, para hacer que hablen idioma común, orco etc. Y eso es lo que vamos a hacer con nuestras nuevas razas, ya que sin esto no podréis hablar.

Vamos a asignarle la Skill, 98 que es el idioma común, al Worgen. Vamos a necesitar un conversor de binario a decimal y viceversa. Yo utilizo You are not allowed to view links. Register or Login
Buscamos la skill 98 (las ids de las skills son las de la segunda columna) y veremos esto:



      Codigo:
   

590,98,668,1101,0,,,1,0,0x2,0,0,,,



Si pasamos el 1101 (que es a qué razas se les permite usarlas) a binario con el conversor obtendremos 10001001101. Qué significa esto. Coged como referencia 1=ON, 0=OFF. Y el orden en el que hemos declarado las razas en la parte 1 del tutorial segun sus IDs. Oséase:
WORGEN | DRAENEI | BLOODELF | GOBLIN | TROLL | GNOME | TAUREN | UNDEAD_PLAYER | NIGHTELF | DWARF | ORC | HUMAN

Así que si activamos el lenguaje común para las razas de la alianza incluidos los worgen con ID 12 haremos lo siguiente:

1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1


El número binario que obtenemos es 110001001101
Ahora lo pasamos a decimal con el conversor y nos daría 3149

Con lo cual cambiamos la cuarta columna de la skill 98 de la siguiente manera:



      Codigo:
   

590,98,668,3149,0,,,1,0,0x2,0,0,,,



Esto también os vale para el tema de asignar skills de mallas, hachas de 2 manos, etc. Sólo buscad el id del skill en wowhead y modificarlo como os he dicho arriba para permitirlas en las razas que queráis.


SkillRaceClassInfo.dbc

En esta tabla se asigna la información a la skill para las razas y clases que se quiera. Yo sólo voy a tocar la tercera columna que es la relativa a las razas, al igual que en la anterior dbc. La cuarta columna es la relativa a las clases, pero lo dejaré por defecto.

Buscamos la siguiente línea de la skill 98:



      Codigo:
   

40,98,1101,1535,0x80,0x0,0,0x0,



Y para cambiarlo necesitamos hacer lo mismo de antes de convertir a binario y luego a decimal. Pero ya sabemos el valor, acordaros que nos dio 3149, por tanto lo cambiamos de la siguiente manera:




      Codigo:
   

40,98,3149,1535,0x80,0x0,0,0x0,



Hacemos lo mismo con esta otra línea para los Goblin, buscamos:




      Codigo:
   

48,109,690,1535,0x80,0x0,0,0x0,



Y le cambiamos el valor de las razas (tercera columna):




      Codigo:
   

48,109,946,1535,0x80,0x0,0,0x0,



Con esto vuestro pjs ya podrán hablar correctamente. Al igual que cuando cambiamos valores en "SkillRaceAbility.dbc" deberemos cambiarlos también en esta dbc.


Cuando tengáis varias líneas en una skill como habréis comprobado con la 98 y con la 109 mirad la quinta columna, el valor 0x80 significa disponible para aprender.


Podéis entender mejor esta dbc en este enlace You are not allowed to view links. Register or Login


CreatureModelData.dbc

En esta dbc vamos a asignar el archivo .mdx de nuestra raza tanto al macho como a la hembra en las razas que estemos implementando. Lo hacemos de la siguiente manera añadiendo líneas nuevas:



      Codigo:
   

5005,2052,"Character\Worgen\Male\WorgenMale.mdx",1,1.0,1,7,18.0,12.0,1.0,,0,0,44,0.611100018024,2.03099989891,1.29404699802,-0.655966997147,-1.17623198032,0.000852000026498,0.702094972134,1.08035695553,2.29017710686,1.0,1.0,0.0,0.0,0.0,
5006,2052,"Character\Worgen\Female\WorgenFemale.mdx",1,1.0,1,7,18.0,12.0,1.0,,0,0,44,0.611100018024,2.03099989891,1.29404699802,-0.655966997147,-1.17623198032,0.000852000026498,0.702094972134,1.08035695553,2.29017710686,1.0,1.0,0.0,0.0,0.0,
5009,4,"Character\Goblin\Male\GoblinMale.mdx",1,1.0,1,1,12.0,10.0,1.0,,0,0,1128,0.555599987507,1.38900005817,0.460123002529,-0.452913999557,-0.579069972038,-0.0106370002031,0.470234006643,0.530076026917,1.39890694618,1.0,1.0,0.0,0.0,0.0,
5010,4,"Character\Goblin\Female\GoblinFemale.mdx",1,1.0,1,1,12.0,10.0,1.0,,0,0,1128,0.555599987507,1.38900005817,0.460123002529,-0.452913999557,-0.579069972038,-0.0106370002031,0.470234006643,0.530076026917,1.39890694618,1.0,1.0,0.0,0.0,0.0,



Para saber qué es cada columna visitad You are not allowed to view links. Register or Login


CreatureDisplayInfo.dbc

En esta dbc vamos a asignar un DisplayID a nuestro modelo de razas custom. Para ello pondremos lo siguiente:



      Codigo:
   

40029,5005,0,25017,1.0,255,"","","","",3,0,0,0,0x0,0,
40030,5006,0,25018,1.0,255,"","","","",3,0,0,0,0x0,0,
40032,5009,0,25019,0.0,255,"","","","",0,0,0,0,0x0,0,
40033,5010,0,25020,0.0,255,"","","","",0,0,0,0,0x0,0,



A groso modo esto viene a decir que creamos la DisplayID 40029 para la CreatureModelData 5005 (WorgenMale) y con el CreatureDisplayInfoExtra 25017 que veremos ahora. Hacemos eso para cada uno de los displays que queramos declarar, por eso hay 4 líneas, que equivalen al Worgen Macho, al Worgen Hembra, al Goblin Macho y al Goblin Hembra.


Más info de la tabla en You are not allowed to view links. Register or Login


CreatureDisplayInfoExtra.dbc

En esta dbc vamos a asignar skines y demás extras que tengamos de la raza. Para este ejemplo pondremos lo siguiente en unas líneas nuevas:



      Codigo:
   

25017,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,"CreatureDisplayExtra-21381.blp",
25018,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,"CreatureDisplayExtra-21381.blp",
25019,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,"CreatureDisplayExtra-21381.blp",
25020,9,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,"CreatureDisplayExtra-21381.blp",



CharSections.dbc

En esta dbc se establecen las rutas a los archivos blp que tenemos de las razas custom. Es muy fácil, sólo tenéis que coger las líneas de un pj como por ejemplo el Tauren, que es el que va relacionado con la colocación de skines mas parecido al Worgen. Las pegamos en un editor de texto como notepad. Y vamos renombrando las líneas con valores altos de ID y con la ruta al blp que queremos declarar.

Aquí os dejo en un txt las líneas que tenéis que añadir a la dbc You are not allowed to view links. Register or Login

CharacterFacialHairStyles.dbc

Aquí asignaremos los valores de las barbas y vellos faciales que tengamos de las razas. En este caso lo primero sería cambiar los valores que ya vienen de los GoblinOld que acordaros que por defecto era el ID=9, por el valor ID=23 que es el que le dimos antes y, el de los Fel_Orcs que por defecto es el 12 y lo cambiamos por 24. Una vez hecho esto añadimos las siguientes líneas:



      Codigo:
   

12,0,0,0,0,0,0.0,2,
12,1,2,0,3,0,0.0,2,
12,1,3,0,4,0,0.0,2,
12,1,4,0,5,0,0.0,2,
12,1,5,0,6,0,0.0,2,
12,1,6,0,7,0,0.0,2,
12,1,7,0,8,0,0.0,2,
12,1,8,0,9,0,0.0,2,
12,1,9,0,10,0,0.0,2,
12,1,10,0,11,0,0.0,2,
12,0,1,2,0,0,0.0,2,
12,0,2,3,0,0,0.0,2,
12,0,3,4,0,0,0.0,2,
12,0,4,5,0,0,0.0,2,
12,0,5,6,0,0,0.0,2,
12,0,6,7,0,0,0.0,2,
12,0,7,8,0,0,0.0,2,
12,0,8,9,0,0,0.0,2,
12,0,9,10,0,0,0.0,2,
12,1,1,0,2,0,0.0,2,
9,1,0,6,11,2,0.0,0,
9,1,1,5,10,3,0.0,0,
9,1,2,2,9,4,0.0,0,
9,1,3,3,8,5,0.0,0,
9,1,4,2,7,6,0.0,0,
9,1,5,5,6,7,0.0,0,
9,1,6,4,5,8,0.0,0,
9,1,7,3,4,9,0.0,0,
9,1,8,2,3,10,0.0,0,
9,1,9,5,2,11,0.0,0,
9,1,10,4,11,12,0.0,0,
9,1,11,3,10,13,0.0,0,
9,0,0,6,11,2,0.0,0,
9,0,2,2,9,4,0.0,0,
9,0,3,3,8,5,0.0,0,
9,0,1,5,10,3,0.0,0,
9,0,8,2,3,10,0.0,0,
9,0,4,2,7,6,0.0,0,
9,0,5,5,6,7,0.0,0,
9,0,6,4,5,8,0.0,0,
9,0,7,3,4,9,0.0,0,
9,0,10,4,11,12,0.0,0,
9,0,9,5,2,11,0.0,0,
9,0,11,3,10,13,0.0,0,
9,0,13,6,8,3,0.0,0,
9,0,14,5,7,4,0.0,0,
9,0,18,6,3,8,0.0,0,
9,0,17,4,4,7,0.0,0,
9,0,16,3,5,6,0.0,0,
9,0,22,3,9,12,0.0,0,
9,0,24,2,7,13,0.0,0,
9,0,21,2,10,11,0.0,0,
9,0,19,5,2,9,0.0,0,
9,0,23,5,8,13,0.0,0,
9,0,20,4,11,10,0.0,0,
9,0,15,4,6,5,0.0,0,
9,0,12,5,9,2,0.0,0,
9,1,13,6,8,3,0.0,0,
9,1,12,5,9,2,0.0,0,
9,1,15,4,6,5,0.0,0,
9,1,14,5,7,4,0.0,0,
9,1,17,4,4,7,0.0,0,
9,1,16,3,5,6,0.0,0,
9,1,18,6,3,8,0.0,0,
9,1,23,5,8,13,0.0,0,
9,1,19,5,2,9,0.0,0,



Más info de esta dbc en You are not allowed to view links. Register or Login


CharHairGeosets.dbc

Aquí estableceremos los geosets de nuestras razas custom. Como hicimos anteriormente, primero sustituiremos de la segunda columna todos los valores 9 por 23 y, los valores 12 por 24. Después añadiremos las siguientes líneas:



      Codigo:
   

536,9,0,3,4,0,
537,9,0,4,5,0,
538,9,1,2,4,0,
539,9,1,3,5,0,
540,9,1,4,6,0,
541,9,1,5,7,0,
542,9,1,6,8,0,
543,9,1,7,9,0,
544,9,1,8,10,0,
545,9,1,9,11,0,
546,9,1,10,12,0,
547,9,1,11,13,0,
548,9,1,12,14,0,
549,9,1,13,15,0,
550,9,1,14,16,0,
551,9,1,15,17,0,
552,9,1,16,18,0,
553,9,0,5,6,0,
554,9,0,6,7,0,
555,9,0,7,8,0,
556,9,0,9,10,0,
557,9,0,10,11,0,
558,9,0,8,9,0,
559,9,0,11,12,0,
560,9,0,12,13,0,
561,9,0,13,14,0,
562,9,0,14,15,0,
563,9,0,15,16,0,
564,9,0,16,17,0,
565,9,0,17,18,0,
566,9,0,2,3,0,
500,12,1,0,2,0,
501,12,1,3,5,0,
502,12,1,4,6,0,
503,12,1,5,7,0,
504,12,1,6,8,0,
505,12,1,7,9,0,
506,12,0,1,2,0,
507,12,1,1,3,0,
508,12,1,2,4,0,
509,12,0,1,2,0,
510,12,0,0,3,0,
511,12,0,3,5,0,
512,12,0,4,6,0,
519,12,1,8,10,0,
520,12,1,9,11,0,
521,12,1,14,16,0,
522,12,1,11,13,0,
523,12,1,12,14,0,
524,12,1,13,15,0,
525,12,1,15,17,0,
526,12,1,16,18,0,
527,12,1,17,19,0,
528,12,1,18,20,0,
529,12,1,19,21,0,
535,12,1,14,16,0,



Con esto ya tendremos completadas nuestras dbcs para las razas custom que queremos abrir.


Para descargar los BLPs que os he comentado podéis decargarlo de aquí: You are not allowed to view links. Register or Login
En ellos podréis encontrar los blps necesarios para Goblin macho y hembra y para worgen macho y hembra.

Por último metemos todas las dbcs modificadas en un parche (para eso hay guías en el foro) y las copiamos después también a la carpeta "dbc" de nuestro release.

Si os pensáis que hemos acabado... os diré que no, aun nos queda configurar la base de datos por SQL y, eso lo explicaré en la parte 3.

You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
#27
Modding / [TUTORIAL] Creación Razas Cust...
Último mensaje por Nuzak - Abr 20, 2025, 02:29 PM

Todos los créditos a Tuerny por su publicación original en WoWCreador


Buenas a tod@s,vuelvo a poner el tutorial de implementación de razas custom para vuestros servers en versión Wotlk 3.3.5. Para ello cabe diferenciar lo que entendemos por custom en este tutorial:

- Por un lado tendremos la raza Goblin, la cual la llamamos custom, pero realmente ya está integrada en el core oficial y sólo tendremos que configurarla para poder desbloquearla.

- Por otro lado tendremos a la raza Worgen, la cual también llamaremos custom, pero esta no viene en el core y tendremos que crear líneas antes de compilar para poder implementarla.

Dicho esto procederemos a empezar el tutorial. Lo primero que vamos a hacer como os he dicho será modificar el core:

MODIFICACIÓN DEL CORE

Este es el primer punto que deberemos entender para empezar a hacer razas custom. Doy por hecho que sabéis descargar del git de TrinityCore y pasarlo por CMake, sino aquí en foro tenéis guías al respecto.

Modificación del archivo "SharedDefines.h"

- Abrimos el archivo "TrinityCore.sln" con nuestro Visual Studio

- Buscamos en el explorador de soluciones "shared" y clickamos encima de "SharedDefines.h" y veremos lo siguiente:




      C++:
   

// Race value is index in ChrRaces.dbc
// EnumUtils: DESCRIBE THIS
enum Races
{
    RACE_NONE               = 0,  // SKIP
    RACE_HUMAN              = 1,  // TITLE Human
    RACE_ORC                = 2,  // TITLE Orc
    RACE_DWARF              = 3,  // TITLE Dwarf
    RACE_NIGHTELF           = 4,  // TITLE Night Elf
    RACE_UNDEAD_PLAYER      = 5,  // TITLE Undead
    RACE_TAUREN             = 6,  // TITLE Tauren
    RACE_GNOME              = 7,  // TITLE Gnome
    RACE_TROLL              = 8,  // TITLE Troll
    //RACE_GOBLIN           = 9,
    RACE_BLOODELF           = 10, // TITLE Blood Elf
    RACE_DRAENEI            = 11, // TITLE Draenei
    //RACE_FEL_ORC            = 12,
    //RACE_NAGA               = 13,
    //RACE_BROKEN             = 14,
    //RACE_SKELETON           = 15,
    //RACE_VRYKUL             = 16,
    //RACE_TUSKARR            = 17,
    //RACE_FOREST_TROLL       = 18,
    //RACE_TAUNKA             = 19,
    //RACE_NORTHREND_SKELETON = 20,
    //RACE_ICE_TROLL          = 21,
};



Esa es la sección donde declararemos los IDs de las razas que vayamos a usar. Si os fijáis tenemos a los Goblin, pero no tenemos a los Worgen. Para abrir las razas que queremos haremos lo siguiente:




      C++:
   

// Race value is index in ChrRaces.dbc
// EnumUtils: DESCRIBE THIS
enum Races
{
    RACE_NONE               = 0,  // SKIP
    RACE_HUMAN              = 1,  // TITLE Human
    RACE_ORC                = 2,  // TITLE Orc
    RACE_DWARF              = 3,  // TITLE Dwarf
    RACE_NIGHTELF           = 4,  // TITLE Night Elf
    RACE_UNDEAD_PLAYER      = 5,  // TITLE Undead
    RACE_TAUREN             = 6,  // TITLE Tauren
    RACE_GNOME              = 7,  // TITLE Gnome
    RACE_TROLL              = 8,  // TITLE Troll
    //RACE_GOBLINOLD          = 9,
    RACE_BLOODELF           = 10, // TITLE Blood Elf
    RACE_DRAENEI            = 11, // TITLE Draenei
    //RACE_FEL_ORC            = 12,
    //RACE_NAGA               = 13,
    //RACE_BROKEN             = 14,
    //RACE_SKELETON           = 15,
    //RACE_VRYKUL             = 16,
    //RACE_TUSKARR            = 17,
    //RACE_FOREST_TROLL       = 18,
    //RACE_TAUNKA             = 19,
    //RACE_NORTHREND_SKELETON = 20,
    //RACE_ICE_TROLL          = 21,
    RACE_GOBLIN             = 23,
    RACE_WORGEN             = 24
};



Fijaos que los Goblins que teníamos ya declarados pero no accesibles o playables, los hemos renombrado para poder declarar los nuevos Goblin en la Id 23.
A mi personalmente no me gusta dejar razas abiertas declaradas en IDs altas, ya que para cosas como asignarles idiomas, raciales y demás cosas que veremos más adelante no es muy aconsejable porque puede dar fallos. Por eso yo lo que hago es que sustituyo el id de una raza por otra dejándolo de la siguiente manera:



      C++:
   

// Race value is index in ChrRaces.dbc
// EnumUtils: DESCRIBE THIS
enum Races
{
    RACE_NONE               = 0,  // SKIP
    RACE_HUMAN              = 1,  // TITLE Human
    RACE_ORC                = 2,  // TITLE Orc
    RACE_DWARF              = 3,  // TITLE Dwarf
    RACE_NIGHTELF           = 4,  // TITLE Night Elf
    RACE_UNDEAD_PLAYER      = 5,  // TITLE Undead
    RACE_TAUREN             = 6,  // TITLE Tauren
    RACE_GNOME              = 7,  // TITLE Gnome
    RACE_TROLL              = 8,  // TITLE Troll
    //RACE_GOBLINOLD          = 23,
    RACE_BLOODELF           = 10, // TITLE Blood Elf
    RACE_DRAENEI            = 11, // TITLE Draenei
    //RACE_FEL_ORC            = 24,
    //RACE_NAGA               = 13,
    //RACE_BROKEN             = 14,
    //RACE_SKELETON           = 15,
    //RACE_VRYKUL             = 16,
    //RACE_TUSKARR            = 17,
    //RACE_FOREST_TROLL       = 18,
    //RACE_TAUNKA             = 19,
    //RACE_NORTHREND_SKELETON = 20,
    //RACE_ICE_TROLL          = 21,
    RACE_GOBLIN             = 9,
    RACE_WORGEN             = 12
};



He sustituido GOBLINOLD por GOBLIN y, FEL_ORC por WORGEN.


- Ahora vamos a declarar el valor máximo de razas. Siempre hemos de asignarle el valor de la ID de la raza abierta más alto y sumarle 1:

Esto es lo que tenemos:



      C++:
   

// max+1 for player race
#define MAX_RACES         12



Y esto es lo que pondremos teniendo en cuenta lo dicho anteriormente. La ID de la raza abierta mas alta (nosotros tenemos al Worgen = 12) y le sumamos 1 (Worgen+1=13):




      C++:
   

// max+1 for player race
#define MAX_RACES         13



- Ahora vamos a definir qué razas serán jugables o playables. Para ello veremos lo siguiente:



      C++:
   

#define RACEMASK_ALL_PLAYABLE \
    ((1<<(RACE_HUMAN-1)) | (1<<(RACE_ORC-1)) | (1<<(RACE_DWARF-1)) |\
     (1<<(RACE_NIGHTELF-1)) | (1<<(RACE_UNDEAD_PLAYER-1)) | (1<<(RACE_TAUREN-1)) |\
     (1<<(RACE_GNOME-1)) | (1<<(RACE_TROLL-1)) | (1<<(RACE_BLOODELF-1))|\
     (1<<(RACE_DRAENEI-1)))



Para definirlas haremos lo siguiente tomando la siguiente regla: Cada 3 razas marcamos el final de la línea con "\", sino os dará error al compilar. Así que lo ponemos de la siguiente forma:




      C++:
   

#define RACEMASK_ALL_PLAYABLE \
    ((1<<(RACE_HUMAN-1)) | (1<<(RACE_ORC-1)) | (1<<(RACE_DWARF-1)) |\
     (1<<(RACE_NIGHTELF-1)) | (1<<(RACE_UNDEAD_PLAYER-1)) | (1<<(RACE_TAUREN-1)) |\
     (1<<(RACE_GNOME-1)) | (1<<(RACE_TROLL-1)) | (1<<(RACE_WORGEN-1)) |\
     (1<<(RACE_BLOODELF-1)) | (1<<(RACE_DRAENEI-1)) | (1<<(RACE_GOBLIN-1)))



- Lo siguiente es definir su bando, si es horda o alianza. Para ello buscamos esto:



      C++:
   

#define RACEMASK_ALLIANCE \
    ((1<<(RACE_HUMAN-1)) | (1<<(RACE_DWARF-1)) | (1<<(RACE_NIGHTELF-1)) | \
     (1<<(RACE_GNOME-1)) | (1<<(RACE_DRAENEI-1)))



Y declaramos la raza Worgen para la alianza siguiendo la regla del paso anterior (la que no declaréis ahí será automáticamente asignada a la horda):




      C++:
   

Codigo:
#define RACEMASK_ALLIANCE \
    ((1<<(RACE_HUMAN-1)) | (1<<(RACE_DWARF-1)) | (1<<(RACE_NIGHTELF-1)) | \
     (1<<(RACE_GNOME-1)) | (1<<(RACE_WORGEN-1)) | (1<<(RACE_DRAENEI-1)))



- Con esto ya habremos acabado de configurar nuestro precompilado. Ahora sólo nos falta marcar la solución como Release y compilar.

Seguiremos con la parte 2, en ella veremos los .dbcs que deberemos de configurar.

You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
#28
Tutoriales / Cómo Poner Online tu Servidor ...
Último mensaje por Nuzak - Abr 20, 2025, 02:29 PM

Todos los créditos a xxterror por su publicación original en WoWCreador


¡Hola a todos!

En este tutorial les traigo una excelente alternativa a Hamachi para jugar con sus amigos en servidores privados de WoW, repacks o compilaciones propias. Hamachi ha dejado de funcionar para muchos, así que les presento Radmin VPN, un programa gratuito, fácil de usar y sin limitaciones de conexión.

Paso 1: Descargar Radmin VPN​

Link oficial: You are not allowed to view links. Register or Login

Descarga el instalador y sigue los pasos para instalarlo como cualquier otro programa.


Paso 2: Crear y unirse a una red​


  1. Abre Radmin VPN una vez instalado.

  2. Haz clic en "Crear red" e ingresa un nombre y una contraseña.

  3. Comparte estos datos con tus amigos para que se puedan unir a la misma red.

  4. Una vez conectados, todos estarán en una red virtual segura, como si estuvieran en LAN.



Los visitantes no pueden visualizar imágenes en los mensajes, por favor You are not allowed to view links. Register or Login o You are not allowed to view links. Register or Login



Paso 3: Modificar la base de datos del servidor WoW​

Para que tus amigos se conecten correctamente, debes modificar la IP en tu base de datos:


  1. Abre tu editor de base de datos preferido: SQLyog o Navicat.

  2. Entra a la base de datos llamada auth.

  3. Abre la tabla realmlist.

  4. Cambia el valor de la IP (campo address) por tu IP de Radmin VPN (la que aparece en el programa).



Los visitantes no pueden visualizar imágenes en los mensajes, por favor You are not allowed to view links. Register or Login o You are not allowed to view links. Register or Login



¡Y listo! Tus amigos ahora pueden conectarse usando tu IP de Radmin VPN y disfrutar juntos del servidor.
Si necesitas ayuda extra, déjala en los comentarios. ¡Nos vemos en el juego!
#29
Tutoriales / Como poner Online tu servidor ...
Último mensaje por Nuzak - Abr 20, 2025, 02:29 PM

Todos los créditos a WoWCreador por su publicación original en WoWCreador


Hola, estaré creando un video próximamente explicando como podrán jugar en linea con sus amigos utilizando Hamachi ya que muchos me lo han pedido. Utilizar Hamachi para jugar Online es muy fácil ya que no necesita tener los puertos abiertos, muchos no tienen acceso al router por X razón.

Por ahora les dejare un vídeo de otra persona en Ingles, pero es muy fácil de seguir los pasos y después estaré subiendo el mio. Cualquier duda no duden en preguntar.

You are not allowed to view links. Register or Login

#30
Tutoriales / Como poner Online tu servidor ...
Último mensaje por Nuzak - Abr 20, 2025, 02:29 PM

Todos los créditos a WoWCreador por su publicación original en WoWCreador


Bien por lo que he visto hay mucha gente que no sabe o le cuesta poner su Servidor Wow TrinityCore Online, para eso hago esta guía que espero que sirva a más de uno y les aclare las dudas.

CREAR DOMINIO:

Necesitaremos un dominio así que vamos a ello:

  1. Crear una cuenta en You are not allowed to view links. Register or Login

  2. Cuando estemos registrados damos click en “Your No-IP” arriva del todo.

  3. Estando en el Dashboard rellenaremos los huecos que dicen “Hostname” pondremos el dominio sin el “set realmlist” luego elegiremos la terminación de nuestro dominio por ejemplo “servegame.com”. Luego pulsamos “Add Hostname”.

  4. Ahora nos tenemos que descargar el “Dynamic DNS Update Clients” (NoIP DUC), para ello vamos a: You are not allowed to view links. Register or Login y lo descargamos según el sistema operativo que tengáis.

  5. Después lo instalamos por defecto. Cuando acabe abrimos el “DUC 4.x.x” rellenamos los campos “E-mail Address” y “Password” con los datos que nos registramos anteriormente en la web. Después marcamos nuestro host y pulsamos “Save”.


Los visitantes no pueden visualizar imágenes en los mensajes, por favor You are not allowed to view links. Register or Login o You are not allowed to view links. Register or Login


ABRIR PUERTOS:

Nota:
Los pasos de abrir los puertos varían según la marca, modelo y versión de tu equipo router.


  1. Vamos a “Inicio” y pulsamos click en “Ejecutar…” y escribimos cmd

  2. En la ventana que nos ha salido escribimos: ipconfig. Los números que salen en “Puerta de enlace predeterminada” los copiamos en el buscador de internet.

  3. Ahora nos debería salir una sección de inicio para poner “Nombre de usuario” y “Contraseña”. Si no recordamos esos datos entrar a esta página y buscáis vuestro modelo de router y os saldrán los usuarios y contraseñas por defecto de dicho modelo: Usuarios y Contraseñas por Defecto.

  4. Cuando consigamos entrar buscamos el apartado “Virtual Servers” o "Port Forwarding" y pulsamos click en él. Nos saldrá para añadir puertos, añadiremos estos en TCP/UDP entrada y salida.


  • 8129

  • 8093

  • 8090

  • 8085

  • 80

  • 3306

  • 3724


Los visitantes no pueden visualizar imágenes en los mensajes, por favor You are not allowed to view links. Register or Login o You are not allowed to view links. Register or Login


Importante: Para estar seguro que el puerto está abierto, visite esta página You are not allowed to view links. Register or Login introduzca el puerto a chequear y le dan al botón Check.

Los visitantes no pueden visualizar imágenes en los mensajes, por favor You are not allowed to view links. Register or Login o You are not allowed to view links. Register or Login



MODIFICAR ARCHIVO “HOSTS”:

Vamos a “C:WINDOW/Ssystem32/drivers/etc” y abrimos el archivo “hosts” con el “Bloc de notas” o “WORDPAD”. Añadimos una línea nueva y escribimos esto:

127.0.0.1 (espacio) Dominio que creamos anteriormente (sin “set realmlist”)

IP Publica (espacio) Dominio que creamos anteriormente (sin “set realmlist”)


Los visitantes no pueden visualizar imágenes en los mensajes, por favor You are not allowed to view links. Register or Login o You are not allowed to view links. Register or Login



MODIFICAR LA BASE DE DATOS:

Abres tu editor de base de datos preferido SQLyog/Navicat y entras a la base de datos “auth” y abrimos la tabla “realmlist” y lo dejamos así:

Los visitantes no pueden visualizar imágenes en los mensajes, por favor You are not allowed to view links. Register or Login o You are not allowed to view links. Register or Login



Importante: Ahora todo usuario que quiera entrar a tu servidor, tiene que usar este realmlist:

set realmlist DOMINIO CREADO EN NOIP

Ejemplo: set realmlist You are not allowed to view links. Register or Login