Jump to content

shining system by sany (añadido funcion para estolas)


DeadOfLove
 Share

Recommended Posts

En vista que la mayoria de la comunidad no sabe instalar correctamente efectos y algunos utilizan codigo del 2015, les comparto un sistema desarrollo sany hace un par de años bastante bueno, para añadir efectos de manera simple en un block de notas, añadiendo la funcion de carga de efectos para estolas, asi puede añadir estolas con movimiento sin ninguno problema.

una vez instalen el sistema que se encuentra subido en el post deben seguir los siguientes pasos:

abren su archivo de InstanceBase.cpp
 

// buscan 

void CInstanceBase::SetAcce(DWORD dwAcce) 

o en caso que no usen version de marty

se llamaria SetSash algo asi creo recordar

void CInstanceBase::SetSash(DWORD dwSash) 

ahora 

dentro de void CInstanceBase::SetAcce(DWORD dwAcce)


buscar

ClearAcceEffect();

añadir

#ifdef ENABLE_SHINING_SYSTEM
	__ClearAcceShiningEffect();
#endif

al final de void CInstanceBase::SetAcce(DWORD dwAcce) 


añadir 

#ifdef ENABLE_SHINING_SYSTEM
	if (CItemManager::Instance().GetItemDataPointer(dwAcce, &pItemData)) {
		__GetShiningEffect(pItemData);
		return;
	}
#endif

buscar 

	__ClearWeaponShiningEffect(false);
	__ClearArmorShiningEffect(false);

añadir

	__ClearAcceShiningEffect(false);

deberia quedar de esta forma

#ifdef ENABLE_SHINING_SYSTEM
	__ClearWeaponShiningEffect(false);
	__ClearArmorShiningEffect(false);
	__ClearAcceShiningEffect(false);
#endif


buscar:

void CInstanceBase::__GetShiningEffect(CItemData* pItem)

dentro añadir despues de

#if defined(ENABLE_COSTUME_SYSTEM)
    if ((pItem->GetType() == CItemData::ITEM_TYPE_ARMOR && pItem->GetSubType() == CItemData::ARMOR_BODY) || (pItem->GetType() == CItemData::ITEM_TYPE_COSTUME && pItem->GetSubType() == CItemData::COSTUME_BODY))
#else
    if (pItem->GetType() == CItemData::ITEM_TYPE_ARMOR && pItem->GetSubType() == CItemData::ARMOR_BODY)
#endif
    {
        __ClearArmorShiningEffect();

        if (shiningTable.Any() && removeRefineEffect)
        {
            __ClearArmorRefineEffect();
        }

        for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
        {
            if (strcmp(shiningTable.szShinings[i], ""))
            {
                __AttachArmorShiningEffect(i, shiningTable.szShinings[i]);
            }
        }
    }

#ifdef ENABLE_ACCE_SYSTEM
	if (pItem->GetType() == CItemData::ITEM_TYPE_COSTUME && pItem->GetSubType() == CItemData::COSTUME_ACCE)
	{
		__ClearAcceShiningEffect();

		if (shiningTable.Any() && removeRefineEffect)
		{
			ClearAcceEffect();
		}

		for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
		{
			if (strcmp(shiningTable.szShinings[i], ""))
			{
				__AttachAcceShiningEffect(i, shiningTable.szShinings[i]);
			}
		}
	}
#endif
(nota: deben modificarlo de acuerdo a la version de estolas que utilicen)

 buscar:

void CInstanceBase::__ClearArmorShiningEffect(bool detaching)
{
}
  
añadir: 
  
#ifdef ENABLE_ACCE_SYSTEM
void CInstanceBase::__AttachAcceShiningEffect(int effectIndex, const char* effectFileName, const char* boneName)
{
	if (IsAffect(AFFECT_INVISIBILITY))
	{
		return;
	}
	if (effectIndex >= CItemData::ITEM_SHINING_MAX_COUNT)
	{
		return;
	}
	if (!strcmp(boneName, ""))
	{
		Tracef("Empty bone name for attaching Aura shining. Effect Index: %i, EffectFileName: %s", effectIndex, effectFileName);
		return;
	}
	CEffectManager::Instance().RegisterEffect(effectFileName, false, false);
	m_acceShiningEffects[effectIndex] = m_GraphicThingInstance.AttachEffectByName(0, boneName, effectFileName);
}

void CInstanceBase::__ClearAcceShiningEffect(bool detaching)
{
	if (detaching)
	{
		for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
		{
			__DetachEffect(m_acceShiningEffects[i]);
		}
	}
#ifdef __cplusplus < 199711L
	memset(&m_acceShiningEffects, 0, sizeof(m_acceShiningEffects));
#else
	m_acceShiningEffects = {};
#endif
}
#endif

ahora abran su archivo de InstanceBase.h
 

buscar:

		void	__GetShiningEffect(CItemData* pItem);
		void	__ClearWeaponShiningEffect(bool detaching = true);
		void	__ClearArmorShiningEffect(bool detaching = true);

añadir

		void	__ClearAcceShiningEffect(bool detaching = true);



buscar:


		void	__AttachArmorShiningEffect(int effectIndex, const char* effectFileName, const char* boneName = "Bip01");


añadir:

		void	__AttachAcceShiningEffect(int effectIndex, const char* effectFileName, const char* boneName = "Bip01");


deberia quedar asi


#ifdef ENABLE_SHINING_SYSTEM
		void	__GetShiningEffect(CItemData* pItem);
		void	__ClearWeaponShiningEffect(bool detaching = true);
		void	__ClearArmorShiningEffect(bool detaching = true);
		void	__ClearAcceShiningEffect(bool detaching = true);
		void	__AttachWeaponShiningEffect(int effectIndex, const char* effectFileName, const char* boneName = "Bip01");
		void	__AttachArmorShiningEffect(int effectIndex, const char* effectFileName, const char* boneName = "Bip01");
		void	__AttachAcceShiningEffect(int effectIndex, const char* effectFileName, const char* boneName = "Bip01");
#endif


buscar:

		DWORD					m_armorShiningEffects[CItemData::ITEM_SHINING_MAX_COUNT];


añadir:

		DWORD					m_acceShiningEffects[CItemData::ITEM_SHINING_MAX_COUNT];

deberia quedar asi:

#ifdef ENABLE_SHINING_SYSTEM
		DWORD					m_weaponShiningEffects[2][CItemData::ITEM_SHINING_MAX_COUNT];
		DWORD					m_armorShiningEffects[CItemData::ITEM_SHINING_MAX_COUNT];
		DWORD					m_acceShiningEffects[CItemData::ITEM_SHINING_MAX_COUNT];
#endif


espero que sea de utilidad, saludos a toda la comunidad.

post data: a todos los miembros, cuando se hace un comentarios indicando que algo no es necesario, o esta mal desarrollado no es en plan de criticar, es notificando a las personas que no saben de programacion que abstengan de utilizarlo porque pueden usar algo mejor en su fuente. porque ahora esta mal decir que un codigo (sistema) publico esta bug esta mal?


 

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

Link to comment
Share on other sites

hace 6 horas, DeadOfLove dijo:

En vista que la mayoria de la comunidad no sabe instalar correctamente efectos y algunos utilizan codigo del 2015, les comparto un sistema desarrollo sany hace un par de años bastante bueno, para añadir efectos de manera simple en un block de notas, añadiendo la funcion de carga de efectos para estolas, asi puede añadir estolas con movimiento sin ninguno problema.

una vez instalen el sistema que se encuentra subido en el post deben seguir los siguientes pasos:

abren su archivo de InstanceBase.cpp
 

// buscan 

void CInstanceBase::SetAcce(DWORD dwAcce) 

o en caso que no usen version de marty

se llamaria SetSash algo asi creo recordar

void CInstanceBase::SetSash(DWORD dwSash) 

ahora 

dentro de void CInstanceBase::SetAcce(DWORD dwAcce)


buscar

ClearAcceEffect();

añadir

#ifdef ENABLE_SHINING_SYSTEM
	__ClearAcceShiningEffect();
#endif

al final de void CInstanceBase::SetAcce(DWORD dwAcce) 


añadir 

#ifdef ENABLE_SHINING_SYSTEM
	if (CItemManager::Instance().GetItemDataPointer(dwAcce, &pItemData)) {
		__GetShiningEffect(pItemData);
		return;
	}
#endif

buscar 

	__ClearWeaponShiningEffect(false);
	__ClearArmorShiningEffect(false);

añadir

	__ClearAcceShiningEffect(false);

deberia quedar de esta forma

#ifdef ENABLE_SHINING_SYSTEM
	__ClearWeaponShiningEffect(false);
	__ClearArmorShiningEffect(false);
	__ClearAcceShiningEffect(false);
#endif


buscar:

void CInstanceBase::__GetShiningEffect(CItemData* pItem)

dentro añadir despues de

#if defined(ENABLE_COSTUME_SYSTEM)
    if ((pItem->GetType() == CItemData::ITEM_TYPE_ARMOR && pItem->GetSubType() == CItemData::ARMOR_BODY) || (pItem->GetType() == CItemData::ITEM_TYPE_COSTUME && pItem->GetSubType() == CItemData::COSTUME_BODY))
#else
    if (pItem->GetType() == CItemData::ITEM_TYPE_ARMOR && pItem->GetSubType() == CItemData::ARMOR_BODY)
#endif
    {
        __ClearArmorShiningEffect();

        if (shiningTable.Any() && removeRefineEffect)
        {
            __ClearArmorRefineEffect();
        }

        for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
        {
            if (strcmp(shiningTable.szShinings[i], ""))
            {
                __AttachArmorShiningEffect(i, shiningTable.szShinings[i]);
            }
        }
    }

#ifdef ENABLE_ACCE_SYSTEM
	if (pItem->GetType() == CItemData::ITEM_TYPE_COSTUME && pItem->GetSubType() == CItemData::COSTUME_ACCE)
	{
		__ClearAcceShiningEffect();

		if (shiningTable.Any() && removeRefineEffect)
		{
			ClearAcceEffect();
		}

		for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
		{
			if (strcmp(shiningTable.szShinings[i], ""))
			{
				__AttachAcceShiningEffect(i, shiningTable.szShinings[i]);
			}
		}
	}
#endif
(nota: deben modificarlo de acuerdo a la version de estolas que utilicen)

 buscar:

void CInstanceBase::__ClearArmorShiningEffect(bool detaching)
{
}
  
añadir: 
  
#ifdef ENABLE_ACCE_SYSTEM
void CInstanceBase::__AttachAcceShiningEffect(int effectIndex, const char* effectFileName, const char* boneName)
{
	if (IsAffect(AFFECT_INVISIBILITY))
	{
		return;
	}
	if (effectIndex >= CItemData::ITEM_SHINING_MAX_COUNT)
	{
		return;
	}
	if (!strcmp(boneName, ""))
	{
		Tracef("Empty bone name for attaching Aura shining. Effect Index: %i, EffectFileName: %s", effectIndex, effectFileName);
		return;
	}
	CEffectManager::Instance().RegisterEffect(effectFileName, false, false);
	m_acceShiningEffects[effectIndex] = m_GraphicThingInstance.AttachEffectByName(0, boneName, effectFileName);
}

void CInstanceBase::__ClearAcceShiningEffect(bool detaching)
{
	if (detaching)
	{
		for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
		{
			__DetachEffect(m_acceShiningEffects[i]);
		}
	}
#ifdef __cplusplus < 199711L
	memset(&m_acceShiningEffects, 0, sizeof(m_acceShiningEffects));
#else
	m_acceShiningEffects = {};
#endif
}
#endif

ahora abran su archivo de InstanceBase.h
 

buscar:

		void	__GetShiningEffect(CItemData* pItem);
		void	__ClearWeaponShiningEffect(bool detaching = true);
		void	__ClearArmorShiningEffect(bool detaching = true);

añadir

		void	__ClearAcceShiningEffect(bool detaching = true);



buscar:


		void	__AttachArmorShiningEffect(int effectIndex, const char* effectFileName, const char* boneName = "Bip01");


añadir:

		void	__AttachAcceShiningEffect(int effectIndex, const char* effectFileName, const char* boneName = "Bip01");


deberia quedar asi


#ifdef ENABLE_SHINING_SYSTEM
		void	__GetShiningEffect(CItemData* pItem);
		void	__ClearWeaponShiningEffect(bool detaching = true);
		void	__ClearArmorShiningEffect(bool detaching = true);
		void	__ClearAcceShiningEffect(bool detaching = true);
		void	__AttachWeaponShiningEffect(int effectIndex, const char* effectFileName, const char* boneName = "Bip01");
		void	__AttachArmorShiningEffect(int effectIndex, const char* effectFileName, const char* boneName = "Bip01");
		void	__AttachAcceShiningEffect(int effectIndex, const char* effectFileName, const char* boneName = "Bip01");
#endif


buscar:

		DWORD					m_armorShiningEffects[CItemData::ITEM_SHINING_MAX_COUNT];


añadir:

		DWORD					m_acceShiningEffects[CItemData::ITEM_SHINING_MAX_COUNT];

deberia quedar asi:

#ifdef ENABLE_SHINING_SYSTEM
		DWORD					m_weaponShiningEffects[2][CItemData::ITEM_SHINING_MAX_COUNT];
		DWORD					m_armorShiningEffects[CItemData::ITEM_SHINING_MAX_COUNT];
		DWORD					m_acceShiningEffects[CItemData::ITEM_SHINING_MAX_COUNT];
#endif


espero que sea de utilidad, saludos a toda la comunidad.

post data: a todos los miembros, cuando se hace un comentarios indicando que algo no es necesario, o esta mal desarrollado no es en plan de criticar, es notificando a las personas que no saben de programacion que abstengan de utilizarlo porque pueden usar algo mejor en su fuente. porque ahora esta mal decir que un codigo (sistema) publico esta bug esta mal?


 

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

Bueno simplemente mi comentario es que para muchas personas las cuales anden utilizando martysama v5.4 o files WoM2 Wonder2, este codigo no les va a funcionar a no ser que el experto Dead haya subido la solucion que por lo que estoy viendo no ya que el sistema de alas viene con un pequeño error en InstanceBase.cpp lo cual no reconoce una funcion que pide el Shani, ocasionando que las alas no se visualicen xD

 

2-. El problema del sistema Shani es que si quieres implementar alas con otro tipo de posiciones en el modelaje tocaria cambiar de esa linea el Bip01 por la que el ala o estola precise.

 

Para ello recomiendo usar el codigo de siempre con el que se comenzaron a implementar las alas mse y dejar el Shanni solamente para las Armas 3D y Efectos de Armaduras

 

Pero bueno cada quien es libre de hacerlo como desee xD

 

Y ultima cosa revisen el codigo ya que el sistema Shining viene con 1 problema el cual las armas 3D en las skines no funcionan ya que solamente el sistema lo reconoce como arma, a no ser que DEAD lo haya fixeado revisando todos los comentarios del foro donde saco el sistema

 

2-. El problema del sistema Shani es que si quieres implementar alas con otro tipo de posiciones en el modelaje tocaria cambiar de esa linea el Bip01 por la que el ala o estola precise.

#ifdef ENABLE_SHINING_SYSTEM
		void	__AttachAcceShiningEffect(int effectIndex, const char* effectFileName, const char* boneName = "Bip01");
#endif

 

PD:

Y ahora vas y dices que no lo haces asi y que lo metistes de otra forma y que no es necesario todo lo que comente

Link to comment
Share on other sites

hace 37 minutos, MiGueLiT0 dijo:

buen post, la unica pereza es que si ya tienes añadidos en 3d es añadirlas al block de notas :v

 

Para ello prefiero agregarlas en playersettingmodule y ir poniendo sus posiciones y rutas de envez de estar jodido con este sistema el cual hay muchas alas que no permiten que lleven el Bip01 y precisen Bip01 Spine2. 

 

Lo bueno de agregarlas como yo publique es que puedes ponerla de todas las formas que quieras y asi ahorrarte implementar este sistema

Link to comment
Share on other sites

hace 1 hora, Pegasus dijo:

Bueno simplemente mi comentario es que para muchas personas las cuales anden utilizando martysama v5.4 o files WoM2 Wonder2, este codigo no les va a funcionar a no ser que el experto Dead haya subido la solucion que por lo que estoy viendo no ya que el sistema de alas viene con un pequeño error en InstanceBase.cpp lo cual no reconoce una funcion que pide el Shani, ocasionando que las alas no se visualicen xD

 

2-. El problema del sistema Shani es que si quieres implementar alas con otro tipo de posiciones en el modelaje tocaria cambiar de esa linea el Bip01 por la que el ala o estola precise.

 

Para ello recomiendo usar el codigo de siempre con el que se comenzaron a implementar las alas mse y dejar el Shanni solamente para las Armas 3D y Efectos de Armaduras

 

Pero bueno cada quien es libre de hacerlo como desee xD

 

Y ultima cosa revisen el codigo ya que el sistema Shining viene con 1 problema el cual las armas 3D en las skines no funcionan ya que solamente el sistema lo reconoce como arma, a no ser que DEAD lo haya fixeado revisando todos los comentarios del foro donde saco el sistema

 

2-. El problema del sistema Shani es que si quieres implementar alas con otro tipo de posiciones en el modelaje tocaria cambiar de esa linea el Bip01 por la que el ala o estola precise.

#ifdef ENABLE_SHINING_SYSTEM
		void	__AttachAcceShiningEffect(int effectIndex, const char* effectFileName, const char* boneName = "Bip01");
#endif

 

PD:

Y ahora vas y dices que no lo haces asi y que lo metistes de otra forma y que no es necesario todo lo que comente

especifique a la versiones de estolas mas usadas si deseas que se adapte a la fuente que usas y no sabes como, paga por soporte

Link to comment
Share on other sites

para aquellos que presente un posible but de visualizaciones con atuendos, pueden dejarme un mensaje aqui en el foro o una mencion en ayudas o preguntas en el servidor del discord de la comunidad y en lo que tenga tiempo disponible le ayudare a resolver cualquier fallo

Link to comment
Share on other sites

hace 1 minuto, DeadOfLove dijo:

especifique a la versiones de estolas mas usadas si deseas que se adapte a la fuente que usas y no sabes como, paga por soporte

Campeon yo a ti no te tengo que pagar ya que ese sistema lo tengo full fixeado por mi

 

Ya pronto subire una guia mas actualizada de ese sistema y mejor explicada para que personas como tu no tengan que estar cobrando los nuevos por meter un codigo en 5 minutos

 

O como dijistes tan crack que eres coge y crea el codigo sin errores de envez de cogerlos de foros los cuales estan dañados

Link to comment
Share on other sites

hace 13 minutos, Pegasus dijo:

Campeon yo a ti no te tengo que pagar ya que ese sistema lo tengo full fixeado por mi

 

Ya pronto subire una guia mas actualizada de ese sistema y mejor explicada para que personas como tu no tengan que estar cobrando los nuevos por meter un codigo en 5 minutos

 

O como dijistes tan crack que eres coge y crea el codigo sin errores de envez de cogerlos de foros los cuales estan dañados

se nota tanto que desbordas conocimiento y demuestras saber de lo que estas hablando, post data si alguien necesita ayuda dije que daria soporte gratuito para el sistema base, mas no adaptaciones a bases en especifico.
porque no recomiendo utilizar bases mal trabajadas publicas eso solo trae problemas a las personas que no tienen conocimientos amplios en el area de desarrollo y no pueden arreglarlas y se mantiene en el ciclo sin fin de servidores que cierran por no poder solucionar bugs que encuentran, como dijo un miembro del foro bastante antiguo aqui.
se recomienda comenzar desde 0 con una base limpia como marty.
saludos a naxo siempre activo y dando comentarios positivos. 
y por ultimo yo no dije que tu aporte estuviera dañado, solo que no era necesario usarlo
evita comentarios innecesarios a criticas destructivas ultima vez que me tomare tiempo en responderte asi que no gastes tiempo en algo que solo termina dejando que hablar hacia tu perosna. buena suerte en tus proyectos y que sean exitosos.

Link to comment
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.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...