Jump to content

Shisui

Former Staff
  • Posts

    977
  • Joined

  • Last visited

  • Days Won

    15
  • Feedback

    0%

Posts posted by Shisui

  1. bool CPVPManager::CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim)

    Spoiler
    
    bool CPVPManager::CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim)
    {
    	switch (pkVictim->GetCharType())
    	{
    		case CHAR_TYPE_NPC:
    		case CHAR_TYPE_WARP:
    		case CHAR_TYPE_GOTO:
    			return false;
    	}
    
    	if (pkChr == pkVictim)  // ³»°¡ ³¯ Ä¥¶ó°í ÇÏ³× -_-
    		return false;
    
    	if (pkVictim->IsNPC() && pkChr->IsNPC() && !pkChr->IsGuardNPC())
    		return false;
    
    	if( true == pkChr->IsHorseRiding() )
    	{
    		if( pkChr->GetHorseLevel() > 0 && 1 == pkChr->GetHorseGrade() ) 
    			return false;
    	}
    	else
    	{
    		switch( pkChr->GetMountVnum() )
    		{
    			case 0:
    			case 20030:
    			case 20110:
    			case 20111:
    			case 20112:
    			case 20113:
    			case 20114:
    			case 20115:
    			case 20116:
    			case 20117:
    			case 20118:
    				//½Å±Ô Å»°Í °í±Þ
    			case 20205:
    			case 20206:
    			case 20207:
    			case 20208:
    			case 20209:
    			case 20210:
    			case 20211:
    			case 20212:
    			case 20119:		// ¶ó¸¶´Ü È渶
    			case 20219:		// ¶ó¸¶´Ü È渶 Ŭ·Ð (ÇÒ·ÎÀ©¿ë)
    			case 20220:		// Å©¸®½º¸¶½º Å»°Í
    			case 20221:		// Àü°© ¹é¿õ
    			case 20222:		// Àü°© ÆÒ´õ
    			case 20120:
    			case 20121:
    			case 20122:
    			case 20123:
    			case 20124:
    			case 20125:
    			case 20214:		// ³­ÆøÇÑ Àü°©¼ø¼ø·Ï	
    			case 20215:		// ¿ë¸ÍÇÑ Àü°©¼ø¼ø·Ï	
    			case 20217:		// ³­ÆøÇÑ Àü°©¾Ï¼ø·Ï	
    			case 20218:		// ¿ë¸ÍÇÑ Àü°©¾Ï¼ø·Ï
    			case 20224:		// ³­ÆøÇÑ Àü°©¼®·æÀÚ
    			case 20225:		// ¿ë¸ÍÇÑ Àü°©¼®·æÀÚ
    			case 20226:		//	À¯´ÏÄÜ
    			case 20227:
    			case 20231:
    			case 20232:
    				break;
    
    			default:
    				return false;
    		}
    	}
    
    	if (pkVictim->IsNPC() || pkChr->IsNPC())
    	{
    		return true;
    	}
    
    	if (pkVictim->IsObserverMode() || pkChr->IsObserverMode())
    		return false;
    
    	{
    		BYTE bMapEmpire = SECTREE_MANAGER::instance().GetEmpireFromMapIndex(pkChr->GetMapIndex());
    
    		if ( (pkChr->GetPKMode() == PK_MODE_PROTECT) && (pkChr->GetEmpire() == bMapEmpire) ||
    				(pkVictim->GetPKMode() == PK_MODE_PROTECT) && (pkVictim->GetEmpire() == bMapEmpire) )
    		{
    			return false;
    		}
    	}
    
    	if (pkChr->GetEmpire() != pkVictim->GetEmpire())
    	{
    		if ( LC_IsYMIR() == true || LC_IsKorea() == true )
    		{
    			if ( pkChr->GetPKMode() == PK_MODE_PROTECT || pkVictim->GetPKMode() == PK_MODE_PROTECT )
    			{
    				return false;
    			}
    		}
    
    		return true;
    	}
    
    	bool beKillerMode = false;
    
    	if (pkVictim->GetParty() && pkVictim->GetParty() == pkChr->GetParty())
    	{
    		return false;
    		// Cannot attack same party on any pvp model
    	}
    	else
    	{
    		if (pkVictim->IsKillerMode())
    		{
    			return true;
    		}
    
    		if (pkChr->GetAlignment() < 0 && pkVictim->GetAlignment() >= 0)
    		{
    		    if (g_protectNormalPlayer)
    		    {
    			// ¹ü¹ýÀÚ´Â ÆòÈ­¸ðµåÀÎ ÂøÇÑ»ç¶÷À» °ø°ÝÇÒ ¼ö ¾ø´Ù.
    			if (PK_MODE_PEACE == pkVictim->GetPKMode())
    			    return false;
    		    }
    		}
    
    
    		switch (pkChr->GetPKMode())
    		{
    			case PK_MODE_PEACE:
    			case PK_MODE_REVENGE:
    				// Cannot attack same guild
    				if (pkVictim->GetGuild() && pkVictim->GetGuild() == pkChr->GetGuild())
    					break;
    
    				if (pkChr->GetPKMode() == PK_MODE_REVENGE)
    				{
    					//if (!g_iUseLocale)
    					if (1)
    					{
    						if (pkChr->GetAlignment() < 0 && pkVictim->GetAlignment() >= 0)
    						{
    							pkChr->SetKillerMode(true);
    							return true;
    						}
    						else if (pkChr->GetAlignment() >= 0 && pkVictim->GetAlignment() < 0)
    							return true;
    					}
    					else
    					{
    						if (pkChr->GetAlignment() < 0 && pkVictim->GetAlignment() < 0)
    							break;
    						else if (pkChr->GetAlignment() >= 0 && pkVictim->GetAlignment() >= 0)
    							break;
    
    						beKillerMode = true;
    					}
    				}
    				break;
    
    			case PK_MODE_GUILD:
    				// Same implementation from PK_MODE_FREE except for attacking same guild
    				if (!pkChr->GetGuild() || (pkVictim->GetGuild() != pkChr->GetGuild()))
    				{
    					if (1)
    					//if (!g_iUseLocale)
    					{
    						if (pkVictim->GetAlignment() >= 0)
    							pkChr->SetKillerMode(true);
    						else if (pkChr->GetAlignment() < 0 && pkVictim->GetAlignment() < 0)
    							pkChr->SetKillerMode(true);
    
    						return true;
    					}
    					else
    						beKillerMode = true;
    				}
    				break;
    
    			case PK_MODE_FREE:
    				//if (!g_iUseLocale)
    				if (1)
    				{
    					if (pkVictim->GetAlignment() >= 0)
    						pkChr->SetKillerMode(true);
    					else if (pkChr->GetAlignment() < 0 && pkVictim->GetAlignment() < 0)
    						pkChr->SetKillerMode(true);
    
    					return true;
    				}
    				else
    					beKillerMode = true;
    				break;
    		}
    	}
    
    	CPVP kPVP(pkChr->GetPlayerID(), pkVictim->GetPlayerID());
    	CPVP * pkPVP = Find(kPVP.m_dwCRC);
    
    	if (!pkPVP || !pkPVP->IsFight())
    	{
    		if (beKillerMode)
    			pkChr->SetKillerMode(true);
    
    		return (beKillerMode);
    	}
    
    	pkPVP->SetLastFightTime();
    	return true;
    }

     

     

  2. You did not understand.

    http://wiki.metin-2.com/index.php/Manual

    Those are the manuals and if you drop a manual that manual will say the skill name.

     

    Like Aura of the Sword Manual, so you just need to replace manual icon to skillbook icon.

    Spoiler
    
    50401	Three-Way Cut Manual
    50402	Sword Spin Manual
    50403	Berserk Manual
    50404	Aura of the Sword Manual
    50405	Dash Manual
    50406	Life Force Manual
    50416	Strike Manual
    50417	Bash Manual
    50418	Pounding Manual
    50419	Strong Body Manual
    50420	Sword Strike Manual
    50421	Sword Orb Manual
    50431	Ambush Manual
    50432	Fast Attack Manual
    50433	Rolling Dagger Manual
    50434	Disguise Manual
    50435	Poisonous Cloud Manual
    50436	Insidious Poison Manual
    50446	Repetitive Shot Manual
    50447	Arrow Shower Manual
    50448	Fire Arrow Manual
    50449	Feather Walk Manual
    50450	Poison Arrow Manual
    50451	Spark Manual
    50461	Finger Strike Manual
    50462	Dragon Swirl Manual
    50463	Enchanted Blade Manual
    50464	Fear Manual
    50465	Enchanted Armour Manual
    50466	Dispel Manual
    50476	Dark Strike Manual
    50477	Flame Strike Manual
    50478	Flame Spirit Manual
    50479	Dark Protection Manual
    50480	Spirit Strike Manual
    50481	Dark Orb Manual
    50491	Flying Talisman Manual
    50492	Shooting Dragon Manual
    50493	Dragon's Roar Manual
    50494	Blessing Manual
    50495	Reflect Manual
    50496	Dragon's Aid Manual
    50506	Lightning Throw Manual
    50507	Summon Lightning Manual
    50508	Lightning Claw Manual
    50509	Cure Manual
    50510	Swiftness Manual
    50511	Attack Manual

     

     
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.