Guía: Sistema de Intercambio de Items por Gold (NPC Gowther)
Descripción:Con este código podrás implementar un NPC que solicita una cantidad específica de ítems (en este caso 30 Stones) y, a cambio, otorga una recompensa de
10 Golds directamente en la base de datos de la cuenta, anunciando el éxito por todo el servidor.

Paso 1: Configuración del Archivo de Cabecera (.h)
Primero debemos declarar la función en nuestro archivo
Gowther.h. Abre tu proyecto en
Visual Studio 2022 y asegúrate de tener este contenido:
#ifndef GOWTHER_H
#define GOWTHER_H
#pragma once
void Gowther(OBJECTSTRUCT * lpObj, OBJECTSTRUCT * lpNpc);
#endif
Paso 2: Implementación del Código (.cpp)
Ahora, en tu archivo
Gowther.cpp, pegaremos la lógica que procesa el intercambio. Este código verifica el inventario, conecta con la DB y borra los ítems.
#include "StdAfx.h"
#include "Gowther.h"
// Función de intercambio de NPC
void Gowther (OBJECTSTRUCT * lpObj, OBJECTSTRUCT * lpNpc)
{
// ID del Item (Sección 14, ID 21) - Comúnmente la Rena o Stone
INT Stone_ID = ITEMGET(14, 21);
// 1. Verificación: ¿Tiene el usuario 30 o más Stones?
if (func.GetInventoryItemCount(lpObj->m_Index, Stone_ID, 1) < 30)
{
ChatNpc(lpNpc, "¡Necesitas tener 30 Stones!", lpObj->m_Index);
return;
}
else
{
// 2. Recompensa: Actualizar la tabla MEMB_INFO en SQL
// Nota: Asegúrate de que tu columna se llame 'Gold'
MYSQL->Exec("UPDATE MuOnline.dbo.MEMB_INFO SET Gold = Gold + 10 WHERE memb___id = '%s'", lpObj->AccountID);
// 3. Anuncios Globales
func.AllServerAnnounce("%s cambió sus Stones con éxito!", lpObj->Name);
func.AllServerAnnounce("%s recibió 10 Golds de recompensa!", lpObj->Name);
// 4. Consumo: Eliminar las 30 unidades del inventario
func.gObjDeleteItemsCount(lpObj->m_Index, Stone_ID, 1, 30);
}
}
Paso 3: Detalles Técnicos y Requisitos
Para que este código funcione correctamente en tu compilación, ten en cuenta lo siguiente:
- Base de Datos: El código asume que tienes una columna llamada Gold en la tabla MEMB_INFO.
- Item ID: El ITEMGET(14, 21) debe coincidir con el ítem que configuraste en tu Item.txt.
- Estructura: Asegúrate de que las funciones ChatNpc y AllServerAnnounce estén definidas en tus librerías de funciones globales.
Créditos y Descargas
Espero que esta guía les sea de gran utilidad para sus servidores. ¡Cualquier duda dejen su comentario!