Jump to content
Sign in to follow this  
LuizFernando

GetType

Recommended Posts

Boas,

Alguém sabe como mudo essa linha para funcionar apenas para traje e cabelo invés de arma e armadura?

//if ((item2->GetType() == ITEM_WEAPON)
                                                //|| (item2->GetType() == ITEM_ARMOR && item2->GetSubType() == ARMOR_BODY))

Share this post


Link to post
Share on other sites

Não testei, mas acho que é isto: 

Please login or register to see this code.

 

Podes por exemplo ir a source/db/ProtoReader.cpp  e ver o nome dos type e SubType que tu usas na tua source

Share this post


Link to post
Share on other sites

Estou utilizando essas funções?

Gostaria que adiciona-se e roda-se apenas em traje e cabelos.

// ¿¬Àç°æ Ư¼öó¸®
                                        // Àý´ë·Î ¿¬Àç°¡ Ãß°¡ ¾ÈµÉ°Å¶ó ÇÏ¿© Çϵå ÄÚµùÇÔ.
                                        if (item->GetVnum() == 71151 || item->GetVnum() == 76023)
                                        {
                                            if ( (item2->GetType() == ITEM_COSTUME && item2->GetSubType() == COSTUME_BODY) || (item2->GetType() == ITEM_COSTUME && item2->GetSubType() == COSTUME_HAIR))
                                            //if ((item2->GetType() == ITEM_WEAPON)
                                                //|| (item2->GetType() == ITEM_ARMOR && item2->GetSubType() == ARMOR_BODY))
                                            {
                                                bool bCanUse = true;
                                                for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)
                                                {
                                                    if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) > 40)
                                                    {
                                                        bCanUse = false;
                                                        break;
                                                    }
                                                }
                                                if (false == bCanUse)
                                                {
                                                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Àû¿ë ·¹º§º¸´Ù ³ô¾Æ »ç¿ëÀÌ ºÒ°¡´ÉÇÕ´Ï´Ù."));
                                                    break;
                                                }
                                            }
                                            else
                                            {
                                                ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¹«±â¿Í °©¿Ê¿¡¸¸ »ç¿ë °¡´ÉÇÕ´Ï´Ù."));
                                                break;
                                            }
                                        }
                                        item2->ChangeAttribute();
                                    }

                                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¼Ó¼ºÀ» º¯°æÇÏ¿´½À´Ï´Ù."));
                                    {
                                        char buf[21];
                                        snprintf(buf, sizeof(buf), "%u", item2->GetID());
                                        LogManager::instance().ItemLog(this, item, "CHANGE_ATTRIBUTE", buf);
                                    }

                                    item->SetCount(item->GetCount() - 1);
                                    break;

                                case USE_ADD_ATTRIBUTE :
                                    if (item2->GetAttributeSetIndex() == -1)
                                    {
                                        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¼Ó¼ºÀ» º¯°æÇÒ ¼ö ¾ø´Â ¾ÆÀÌÅÛÀÔ´Ï´Ù."));
                                        return false;
                                    }

                                    if (item2->GetAttributeCount() < 4)
                                    {
                                        // ¿¬Àç°¡ Ư¼öó¸®
                                        // Àý´ë·Î ¿¬Àç°¡ Ãß°¡ ¾ÈµÉ°Å¶ó ÇÏ¿© Çϵå ÄÚµùÇÔ.
                                        if (item->GetVnum() == 71152 || item->GetVnum() == 76024)
                                        {
                                            if ( (item2->GetType() == ITEM_COSTUME && item2->GetSubType() == COSTUME_BODY) || (item2->GetType() == ITEM_COSTUME && item2->GetSubType() == COSTUME_HAIR))
                                            //if ((item2->GetType() == ITEM_WEAPON)
                                                //|| (item2->GetType() == ITEM_ARMOR && item2->GetSubType() == ARMOR_BODY))
                                            {
                                                bool bCanUse = true;
                                                for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)
                                                {
                                                    if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) > 40)
                                                    {
                                                        bCanUse = false;
                                                        break;
                                                    }
                                                }
                                                if (false == bCanUse)
                                                {
                                                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Àû¿ë ·¹º§º¸´Ù ³ô¾Æ »ç¿ëÀÌ ºÒ°¡´ÉÇÕ´Ï´Ù."));
                                                    break;
                                                }
                                            }
                                            else
                                            {
                                                ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¹«±â¿Í °©¿Ê¿¡¸¸ »ç¿ë °¡´ÉÇÕ´Ï´Ù."));
                                                break;
                                            }
                                        }

Share this post


Link to post
Share on other sites

Eu de todo que não uso nem nunca usei bónus nos disfarces.... e sinceramente acho que nunca irei usar. Por isso não testei isto a fundo  mas esta a funcionar!

 

####source\char_item.cpp

 

Procura por:    case USE_ADD_ATTRIBUTE2:

mais abaixo poderás encontrar:

Please login or register to see this spoiler.

<< Please login or register to see this link. >>

 

 

Testa tudo, tal como te disse... eu nunca usei nem nunca irei usar bónus nos disfarces!

 

 

edit:  em ambos os itens eu desactivei a função de verificar o nível em que estas a adicionar os rodares ou a rodar os itens.

Caso queiras repor\alterar o nível....

Altera:

if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) != 0)

para

if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) > 40)

Edited by Aeglon

Share this post


Link to post
Share on other sites

Funcionou, sendo que quando coloco o aprimoramento em cima do traje invés de ficar verde ele fica vermelho. MAs funcionou 100%

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.

Our website is made possible by displaying online advertisements to our visitors.
Please consider supporting us by disabling your ad blocker.
You will be able to see content when you disable your adblocker and enable javascript.