Jump to content

GetType


LuizFernando
 Share

Recommended Posts

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;
                                            }
                                        }

Link to comment
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:

Spoiler

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

 

altera para:

Spoiler

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

 

irá ficar assim:  << print >>

 

 

Procura por:        if (item->GetVnum() == 71151 || item->GetVnum() == 76023)

altera a função para:

Spoiler

										if (item->GetVnum() == 71151 || item->GetVnum() == 76023)
										{
											// if ((item2->GetType() == ITEM_WEAPON) || (item2->GetType() == ITEM_ARMOR && item2->GetSubType() == ARMOR_BODY))
											if ((item2->GetType() == ITEM_COSTUME && item2->GetSubType() == COSTUME_BODY) || (item2->GetType() == ITEM_COSTUME && item2->GetSubType() == COSTUME_HAIR) )
											{
												bool bCanUse = true;
												for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)
												{
													if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) != 0)
													{
														bCanUse = false;
														break;
													}
												}
												if (false == bCanUse)
												{
													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Àû¿ë ·¹º§º¸´Ù ³ô¾Æ »ç¿ëÀÌ ºÒ°¡´ÉÇÕ´Ï´Ù."));
													break;
												}
											}
											else
											{
												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¹«±â¿Í °©¿Ê¿¡¸¸ »ç¿ë °¡´ÉÇÕ´Ï´Ù."));
												break;
											}
										}

 

>> Print <<

 

Procura por:        if (item->GetVnum() == 71152 || item->GetVnum() == 76024)

altera a função para:

Spoiler

										if (item->GetVnum() == 71152 || item->GetVnum() == 76024)
										{
											if ((item2->GetType() == ITEM_COSTUME && item2->GetSubType() == COSTUME_BODY) || (item2->GetType() == ITEM_COSTUME && item2->GetSubType() == COSTUME_HAIR) )
											{
												bool bCanUse = true;
												for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)
												{
													if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) != 0)
													{
														bCanUse = false;
														break;
													}
												}
												if (false == bCanUse)
												{
													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Àû¿ë ·¹º§º¸´Ù ³ô¾Æ »ç¿ëÀÌ ºÒ°¡´ÉÇÕ´Ï´Ù."));
													break;
												}
											}
											else
											{
												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¹«±â¿Í °©¿Ê¿¡¸¸ »ç¿ë °¡´ÉÇÕ´Ï´Ù."));
												break;
											}
										}

 

<< Print >>

 

 

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
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...