Jump to content
  • 0

OfflineShop Fixiar ayuda files eternia2 y cliente pandora<<<<<<<


MegaMan2

Pregunta

hola 

Alguna persona que se apiade de mi problema, trato de fixear la Offline Shop.

trate de hacerlo con una guia que hay pero al colocar esta lineas pero no me copila el source.   o bien si creen que les llevara un poco de  tiempo "PAGO" para evitar que me duplique los objetos

He probado, hacer esto pero no me copila. 

Abre input_main.cpp y busca

		case SHOP_SUBHEADER_CG_TAKE_ITEM:
		{
			if (uiBytes < sizeof(BYTE))
				return -1;

			BYTE bPos = *c_pData;
			sys_log(0, "INPUT: %s OFFLINE_SHOP_TAKE_ITEM", ch->GetName());
			COfflineShopManager::instance().TakeItem(ch, bPos);
			return (sizeof(BYTE));
		}

 

Cambialo por:

		case SHOP_SUBHEADER_CG_TAKE_ITEM:
		{
			if (uiBytes < sizeof(BYTE))
				return -1;

			BYTE bPos = *c_pData;
			if (!COfflineShopManager::instance().HasOfflineShop(ch)){
				sys_log(0, "INPUT: %s OFFLINE_SHOP_TAKE_ITEM", ch->GetName());
				COfflineShopManager::instance().TakeItem(ch, bPos);
			}
			return (sizeof(BYTE));
		}

 

 

Despues busca:

		case SHOP_SUBHEADER_CG_REFRESH_UNSOLD_ITEMS:
		{
			sys_log(0, "INPUT: %s OFFLINE_SHOP_REFRESH_UNSOLD_ITEMS", ch->GetName());
			COfflineShopManager::instance().RefreshUnsoldItems(ch);
			return 0;
		}

 

Cambialo por: 

		case SHOP_SUBHEADER_CG_REFRESH_UNSOLD_ITEMS:
		{
			if (!COfflineShopManager::instance().HasOfflineShop(ch)){
				sys_log(0, "INPUT: %s OFFLINE_SHOP_REFRESH_UNSOLD_ITEMS", ch->GetName());
				COfflineShopManager::instance().RefreshUnsoldItems(ch);
			}
			return 0;
		}
if (ch->IsFight())
   {
      ch->ChatPacket(CHAT_TYPE_INFO, "No puedes abrir una tienda durante un duelo.");
      return;
   }
Enlace para comentar
Compartir en otros sitios

6 respuestas a esta pregunta

Mensajes recomendados

  • 0

En principio es el cambio de ch lo que te genera ese bug. Prueba esto si ves que te sigue igual prueba desactivando el cambio ch aver si te duplican items.

En char.cpp busca: quest::PC * pPC = quest::CQuestManager::instance().GetPCForce(GetPlayerID()); (CHARACTER::OpenMyShop)
Pon arriba de esa funcion esto:
	if (IsRestricted())
	{
		ChatPacket(CHAT_TYPE_INFO, "Tienes que esperar %d para hacer esto.", (GetQuestFlag("restrict.player") - get_global_time()) % 180);
		return;
	}
Luego busca: 
		if (days != 0)
			map_shop.push_back(pTable++);
Pon arriba de eso: 		SetQuestFlag("restrict.player", get_global_time() + 10);
Y al final dentro detro de char pon:
bool CHARACTER::IsRestricted()
{	
	if (GetQuestFlag("restrict.player") < get_global_time())
		return false;
}

Luego en char.h busca: ESex GET_SEX(LPCHARACTER ch);
Pon arriba de eso:
	public:
		bool	IsRestricted();
Luego en cmd_general.cpp busca la funcion entera de ACMD(do_channel)
Y la cambias con esto:
#ifdef __CHANNEL_CHANGE_SYSTEM__
ACMD(do_channel)
{
	if (ch->IsRestricted())
	{
		ch->ChatPacket(CHAT_TYPE_INFO, "Tienes que esperar %d para hacer esto.", (ch->GetQuestFlag("restrict.player") - get_global_time()) % 180);
		return;
	}	

	char arg1[256];
	one_argument(argument, arg1, sizeof(arg1));
	if (!*arg1)
		return;
	
	int channel;
	str_to_number(channel, arg1);
	ch->ChannelChange(channel);
	ch->SetQuestFlag("restrict.player", get_global_time() + 5);
}
#endif

 

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 esta pregunta...

×   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...