Jump to content

[C++ ] Não poder usar pot's em duelo


Marco
 Share

Recommended Posts

Boas, deixo aqui um pequeno tutorial para desabilitar o uso de pot's e elixires em duelo :)
Espero que sirva para alguém,

game/src
Ficheiro: char_item.cpp

1.) Add header:
    #include "pvp.h"

2.) Search:
    case USE_POTION:

3.) Add after:           
    if (CPVPManager::instance().IsFighting(GetPlayerID()))             
    {
        switch (item->GetVnum())
        {
            case 27001:
            case 27002:
            case 27003:
            case 27004:
            case 27005:
            case 27006:
            ChatPacket(CHAT_TYPE_INFO, "You can not use potions in a duel!");
            return false;
            break;
        }
    }


game/src/
Ficheiro: pvp.cpp

1.) Search:
    void CPVPManager::ConnectEx(LPCHARACTER pkChr, bool bDisconnect)

2.) Add before:
bool CPVPManager::IsFighting(LPCHARACTER pkChr)
{
    if (!pkChr)
        return false;
 
    return IsFighting(pkChr->GetPlayerID());
}
 
bool CPVPManager::IsFighting(DWORD dwPID)
{
    CPVPSetMap::iterator it = m_map_pkPVPSetByID.find(dwPID);
 
    if (it == m_map_pkPVPSetByID.end())
        return false;
 
    TR1_NS::unordered_set<CPVP*>::iterator it2 = it->second.begin();
 
    while (it2 != it->second.end())
    {
        CPVP * pkPVP = *it2++;
        if (pkPVP->IsFight())
            return true;
    }
 
    return false;
}
      
game/src
Ficheiro: pvp.h

1.) Search:
    virtual ~CPVPManager();

2.) Add after:
    bool            IsFighting(LPCHARACTER pkChr);
    bool            IsFighting(DWORD dwPID);


###########################################################
############# Os pot's já estão bloqueados :D #############
###########################################################

###########################################################
# Agora vamos bloquear os elixires ( Obrigado ao Tierri ) #
###########################################################

game/src
Ficheiro: char_item.cpp
      
1.) Search:
	case ITEM_AUTO_HP_RECOVERY_S:
							case ITEM_AUTO_HP_RECOVERY_M:
							case ITEM_AUTO_HP_RECOVERY_L:
							case ITEM_AUTO_HP_RECOVERY_X:
							case ITEM_AUTO_SP_RECOVERY_S:
							case ITEM_AUTO_SP_RECOVERY_M:
							case ITEM_AUTO_SP_RECOVERY_L:
							case ITEM_AUTO_SP_RECOVERY_X:
							case REWARD_BOX_ITEM_AUTO_SP_RECOVERY_XS:
							case REWARD_BOX_ITEM_AUTO_SP_RECOVERY_S:
							case REWARD_BOX_ITEM_AUTO_HP_RECOVERY_XS:
							case REWARD_BOX_ITEM_AUTO_HP_RECOVERY_S:
							case FUCKING_BRAZIL_ITEM_AUTO_SP_RECOVERY_S:
							case FUCKING_BRAZIL_ITEM_AUTO_HP_RECOVERY_S:
								{
									if (CArenaManager::instance().IsArenaMap(GetMapIndex()) == true)
									{
										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("´ë·ÃÀå¿¡¼­ »ç¿ëÇÏ½Ç ¼ö ¾ø½À´Ï´Ù."));
										return false;
									}
2.) Add after:
   if (CPVPManager::instance().IsFighting(GetPlayerID())){
	ChatPacket(CHAT_TYPE_INFO, "You can not use potions in a duel!");
	return false;}

 

Relativamente a créditos não irei dar o meu nome, pois não fui eu que fiz tal coisa e obtive através de um amigo,  um especial obrigado ao @Tierri Lopes pela parte dos elixires.

  • Like 2
Link to comment
Share on other sites

Caso também queiras bloquear os elixires, em char_item.cpp, procura por:

case ITEM_AUTO_HP_RECOVERY_S:
							case ITEM_AUTO_HP_RECOVERY_M:
							case ITEM_AUTO_HP_RECOVERY_L:
							case ITEM_AUTO_HP_RECOVERY_X:
							case ITEM_AUTO_SP_RECOVERY_S:
							case ITEM_AUTO_SP_RECOVERY_M:
							case ITEM_AUTO_SP_RECOVERY_L:
							case ITEM_AUTO_SP_RECOVERY_X:
							case REWARD_BOX_ITEM_AUTO_SP_RECOVERY_XS:
							case REWARD_BOX_ITEM_AUTO_SP_RECOVERY_S:
							case REWARD_BOX_ITEM_AUTO_HP_RECOVERY_XS:
							case REWARD_BOX_ITEM_AUTO_HP_RECOVERY_S:
							case FUCKING_BRAZIL_ITEM_AUTO_SP_RECOVERY_S:
							case FUCKING_BRAZIL_ITEM_AUTO_HP_RECOVERY_S:
								{
									if (CArenaManager::instance().IsArenaMap(GetMapIndex()) == true)
									{
										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("´ë·ÃÀå¿¡¼­ »ç¿ëÇÏ½Ç ¼ö ¾ø½À´Ï´Ù."));
										return false;
									}

Adiciona isto a seguir:

if (CPVPManager::instance().IsFighting(GetPlayerID())){
	ChatPacket(CHAT_TYPE_INFO, "You can not use potions in a duel!");
	return false;}

 

  • Like 1
Link to comment
Share on other sites

7 horas atrás, Tierri Lopes disse:

Caso também queiras bloquear os elixires, em char_item.cpp, procura por:


case ITEM_AUTO_HP_RECOVERY_S:
							case ITEM_AUTO_HP_RECOVERY_M:
							case ITEM_AUTO_HP_RECOVERY_L:
							case ITEM_AUTO_HP_RECOVERY_X:
							case ITEM_AUTO_SP_RECOVERY_S:
							case ITEM_AUTO_SP_RECOVERY_M:
							case ITEM_AUTO_SP_RECOVERY_L:
							case ITEM_AUTO_SP_RECOVERY_X:
							case REWARD_BOX_ITEM_AUTO_SP_RECOVERY_XS:
							case REWARD_BOX_ITEM_AUTO_SP_RECOVERY_S:
							case REWARD_BOX_ITEM_AUTO_HP_RECOVERY_XS:
							case REWARD_BOX_ITEM_AUTO_HP_RECOVERY_S:
							case FUCKING_BRAZIL_ITEM_AUTO_SP_RECOVERY_S:
							case FUCKING_BRAZIL_ITEM_AUTO_HP_RECOVERY_S:
								{
									if (CArenaManager::instance().IsArenaMap(GetMapIndex()) == true)
									{
										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("´ë·ÃÀå¿¡¼­ »ç¿ëÇÏ½Ç ¼ö ¾ø½À´Ï´Ù."));
										return false;
									}

Adiciona isto a seguir:


if (CPVPManager::instance().IsFighting(GetPlayerID())){
	ChatPacket(CHAT_TYPE_INFO, "You can not use potions in a duel!");
	return false;}

 

Editei o tópico e add essa parte :) Obrigado génio 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...