Administrator
Administrator
  • Mesaje: 4965
    Membru din: 07 Aug 2024, 18:53
  • Reacții: 125362
  • Mesaje utile: 47
  • Status: Pe aici.. 🤠
    Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • *Descriere:

    Atunci cand mori, buff-urile de la Shaman nu vor mai disparea.

    Acestea vor ramane in continuare pe tine, pana cand le dezactivezi tu sau expira timpul.

    *Poze / Video:
    *Link download / Code:

    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.

    Nou Cum descarc de pe TeraBox?

    Afișează detalii Ascunde detalii
    • Este asemănător cu Mega.nz
    • Instalați-vă clientul lor de Download de aici
    • Faceți-vă un cont (vă puteți loga cu Facebook / Google / etc)
    • Nou Dacă nu vreți să descărcați clientul de Download, folosiți acest site
    • Gata! Acum puteți descărca resursele rapid & simplu.

    De ce folosim TeraBox?

    • Este gratuit
    • Primești 1TB de spațiu gratuit la orice cont creat!
    • Este ușor de folosit și varianta premium este foarte ieftină
    • Fișierele nu sunt șterse niciodată
    TeraBox logo
    See full signature
    Developer
    Developer
  • Mesaje: 14
    Membru din: 04 Ian 2025, 18:42
  • Reacții: 123
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Jinno
  • [ID Discord]
  • Medalii

    Avatar utilizator - _wawaaa
    Developer
    Developer

    Mesaj

    O mica imbunatatire pentru sistemul de pastrare a buff-urilor dupa moarte. Pe langa faptul ca poti alege exact ce affect-uri raman active, sunt gestionate si efectele vizuale pentru a evita problemele care pot aparea pe unele surse dupa revive.


    Locale_inc.h
    Adauga:

    Cod: Selectaţi tot

    #define KEEP_BUFFS_PVM_AFTER_DIE
    
    InstanceBase.h
    Cauta:

    Cod: Selectaţi tot

    		void __ClearAffects();
    
    Adauga:

    Cod: Selectaţi tot

    
    #ifdef KEEP_BUFFS_PVM_AFTER_DIE
    		void __HideAffectEffects();
    		void __RestoreAffectEffects();
    #endif
    

    InstanceBaseBattle.cpp
    Cauta:

    Cod: Selectaţi tot

    void CInstanceBase::Revive()
    {
    	m_isGoing=FALSE;
    	m_GraphicThingInstance.Revive();
    
    	__AttachHorseSaddle();
    
    Adauga:

    Cod: Selectaţi tot

    #ifdef KEEP_BUFFS_PVM_AFTER_DIE
    	__RestoreAffectEffects();
    #endif
    
    Cauta in functia: void CInstanceBase::Die()

    Cod: Selectaţi tot

    	////////////////////////////////////////
    	__ClearAffects();
    	////////////////////////////////////////
    
    Modifica:

    Cod: Selectaţi tot

    #ifdef KEEP_BUFFS_PVM_AFTER_DIE
    	__HideAffectEffects();
    #else
    	////////////////////////////////////////
    	__ClearAffects();
    	////////////////////////////////////////
    #endif
    
    Instance BaseEffect.cpp
    Cauta functia:

    Cod: Selectaţi tot

    void CInstanceBase::__SetNormalAffectFlagContainer(const CAffectFlagContainer& c_rkAffectFlagContainer)
    
    Adauga: INAINTE

    Cod: Selectaţi tot

    
    #ifdef KEEP_BUFFS_PVM_AFTER_DIE
    void CInstanceBase::__HideAffectEffects()
    {
    	if (IsStone())
    		return;
    	for (int i = 0; i < CAffectFlagContainer::BIT_SIZE; ++i)
    	{
    		if (m_kAffectFlagContainer.IsSet(i))
    			__SetAffect(i, false);
    	}
    }
    void CInstanceBase::__RestoreAffectEffects()
    {
    	if (IsStone())
    		return;
    	for (int i = 0; i < CAffectFlagContainer::BIT_SIZE; ++i)
    	{
    		if (m_kAffectFlagContainer.IsSet(i))
    			__SetAffect(i, true);
    	}
    }
    #endif
    

    service.h sau commondefines.h
    Adauga:

    Cod: Selectaţi tot

    #define KEEP_BUFFS_PVM_AFTER_DIE
    
    char.h
    Cauta:

    Cod: Selectaţi tot

    		void ClearAffect(bool bSave = false);
    
    Modifica:

    Cod: Selectaţi tot

    #ifdef KEEP_BUFFS_PVM_AFTER_DIE
    		void ClearAffect(bool bSave = false, bool letBuffs = false);
    #else
    		void ClearAffect(bool bSave = false);
    #endif
    
    Cauta:

    Cod: Selectaţi tot

    		bool			IsGoodAffect(BYTE bAffectType) const;
    Adauga:

    Cod: Selectaţi tot

    #ifdef KEEP_BUFFS_PVM_AFTER_DIE
    		bool			IsKeepBuffAfterDieAffect(BYTE bAffectType) const;
    #endif
    char_affect.cpp
    Cauta:

    Cod: Selectaţi tot

    void CHARACTER::ClearAffect(bool bSave)
    Modifica:

    Cod: Selectaţi tot

    #ifdef KEEP_BUFFS_PVM_AFTER_DIE
    void CHARACTER::ClearAffect(bool bSave, bool letBuffs)
    #else
    void CHARACTER::ClearAffect(bool bSave)
    #endif
    In aceasi functie, cauta:

    Cod: Selectaţi tot

    		if (bSave)
    		{
    			if ( IS_NO_CLEAR_ON_DEATH_AFFECT(pkAff->dwType) || IS_NO_SAVE_AFFECT(pkAff->dwType) )
    			{
    				++it;
    				continue;
    			}
    
    Adauga:

    Cod: Selectaţi tot

    #ifdef KEEP_BUFFS_PVM_AFTER_DIE
    			if (letBuffs && IsKeepBuffAfterDieAffect(pkAff->dwType))
    			{
    				++it;
    				continue;
    			}
    #endif
    

    Dupa functia:

    Cod: Selectaţi tot

    void CHARACTER::RemoveGoodAffect()
    {
    	[...]
    }
    
    Aici poti pune ce affect sa ramana
    Adauga:

    Cod: Selectaţi tot

    #ifdef KEEP_BUFFS_PVM_AFTER_DIE
    bool CHARACTER::IsKeepBuffAfterDieAffect(BYTE bAffectType) const
    {
    	switch (bAffectType)
    	{
    		case SKILL_HOSIN:
    		case SKILL_REFLECT:
    		case SKILL_GICHEON:
    		case SKILL_KWAESOK:
    		case SKILL_JEUNGRYEOK:
    			return true;
    	}
    	return false;
    }
    #endif
    

    char_battle.cpp
    Cauta:

    Cod: Selectaţi tot

    	SetPosition(POS_DEAD);
    	ClearAffect(true);
    
    Modifica:

    Cod: Selectaţi tot

    	SetPosition(POS_DEAD);
    #ifdef KEEP_BUFFS_PVM_AFTER_DIE
    	if (IsPC())
    		ClearAffect(true, true);
    	else
    		ClearAffect(true);
    #else
    	ClearAffect(true);
    #endif
    

    Cauta:

    Cod: Selectaţi tot

    	if (GetDesc() != NULL) {
    		itertype(m_list_pkAffect) it = m_list_pkAffect.begin();
    		while (it != m_list_pkAffect.end()) {
    			CAffect* pkAff = *it++;
    
    Adauga:

    Cod: Selectaţi tot

    #ifdef KEEP_BUFFS_PVM_AFTER_DIE
    			if (IsKeepBuffAfterDieAffect(pkAff->dwType))
    				continue;
    #endif
    

    Functia devine asa:

    Cod: Selectaţi tot

    	if (GetDesc() != NULL) {
    		itertype(m_list_pkAffect) it = m_list_pkAffect.begin();
    		while (it != m_list_pkAffect.end()) {
    			CAffect* pkAff = *it++;
    #ifdef KEEP_BUFFS_PVM_AFTER_DIE
    			if (IsKeepBuffAfterDieAffect(pkAff->dwType))
    				continue;
    #endif
    			SendAffectAddPacket(GetDesc(), pkAff);
    		}
    	}
    

    Înapoi la “Îmbunătățiri”

    Informații

    Utilizatori ce navighează pe acest forum: jezzyvictor, nourishp și 2 vizitatori

    Discord ID copiat: