Jump to content
Ryukend

[Guia]Cambiar y Agregar Drops a un Mob

Recommended Posts

Petición hecha por alejandro1995, espero que lo ayude...

 

Primero de todo, encender el server (también se puede dejar en el inicio de sesión) y entrar con FileZilla o WinSCP.

 

Una vez conectado a través del programa ir a: usr / / Rain / share_data / local / Hong Kong / mob_drop_item.txt y abrir suele estar hay.

 

1. Busque el valor del MOB que quieren cambiar (por ejemplo, 1093: el reaper) y encontraras esto:

 

 

 

Group ȍ½Ã…

{

type limit

mob 1093

level_limit 75

1 ȍ½Ã…Àç»óÀÚ 1 50}

 

 

El nombre en chino color verde es el nombre del cofre del reaper pero puedes usar el numero del item que quieres que dropee es mas facil y comodo asi lo hare yo en la siguiente parte.

 

¿Que quiere decir cada numero?

 

 

 

Group ȍ½Ã…

{

type limit

mob 1093

level_limit 75

1 50082 1 50

}

 

 

El color amarillo indica que es el primer item que tirara el Mob.

 

El color Rojo indica el ID del item que dropeara.

 

El color azul indica la cantidad de items que dropeara.

 

El naranja oscuro indica la probabilidad de que caiga tal item (Para una caída casi segura poner 50 o más).

 

Para añadir otro item se debe colocar de la siguiente manera:

 

 

 

Group ȍ½Ã…

{

type limit

mob 1093

level_limit 75

1 50082 1 50}

2 (id del item) cantidad y % de drop

3...

}

 

 

Puedes colocar todos los drops que quieras :D

 

Nota: No siempre el mob_drop_item.txt viene arreglado en algunos casos es desordenado pero igual es de la misma forma ;)

 

Créditos:

 

La guía la saque de otro lado, pero la edite para que sea mas comprensiva :D

 

Espero les allá gustado ;)

Share this post


Link to post
Share on other sites
hace 5 horas, Lord Ahriman - 3D Modeler dijo:

reabro el tema, que hago en el caso de agregarle drop a un mob que no lo tenia, le queria darle al Lykos, pero al hacerlo y dar reboot no pasa nada, sigue dando lo mismo

Puedes mostrar cómo estás agregando el drop?

Share this post


Link to post
Share on other sites

Group    Lykos            
{                    
    type    drop        
    mob    191                    
    1    71201    1    100
    2    71202    1    100
    3    71203    1    100
    4    71204    1    100
    5    71205    1    100
    6    71206    1    100
    7    71207    1    100
    8    71208    1    100
}

Share this post


Link to post
Share on other sites
service.h
#define __LOAD_MOB_TXT__
#define __LOAD_CHEST_TXT__


buscas ACMD(do_reload)

debajo de  

			case 'c':	// cube
				// ·ÎÄà ÇÁ·Î¼¼½º¸¸ °»»êÇÑ´Ù.
				Cube_init ();
				break;

#if defined(__LOAD_CHEST_TXT__) || defined(__LOAD_MOB_TXT__)
			case 't':
				snprintf(szSpecialItemGroupFileName, sizeof(szSpecialItemGroupFileName), "%s/special_item_group.txt", LocaleService_GetBasePath().c_str());
				ITEM_MANAGER::Instance().DestroyChestDropItem();
				if (!ITEM_MANAGER::Instance().ReadSpecialDropItemFile(szSpecialItemGroupFileName))
				{
					ch->ChatPacket(CHAT_TYPE_INFO, "Error al cargar special_item_group.txt.");
					return;
				}
				else
				{
				 ch->ChatPacket(CHAT_TYPE_INFO, "Cargaste special_item_group.");
				}
				break;

			case 'm':
				snprintf(szMOBDropItemFileName, sizeof(szMOBDropItemFileName), "%s/mob_drop_item.txt", LocaleService_GetBasePath().c_str());
				ITEM_MANAGER::Instance().DestroyMobDropItem();
				if (!ITEM_MANAGER::Instance().ReadMonsterDropItemGroup(szMOBDropItemFileName))
				{
					ch->ChatPacket(CHAT_TYPE_INFO, "Error al cargar mob_drop_item.txt.");
					return;
				}
				else
				{
				 ch->ChatPacket(CHAT_TYPE_INFO, "Cargaste mob_drop_item.");
				}
				break;
#endif

agregar al final de item_manager.cpp
#if defined (__LOAD_MOB_TXT__) || defined(__LOAD_CHEST_TXT__)
void ITEM_MANAGER::DestroyMobDropItem()
{
	if (!m_map_pkMobItemGroup.empty())
		m_map_pkMobItemGroup.clear();

	if (!m_map_pkDropItemGroup.empty())
		m_map_pkDropItemGroup.clear();

	if (!m_map_pkLevelItemGroup.empty())
		m_map_pkLevelItemGroup.clear();

	if (!m_map_pkGloveItemGroup.empty())
		m_map_pkGloveItemGroup.clear();
}

void ITEM_MANAGER::DestroyChestDropItem()
{
	if (!m_map_pkSpecialItemGroup.empty())
		m_map_pkSpecialItemGroup.clear();
}

#endif

en item_manager.h debajo de void			GracefulShutdown(); agregar

#if defined(__LOAD_MOB_TXT__) || defined(__LOAD_CHEST_TXT__)
		void			DestroyMobDropItem();
		void			DestroyChestDropItem();
#endif

Agregando esto no tienes necesidad de dar reboot  solo reload t y reload m y automaticamente se carga en el juego.

Share this post


Link to post
Share on other sites
hace 2 horas, Jfirewall dijo:
service.h
#define __LOAD_MOB_TXT__
#define __LOAD_CHEST_TXT__


buscas ACMD(do_reload)

debajo de  

			case 'c':	// cube
				// ·ÎÄà ÇÁ·Î¼¼½º¸¸ °»»êÇÑ´Ù.
				Cube_init ();
				break;

#if defined(__LOAD_CHEST_TXT__) || defined(__LOAD_MOB_TXT__)
			case 't':
				snprintf(szSpecialItemGroupFileName, sizeof(szSpecialItemGroupFileName), "%s/special_item_group.txt", LocaleService_GetBasePath().c_str());
				ITEM_MANAGER::Instance().DestroyChestDropItem();
				if (!ITEM_MANAGER::Instance().ReadSpecialDropItemFile(szSpecialItemGroupFileName))
				{
					ch->ChatPacket(CHAT_TYPE_INFO, "Error al cargar special_item_group.txt.");
					return;
				}
				else
				{
				 ch->ChatPacket(CHAT_TYPE_INFO, "Cargaste special_item_group.");
				}
				break;

			case 'm':
				snprintf(szMOBDropItemFileName, sizeof(szMOBDropItemFileName), "%s/mob_drop_item.txt", LocaleService_GetBasePath().c_str());
				ITEM_MANAGER::Instance().DestroyMobDropItem();
				if (!ITEM_MANAGER::Instance().ReadMonsterDropItemGroup(szMOBDropItemFileName))
				{
					ch->ChatPacket(CHAT_TYPE_INFO, "Error al cargar mob_drop_item.txt.");
					return;
				}
				else
				{
				 ch->ChatPacket(CHAT_TYPE_INFO, "Cargaste mob_drop_item.");
				}
				break;
#endif

agregar al final de item_manager.cpp
#if defined (__LOAD_MOB_TXT__) || defined(__LOAD_CHEST_TXT__)
void ITEM_MANAGER::DestroyMobDropItem()
{
	if (!m_map_pkMobItemGroup.empty())
		m_map_pkMobItemGroup.clear();

	if (!m_map_pkDropItemGroup.empty())
		m_map_pkDropItemGroup.clear();

	if (!m_map_pkLevelItemGroup.empty())
		m_map_pkLevelItemGroup.clear();

	if (!m_map_pkGloveItemGroup.empty())
		m_map_pkGloveItemGroup.clear();
}

void ITEM_MANAGER::DestroyChestDropItem()
{
	if (!m_map_pkSpecialItemGroup.empty())
		m_map_pkSpecialItemGroup.clear();
}

#endif

en item_manager.h debajo de void			GracefulShutdown(); agregar

#if defined(__LOAD_MOB_TXT__) || defined(__LOAD_CHEST_TXT__)
		void			DestroyMobDropItem();
		void			DestroyChestDropItem();
#endif

Agregando esto no tienes necesidad de dar reboot  solo reload t y reload m y automaticamente se carga en el juego.

Muy útil, gracias, lo usaré!

Share this post


Link to post
Share on other sites
hace 8 horas, Jfirewall dijo:
service.h
#define __LOAD_MOB_TXT__
#define __LOAD_CHEST_TXT__


buscas ACMD(do_reload)

debajo de  

			case 'c':	// cube
				// ·ÎÄà ÇÁ·Î¼¼½º¸¸ °»»êÇÑ´Ù.
				Cube_init ();
				break;

#if defined(__LOAD_CHEST_TXT__) || defined(__LOAD_MOB_TXT__)
			case 't':
				snprintf(szSpecialItemGroupFileName, sizeof(szSpecialItemGroupFileName), "%s/special_item_group.txt", LocaleService_GetBasePath().c_str());
				ITEM_MANAGER::Instance().DestroyChestDropItem();
				if (!ITEM_MANAGER::Instance().ReadSpecialDropItemFile(szSpecialItemGroupFileName))
				{
					ch->ChatPacket(CHAT_TYPE_INFO, "Error al cargar special_item_group.txt.");
					return;
				}
				else
				{
				 ch->ChatPacket(CHAT_TYPE_INFO, "Cargaste special_item_group.");
				}
				break;

			case 'm':
				snprintf(szMOBDropItemFileName, sizeof(szMOBDropItemFileName), "%s/mob_drop_item.txt", LocaleService_GetBasePath().c_str());
				ITEM_MANAGER::Instance().DestroyMobDropItem();
				if (!ITEM_MANAGER::Instance().ReadMonsterDropItemGroup(szMOBDropItemFileName))
				{
					ch->ChatPacket(CHAT_TYPE_INFO, "Error al cargar mob_drop_item.txt.");
					return;
				}
				else
				{
				 ch->ChatPacket(CHAT_TYPE_INFO, "Cargaste mob_drop_item.");
				}
				break;
#endif

agregar al final de item_manager.cpp
#if defined (__LOAD_MOB_TXT__) || defined(__LOAD_CHEST_TXT__)
void ITEM_MANAGER::DestroyMobDropItem()
{
	if (!m_map_pkMobItemGroup.empty())
		m_map_pkMobItemGroup.clear();

	if (!m_map_pkDropItemGroup.empty())
		m_map_pkDropItemGroup.clear();

	if (!m_map_pkLevelItemGroup.empty())
		m_map_pkLevelItemGroup.clear();

	if (!m_map_pkGloveItemGroup.empty())
		m_map_pkGloveItemGroup.clear();
}

void ITEM_MANAGER::DestroyChestDropItem()
{
	if (!m_map_pkSpecialItemGroup.empty())
		m_map_pkSpecialItemGroup.clear();
}

#endif

en item_manager.h debajo de void			GracefulShutdown(); agregar

#if defined(__LOAD_MOB_TXT__) || defined(__LOAD_CHEST_TXT__)
		void			DestroyMobDropItem();
		void			DestroyChestDropItem();
#endif

Agregando esto no tienes necesidad de dar reboot  solo reload t y reload m y automaticamente se carga en el juego.

Excelente esto, muchas gracias!

Share this post


Link to post
Share on other sites

Acá te dejo el archivo de que líneas se deben modificar + las líneas faltantes que no dejaron en la guía y salía error al intentar compilar.

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

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

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


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...