您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ ApplyModFlag函数代码示例

51自学网 2021-06-01 19:47:24
  C++
这篇教程C++ ApplyModFlag函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中ApplyModFlag函数的典型用法代码示例。如果您正苦于以下问题:C++ ApplyModFlag函数的具体用法?C++ ApplyModFlag怎么用?C++ ApplyModFlag使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了ApplyModFlag函数的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: MAKE_NEW_GUID

bool Item::LoadFromDB(uint32 guid, uint64 owner_guid, QueryResult *result){    // create item before any checks for store correct guid    // and allow use "FSetState(ITEM_REMOVED); SaveToDB();" for deleting item from DB    Object::_Create(guid, 0, HIGHGUID_ITEM);    bool delete_result = false;    if(!result)    {        result = CharacterDatabase.PQuery("SELECT data FROM item_instance WHERE guid = '%u'", guid);        delete_result = true;    }    if (!result)    {        sLog.outError("Item (GUID: %u owner: %u) not found in table `item_instance`, can't load. ",guid,GUID_LOPART(owner_guid));        return false;    }    Field *fields = result->Fetch();    if(!LoadValues(fields[0].GetString()))    {        sLog.outError("Item #%d have broken data in `data` field. Can't be loaded.",guid);        if (delete_result) delete result;        return false;    }    bool need_save = false;                                 // need explicit save data at load fixes    // overwrite possible wrong/corrupted guid    uint64 new_item_guid = MAKE_NEW_GUID(guid,0, HIGHGUID_ITEM);    if(GetUInt64Value(OBJECT_FIELD_GUID) != new_item_guid)    {        SetUInt64Value(OBJECT_FIELD_GUID, MAKE_NEW_GUID(guid,0, HIGHGUID_ITEM));        need_save = true;    }    if (delete_result) delete result;    ItemPrototype const* proto = GetProto();    if(!proto)        return false;    // update max durability (and durability) if need    if(proto->MaxDurability!= GetUInt32Value(ITEM_FIELD_MAXDURABILITY))    {        SetUInt32Value(ITEM_FIELD_MAXDURABILITY,proto->MaxDurability);        if(GetUInt32Value(ITEM_FIELD_DURABILITY) > proto->MaxDurability)            SetUInt32Value(ITEM_FIELD_DURABILITY,proto->MaxDurability);        need_save = true;    }    // recalculate suffix factor    if(GetItemRandomPropertyId() < 0)    {        if(UpdateItemSuffixFactor())            need_save = true;    }    // Remove bind flag for items vs NO_BIND set    if (IsSoulBound() && proto->Bonding == NO_BIND)    {        ApplyModFlag(ITEM_FIELD_FLAGS,ITEM_FLAGS_BINDED, false);        need_save = true;    }    // update duration if need, and remove if not need    if ((proto->Duration == 0) != (GetUInt32Value(ITEM_FIELD_DURATION) == 0))    {        SetUInt32Value(ITEM_FIELD_DURATION, proto->Duration);        need_save = true;    }    // set correct owner    if (owner_guid != 0 && GetOwnerGUID() != owner_guid)    {        SetOwnerGUID(owner_guid);        need_save = true;    }    if (need_save)                                          // normal item changed state set not work at loading    {        std::ostringstream ss;        ss << "UPDATE item_instance SET data = '";        for(uint16 i = 0; i < m_valuesCount; ++i )            ss << GetUInt32Value(i) << " ";        ss << "', owner_guid = '" << GUID_LOPART(GetOwnerGUID()) << "' WHERE guid = '" << guid << "'";        CharacterDatabase.Execute( ss.str().c_str() );    }    return true;}
开发者ID:1ATOM,项目名称:mangos,代码行数:95,


示例2: GetGuidStr

bool Item::LoadFromDB(uint32 guidLow, Field* fields, ObjectGuid ownerGuid){    // create item before any checks for store correct guid    // and allow use "FSetState(ITEM_REMOVED); SaveToDB();" for deleting item from DB    Object::_Create(ObjectGuid(HIGHGUID_ITEM, guidLow));    if (!LoadValues(fields[0].GetString()))    {        sLog.outError("Item::LoadFromDB: %s have broken data in `data` field. Can't be loaded.", GetGuidStr().c_str());        return false;    }    SetText(fields[1].GetCppString());    bool needSave = false;                                  // need explicit save data at load fixes    // overwrite possible wrong/corrupted guid    ObjectGuid new_item_guid = ObjectGuid(HIGHGUID_ITEM, guidLow);    if (GetGuidValue(OBJECT_FIELD_GUID) != new_item_guid)    {        SetGuidValue(OBJECT_FIELD_GUID, new_item_guid);        needSave = true;    }    ItemPrototype const* proto = GetProto();    if (!proto)        return false;    // update max durability (and durability) if need    if (proto->MaxDurability != GetUInt32Value(ITEM_FIELD_MAXDURABILITY))    {        SetUInt32Value(ITEM_FIELD_MAXDURABILITY, proto->MaxDurability);        if (GetUInt32Value(ITEM_FIELD_DURABILITY) > proto->MaxDurability)            SetUInt32Value(ITEM_FIELD_DURABILITY, proto->MaxDurability);        needSave = true;    }    // recalculate suffix factor    if (GetItemRandomPropertyId() < 0)    {        if (UpdateItemSuffixFactor())            needSave = true;    }    // Remove bind flag for items vs NO_BIND set    if (IsSoulBound() && proto->Bonding == NO_BIND)    {        ApplyModFlag(ITEM_FIELD_FLAGS, ITEM_DYNFLAG_BINDED, false);        needSave = true;    }    // update duration if need, and remove if not need    if ((proto->Duration == 0) != (GetUInt32Value(ITEM_FIELD_DURATION) == 0))    {        SetUInt32Value(ITEM_FIELD_DURATION, proto->Duration);        needSave = true;    }    // set correct owner    if (ownerGuid && GetOwnerGuid() != ownerGuid)    {        SetOwnerGuid(ownerGuid);        needSave = true;    }    // set correct wrapped state    if (HasFlag(ITEM_FIELD_FLAGS, ITEM_DYNFLAG_WRAPPED))    {        // wrapped item must be wrapper (used version that not stackable)        if (!(proto->Flags & ITEM_FLAG_WRAPPER) || GetMaxStackCount() > 1)        {            RemoveFlag(ITEM_FIELD_FLAGS, ITEM_DYNFLAG_WRAPPED);            needSave = true;            // also cleanup for sure gift table            DeleteGiftsFromDB();        }    }    if (needSave)                                          // normal item changed state set not work at loading    {        std::ostringstream ss;        for (uint16 i = 0; i < m_valuesCount; ++i)            ss << GetUInt32Value(i) << " ";        static SqlStatementID updItem;        SqlStatement stmt = CharacterDatabase.CreateStatement(updItem, "UPDATE item_instance SET owner_guid = ?, data = ? WHERE guid = ?");        stmt.PExecute(GetOwnerGuid().GetCounter(), ss.str().c_str(), guidLow);    }    return true;}
开发者ID:Splash,项目名称:mangos,代码行数:93,


示例3: SetEntry

bool Item::LoadFromDB(uint32 guid, uint64 owner_guid, Field* fields, uint32 entry){    //                                                    0                1      2         3        4      5             6                 7           8           9    10    //result = CharacterDatabase.PQuery("SELECT creatorGuid, giftCreatorGuid, count, duration, charges, flags, enchantments, randomPropertyId, durability, playedTime, text FROM item_instance WHERE guid = '%u'", guid);    // create item before any checks for store correct guid    // and allow use "FSetState(ITEM_REMOVED); SaveToDB();" for deleting item from DB    Object::_Create(guid, 0, HIGHGUID_ITEM);    // Set entry, MUST be before proto check    SetEntry(entry);    SetFloatValue(OBJECT_FIELD_SCALE_X, 1.0f);    ItemPrototype const* proto = GetProto();    if (!proto)        return false;    // set owner (not if item is only loaded for gbank/auction/mail    if (owner_guid != 0)        SetOwnerGUID(owner_guid);    bool need_save = false;                                 // need explicit save data at load fixes    SetUInt64Value(ITEM_FIELD_CREATOR, MAKE_NEW_GUID(fields[0].GetUInt32(), 0, HIGHGUID_PLAYER));    SetUInt64Value(ITEM_FIELD_GIFTCREATOR, MAKE_NEW_GUID(fields[1].GetUInt32(), 0, HIGHGUID_PLAYER));    SetCount(fields[2].GetUInt32());    uint32 duration = fields[3].GetUInt32();    SetUInt32Value(ITEM_FIELD_DURATION, duration);    // update duration if need, and remove if not need    if ((proto->Duration == 0) != (duration == 0))    {        SetUInt32Value(ITEM_FIELD_DURATION, abs(proto->Duration));        need_save = true;    }    Tokens tokens(fields[4].GetString(), ' ', MAX_ITEM_PROTO_SPELLS);    if (tokens.size() == MAX_ITEM_PROTO_SPELLS)        for (uint8 i = 0; i < MAX_ITEM_PROTO_SPELLS; ++i)            SetSpellCharges(i, atoi(tokens[i]));    SetUInt32Value(ITEM_FIELD_FLAGS, fields[5].GetUInt32());    // Remove bind flag for items vs NO_BIND set    if (IsSoulBound() && proto->Bonding == NO_BIND)    {        ApplyModFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_SOULBOUND, false);        need_save = true;    }    std::string enchants = fields[6].GetString();    //_LoadIntoDataField(enchants.c_str(), ITEM_FIELD_ENCHANTMENT_1_1, MAX_ENCHANTMENT_SLOT * MAX_ENCHANTMENT_OFFSET);    {        // NOTE:        // in the recent update of reforge system, definition of EnchantmentSlot has been changed,        // and MAX_ENCHANTMENT_SLOT has been changed from 13 to 14,        // which makes enchantments column of item_instance table incompatible with previous version.        // in this case we will load only first 9 enchantment slots (0-8, for permanent, temporary, sockets, bonus, prismatic and reforge)        // and ignore the remaining ones (9-13, for random properties).        // which means item random properties will be lost after this update.        // after player logging in and saving the inventory, enchantments column will be properly updated.        uint32 count = MAX_ENCHANTMENT_SLOT * MAX_ENCHANTMENT_OFFSET;        Tokens tokens(enchants, ' ', count);        if (tokens.size() < MAX_ENCHANTMENT_SLOT * MAX_ENCHANTMENT_OFFSET)            count = REFORGE_ENCHANTMENT_SLOT * MAX_ENCHANTMENT_OFFSET;        for (uint32 index = 0; index < count; ++index)            m_uint32Values[ITEM_FIELD_ENCHANTMENT_1_1 + index] = index < tokens.size() ? atol(tokens[index]) : 0;    }    SetInt32Value(ITEM_FIELD_RANDOM_PROPERTIES_ID, fields[7].GetInt16());    // recalculate suffix factor    if (GetItemRandomPropertyId() < 0)        UpdateItemSuffixFactor();    uint32 durability = fields[8].GetUInt16();    SetUInt32Value(ITEM_FIELD_DURABILITY, durability);    // update max durability (and durability) if need    SetUInt32Value(ITEM_FIELD_MAXDURABILITY, proto->MaxDurability);    if (durability > proto->MaxDurability)    {        SetUInt32Value(ITEM_FIELD_DURABILITY, proto->MaxDurability);        need_save = true;    }    SetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME, fields[9].GetUInt32());    SetText(fields[10].GetString());    if (need_save)                                           // normal item changed state set not work at loading    {        PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPDATE_ITEM_INSTANCE_ON_LOAD);        stmt->setUInt32(0, GetUInt32Value(ITEM_FIELD_DURATION));        stmt->setUInt32(1, GetUInt32Value(ITEM_FIELD_FLAGS));        stmt->setUInt32(2, GetUInt32Value(ITEM_FIELD_DURABILITY));        stmt->setUInt32(3, guid);        CharacterDatabase.Execute(stmt);    }    return true;}
开发者ID:H4D3S,项目名称:DarkmoonCore-Cataclysm,代码行数:99,


示例4: ObjectGuid

bool Item::LoadFromDB(uint32 guidLow, uint64 owner_guid, Field *fields){    // create item before any checks for store correct guid    // and allow use "FSetState(ITEM_REMOVED); SaveToDB();" for deleting item from DB    Object::_Create(guidLow, 0, HIGHGUID_ITEM);    if (!LoadValues(fields[0].GetString()))    {        sLog.outError("Item #%d have broken data in `data` field. Can't be loaded.", guidLow);        return false;    }    bool need_save = false;                                 // need explicit save data at load fixes    // overwrite possible wrong/corrupted guid    ObjectGuid new_item_guid = ObjectGuid(HIGHGUID_ITEM, guidLow);    if (GetGuidValue(OBJECT_FIELD_GUID) != new_item_guid)    {        SetGuidValue(OBJECT_FIELD_GUID, new_item_guid);        need_save = true;    }    ItemPrototype const* proto = GetProto();    if(!proto)        return false;    // update max durability (and durability) if need    if(proto->MaxDurability!= GetUInt32Value(ITEM_FIELD_MAXDURABILITY))    {        SetUInt32Value(ITEM_FIELD_MAXDURABILITY,proto->MaxDurability);        if(GetUInt32Value(ITEM_FIELD_DURABILITY) > proto->MaxDurability)            SetUInt32Value(ITEM_FIELD_DURABILITY,proto->MaxDurability);        need_save = true;    }    // Remove bind flag for items vs NO_BIND set    if (IsSoulBound() && proto->Bonding == NO_BIND)    {        ApplyModFlag(ITEM_FIELD_FLAGS, ITEM_DYNFLAG_BINDED, false);        need_save = true;    }    // update duration if need, and remove if not need    if ((proto->Duration == 0) != (GetUInt32Value(ITEM_FIELD_DURATION) == 0))    {        SetUInt32Value(ITEM_FIELD_DURATION, proto->Duration);        need_save = true;    }    // set correct owner    if (owner_guid != 0 && GetOwnerGUID() != owner_guid)    {        SetOwnerGUID(owner_guid);        need_save = true;    }    // set correct wrapped state    if (HasFlag(ITEM_FIELD_FLAGS, ITEM_DYNFLAG_WRAPPED))    {        // wrapped item must be wrapper (used version that not stackable)        if (!(proto->Flags & ITEM_FLAG_WRAPPER) || GetMaxStackCount() > 1)        {            RemoveFlag(ITEM_FIELD_FLAGS, ITEM_DYNFLAG_WRAPPED);            need_save = true;            // also cleanup for sure gift table            CharacterDatabase.PExecute("DELETE FROM character_gifts WHERE item_guid = '%u'", GetGUIDLow());        }    }    if (need_save)                                          // normal item changed state set not work at loading    {        std::ostringstream ss;        ss << "UPDATE item_instance SET data = '";        for(uint16 i = 0; i < m_valuesCount; ++i )            ss << GetUInt32Value(i) << " ";        ss << "', owner_guid = '" << GUID_LOPART(GetOwnerGUID()) << "' WHERE guid = '" << guidLow << "'";        CharacterDatabase.Execute( ss.str().c_str() );    }    return true;}
开发者ID:Scergo,项目名称:zero,代码行数:84,



注:本文中的ApplyModFlag函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ ApplyMultiDamage函数代码示例
C++ ApplyLanguage函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。