Jump to content

[C++]Bloqueo de comercio en GM`s


Dilong

Mensajes recomendados

Basicamente la idea es poner la id de la cuenta gm en la tabla para bloquearlo, con id me refiero a este numero marcado en azul, por si algunos se confunden y ponen los datos de login: 25u15j8.png

Con esto si la id de su cuenta esta en la tabla, dira que no tiene permiso para comerciar, es algo simple y el codigo puede ser mejorado

exchange.cpp >> debajo de if (victim->IsBlockMode(BLOCK_EXCHANGE)), debe quedar de esta manera:

	if (victim->IsBlockMode(BLOCK_EXCHANGE))
	{
		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("»ó´ë¹æÀÌ ±³È¯ °ÅºÎ »óÅÂÀÔ´Ï´Ù."));
		return false;
	}

	if (!IsGM())
	{
		if (victim->GetGMLevel() != GM_PLAYER)
		{
			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("No puedes darle comercio a un GM"));
			return false;
		}
	}

	if (IsGM())
	{
		char szQuery[QUERY_MAX_LEN];
		snprintf(szQuery, sizeof(szQuery), "SELECT * FROM comerciogm");
		SQLMsg * pMsg = DBManager::instance().DirectQuery(szQuery);
		SQLResult * pRes = pMsg->Get();
		if (pRes->uiNumRows)
		{
			MYSQL_ROW row;
			while ((row = mysql_fetch_row(pRes->pSQLResult)))
			{
				DWORD datos = 0;
				str_to_number(datos, row[0]);
				if (GetPlayerID()==datos)
				{
				ChatPacket(CHAT_TYPE_INFO, "No tienes permiso para comerciar");
			return false;
			}
		}
	}
}

Sql >> Player:
 


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for comerciogm
-- ----------------------------
DROP TABLE IF EXISTS `comerciogm`;
CREATE TABLE `comerciogm`  (
  `gm` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT '',
  PRIMARY KEY (`gm`) USING BTREE
) ENGINE = MyISAM CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

 

Enlace para comentar
Compartir en otros sitios

hace 1 minuto, xLordneji dijo:

Se ve super excelente la ídea, para evitar futuros malentendidos con los gms 😄

Pueden tirarlo al suelo, pueden poner los items a la venta a 1, pueden pasar el item por su almacen y comerciarlo con otro personaje en su cuenta, etc etc.

 

Pd: Se ve útil!

Enlace para comentar
Compartir en otros sitios

  • 1 year later...
En 20/3/2019 a las 20:51, Dilong dijo:

Basicamente la idea es poner la id de la cuenta gm en la tabla para bloquearlo, con id me refiero a este numero marcado en azul, por si algunos se confunden y ponen los datos de login: 

Debes iniciar sesión para ver el contenido del enlace en esta publicación.

Con esto si la id de su cuenta esta en la tabla, dira que no tiene permiso para comerciar, es algo simple y el codigo puede ser mejorado

exchange.cpp >> debajo de if (victim->IsBlockMode(BLOCK_EXCHANGE)), debe quedar de esta manera:


	if (victim->IsBlockMode(BLOCK_EXCHANGE))
	{
		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("»ó´ë¹æÀÌ ±³È¯ °ÅºÎ »óÅÂÀÔ´Ï´Ù."));
		return false;
	}

	if (!IsGM())
	{
		if (victim->GetGMLevel() != GM_PLAYER)
		{
			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("No puedes darle comercio a un GM"));
			return false;
		}
	}

	if (IsGM())
	{
		char szQuery[QUERY_MAX_LEN];
		snprintf(szQuery, sizeof(szQuery), "SELECT * FROM comerciogm");
		SQLMsg * pMsg = DBManager::instance().DirectQuery(szQuery);
		SQLResult * pRes = pMsg->Get();
		if (pRes->uiNumRows)
		{
			MYSQL_ROW row;
			while ((row = mysql_fetch_row(pRes->pSQLResult)))
			{
				DWORD datos = 0;
				str_to_number(datos, row[0]);
				if (GetPlayerID()==datos)
				{
				ChatPacket(CHAT_TYPE_INFO, "No tienes permiso para comerciar");
			return false;
			}
		}
	}
}

Sql >> Player:
 



SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for comerciogm
-- ----------------------------
DROP TABLE IF EXISTS `comerciogm`;
CREATE TABLE `comerciogm`  (
  `gm` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT '',
  PRIMARY KEY (`gm`) USING BTREE
) ENGINE = MyISAM CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

 

Gracias, alguien tendría el codigo para bloquearle comercio, hacer tienda, abrir almacén y tirarlo? ^^

Enlace para comentar
Compartir en otros sitios

Unirse a la conversación

Puedes publicar ahora y registrarte más tarde. Si tienes una cuenta, regístrate para publicar con su cuenta.

Guest
Responder a este tema...

×   Has pegado contenido con formato .   Eliminar formato

  Only 75 emoji are allowed.

×   Tu enlace se ha incorporado automáticamente.   Mostrar un enlace en su lugar

×   Se ha restaurado el contenido anterior. .   Borrar editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recientemente navegando por este tema   0 miembros

    • No hay usuarios registrados visitando esta página.
×
×
  • Crear nuevo...