Jump to content

displayjokes

Inactive Member
  • Posts

    260
  • Joined

  • Last visited

  • Days Won

    2
  • Feedback

    0%

Posts posted by displayjokes

  1. On 8/29/2019 at 9:35 PM, Cripplez said:

    Thank you, the code is almost the same, I tried 1/2 changes but it still doesn't work :(

    Aug 30 00:30:15 :: QUERY_FLUSH: REPLACE INTO item (id, owner_id, `window`, pos, count, vnum, socket0, socket1, socket2) VALUES(10000052, 6, 1, 17, 1, 85006, 1, 0, 0)

    Even in Item of my Mysql doesn't create the apply_max_hp  10000

    Huh, ir night vê the system that came incomplete, that's out of my range xb

  2. 4 minutes ago, Cripplez said:

    Could you send me your item.cpp ? So i will check if there are some difference in CItem::ModifyPoints(bool bAdd) and in the ENABLE_ACCE_SYSTEM

    thank you

    I can't upload files or images, i don't know why, but here's my function: if you need the whole code from the file i'll put it on pastebin

     

    Spoiler


    void CItem::ModifyPoints(bool bAdd)
    {
        int accessoryGrade;

        // ¹«±â¿Í °©¿Ê¸¸ ¼ÒÄÏÀ» Àû¿ë½ÃŲ´Ù.
        if (false == IsAccessoryForSocket())
        {
            if (m_pProto->bType == ITEM_WEAPON || m_pProto->bType == ITEM_ARMOR)
            {
                // ¼ÒÄÏÀÌ ¼Ó¼º°­È­¿¡ »ç¿ëµÇ´Â °æ¿ì Àû¿ëÇÏÁö ¾Ê´Â´Ù (ARMOR_WRIST ARMOR_NECK ARMOR_EAR)
                for (int i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
                {
                    DWORD dwVnum;

                    if ((dwVnum = GetSocket(i)) <= 2)
                        continue;

                    TItemTable * p = ITEM_MANAGER::instance().GetTable(dwVnum);

                    if (!p)
                    {
                        sys_err("cannot find table by vnum %u", dwVnum);
                        continue;
                    }

                    if (ITEM_METIN == p->bType)
                    {
                        //m_pOwner->ApplyPoint(p->alValues[0], bAdd ? p->alValues[1] : -p->alValues[1]);
                        for (int i = 0; i < ITEM_APPLY_MAX_NUM; ++i)
                        {
                            if (p->aApplies.bType == APPLY_NONE)
                                continue;

                            if (p->aApplies.bType == APPLY_SKILL)
                                m_pOwner->ApplyPoint(p->aApplies.bType, bAdd ? p->aApplies.lValue : p->aApplies.lValue ^ 0x00800000);
                            else
                                m_pOwner->ApplyPoint(p->aApplies.bType, bAdd ? p->aApplies.lValue : -p->aApplies.lValue);
                        }
                    }
                }
            }

            accessoryGrade = 0;
        }
        else
        {
            accessoryGrade = MIN(GetAccessorySocketGrade(), ITEM_ACCESSORY_SOCKET_MAX_NUM);
        }
        #ifdef __SASH_SYSTEM__
        if ((GetType() == ITEM_COSTUME) && (GetSubType() == COSTUME_SASH) && (GetSocket(SASH_ABSORBED_SOCKET)))
        {
            TItemTable * pkItemAbsorbed = ITEM_MANAGER::instance().GetTable(GetSocket(SASH_ABSORBED_SOCKET));
            if (pkItemAbsorbed)
            {
                if ((pkItemAbsorbed->bType == ITEM_ARMOR) && (pkItemAbsorbed->bSubType == ARMOR_BODY))
                {
                    long lDefGrade = pkItemAbsorbed->alValues[1] + long(pkItemAbsorbed->alValues[5] * 2);
                    double dValue = lDefGrade * GetSocket(SASH_ABSORPTION_SOCKET);
                    dValue = (double)dValue / 100;
                    dValue = (double)dValue + .5;
                    lDefGrade = (long) dValue;
                    if ((pkItemAbsorbed->alValues[1] > 0) && (lDefGrade <= 0) || (pkItemAbsorbed->alValues[5] > 0) && (lDefGrade < 1))
                        lDefGrade += 1;
                    else if ((pkItemAbsorbed->alValues[1] > 0) || (pkItemAbsorbed->alValues[5] > 0))
                        lDefGrade += 1;
                    
                    m_pOwner->ApplyPoint(APPLY_DEF_GRADE_BONUS, bAdd ? lDefGrade : -lDefGrade);
                    
                    long lDefMagicBonus = pkItemAbsorbed->alValues[0];
                    dValue = lDefMagicBonus * GetSocket(SASH_ABSORPTION_SOCKET);
                    dValue = (double)dValue / 100;
                    dValue = (double)dValue + .5;
                    lDefMagicBonus = (long) dValue;
                    if ((pkItemAbsorbed->alValues[0] > 0) && (lDefMagicBonus < 1))
                        lDefMagicBonus += 1;
                    else if (pkItemAbsorbed->alValues[0] > 0)
                        lDefMagicBonus += 1;
                    
                    m_pOwner->ApplyPoint(APPLY_MAGIC_DEF_GRADE, bAdd ? lDefMagicBonus : -lDefMagicBonus);
                }
                else if (pkItemAbsorbed->bType == ITEM_WEAPON)
                {
                    long lAttGrade = pkItemAbsorbed->alValues[4] + pkItemAbsorbed->alValues[5];
                    if (pkItemAbsorbed->alValues[3] > pkItemAbsorbed->alValues[4])
                        lAttGrade = pkItemAbsorbed->alValues[3] + pkItemAbsorbed->alValues[5];
                    
                    double dValue = lAttGrade * GetSocket(SASH_ABSORPTION_SOCKET);
                    dValue = (double)dValue / 100;
                    dValue = (double)dValue + .5;
                    lAttGrade = (long) dValue;
                    if (((pkItemAbsorbed->alValues[3] > 0) && (lAttGrade < 1)) || ((pkItemAbsorbed->alValues[4] > 0) && (lAttGrade < 1)))
                        lAttGrade += 1;
                    else if ((pkItemAbsorbed->alValues[3] > 0) || (pkItemAbsorbed->alValues[4] > 0))
                        lAttGrade += 1;
                    
                    m_pOwner->ApplyPoint(APPLY_ATT_GRADE_BONUS, bAdd ? lAttGrade : -lAttGrade);
                    
                    long lAttMagicGrade = pkItemAbsorbed->alValues[2] + pkItemAbsorbed->alValues[5];
                    if (pkItemAbsorbed->alValues[1] > pkItemAbsorbed->alValues[2])
                        lAttMagicGrade = pkItemAbsorbed->alValues[1] + pkItemAbsorbed->alValues[5];
                    
                    dValue = lAttMagicGrade * GetSocket(SASH_ABSORPTION_SOCKET);
                    dValue = (double)dValue / 100;
                    dValue = (double)dValue + .5;
                    lAttMagicGrade = (long) dValue;
                    if (((pkItemAbsorbed->alValues[1] > 0) && (lAttMagicGrade < 1)) || ((pkItemAbsorbed->alValues[2] > 0) && (lAttMagicGrade < 1)))
                        lAttMagicGrade += 1;
                    else if ((pkItemAbsorbed->alValues[1] > 0) || (pkItemAbsorbed->alValues[2] > 0))
                        lAttMagicGrade += 1;
                    
                    m_pOwner->ApplyPoint(APPLY_MAGIC_ATT_GRADE, bAdd ? lAttMagicGrade : -lAttMagicGrade);
                }
            }
        }
        #endif

        for (int i = 0; i < ITEM_APPLY_MAX_NUM; ++i)
        {
            #ifdef __SASH_SYSTEM__
            if ((m_pProto->aApplies.bType == APPLY_NONE) && (GetType() != ITEM_COSTUME) && (GetSubType() != COSTUME_SASH))
            #else
            if (m_pProto->aApplies.bType == APPLY_NONE)
            #endif
                continue;

    #ifdef ENABLE_MOUNT_LIKE_HORSE_SYSTEM
            if(IsMountItem())
                continue;
    #endif
            
            BYTE bType = m_pProto->aApplies.bType;
            long value = m_pProto->aApplies.lValue;
            #ifdef __SASH_SYSTEM__
            if ((GetType() == ITEM_COSTUME) && (GetSubType() == COSTUME_SASH))
            {
                TItemTable * pkItemAbsorbed = ITEM_MANAGER::instance().GetTable(GetSocket(SASH_ABSORBED_SOCKET));
                if (pkItemAbsorbed)
                {
                    if (pkItemAbsorbed->aApplies.bType == APPLY_NONE)
                        continue;
                    
                    bType = pkItemAbsorbed->aApplies.bType;
                    value = pkItemAbsorbed->aApplies.lValue;
                    if (value < 0)
                        continue;
                    
                    double dValue = value * GetSocket(SASH_ABSORPTION_SOCKET);
                    dValue = (double)dValue / 100;
                    dValue = (double)dValue + .5;
                    value = (long) dValue;
                    if ((pkItemAbsorbed->aApplies.lValue > 0) && (value <= 0))
                        value += 1;
                }
                else
                    continue;
            }
            #endif
            
            if (bType != APPLY_SKILL)
            {
                if (accessoryGrade != 0)
                    value += MAX(accessoryGrade, value * aiAccessorySocketEffectivePct[accessoryGrade] / 100);
                
                m_pOwner->ApplyPoint(bType, bAdd ? value : -value);
            }
            else
                m_pOwner->ApplyPoint(bType, bAdd ? value : value ^ 0x00800000);
        }
        // Ãʽ´ÞÀÇ ¹ÝÁö, ÇÒ·ÎÀ© »çÅÁ, ÇູÀÇ ¹ÝÁö, ¿µ¿øÇÑ »ç¶ûÀÇ Ææ´øÆ®ÀÇ °æ¿ì
        // ±âÁ¸ÀÇ Çϵå ÄÚµùÀ¸·Î °­Á¦·Î ¼Ó¼ºÀ» ºÎ¿©ÇßÁö¸¸,
        // ±× ºÎºÐÀ» Á¦°ÅÇÏ°í special item group Å×ÀÌºí¿¡¼­ ¼Ó¼ºÀ» ºÎ¿©Çϵµ·Ï º¯°æÇÏ¿´´Ù.
        // ÇÏÁö¸¸ Çϵå ÄÚµùµÇ¾îÀÖÀ» ¶§ »ý¼ºµÈ ¾ÆÀÌÅÛÀÌ ³²¾ÆÀÖÀ» ¼öµµ À־ Ư¼öó¸® Çسõ´Â´Ù.
        // ÀÌ ¾ÆÀÌÅÛµéÀÇ °æ¿ì, ¹Ø¿¡ ITEM_UNIQUEÀÏ ¶§ÀÇ Ã³¸®·Î ¼Ó¼ºÀÌ ºÎ¿©µÇ±â ¶§¹®¿¡,
        // ¾ÆÀÌÅÛ¿¡ ¹ÚÇôÀÖ´Â attribute´Â Àû¿ëÇÏÁö ¾Ê°í ³Ñ¾î°£´Ù.
        if (true == CItemVnumHelper::IsRamadanMoonRing(GetVnum()) || true == CItemVnumHelper::IsHalloweenCandy(GetVnum())
            || true == CItemVnumHelper::IsHappinessRing(GetVnum()) || true == CItemVnumHelper::IsLovePendant(GetVnum()))
        {
            // Do not anything.
        }
        else
        {
            for (int i = 0; i < ITEM_ATTRIBUTE_MAX_NUM; ++i)
            {
                if (GetAttributeType(i))
                {
                    const TPlayerItemAttribute& ia = GetAttribute(i);
                    long sValue = ia.sValue;
                    #ifdef __SASH_SYSTEM__
                    if ((GetType() == ITEM_COSTUME) && (GetSubType() == COSTUME_SASH))
                    {
                        double dValue = sValue * GetSocket(SASH_ABSORPTION_SOCKET);
                        dValue = (double)dValue / 100;
                        dValue = (double)dValue + .5;
                        sValue = (long) dValue;
                        if ((ia.sValue > 0) && (sValue <= 0))
                            sValue += 1;
                    }
                    #endif
                    
                    if (ia.bType == APPLY_SKILL)
                        m_pOwner->ApplyPoint(ia.bType, bAdd ? sValue : sValue ^ 0x00800000);
                    else
                        m_pOwner->ApplyPoint(ia.bType, bAdd ? sValue : -sValue);
                }
            }
        }

        switch (m_pProto->bType)
        {
            case ITEM_PICK:
            case ITEM_ROD:
                {
                    if (bAdd)
                    {
                        if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON)
                        {
    #ifdef __CHANGELOOK_SYSTEM__
                            DWORD dwRes = GetTransmutation() != 0 ? GetTransmutation() : GetVnum();
                            m_pOwner->SetPart(PART_WEAPON, dwRes);
    #else
                            m_pOwner->SetPart(PART_WEAPON, GetVnum());
    #endif
                        }
                    }
                    else
                    {
                        if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON)
    #ifdef __WEAPON_COSTUME_SYSTEM__
                            m_pOwner->SetPart(PART_WEAPON, 0);
    #else
                            m_pOwner->SetPart(PART_WEAPON, m_pOwner->GetOriginalPart(PART_WEAPON));
    #endif
                    }
                }
                break;

            case ITEM_WEAPON:
                {
    #ifdef __WEAPON_COSTUME_SYSTEM__
                    if (m_pOwner->GetWear(WEAR_COSTUME_WEAPON) != 0)
                        break;
    #endif
                    if (bAdd)
                    {
                        if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON)
                        {
    #ifdef __CHANGELOOK_SYSTEM__
                            DWORD dwRes = GetTransmutation() != 0 ? GetTransmutation() : GetVnum();
                            m_pOwner->SetPart(PART_WEAPON, dwRes);
    #else
                            m_pOwner->SetPart(PART_WEAPON, GetVnum());
    #endif
                        }
                    }
                    else
                    {
                        if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON)
    #ifdef __WEAPON_COSTUME_SYSTEM__
                            m_pOwner->SetPart(PART_WEAPON, 0);
    #else
                            m_pOwner->SetPart(PART_WEAPON, m_pOwner->GetOriginalPart(PART_WEAPON));
    #endif
                    }
                }
                break;

            case ITEM_ARMOR:
                {
                    // ÄÚ½ºÃõ body¸¦ ÀÔ°íÀÖ´Ù¸é armor´Â ¹þ´ø ÀÔ´ø »ó°ü ¾øÀÌ ºñÁÖ¾ó¿¡ ¿µÇâÀ» ÁÖ¸é ¾È µÊ.
                    if (0 != m_pOwner->GetWear(WEAR_COSTUME_BODY))
                        break;

                    if (GetSubType() == ARMOR_BODY || GetSubType() == ARMOR_HEAD || GetSubType() == ARMOR_FOOTS || GetSubType() == ARMOR_SHIELD)
                    {
                        if (bAdd)
                        {
                            if (GetProto()->bSubType == ARMOR_BODY)
    #ifdef __CHANGELOOK_SYSTEM__
                            {
                                DWORD dwRes = GetTransmutation() != 0 ? GetTransmutation() : GetVnum();
                                m_pOwner->SetPart(PART_MAIN, dwRes);
                            }
    #else
                                m_pOwner->SetPart(PART_MAIN, GetVnum());
    #endif
                        }
                        else
                        {
                            if (GetProto()->bSubType == ARMOR_BODY)
                                m_pOwner->SetPart(PART_MAIN, m_pOwner->GetOriginalPart(PART_MAIN));
                        }
                    }
                }
                break;

            // ÄÚ½ºÃõ ¾ÆÀÌÅÛ ÀÔ¾úÀ» ¶§ ij¸¯ÅÍ parts Á¤º¸ ¼¼ÆÃ. ±âÁ¸ ½ºÅ¸ÀÏ´ë·Î Ãß°¡ÇÔ..
            case ITEM_COSTUME:
                {
                    DWORD toSetValue = this->GetVnum();
                    EParts toSetPart = PART_MAX_NUM;

                    // °©¿Ê ÄÚ½ºÃõ
                    if (GetSubType() == COSTUME_BODY)
                    {
                        toSetPart = PART_MAIN;
                        if (false == bAdd)
                        {
                            const CItem* pArmor = m_pOwner->GetWear(WEAR_BODY);
                            toSetValue = (NULL != pArmor) ? pArmor->GetVnum() : m_pOwner->GetOriginalPart(PART_MAIN);
    #ifdef __CHANGELOOK_SYSTEM__
                            if (pArmor)
                                toSetValue = pArmor->GetTransmutation() != 0 ? pArmor->GetTransmutation() : pArmor->GetVnum();
    #endif
                        }
    #ifdef __CHANGELOOK_SYSTEM__
                        else
                            toSetValue = GetTransmutation() != 0 ? GetTransmutation() : GetVnum();
    #endif
                    }

                    // Çì¾î ÄÚ½ºÃõ
                    else if (GetSubType() == COSTUME_HAIR)
                    {
                        toSetPart = PART_HAIR;
                        if (!bAdd)
                            toSetValue = 0;
                        else
                        {
    #ifdef __CHANGELOOK_SYSTEM__
                            DWORD dwTransmutation = GetTransmutation();
                            if (dwTransmutation != 0)
                            {
                                TItemTable* pItemTable = ITEM_MANAGER::instance().GetTable(dwTransmutation);
                                toSetValue = (pItemTable != NULL) ? pItemTable->alValues[3] : GetValue(3);
                            }
                            else
                                toSetValue = GetValue(3);
    #else
                            toSetValue = GetValue(3);
    #endif
                        }
                    }
                    #ifdef __SASH_SYSTEM__
                    else if (GetSubType() == COSTUME_SASH)
                    {
                        toSetValue -= 85000;
                        if (GetSocket(SASH_ABSORPTION_SOCKET) >= SASH_EFFECT_FROM_ABS)
                            toSetValue += 1000;
                        
                        toSetValue = (bAdd == true) ? toSetValue : 0;
                        toSetPart = PART_SASH;
                    }
                    #endif
    #ifdef __WEAPON_COSTUME_SYSTEM__
                    else if (GetSubType() == COSTUME_WEAPON)
                    {
                        toSetPart = PART_WEAPON;
                        if (!bAdd)
                        {
                            const CItem* pWeapon = m_pOwner->GetWear(WEAR_WEAPON);
                            toSetValue = (NULL != pWeapon) ? pWeapon->GetVnum() : m_pOwner->GetPart(PART_WEAPON);                        
                        }
                    }
    #endif

                    if (PART_MAX_NUM != toSetPart)
                    {
                        m_pOwner->SetPart((BYTE)toSetPart, toSetValue);
                        m_pOwner->UpdatePacket();
                    }
                }
                break;
            case ITEM_UNIQUE:
                {
                    if (0 != GetSIGVnum())
                    {
                        const CSpecialItemGroup* pItemGroup = ITEM_MANAGER::instance().GetSpecialItemGroup(GetSIGVnum());
                        if (NULL == pItemGroup)
                            break;
                        DWORD dwAttrVnum = pItemGroup->GetAttrVnum(GetVnum());
                        const CSpecialAttrGroup* pAttrGroup = ITEM_MANAGER::instance().GetSpecialAttrGroup(dwAttrVnum);
                        if (NULL == pAttrGroup)
                            break;
                        for (itertype (pAttrGroup->m_vecAttrs) it = pAttrGroup->m_vecAttrs.begin(); it != pAttrGroup->m_vecAttrs.end(); it++)
                        {
                            m_pOwner->ApplyPoint(it->apply_type, bAdd ? it->apply_value : -it->apply_value);
                        }
                    }
                }
                break;
        }
    }

     

     

    Hope this helps

  3. 4 hours ago, Torres said:

    HI devs,I have a error.

    when I am Gm,I use  "/u" ,ACMD(do_user);,can't work,nothing can show,

    How can I fix it?
    Thank you for your answer
    best wishes to you!

    This is mine if it helps:

    Spoiler

    ACMD(do_user)
    {
        const DESC_MANAGER::DESC_SET & c_ref_set = DESC_MANAGER::instance().GetClientSet();
        user_func func;

        func.initialize(ch);
        std::for_each(c_ref_set.begin(), c_ref_set.end(), func);

        if (func.count % 4)
            ch->ChatPacket(CHAT_TYPE_INFO, func.str);

        ch->ChatPacket(CHAT_TYPE_INFO, "Total %d", func.count);
    }

     

     

    I don't know what that is supost to do but here it is :D

    • Love 1
  4. Hey, so has the title says, i do something like: /i 1009, and the item is not saved if i shut down the server, even after 30 minutes (already had time to refresh the cache and saved it on db), even with /shutdown in game.

    The character position is saved, same has the yang, but the items, they all disapear.. i've repaired the table, and still.. Check if it was permissions error but it doesn't seem so..

     

    Any help is appreciated, even if just the place where things are inserted into db, can't find it either to debug ?

     

    Thanks in advance

  5. 3 hours ago, Ryukend said:

    Hello good afternoon, I have a problem, I turned on the server repair all the problems that may have happened and the client enters the character selector and then returns to the login, the autolog and syserr of the ch, special_ch, auth and db do not give any error, what can cause this problem?

    Thank you.

    syserr of client and syserr of db?

    Try to create a new character and check if does the same behavior

  6. 22 minutes ago, newhere said:

    maybe here: if (ABSORB == GetAcceWindowType())

      Reveal hidden contents

     

    if (ABSORB == GetAcceWindowType())
        {

            if (m_pointsInstant.pAcceSlots[ACCE_SLOT_RIGHT] != WORD_MAX && m_pointsInstant.pAcceSlots[ACCE_SLOT_LEFT] != WORD_MAX)
            {
                LPITEM pkAcce = GetItem(TItemPos(INVENTORY, m_pointsInstant.pAcceSlots[ACCE_SLOT_LEFT]));
                LPITEM pkWeaponToAbsorb = GetItem(TItemPos(INVENTORY, m_pointsInstant.pAcceSlots[ACCE_SLOT_RIGHT]));
                LPITEM pShowItem = ITEM_MANAGER::instance().CreateItem(pkAcce->GetVnum(), 1, 0, false, -1, true);

                pkWeaponToAbsorb->CopyAttributeTo(pShowItem);
                pShowItem->SetSocket(0, pkAcce->GetSocket(0));
                pShowItem->SetSocket(1, pkWeaponToAbsorb->GetVnum());

                TPacketGCAcce pack;
                pack.header = HEADER_GC_ACCE;
                pack.subheader = ACCE_SUBHEADER_GC_SET_ITEM;
                pack.size = sizeof(TPacketGCAcce) + sizeof(TPacketGCItemSet);

                TPacketGCItemSet pack_sub;

                pack_sub.header = 0;
                pack_sub.Cell = TItemPos(ACCEREFINE, (WORD)ACCE_SLOT_RESULT);
                pack_sub.vnum = pShowItem->GetVnum();
                pack_sub.count = (BYTE)pShowItem->GetCount();
                pack_sub.flags = pShowItem->GetFlag();
                pack_sub.anti_flags = pShowItem->GetAntiFlag();

                thecore_memcpy(pack_sub.alSockets, pShowItem->GetSockets(), sizeof(pack_sub.alSockets));
                thecore_memcpy(pack_sub.aAttr, pShowItem->GetAttributes(), sizeof(pack_sub.aAttr));
                GetDesc()->BufferedPacket(&pack, sizeof(TPacketGCAcce));
                GetDesc()->Packet(&pack_sub, sizeof(TPacketGCItemSet));

                M2_DESTROY_ITEM(pShowItem);
            }

     

     

    char_item.cpp

    if you comment this line and absorb a weapon, does the sash gain attributtes or no?

     

    comment this and try:
                pkWeaponToAbsorb->CopyAttributeTo(pShowItem);

     

    If it does not gain any atribute we can do a workaround, setting the attributes by ourselves

  7. 3 minutes ago, leonvanilla said:

    I solved it, but it still tells me it's not online.

    Oh okay, that's different, now we need to look for that message, you can try to copy the message to notepad, search for it on translate or locale.lua, i do not remember what file, and check what's the key phrase that's giving you that message, than we can look for that key phrase in this file, because i'm not sure where it tells you the player is not offline, other options is that you can send chatpacket to see where it stops, like this:


                ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Test 1 "));

     

    than ahead in the functions add a couple more and add +1 to the number after Test, this is how i usually debug

  8. 2 minutes ago, leonvanilla said:

    NPC is a function starter in InstanceBase.cpp.

     

        int i=0;
        if(c_rkCreateData.m_dwRace == 30122)
        {
            SetInstanceType(CActorInstance::TYPE_PC);    
            SetRace(3);
            i=1;
        }

     

    Whatever I do in cmd_emotion tells me that NPC is not online.

    Screenshot-4.pngI get this error at the function given to you above.

    You are missing parentesis, but show me that part of the function complete, with the number of the lines please :D

  9. 5 minutes ago, leonvanilla said:

    Screenshot-2.pngI tried and ...

    I believe what you want to do can be done easier, you are only returning true in that function, on ACMD(do_emotion), find this:

    if (!victim->IsPC() || victim == ch)

     

    Change it to:

    if ( (!victim->IsPC() && victim->GetRaceNum() != 30122 ) || victim == ch)

     

    I believe it work, if not you can play around that if, this is not tested, plus what MrQuin said, you will need the animations for the NPCs.

  10. 8 minutes ago, newhere said:

    I have no calculation for 1/5 and 6/7 bonus

    they just add to the sash like in the weapon. no function for calculation.

     

    so i need to find the item attribute add to sash thing

    and write it like

    if 25% sash  

      item_attr /100*25

    i think.

    Show me the functions where the absorptions happens and we can see where's the problem

    • Love 1
  11. Watchout for the bumping rules, @Raylee will slap you :D

     

    On topic, i belive you are doing this: IF character is NPC equals to 30122, do something, so try to spell it out, you will see the error, you verify if it's an NPC and you want a true or false to be a vnum/id..

    I believe you must do GetRaceNum() to get a comparsion to npc vnum/id

     

    Something like:

    ch->IsNPC() && ch->GetRaceNum() == 30122

  12. On 8/17/2019 at 5:31 PM, Syrex said:

    hi guys ...

     

    i have problem in many weapons and armours ... and it is her effect doesn't show

    p_13249jwfa1.png

    how i can fix it !

     

     

    
    
     

     

    I believe you are trying to say that your shining does not appear if the item is +9 for example? The effects of mini fireflies? xb

     

    If so, problem can be on your binary adding the effect or on python when you are declaring the effect

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