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

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

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

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

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

示例1: GetPlayer

void WorldSession::SendLfgUpdateSearch(bool update){    sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_UPDATE_SEARCH [" UI64FMTD "] update: %u", GetPlayer()->GetGUID(), update ? 1 : 0);    WorldPacket data(SMSG_LFG_UPDATE_SEARCH, 1);    data << uint8(update);                                 // In Lfg Queue?    SendPacket(&data);}
开发者ID:AnthoDevMoP,项目名称:Genesis,代码行数:7,


示例2: uint32

void WorldSession::HandlePetSpellAutocastOpcode(WorldPacket& recvPacket){    sLog->outDetail("CMSG_PET_SPELL_AUTOCAST");    uint64 guid;    uint32 spellid;    uint8  state;                                           //1 for on, 0 for off    recvPacket >> guid >> spellid >> state;    if (!_player->GetGuardianPet() && !_player->GetCharm())        return;    if (ObjectAccessor::FindPlayer(guid))        return;    Creature* pet=ObjectAccessor::GetCreatureOrPetOrVehicle(*_player, guid);    if (!pet || (pet != _player->GetGuardianPet() && pet != _player->GetCharm()))    {        sLog->outError("HandlePetSpellAutocastOpcode.Pet %u isn't pet of player %s .", uint32(GUID_LOPART(guid)), GetPlayer()->GetName());        return;    }    SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellid);    // do not add not learned spells/ passive spells    if (!pet->HasSpell(spellid) || spellInfo->IsAutocastable())        return;    CharmInfo* charmInfo = pet->GetCharmInfo();    if (!charmInfo)    {        sLog->outError("WorldSession::HandlePetSpellAutocastOpcod: object (GUID: %u TypeId: %u) is considered pet-like but doesn't have a charminfo!", pet->GetGUIDLow(), pet->GetTypeId());        return;    }    if (pet->isPet())        ((Pet*)pet)->ToggleAutocast(spellInfo, state);    else        pet->GetCharmInfo()->ToggleCreatureAutocast(spellInfo, state);    charmInfo->SetSpellAutocast(spellInfo, state);}
开发者ID:Aquinius,项目名称:BlackSun,代码行数:41,


示例3: DEBUG_LOG

void WorldSession::SendTrainerList(ObjectGuid guid, const std::string& strTitle){    DEBUG_LOG( "WORLD: SendTrainerList" );    Creature *unit = GetPlayer()->GetNPCIfCanInteractWith(guid,UNIT_NPC_FLAG_TRAINER);    if (!unit)    {        DEBUG_LOG("WORLD: SendTrainerList - %s not found or you can't interact with him.", guid.GetString().c_str());        return;    }    // remove fake death    if (GetPlayer()->hasUnitState(UNIT_STAT_DIED))        GetPlayer()->RemoveSpellsCausingAura(SPELL_AURA_FEIGN_DEATH);    // trainer list loaded at check;    if (!unit->IsTrainerOf(_player,true))        return;    CreatureInfo const *ci = unit->GetCreatureInfo();    if (!ci)        return;    TrainerSpellData const* cSpells = unit->GetTrainerSpells();    TrainerSpellData const* tSpells = unit->GetTrainerTemplateSpells();    if (!cSpells && !tSpells)    {        DEBUG_LOG("WORLD: SendTrainerList - Training spells not found for %s", guid.GetString().c_str());        return;    }    uint32 maxcount = (cSpells ? cSpells->spellList.size() : 0) + (tSpells ? tSpells->spellList.size() : 0);    uint32 trainer_type = cSpells && cSpells->trainerType ? cSpells->trainerType : (tSpells ? tSpells->trainerType : 0);    WorldPacket data( SMSG_TRAINER_LIST, 8+4+4+maxcount*38 + strTitle.size()+1);    data << ObjectGuid(guid);    data << uint32(trainer_type);    size_t count_pos = data.wpos();    data << uint32(maxcount);    // reputation discount    float fDiscountMod = _player->GetReputationPriceDiscount(unit);    bool can_learn_primary_prof = GetPlayer()->GetFreePrimaryProfessionPoints() > 0;    uint32 count = 0;    if (cSpells)    {        for(TrainerSpellMap::const_iterator itr = cSpells->spellList.begin(); itr != cSpells->spellList.end(); ++itr)        {            TrainerSpell const* tSpell = &itr->second;            uint32 reqLevel = 0;            if(!_player->IsSpellFitByClassAndRace(tSpell->learnedSpell, &reqLevel))                continue;            reqLevel = tSpell->isProvidedReqLevel ? tSpell->reqLevel : std::max(reqLevel, tSpell->reqLevel);            TrainerSpellState state = _player->GetTrainerSpellState(tSpell, reqLevel);            SendTrainerSpellHelper(data, tSpell, state, fDiscountMod, can_learn_primary_prof, reqLevel);            ++count;        }    }    if (tSpells)    {        for(TrainerSpellMap::const_iterator itr = tSpells->spellList.begin(); itr != tSpells->spellList.end(); ++itr)        {            TrainerSpell const* tSpell = &itr->second;            uint32 reqLevel = 0;            if(!_player->IsSpellFitByClassAndRace(tSpell->learnedSpell, &reqLevel))                continue;            reqLevel = tSpell->isProvidedReqLevel ? tSpell->reqLevel : std::max(reqLevel, tSpell->reqLevel);            TrainerSpellState state = _player->GetTrainerSpellState(tSpell, reqLevel);            SendTrainerSpellHelper(data, tSpell, state, fDiscountMod, can_learn_primary_prof, reqLevel);            ++count;        }    }    data << strTitle;    data.put<uint32>(count_pos,count);    SendPacket(&data);}
开发者ID:gc,项目名称:mangos,代码行数:93,


示例4: TC_LOG_DEBUG

void WorldSession::HandlePetitionBuyOpcode(WorldPacket& recvData){    TC_LOG_DEBUG("network", "Received opcode CMSG_PETITION_BUY");    uint64 guidNPC;    uint32 clientIndex;                                     // 1 for guild and arenaslot+1 for arenas in client    std::string name;    recvData >> guidNPC;                                   // NPC GUID    recvData.read_skip<uint32>();                          // 0    recvData.read_skip<uint64>();                          // 0    recvData >> name;                                      // name    recvData.read_skip<std::string>();                     // some string    recvData.read_skip<uint32>();                          // 0    recvData.read_skip<uint32>();                          // 0    recvData.read_skip<uint32>();                          // 0    recvData.read_skip<uint32>();                          // 0    recvData.read_skip<uint32>();                          // 0    recvData.read_skip<uint32>();                          // 0    recvData.read_skip<uint32>();                          // 0    recvData.read_skip<uint16>();                          // 0    recvData.read_skip<uint32>();                          // 0    recvData.read_skip<uint32>();                          // 0    recvData.read_skip<uint32>();                          // 0    for (int i = 0; i < 10; ++i)        recvData.read_skip<std::string>();    recvData >> clientIndex;                               // index    recvData.read_skip<uint32>();                          // 0    TC_LOG_DEBUG("network", "Petitioner with GUID %u tried sell petition: name %s", GUID_LOPART(guidNPC), name.c_str());    // prevent cheating    Creature* creature = GetPlayer()->GetNPCIfCanInteractWith(guidNPC, UNIT_NPC_FLAG_PETITIONER);    if (!creature)    {        TC_LOG_DEBUG("network", "WORLD: HandlePetitionBuyOpcode - Unit (GUID: %u) not found or you can't interact with him.", GUID_LOPART(guidNPC));        return;    }    // remove fake death    if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))        GetPlayer()->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH);    uint32 charterid = 0;    uint32 cost = 0;    uint32 type = 0;    if (creature->IsTabardDesigner())    {        // if tabard designer, then trying to buy a guild charter.        // do not let if already in guild.        if (_player->GetGuildId())            return;        charterid = GUILD_CHARTER;        cost = GUILD_CHARTER_COST;        type = GUILD_CHARTER_TYPE;    }    else    {        /// @todo find correct opcode        if (_player->getLevel() < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))        {            SendNotification(LANG_ARENA_ONE_TOOLOW, sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL));            return;        }        switch (clientIndex)                                 // arenaSlot+1 as received from client (1 from 3 case)        {            case 1:                charterid = ARENA_TEAM_CHARTER_2v2;                cost = ARENA_TEAM_CHARTER_2v2_COST;                type = ARENA_TEAM_CHARTER_2v2_TYPE;                break;            case 2:                charterid = ARENA_TEAM_CHARTER_3v3;                cost = ARENA_TEAM_CHARTER_3v3_COST;                type = ARENA_TEAM_CHARTER_3v3_TYPE;                break;            case 3:                charterid = ARENA_TEAM_CHARTER_5v5;                cost = ARENA_TEAM_CHARTER_5v5_COST;                type = ARENA_TEAM_CHARTER_5v5_TYPE;                break;            default:                TC_LOG_DEBUG("network", "unknown selection at buy arena petition: %u", clientIndex);                return;        }        if (_player->GetArenaTeamId(clientIndex - 1))        // arenaSlot+1 as received from client        {            SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, name, "", ERR_ALREADY_IN_ARENA_TEAM);            return;        }    }    if (type == GUILD_CHARTER_TYPE)    {        if (sGuildMgr->GetGuildByName(name))//.........这里部分代码省略.........
开发者ID:redlaine,项目名称:InfinityCore-Ark,代码行数:101,


示例5: object

//.........这里部分代码省略.........                            charmInfo->SetIsCommandAttack(true);                            charmInfo->SetIsAtStay(false);                            charmInfo->SetIsFollowing(false);                            charmInfo->SetIsReturning(false);                            pet->ToCreature()->AI()->AttackStart(TargetUnit);                            //10% chance to play special pet attack talk, else growl                            if (pet->ToCreature()->isPet() && ((Pet*)pet)->getPetType() == SUMMON_PET && pet != TargetUnit && urand(0, 100) < 10)                                pet->SendPetTalk((uint32)PET_TALK_ATTACK);                            else                            {                                // 90% chance for pet and 100% chance for charmed creature                                pet->SendPetAIReaction(guid1);                            }                        }                        else                                // charmed player                        {                            if (pet->getVictim() && pet->getVictim() != TargetUnit)                                pet->AttackStop();                            charmInfo->SetIsCommandAttack(true);                            charmInfo->SetIsAtStay(false);                            charmInfo->SetIsFollowing(false);                            charmInfo->SetIsReturning(false);                            pet->Attack(TargetUnit, true);                            pet->SendPetAIReaction(guid1);                        }                    }                    break;                }                case COMMAND_ABANDON:                       // abandon (hunter pet) or dismiss (summoned pet)                    if (pet->GetCharmerGUID() == GetPlayer()->GetGUID())                        _player->StopCastingCharm();                    else if (pet->GetOwnerGUID() == GetPlayer()->GetGUID())                    {                        ASSERT(pet->GetTypeId() == TYPEID_UNIT);                        if (pet->isPet())                        {                            if (((Pet*)pet)->getPetType() == HUNTER_PET)                                GetPlayer()->RemovePet((Pet*)pet, PET_SAVE_AS_DELETED);                            else                                //dismissing a summoned pet is like killing them (this prevents returning a soulshard...)                                pet->setDeathState(CORPSE);                        }                        else if (pet->HasUnitTypeMask(UNIT_MASK_MINION))                        {                            ((Minion*)pet)->UnSummon();                        }                    }                    break;                default:                    sLog->outError("WORLD: unknown PET flag Action %i and spellid %i.", uint32(flag), spellid);            }            break;        case ACT_REACTION:                                  // 0x6            switch (spellid)            {                case REACT_PASSIVE:                         //passive                    pet->AttackStop();                case REACT_DEFENSIVE:                       //recovery                case REACT_AGGRESSIVE:                      //activete                    if (pet->GetTypeId() == TYPEID_UNIT)                        pet->ToCreature()->SetReactState(ReactStates(spellid));
开发者ID:Aquinius,项目名称:BlackSun,代码行数:67,


示例6: GetPlayer

void WorldSession::SendPetitionShowList(uint64 guid){    Creature* creature = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_PETITIONER);    if (!creature)    {        sLog->outDebug("WORLD: HandlePetitionShowListOpcode - Unit (GUID: %u) not found or you can't interact with him.", uint32(GUID_LOPART(guid)));        return;    }    // remove fake death    if (GetPlayer()->hasUnitState(UNIT_STAT_DIED))        GetPlayer()->RemoveSpellsCausingAura(SPELL_AURA_FEIGN_DEATH);    uint8 count = 0;    if (creature->isTabardDesigner())        count = 1;    else        count = 3;    WorldPacket data(SMSG_PETITION_SHOWLIST, 8+1+4*6);    data << guid;                                           // npc guid    data << count;                                          // count    if (count == 1)    {        data << uint32(1);                                  // index        data << uint32(GUILD_CHARTER);                      // charter entry        data << uint32(16161);                              // charter display id        data << uint32(GUILD_CHARTER_COST);                 // charter cost        data << uint32(0);                                  // unknown        data << uint32(9);                                  // required signs?    }    else    {        // 2v2        data << uint32(1);                                  // index        data << uint32(ARENA_TEAM_CHARTER_2v2);             // charter entry        data << uint32(16161);                              // charter display id        data << uint32(ARENA_TEAM_CHARTER_2v2_COST);        // charter cost        data << uint32(2);                                  // unknown        data << uint32(2);                                  // required signs?        // 3v3        data << uint32(2);                                  // index        data << uint32(ARENA_TEAM_CHARTER_3v3);             // charter entry        data << uint32(16161);                              // charter display id        data << uint32(ARENA_TEAM_CHARTER_3v3_COST);        // charter cost        data << uint32(3);                                  // unknown        data << uint32(3);                                  // required signs?        // 5v5        data << uint32(3);                                  // index        data << uint32(ARENA_TEAM_CHARTER_5v5);             // charter entry        data << uint32(16161);                              // charter display id        data << uint32(ARENA_TEAM_CHARTER_5v5_COST);        // charter cost        data << uint32(5);                                  // unknown        data << uint32(5);                                  // required signs?    }    //for (uint8 i = 0; i < count; ++i)    //{    //    data << uint32(i);                      // index    //    data << uint32(GUILD_CHARTER);          // charter entry    //    data << uint32(16161);                  // charter display id    //    data << uint32(GUILD_CHARTER_COST+i);   // charter cost    //    data << uint32(0);                      // unknown    //    data << uint32(9);                      // required signs?    //}    SendPacket(&data);    sLog->outDebug("Sent SMSG_PETITION_SHOWLIST");}
开发者ID:Maczuga,项目名称:SkyFire_one,代码行数:67,


示例7: SendPartyResult

void WorldSession::HandleGroupInviteOpcode(WorldPacket& recv_data){    std::string membername;    recv_data >> membername;    recv_data.read_skip<uint32>();                          // roles mask?    // attempt add selected player    // cheating    if (!normalizePlayerName(membername))    {        SendPartyResult(PARTY_OP_INVITE, membername, ERR_BAD_PLAYER_NAME_S);        return;    }    Player* player = sObjectMgr.GetPlayer(membername.c_str());    // no player    if (!player)    {        SendPartyResult(PARTY_OP_INVITE, membername, ERR_BAD_PLAYER_NAME_S);        return;    }    // can't group with    if (!sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_GROUP) && GetPlayer()->GetTeam() != player->GetTeam())    {        SendPartyResult(PARTY_OP_INVITE, membername, ERR_PLAYER_WRONG_FACTION);        return;    }    if (GetPlayer()->GetInstanceId() != 0 && player->GetInstanceId() != 0 && GetPlayer()->GetInstanceId() != player->GetInstanceId() && GetPlayer()->GetMapId() == player->GetMapId())    {        SendPartyResult(PARTY_OP_INVITE, membername, ERR_TARGET_NOT_IN_INSTANCE_S);        return;    }    // just ignore us    if (player->GetSocial()->HasIgnore(GetPlayer()->GetObjectGuid()))    {        SendPartyResult(PARTY_OP_INVITE, membername, ERR_IGNORING_YOU_S);        return;    }    Group* group = GetPlayer()->GetGroup();    if (group && group->isBGGroup())        group = GetPlayer()->GetOriginalGroup();    if (group && group->isRaidGroup() && !player->GetAllowLowLevelRaid() && (player->getLevel() < sWorld.getConfig(CONFIG_UINT32_MIN_LEVEL_FOR_RAID)))    {        SendPartyResult(PARTY_OP_INVITE, "", ERR_RAID_DISALLOWED_BY_LEVEL);        return;    }    // player already invited    if (player->GetGroupInvite())    {        SendPartyResult(PARTY_OP_INVITE, membername, ERR_ALREADY_IN_GROUP_S);        return;    }    Group* group2 = player->GetGroup();    if (group2 && group2->isBGGroup())        group2 = player->GetOriginalGroup();    // player already in another group    if (group2)    {        SendPartyResult(PARTY_OP_INVITE, membername, ERR_ALREADY_IN_GROUP_S);        // tell the player that they were invited but it failed as they were already in a group        SendGroupInvite(player, true);        return;    }    if (group)    {        // not have permissions for invite        if (!group->IsLeader(GetPlayer()->GetObjectGuid()) && !group->IsAssistant(GetPlayer()->GetObjectGuid()))        {            SendPartyResult(PARTY_OP_INVITE, "", ERR_NOT_LEADER);            return;        }        // not have place        if (group->IsFull())        {            SendPartyResult(PARTY_OP_INVITE, "", ERR_GROUP_FULL);            return;        }    }    // ok, but group not exist, start a new group    // but don't create and save the group to the DB until    // at least one person joins    if (!group)    {        group = new Group;        // new group: if can't add then delete        if (!group->AddLeaderInvite(GetPlayer()))//.........这里部分代码省略.........
开发者ID:ElunaLuaEngine,项目名称:ElunaMangosWotlk,代码行数:101,


示例8: GUID_LOPART

void WorldSession::HandlePetitionBuyOpcode(WorldPacket& recv_data){    sLog->outDebug("Received opcode CMSG_PETITION_BUY");    uint64 guidNPC;    uint32 clientIndex;                                     // 1 for guild and arenaslot+1 for arenas in client    uint64 unk1, unk3, unk4, unk5, unk6, unk7;    uint32 unk2, unk10;    std::string name;    uint16 unk8;    uint8  unk9;    recv_data >> guidNPC;                                   // NPC GUID    recv_data >> unk1;                                      // 0    recv_data >> unk2;                                      // 0    recv_data >> name;                                      // name    recv_data >> unk3;                                      // 0    recv_data >> unk4;                                      // 0    recv_data >> unk5;                                      // 0    recv_data >> unk6;                                      // 0    recv_data >> unk7;                                      // 0    recv_data >> unk8;                                      // 0    recv_data >> unk9;                                      // 0    recv_data >> clientIndex;                                     // index    recv_data >> unk10;                                     // 0    sLog->outDebug("Petitioner with GUID %u tried sell petition: name %s", GUID_LOPART(guidNPC), name.c_str());    // prevent cheating    Creature* creature = GetPlayer()->GetNPCIfCanInteractWith(guidNPC, UNIT_NPC_FLAG_PETITIONER);    if (!creature)    {        sLog->outDebug("WORLD: HandlePetitionBuyOpcode - Unit (GUID: %u) not found or you can't interact with him.", GUID_LOPART(guidNPC));        return;    }    // remove fake death    if (GetPlayer()->hasUnitState(UNIT_STAT_DIED))        GetPlayer()->RemoveSpellsCausingAura(SPELL_AURA_FEIGN_DEATH);    uint32 charterid = 0;    uint32 cost = 0;    uint32 type = 0;    if (creature->isTabardDesigner())    {        // if tabard designer, then trying to buy a guild charter.        // do not let if already in guild.        if (_player->GetGuildId())            return;        charterid = GUILD_CHARTER;        cost = GUILD_CHARTER_COST;        type = 9;    }    else    {        // TODO: find correct opcode        if (_player->getLevel() < sWorld->getConfig(CONFIG_MAX_PLAYER_LEVEL))        {            SendNotification(LANG_ARENA_ONE_TOOLOW, sWorld->getConfig(CONFIG_MAX_PLAYER_LEVEL));            return;        }        switch (clientIndex)                                 // arenaSlot+1 as received from client (1 from 3 case)        {            case 1:                charterid = ARENA_TEAM_CHARTER_2v2;                cost = ARENA_TEAM_CHARTER_2v2_COST;                type = 2;                                   // 2v2                break;            case 2:                charterid = ARENA_TEAM_CHARTER_3v3;                cost = ARENA_TEAM_CHARTER_3v3_COST;                type = 3;                                   // 3v3                break;            case 3:                charterid = ARENA_TEAM_CHARTER_5v5;                cost = ARENA_TEAM_CHARTER_5v5_COST;                type = 5;                                   // 5v5                break;            default:                sLog->outDebug("unknown selection at buy arena petition: %u", clientIndex);                return;        }        if (_player->GetArenaTeamId(clientIndex - 1))        // arenaSlot+1 as received from client        {            SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, name, "", ERR_ALREADY_IN_ARENA_TEAM);            return;        }    }    if (type == 9)    {        if (sObjectMgr->GetGuildByName(name))        {            SendGuildCommandResult(GUILD_CREATE_S, name, ERR_GUILD_NAME_EXISTS_S);            return;        }        if (sObjectMgr->IsReservedName(name) || !ObjectMgr::IsValidCharterName(name))        {            SendGuildCommandResult(GUILD_CREATE_S, name, ERR_GUILD_NAME_INVALID);//.........这里部分代码省略.........
开发者ID:Maczuga,项目名称:SkyFire_one,代码行数:101,


示例9: return

bool FVlcMediaAudioTrack::Disable(){	return (!IsEnabled() || (FVlc::AudioSetTrack(GetPlayer(), -1) == 0));}
开发者ID:ntvis,项目名称:VlcMedia,代码行数:4,


示例10: uint32

void WorldSession::HandleQuestGiverAcceptQuestOpcode(WorldPacket & recv_data){    uint64 guid;    uint32 quest;    uint32 unk1;    recv_data >> guid >> quest >> unk1;    if (!GetPlayer()->isAlive())        return;    sLog->outDebug("WORLD: Received CMSG_QUESTGIVER_ACCEPT_QUEST npc = %u, quest = %u, unk1 = %u", uint32(GUID_LOPART(guid)), quest, unk1);    Object* pObject = ObjectAccessor::GetObjectByTypeMask(*_player, guid,TYPEMASK_UNIT|TYPEMASK_GAMEOBJECT|TYPEMASK_ITEM|TYPEMASK_PLAYER);    // From 4.0.1 Player can be QuestGiver for self    if(!IS_PLAYER_GUID(guid))    {        if (!pObject || (pObject->GetTypeId() != TYPEID_PLAYER && !pObject->hasQuest(quest)) ||             (pObject->GetTypeId() == TYPEID_PLAYER && !pObject->ToPlayer()->CanShareQuest(quest)))        {            _player->PlayerTalkClass->SendCloseGossip();            _player->SaveToDB(); // Now save player every accept/deliver a quest            _player->SetDivider(0);            return;        }    }    Quest const* qInfo = sObjectMgr->GetQuestTemplate(quest);    if (qInfo)    {        // prevent cheating        if (!GetPlayer()->CanTakeQuest(qInfo,true))        {            _player->PlayerTalkClass->SendCloseGossip();            _player->SetDivider(0);            return;        }        if (_player->GetDivider() != 0)        {            Player *pPlayer = ObjectAccessor::FindPlayer(_player->GetDivider());            if (pPlayer)            {                pPlayer->SendPushToPartyResponse(_player, QUEST_PARTY_MSG_ACCEPT_QUEST);                _player->SetDivider(0);            }        }        if (_player->CanAddQuest(qInfo, true))        {            _player->AddQuest(qInfo, pObject);            if (qInfo->HasFlag(QUEST_FLAGS_PARTY_ACCEPT))            {                if (Group* pGroup = _player->GetGroup())                {                    for (GroupReference *itr = pGroup->GetFirstMember(); itr != NULL; itr = itr->next())                    {                        Player* pPlayer = itr->getSource();                        if (!pPlayer || pPlayer == _player)     // not self                            continue;                        if (pPlayer->CanTakeQuest(qInfo, true))                        {                            pPlayer->SetDivider(_player->GetGUID());                            //need confirmation that any gossip window will close                            pPlayer->PlayerTalkClass->SendCloseGossip();                            _player->SendQuestConfirmAccept(qInfo, pPlayer);                        }                    }                }            }            if (_player->CanCompleteQuest(quest))                _player->CompleteQuest(quest);            switch(pObject->GetTypeId())            {                case TYPEID_UNIT:                    sScriptMgr->OnQuestAccept(_player, (pObject->ToCreature()), qInfo);                    (pObject->ToCreature())->AI()->sQuestAccept(_player, qInfo);                    break;                case TYPEID_ITEM:                case TYPEID_CONTAINER:                {                    sScriptMgr->OnQuestAccept(_player, ((Item*)pObject), qInfo);                    // destroy not required for quest finish quest starting item                    bool destroyItem = true;                    for (int i = 0; i < QUEST_ITEM_OBJECTIVES_COUNT; ++i)                    {                        if ((qInfo->ReqItemId[i] == ((Item*)pObject)->GetEntry()) && (((Item*)pObject)->GetTemplate()->MaxCount > 0))                        {                            destroyItem = false;                            break;                        }                    }//.........这里部分代码省略.........
开发者ID:wuhongyi1977,项目名称:StrawberryCore,代码行数:101,


示例11: pet

void WorldSession::HandlePetSetAction(WorldPacket & recv_data){    sLog->outDetail("HandlePetSetAction. CMSG_PET_SET_ACTION");    uint64 petguid;    uint8  count;    recv_data >> petguid;    Unit* pet = ObjectAccessor::GetUnit(*_player, petguid);    if (!pet || pet != _player->GetFirstControlled())    {        sLog->outError("HandlePetSetAction: Unknown pet (GUID: %u) or pet owner (GUID: %u)", GUID_LOPART(petguid), _player->GetGUIDLow());        return;    }    CharmInfo* charmInfo = pet->GetCharmInfo();    if (!charmInfo)    {        sLog->outError("WorldSession::HandlePetSetAction: object (GUID: %u TypeId: %u) is considered pet-like but doesn't have a charminfo!", pet->GetGUIDLow(), pet->GetTypeId());        return;    }    count = (recv_data.size() == 24) ? 2 : 1;    uint32 position[2];    uint32 data[2];    bool move_command = false;    for (uint8 i = 0; i < count; ++i)    {        recv_data >> position[i];        recv_data >> data[i];        uint8 act_state = UNIT_ACTION_BUTTON_TYPE(data[i]);        //ignore invalid position        if (position[i] >= MAX_UNIT_ACTION_BAR_INDEX)            return;        // in the normal case, command and reaction buttons can only be moved, not removed        // at moving count == 2, at removing count == 1        // ignore attempt to remove command|reaction buttons (not possible at normal case)        if (act_state == ACT_COMMAND || act_state == ACT_REACTION)        {            if (count == 1)                return;            move_command = true;        }    }    // check swap (at command->spell swap client remove spell first in another packet, so check only command move correctness)    if (move_command)    {        uint8 act_state_0 = UNIT_ACTION_BUTTON_TYPE(data[0]);        if (act_state_0 == ACT_COMMAND || act_state_0 == ACT_REACTION)        {            uint32 spell_id_0 = UNIT_ACTION_BUTTON_ACTION(data[0]);            UnitActionBarEntry const* actionEntry_1 = charmInfo->GetActionBarEntry(position[1]);            if (!actionEntry_1 || spell_id_0 != actionEntry_1->GetAction() ||                act_state_0 != actionEntry_1->GetType())                return;        }        uint8 act_state_1 = UNIT_ACTION_BUTTON_TYPE(data[1]);        if (act_state_1 == ACT_COMMAND || act_state_1 == ACT_REACTION)        {            uint32 spell_id_1 = UNIT_ACTION_BUTTON_ACTION(data[1]);            UnitActionBarEntry const* actionEntry_0 = charmInfo->GetActionBarEntry(position[0]);            if (!actionEntry_0 || spell_id_1 != actionEntry_0->GetAction() ||                act_state_1 != actionEntry_0->GetType())                return;        }    }    for (uint8 i = 0; i < count; ++i)    {        uint32 spell_id = UNIT_ACTION_BUTTON_ACTION(data[i]);        uint8 act_state = UNIT_ACTION_BUTTON_TYPE(data[i]);        sLog->outDetail("Player %s has changed pet spell action. Position: %u, Spell: %u, State: 0x%X", _player->GetName(), position[i], spell_id, uint32(act_state));        //if it's act for spell (en/disable/cast) and there is a spell given (0 = remove spell) which pet doesn't know, don't add        if (!((act_state == ACT_ENABLED || act_state == ACT_DISABLED || act_state == ACT_PASSIVE) && spell_id && !pet->HasSpell(spell_id)))        {            if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spell_id))            {                //sign for autocast                if (act_state == ACT_ENABLED)                {                    if (pet->GetTypeId() == TYPEID_UNIT && pet->ToCreature()->isPet())                        ((Pet*)pet)->ToggleAutocast(spellInfo, true);                    else                        for (Unit::ControlList::iterator itr = GetPlayer()->m_Controlled.begin(); itr != GetPlayer()->m_Controlled.end(); ++itr)                            if ((*itr)->GetEntry() == pet->GetEntry())                                (*itr)->GetCharmInfo()->ToggleCreatureAutocast(spellInfo, true);                }                //sign for no/turn off autocast//.........这里部分代码省略.........
开发者ID:Aquinius,项目名称:BlackSun,代码行数:101,


示例12: reward

void WorldSession::HandleQuestGiverChooseRewardOpcode(WorldPacket & recv_data){    uint32 quest, reward;    uint64 guid;    recv_data >> guid >> quest >> reward;    if (reward >= QUEST_REWARD_CHOICES_COUNT)    {        sLog->outError("Error in CMSG_QUESTGIVER_CHOOSE_REWARD: player %s (guid %d) tried to get invalid reward (%u) (probably packet hacking)", _player->GetName(), _player->GetGUIDLow(), reward);        return;    }    if (!GetPlayer()->isAlive())        return;    sLog->outDebug("WORLD: Received CMSG_QUESTGIVER_CHOOSE_REWARD npc = %u, quest = %u, reward = %u",uint32(GUID_LOPART(guid)),quest,reward);    Object* pObject = ObjectAccessor::GetObjectByTypeMask(*_player, guid,TYPEMASK_UNIT|TYPEMASK_GAMEOBJECT|TYPEMASK_PLAYER);    if (!pObject)        return;    if(!IS_PLAYER_GUID(guid))        if (!pObject->hasInvolvedQuest(quest))            return;    Quest const *pQuest = sObjectMgr->GetQuestTemplate(quest);    if (pQuest)    {        if (_player->CanRewardQuest(pQuest, reward, true))        {            _player->RewardQuest(pQuest, reward, pObject);            switch(pObject->GetTypeId())            {                case TYPEID_UNIT:                    if (!(sScriptMgr->OnQuestReward(_player, (pObject->ToCreature()), pQuest, reward)))                    {                        // Send next quest                        if (Quest const* nextquest = _player->GetNextQuest(guid ,pQuest))                            _player->PlayerTalkClass->SendQuestGiverQuestDetails(nextquest,guid,true);                        (pObject->ToCreature())->AI()->sQuestReward(_player, pQuest, reward);                    }                    break;                case TYPEID_GAMEOBJECT:                    if (!sScriptMgr->OnQuestReward(_player, ((GameObject*)pObject), pQuest, reward))                    {                        // Send next quest                        if (Quest const* nextquest = _player->GetNextQuest(guid ,pQuest))                            _player->PlayerTalkClass->SendQuestGiverQuestDetails(nextquest,guid,true);                        pObject->ToGameObject()->AI()->QuestReward(_player, pQuest, reward);                    }                    break;                case TYPEID_PLAYER: break;                default:                    break;            }        }        else            _player->PlayerTalkClass->SendQuestGiverOfferReward(pQuest, guid, true);        // Don't forget to close window.        _player->SendQuestWindowClose(pQuest->GetQuestId());    }    // Now save player every accept/deliver a quest    if (_player)        _player->SaveToDB();}
开发者ID:wuhongyi1977,项目名称:StrawberryCore,代码行数:69,


示例13: COUNT

void WorldSession::HandlePetitionSignOpcode(WorldPacket& recv_data){    sLog->outDebug("Received opcode CMSG_PETITION_SIGN");    Field *fields;    uint64 petitionguid;    uint8 unk;    recv_data >> petitionguid;                              // petition guid    recv_data >> unk;    QueryResult_AutoPtr result = CharacterDatabase.PQuery(        "SELECT ownerguid, "        "  (SELECT COUNT(playerguid) FROM petition_sign WHERE petition_sign.petitionguid = '%u') AS signs, "        "  type "        "FROM petition WHERE petitionguid = '%u'", GUID_LOPART(petitionguid), GUID_LOPART(petitionguid));    if (!result)    {        sLog->outError("any petition on server...");        return;    }    fields = result->Fetch();    uint64 ownerguid = MAKE_NEW_GUID(fields[0].GetUInt32(), 0, HIGHGUID_PLAYER);    uint8 signs = fields[1].GetUInt8();    uint32 type = fields[2].GetUInt32();    uint32 plguidlo = _player->GetGUIDLow();    if (GUID_LOPART(ownerguid) == plguidlo)        return;    // not let enemies sign guild charter    if (!sWorld->getConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && GetPlayer()->GetTeam() != sObjectMgr->GetPlayerTeamByGUID(ownerguid))    {        if (type != 9)            SendArenaTeamCommandResult(ERR_ARENA_TEAM_INVITE_SS, "", "", ERR_ARENA_TEAM_NOT_ALLIED);        else            SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_NOT_ALLIED);        return;    }    if (type != 9)    {        if (_player->getLevel() < sWorld->getConfig(CONFIG_MAX_PLAYER_LEVEL))        {            SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", _player->GetName(), ERR_ARENA_TEAM_TARGET_TOO_LOW_S);            return;        }        uint8 slot = ArenaTeam::GetSlotByType(type);        if (slot >= MAX_ARENA_SLOT)            return;        if (_player->GetArenaTeamId(slot))        {            SendArenaTeamCommandResult(ERR_ARENA_TEAM_INVITE_SS, "", _player->GetName(), ERR_ALREADY_IN_ARENA_TEAM_S);            return;        }        if (_player->GetArenaTeamIdInvited())        {            SendArenaTeamCommandResult(ERR_ARENA_TEAM_INVITE_SS, "", _player->GetName(), ERR_ALREADY_INVITED_TO_ARENA_TEAM_S);            return;        }    }    else    {        if (_player->GetGuildId())        {            SendGuildCommandResult(GUILD_INVITE_S, _player->GetName(), ERR_ALREADY_IN_GUILD_S);            return;        }        if (_player->GetGuildIdInvited())        {            SendGuildCommandResult(GUILD_INVITE_S, _player->GetName(), ERR_ALREADY_INVITED_TO_GUILD_S);            return;        }    }    if (++signs > type)                                        // client signs maximum        return;    //client doesn't allow to sign petition two times by one character, but not check sign by another character from same account    //not allow sign another player from already sign player account    result = CharacterDatabase.PQuery("SELECT playerguid FROM petition_sign WHERE player_account = '%u' AND petitionguid = '%u'", GetAccountId(), GUID_LOPART(petitionguid));    if (result)    {        WorldPacket data(SMSG_PETITION_SIGN_RESULTS, (8+8+4));        data << petitionguid;        data << _player->GetGUID();        data << (uint32)PETITION_SIGN_ALREADY_SIGNED;        // close at signer side        SendPacket(&data);        // update for owner if online        if (Player *owner = sObjectMgr->GetPlayer(ownerguid))            owner->GetSession()->SendPacket(&data);        return;//.........这里部分代码省略.........
开发者ID:Maczuga,项目名称:SkyFire_one,代码行数:101,



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


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