- Desde
- 25 Feb 2024
- Mensajes
- 140
- Reacciones
- 11
- Honor
- 22
Cómo puedo crear un npc que al tocarlo de una cierta cantidad de oro
Me refiero a wow 3.3.5 Trinity CoreCrear un NPC (Personaje no Jugador) que de oro al tocarlo puede variar dependiendo del tipo de juego o sistema en que estés trabajando. Sin embargo, en la mayoría de los casos, requerirá alguna forma de programación o scripting. Aquí te explicaré cómo podrías hacerlo en un motor de juego como Unity usando un lenguaje de programación como C#.
1. Primero necesitarías crear tu NPC. Esto puede hacerse a través del motor de juego que estés usando, en este caso, Unity. Podrías crear un modelo 3D o 2D, dependiendo de tu juego.
2. Luego, necesitarías crear un script de "colisión" o "interacción". Este script detectará cuando el jugador toca o interactúa con el NPC. En Unity, esto podría hacerse usando el método OnTriggerEnter() o OnCollisionEnter().
```C#
void OnTriggerEnter(Collider other)
{
// Si el objeto que entra en la colisión es el jugador
if (other.gameObject.CompareTag("Player"))
{
// Aquí se da el oro al jugador
}
}
```
3. En el bloque de código donde se detecta al jugador, necesitarías agregar código para añadir oro al inventario del jugador. Esto dependerá de cómo hayas implementado el inventario del jugador. Si tienes un sistema de inventario centralizado, podrías tener un método para añadir oro al inventario que puedas llamar aquí.
```C#
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Player"))
{
// Asume que Inventory es tu clase de inventario
// y AddGold es un método que añade una cierta cantidad de oro
Inventory.AddGold(100); // Añade 100 de oro
}
}
```
4. En este punto, deberías ser capaz de darle al jugador una cierta cantidad de oro cada vez que toque o interactúe con el NPC. Puedes ajustar la cantidad de oro que se da cambiando el número que pasas al método AddGold().
Por favor ten en cuenta que este es un ejemplo genérico en Unity y C#. Dependiendo del juego o motor específico que estés usando, los detalles exactos podrían variar.
Oh, lamento la confusión anterior. Para WoW 3.3.5 (World of Warcraft) con Trinity Core, tendrías que hacer un poco de scripting en SQL y C++. Aquí hay un ejemplo de cómo podrías hacerlo. Por favor, ten en cuenta que esto es un ejemplo simplificado y podrías tener que ajustarlo a tus necesidades específicas.Me refiero a wow 3.3.5 Trinity Core
No puede ser posible con un script lua?Oh, lamento la confusión anterior. Para WoW 3.3.5 (World of Warcraft) con Trinity Core, tendrías que hacer un poco de scripting en SQL y C++. Aquí hay un ejemplo de cómo podrías hacerlo. Por favor, ten en cuenta que esto es un ejemplo simplificado y podrías tener que ajustarlo a tus necesidades específicas.
1. Primero, necesitas un NPC existente. Puedes crear uno nuevo o usar uno existente. Necesitarás la ID de este NPC.
2. Asegúrate de tener acceso a modificar la base de datos SQL de Trinity Core y saber cómo compilar el servidor después de hacer cambios.
3. Agrega una nueva entrada en la tabla `creature_template` con la ID del NPC que seleccionaste o creaste y configura los otros campos como desees.
4. Ahora, necesitas crear un script personalizado para este NPC. Para esto necesitarás tener conocimientos de C++.
Aquí te dejo un breve ejemplo de cómo podrías hacerlo:
```C++
#include "ScriptPCH.h"
class npc_custom_gold_giver : public CreatureScript
{
public:
npc_custom_gold_giver() : CreatureScript("npc_custom_gold_giver") { }
bool OnGossipHello(Player* player, Creature* creature)
{
player->ModifyMoney(10000); // Esto le dará al jugador 1 de oro cada vez que hable con el NPC.
return true;
}
};
void AddSC_npc_custom_gold_giver()
{
new npc_custom_gold_giver();
}
```
Este script le dará al jugador 1 de oro cada vez que hable con el NPC. Puedes cambiar la cantidad de oro modificando el número en `player->ModifyMoney(10000);`.
5. Ahora, necesitarás compilar el servidor de Trinity Core para que los cambios surtan efecto. Después de compilar, el NPC debería dar oro al jugador cuando interactúa con él.
Por favor, recuerda que este es solo un ejemplo y puede que necesites ajustarlo a las necesidades de tu servidor específico. También, siempre haz una copia de seguridad de tus scripts y base de datos antes de hacer cambios para evitar cualquier problema.
Sí, definitivamente es posible hacer esto con un script Lua en Eluna, que es el motor de scripting Lua para TrinityCore. Aquí te dejo un ejemplo de cómo podrías hacerlo:No puede ser posible con un script lua?
Estupendo ahora necesito otro ejemplo de lua pero para que el npc en vez de oro entregué un item específicoSí, definitivamente es posible hacer esto con un script Lua en Eluna, que es el motor de scripting Lua para TrinityCore. Aquí te dejo un ejemplo de cómo podrías hacerlo:
```Lua
local NPC_ID = 12345 -- Cambia esto por la ID del NPC que quieras usar
local function GiveGold(event, player, unit)
player:ModifyMoney(10000) -- Esto le dará 1 de oro al jugador
end
RegisterCreatureGossipEvent(NPC_ID, 1, GiveGold) -- Esto registra el evento para que se active cuando el jugador habla con el NPC
```
Este script le dará al jugador 1 de oro cada vez que hable con el NPC con la ID especificada. Puedes cambiar la cantidad de oro modificando el número en `player:ModifyMoney(10000);`.
Por favor, ten en cuenta que este es solo un ejemplo y puede que necesites ajustarlo a las necesidades de tu servidor específico. Además, también necesitarás tener Eluna Lua Engine instalado y configurado correctamente en tu servidor TrinityCore. Si tienes alguna pregunta adicional, no dudes en preguntar.
Claro, puedes ajustar el script Lua para que el NPC dé un item específico a los jugadores. Aquí tienes un ejemplo utilizando Eluna en TrinityCore:Estupendo ahora necesito otro ejemplo de lua pero para que el npc en vez de oro entregué un item específico
Y si quiero que el item lo entregue al matarlo como hago el lua, y si puedes me dices también otro lua para que el npc lanze un apellido al jugadorClaro, puedes ajustar el script Lua para que el NPC dé un item específico a los jugadores. Aquí tienes un ejemplo utilizando Eluna en TrinityCore:
```Lua
local NPC_ID = 12345 -- Cambia esto por la ID del NPC que quieras usar
local ITEM_ID = 56789 -- Cambia esto por la ID del item que quieras entregar
local function GiveItem(event, player, unit)
if player:CanStoreNewItem(nil, nil, ITEM_ID, 1) == true then -- Chequea si el jugador tiene espacio para un nuevo item
player:AddItem(ITEM_ID, 1) -- Añade 1 del item al inventario del jugador
else
player:SendBroadcastMessage("No tienes suficiente espacio en tu inventario.") -- Envia un mensaje al jugador si no tiene suficiente espacio
end
end
RegisterCreatureGossipEvent(NPC_ID, 1, GiveItem) -- Esto registra el evento para que se active cuando el jugador hable con el NPC
```
Este script entregará 1 unidad del item con la ID especificada a los jugadores cada vez que hablen con el NPC. Puedes cambiar el item y la cantidad modificando las IDs y los números en el script.
Por favor, ten en cuenta que este es solo un ejemplo y puede que necesites ajustarlo a las necesidades de tu servidor específico. Además, también necesitarás tener Eluna Lua Engine instalado y configurado correctamente en tu servidor TrinityCore. Si tienes alguna pregunta adicional, no dudes en preguntar.
Entendido, para entregar un item al matar al NPC necesitarás utilizar el evento `CREATURE_EVENT_ON_DIED`. Y para lanzar un mensaje al jugador con el apellido o título, puedes usar el método `Player:SendBroadcastMessage()`. Aquí te dejo un ejemplo de cómo puedes hacerlo con Eluna:Y si quiero que el item lo entregue al matarlo como hago el lua, y si puedes me dices también otro lua para que el npc lanze un apellido al jugador
Si quiero que al tocar el npc me lanze un echizo que lua tengo que ponerEntendido, para entregar un item al matar al NPC necesitarás utilizar el evento `CREATURE_EVENT_ON_DIED`. Y para lanzar un mensaje al jugador con el apellido o título, puedes usar el método `Player:SendBroadcastMessage()`. Aquí te dejo un ejemplo de cómo puedes hacerlo con Eluna:
```Lua
local NPC_ID = 12345 -- Cambia esto por la ID del NPC
local ITEM_ID = 56789 -- Cambia esto por la ID del item
local function GiveItemOnDeath(event, creature, killer) -- Esta función se activa cuando el NPC muere
if killer:IsPlayer() then -- Comprueba si el asesino es un jugador
if killer:CanStoreNewItem(nil, nil, ITEM_ID, 1) == true then
killer:AddItem(ITEM_ID, 1) -- Añade 1 del item al inventario del jugador
else
killer:SendBroadcastMessage("No tienes suficiente espacio en tu inventario.") -- Envia un mensaje al jugador si no tiene suficiente espacio
end
end
end
RegisterCreatureEvent(NPC_ID, 5, GiveItemOnDeath) -- Registra el evento para que se active cuando el NPC muera
local function GiveTitle(event, player, creature) -- Esta función se activa cuando el jugador habla con el NPC
player:SendBroadcastMessage("¡Saludos, " .. player:GetName() .. " el Valiente!") -- Envia un mensaje al jugador
end
RegisterCreatureGossipEvent(NPC_ID, 1, GiveTitle) -- Registra el evento para que se active cuando el jugador hable con el NPC
```
Este script entregará 1 unidad del item al jugador cuando mate al NPC y le enviará un mensaje cada vez que hable con el NPC. Recuerda reemplazar `12345` y `56789` con las IDs de tu NPC e item, respectivamente, y puedes cambiar el título "el Valiente" por el que desees.
Por favor, ten en cuenta que este es solo un ejemplo y puede que necesites ajustarlo a las necesidades de tu servidor específico. Además, también necesitarás tener Eluna Lua Engine instalado y configurado correctamente en tu servidor TrinityCore. Si tienes alguna pregunta adicional, no dudes en preguntar.
Para que un NPC lance un hechizo sobre un jugador al interactuar con él, puedes hacerlo de la siguiente manera con un script Lua en Eluna:Si quiero que al tocar el npc me lanze un echizo que lua tengo que poner
Crea una cuenta o inicia sesión para comentar
Debes ser usuario para poder dejar un comentario.