1 mesaj
Membru Începător Membru Începător
  • Mesaje: 12
  • Reacții: 80
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Jinno
  • [ID Discord]
  • Contact:

    Medalii

    *Descriere:
    Mobii nu intra in safezone.

    *Poze / Video:
    https://gyazo.com/47b2c8ea9d719ca92335d771fd6b4997

    *Link download / Code:
    Code:
    /// CommonDefines.h
    #define METGUIDE_ENABLE_MOB_NO_SAFEZONE_ENTRY				// Prevents mobs and bosses from walking into ATTR_BANPK safezones; stops lure into villages
    
    ==================================================================================================
    ==================================================================================================
    ==================================================================================================
    
    /// sectree_manager.cpp
    
    // Cauta:
    bool SECTREE_MANAGER::IsMovablePosition(long lMapIndex, long x, long y)
    {
    	LPSECTREE tree = SECTREE_MANAGER::instance().Get(lMapIndex, x, y);
    
    	if (!tree)
    		return false;
    
    	return (!tree->IsAttr(x, y, ATTR_BLOCK | ATTR_OBJECT));
    }
    
    
    // Adauga:
    #ifdef METGUIDE_ENABLE_MOB_NO_SAFEZONE_ENTRY
    bool SECTREE_MANAGER::IsMobWalkablePosition(long lMapIndex, long x, long y)
    {
    	if (!IsMovablePosition(lMapIndex, x, y))
    		return false;
    
    	LPSECTREE tree = SECTREE_MANAGER::instance().Get(lMapIndex, x, y);
    	if (!tree)
    		return false;
    
    	return !tree->IsAttr(x, y, ATTR_BANPK);
    }
    #endif
    
    ===================================================================================================
    ==================================================================================================
    ==================================================================================================
    
    /// sectree_manager.h
    
    // Cauta:
    		bool		GetMovablePosition(long lMapIndex, long x, long y, PIXEL_POSITION & pos);
    		bool		IsAttackablePosition(long lMapIndex, long x, long y);
    
    
    // Adauga:
    #ifdef METGUIDE_ENABLE_MOB_NO_SAFEZONE_ENTRY
    		bool		IsMobWalkablePosition(long lMapIndex, long x, long y);
    #endif
    
    ==================================================================================================
    ==================================================================================================
    ==================================================================================================
    
    /// char.cpp
    
    // Cauta:
    bool CHARACTER::Goto(long x, long y)
    {
    
    
    // Adauga:
    #ifdef METGUIDE_ENABLE_MOB_NO_SAFEZONE_ENTRY
    	if (IsMonster() && !SECTREE_MANAGER::instance().IsMobWalkablePosition(GetMapIndex(), x, y))
    		return false;
    #endif
    
    
    // Cauta:
    bool CHARACTER::Move(long x, long y)
    {
    	if (GetX() == x && GetY() == y)
    		return true;
    
    
    // Adauga:
    #ifdef METGUIDE_ENABLE_MOB_NO_SAFEZONE_ENTRY
    	if (IsMonster())
    	{
    		if (!SECTREE_MANAGER::instance().IsMobWalkablePosition(GetMapIndex(), x, y))
    		{
    			Stop();
    			Return();
    			return false;
    		}
    	}
    #endif
    
    
    // Cauta:
    	}
    	// END_OF_TRENT_MONSTER
    
    	long x = pkChr->GetX();
    	long y = pkChr->GetY();
    
    
    // Adauga:
    #ifdef METGUIDE_ENABLE_MOB_NO_SAFEZONE_ENTRY
    	if (IsMonster())
    	{
    		LPSECTREE pkTargetTree = pkChr->GetSectree();
    		if (pkTargetTree && pkTargetTree->IsAttr(x, y, ATTR_BANPK))
    		{
    			SetVictim(NULL);
    			Return();
    			return true;
    		}
    	}
    #endif
    
    
    // Cauta:
    			if (0 == (tree->GetAttribute(dx, dy) & (ATTR_BLOCK | ATTR_OBJECT)))
    				break;
    
    
    // Modifica:
    			if (0 == (tree->GetAttribute(dx, dy) & (ATTR_BLOCK | ATTR_OBJECT
    #ifdef METGUIDE_ENABLE_MOB_NO_SAFEZONE_ENTRY
    			 | ATTR_BANPK
    #endif
    			)))
    				break;
    
    
    ==================================================================================================
    ==================================================================================================
    ==================================================================================================
    
    /// char_state.cpp
    
    // Cauta:
    				if (!SECTREE_MANAGER::instance().IsMovablePosition(GetMapIndex(), GetX() + (int) fx*j/100, GetY() + (int) fy*j/100))
    
    
    // Modifica:
    #ifdef METGUIDE_ENABLE_MOB_NO_SAFEZONE_ENTRY
    				if (!SECTREE_MANAGER::instance().IsMobWalkablePosition(GetMapIndex(), GetX() + (int) fx*j/100, GetY() + (int) fy*j/100))
    #else
    				if (!SECTREE_MANAGER::instance().IsMovablePosition(GetMapIndex(), GetX() + (int) fx*j/100, GetY() + (int) fy*j/100))
    #endif
    
    
    // Cauta:
    				if (!(SECTREE_MANAGER::instance().IsMovablePosition(GetMapIndex(), GetX() + (int) fx, GetY() + (int) fy)
    					&& SECTREE_MANAGER::instance().IsMovablePosition(GetMapIndex(), GetX() + (int) fx / 2, GetY() + (int) fy / 2)))
    
    
    // Modifica:
    #ifdef METGUIDE_ENABLE_MOB_NO_SAFEZONE_ENTRY
    				if (!(SECTREE_MANAGER::instance().IsMobWalkablePosition(GetMapIndex(), GetX() + (int) fx, GetY() + (int) fy)
    					&& SECTREE_MANAGER::instance().IsMobWalkablePosition(GetMapIndex(), GetX() + (int) fx / 2, GetY() + (int) fy / 2)))
    #else
    				if (!(SECTREE_MANAGER::instance().IsMovablePosition(GetMapIndex(), GetX() + (int) fx, GetY() + (int) fy)
    					&& SECTREE_MANAGER::instance().IsMovablePosition(GetMapIndex(), GetX() + (int) fx / 2, GetY() + (int) fy / 2)))
    #endif
    
    
    // Cauta:
    			if (!(SECTREE_MANAGER::instance().IsMovablePosition(GetMapIndex(), GetX() + (int) fx, GetY() + (int) fy)
    						&& SECTREE_MANAGER::instance().IsMovablePosition(GetMapIndex(), GetX() + (int) fx/2, GetY() + (int) fy/2)))
    
    // Modifica:
    #ifdef METGUIDE_ENABLE_MOB_NO_SAFEZONE_ENTRY
    			if (!(SECTREE_MANAGER::instance().IsMobWalkablePosition(GetMapIndex(), GetX() + (int) fx, GetY() + (int) fy)
    						&& SECTREE_MANAGER::instance().IsMobWalkablePosition(GetMapIndex(), GetX() + (int) fx/2, GetY() + (int) fy/2)))
    #else
    			if (!(SECTREE_MANAGER::instance().IsMovablePosition(GetMapIndex(), GetX() + (int) fx, GetY() + (int) fy)
    						&& SECTREE_MANAGER::instance().IsMovablePosition(GetMapIndex(), GetX() + (int) fx/2, GetY() + (int) fy/2)))
    #endif
    
    
    // Cauta:
    			if (GetRaceNum() == 2191 && number(1, 20) == 1 && get_dword_time() - m_pkMobInst->m_dwLastWarpTime > 1000)
    			{
    				float fx, fy;
    				GetDeltaByDegree(victim->GetRotation(), 400, &fx, &fy);
    				long new_x = victim->GetX() + (long)fx;
    				long new_y = victim->GetY() + (long)fy;
    
    // Adauga:
    #ifdef METGUIDE_ENABLE_MOB_NO_SAFEZONE_ENTRY
    				if (!SECTREE_MANAGER::instance().IsMobWalkablePosition(victim->GetMapIndex(), new_x, new_y))
    					return;
    #endif
    
    
    // Cauta: in void CHARACTER::StateBattle()
    
    	if (IsStun())
    		return;
    
    	LPCHARACTER victim = GetVictim();
    
    
    // Adauga:
    
    #ifdef METGUIDE_ENABLE_MOB_NO_SAFEZONE_ENTRY
    	if (victim)
    	{
    		LPSECTREE pkVictimTree = victim->GetSectree();
    		if (pkVictimTree && pkVictimTree->IsAttr(victim->GetX(), victim->GetY(), ATTR_BANPK))
    		{
    			SetVictim(NULL);
    			Return();
    			m_dwStateDuration = PASSES_PER_SEC(1);
    			return;
    		}
    	}
    	if (IsMonster() && GetSectree() && GetSectree()->IsAttr(GetX(), GetY(), ATTR_BANPK))
    	{
    		SetVictim(NULL);
    		Return();
    		m_dwStateDuration = PASSES_PER_SEC(1);
    		return;
    	}
    #endif
    
    ==================================================================================================
    ==================================================================================================
    ==================================================================================================
    
    /// trigger.cpp
    
    // Cauta: class FuncFindMobVictim in bool operator () (LPENTITY ent)
    
    			if (pkChr->IsNPC())
    			{
    				if ( !pkChr->IsMonster() || !m_pkChr->IsAttackMob() || m_pkChr->IsAggressive()  )
    					return false;
    
    			}
    
    			if (pkChr->IsDead())
    				return false;
    
    // Adauga:
    
    #ifdef METGUIDE_ENABLE_MOB_NO_SAFEZONE_ENTRY
    			{
    				LPSECTREE pkVictimTree = pkChr->GetSectree();
    				if (pkVictimTree && pkVictimTree->IsAttr(pkChr->GetX(), pkChr->GetY(), ATTR_BANPK))
    					return false;
    			}
    #endif
    
    
    *Link scanare VirusTotal (obligatoriu):

    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

    Creează-ți un cont sau autentifică-te pentru a participa la discuție

    Trebuie să fii membru pentru a răspunde

    Creează-ți un cont

    Membrii pot crea subiecte noi și pot descărca resurse Metin2 Gratuit!


    Te poți înregistra sau conecta rapid utilizând contul tău de Discord, Github sau Google.

    Înregistrare

    Autentifică-te

    Înapoi la “FIX-uri”

    Informații

    Utilizatori ce navighează pe acest forum: 0NeXuS0, LSW, RaKu, robertm99_ și 7 vizitatori

    Discord ID copiat: