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

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

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

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

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

示例1: TC_LOG_ERROR

//.........这里部分代码省略.........        else        {            Unit::AuraEffectList const& ModLangAuras = sender->GetAuraEffectsByType(SPELL_AURA_MOD_LANGUAGE);            if (!ModLangAuras.empty())                lang = ModLangAuras.front()->GetMiscValue();            else if (HasPermission(rbac::RBAC_PERM_TWO_SIDE_INTERACTION_CHAT))                lang = LANG_UNIVERSAL;            else            {                switch (type)                {                    case CHAT_MSG_PARTY:                    case CHAT_MSG_PARTY_LEADER:                    case CHAT_MSG_RAID:                    case CHAT_MSG_RAID_LEADER:                    case CHAT_MSG_RAID_WARNING:                        // allow two side chat at group channel if two side group allowed                        if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))                            lang = LANG_UNIVERSAL;                        break;                    case CHAT_MSG_GUILD:                    case CHAT_MSG_OFFICER:                        // allow two side chat at guild channel if two side guild allowed                        if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD))                            lang = LANG_UNIVERSAL;                        break;                }            }        }        if (!sender->CanSpeak())        {            std::string timeStr = secsToTimeString(m_muteTime - time(NULL));            SendNotification(GetTrinityString(LANG_WAIT_BEFORE_SPEAKING), timeStr.c_str());            recvData.rfinish(); // Prevent warnings            return;        }        if (type != CHAT_MSG_AFK && type != CHAT_MSG_DND)            sender->UpdateSpeakTime();    }    if (sender->HasAura(1852) && type != CHAT_MSG_WHISPER)    {        SendNotification(GetTrinityString(LANG_GM_SILENCE), sender->GetName().c_str());        recvData.rfinish();        return;    }    std::string to, channel, msg;    bool ignoreChecks = false;    switch (type)    {        case CHAT_MSG_SAY:        case CHAT_MSG_EMOTE:        case CHAT_MSG_YELL:        case CHAT_MSG_PARTY:        case CHAT_MSG_PARTY_LEADER:        case CHAT_MSG_GUILD:        case CHAT_MSG_OFFICER:        case CHAT_MSG_RAID:        case CHAT_MSG_RAID_LEADER:        case CHAT_MSG_RAID_WARNING:        case CHAT_MSG_BATTLEGROUND:        case CHAT_MSG_BATTLEGROUND_LEADER:            recvData >> msg;
开发者ID:beast007,项目名称:Wrath-WoW,代码行数:67,


示例2: GetTrinityString

void WorldSession::SendTrainerList(uint64 guid){    std::string str = GetTrinityString(LANG_NPC_TAINER_HELLO);    SendTrainerList(guid, str);}
开发者ID:H4D3S,项目名称:cataclysm,代码行数:5,


示例3: getSelectedPlayer

bool ChatHandler::HandleLookupTitleCommand(const char* args){    if (!*args)        return false;    // can be NULL in console call    Player* target = getSelectedPlayer();    // title name have single string arg for player name    char const* targetName = target ? target->GetName() : "NAME";    std::string namepart = args;    std::wstring wnamepart;    if (!Utf8toWStr(namepart, wnamepart))        return false;    // converting string that we try to find to lower case    wstrToLower(wnamepart);    uint32 counter = 0;                                     // Counter for figure out that we found smth.    uint32 maxResults = sWorld->getIntConfig(CONFIG_MAX_RESULTS_LOOKUP_COMMANDS);    // Search in CharTitles.dbc    for (uint32 id = 0; id < sCharTitlesStore.GetNumRows(); id++)    {        CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(id);        if (titleInfo)        {            int loc = GetSessionDbcLocale();            std::string name = titleInfo->name[loc];            if (name.empty())                continue;            if (!Utf8FitTo(name, wnamepart))            {                loc = 0;                for (; loc < TOTAL_LOCALES; ++loc)                {                    if (loc == GetSessionDbcLocale())                        continue;                    name = titleInfo->name[loc];                    if (name.empty())                        continue;                    if (Utf8FitTo(name, wnamepart))                        break;                }            }            if (loc < TOTAL_LOCALES)            {                if (maxResults && counter == maxResults)                {                    PSendSysMessage(LANG_COMMAND_LOOKUP_MAX_RESULTS, maxResults);                    return true;                }                char const* knownStr = target && target->HasTitle(titleInfo) ? GetTrinityString(LANG_KNOWN) : "";                char const* activeStr = target && target->GetUInt32Value(PLAYER_CHOSEN_TITLE) == titleInfo->bit_index                    ? GetTrinityString(LANG_ACTIVE)                    : "";                char titleNameStr[80];                snprintf(titleNameStr, 80, name.c_str(), targetName);                // send title in "id (idx:idx) - [namedlink locale]" format                if (m_session)                    PSendSysMessage(LANG_TITLE_LIST_CHAT, id, titleInfo->bit_index, id, titleNameStr, localeNames[loc], knownStr, activeStr);                else                    PSendSysMessage(LANG_TITLE_LIST_CONSOLE, id, titleInfo->bit_index, titleNameStr, localeNames[loc], knownStr, activeStr);                ++counter;            }        }    }    if (counter == 0)                                       // if counter == 0 then we found nth        SendSysMessage(LANG_COMMAND_NOTITLEFOUND);    return true;}
开发者ID:DragonFire,项目名称:TRcore,代码行数:82,


示例4: GetPlayer

void WorldSession::HandleSendMail(WorldPacket& recvData){    uint64 mailbox, unk3;    std::string receiverName, subject, body;    uint32 unk1, unk2, money, COD;    uint8 unk4;    uint8 items_count;    recvData >> mailbox >> receiverName >> subject >> body             >> unk1                                       // stationery?             >> unk2                                       // 0x00000000             >> items_count;                               // attached items count    if (items_count > MAX_MAIL_ITEMS)                      // client limit    {        GetPlayer()->SendMailResult(0, MAIL_SEND, MAIL_ERR_TOO_MANY_ATTACHMENTS);        recvData.rfinish();                   // set to end to avoid warnings spam        return;    }    uint64 itemGUIDs[MAX_MAIL_ITEMS];    for (uint8 i = 0; i < items_count; ++i)    {        recvData.read_skip<uint8>();                       // item slot in mail, not used        recvData >> itemGUIDs[i];    }    recvData >> money >> COD;                              // money and cod    recvData >> unk3;                                      // const 0    recvData >> unk4;                                      // const 0    // packet read complete, now do check    if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))        return;    if (receiverName.empty())        return;    Player* player = _player;    if (player->getLevel() < sWorld->getIntConfig(CONFIG_MAIL_LEVEL_REQ))    {        SendNotification(GetTrinityString(LANG_MAIL_SENDER_REQ), sWorld->getIntConfig(CONFIG_MAIL_LEVEL_REQ));        return;    }    uint64 receiverGuid = 0;    if (normalizePlayerName(receiverName))        receiverGuid = sObjectMgr->GetPlayerGUIDByName(receiverName);    if (!receiverGuid)    {        TC_LOG_INFO(LOG_FILTER_NETWORKIO, "Player %u is sending mail to %s (GUID: not existed!) with subject %s "            "and body %s includes %u items, %u copper and %u COD copper with unk1 = %u, unk2 = %u",            player->GetGUIDLow(), receiverName.c_str(), subject.c_str(), body.c_str(),            items_count, money, COD, unk1, unk2);        player->SendMailResult(0, MAIL_SEND, MAIL_ERR_RECIPIENT_NOT_FOUND);        return;    }    TC_LOG_INFO(LOG_FILTER_NETWORKIO, "Player %u is sending mail to %s (GUID: %u) with subject %s and body %s "        "includes %u items, %u copper and %u COD copper with unk1 = %u, unk2 = %u",        player->GetGUIDLow(), receiverName.c_str(), GUID_LOPART(receiverGuid), subject.c_str(),        body.c_str(), items_count, money, COD, unk1, unk2);    if (player->GetGUID() == receiverGuid)    {        player->SendMailResult(0, MAIL_SEND, MAIL_ERR_CANNOT_SEND_TO_SELF);        return;    }    uint32 cost = items_count ? 30 * items_count : 30;  // price hardcoded in client    uint32 reqmoney = cost + money;    if (!player->HasEnoughMoney(reqmoney) && !player->IsGameMaster())    {        player->SendMailResult(0, MAIL_SEND, MAIL_ERR_NOT_ENOUGH_MONEY);        return;    }    Player* receiver = ObjectAccessor::FindPlayer(receiverGuid);    uint32 receiverTeam = 0;    uint8 mailsCount = 0;                                  //do not allow to send to one player more than 100 mails    uint8 receiverLevel = 0;    uint32 receiverAccountId = 0;    if (receiver)    {        receiverTeam = receiver->GetTeam();        mailsCount = receiver->GetMailSize();        receiverLevel = receiver->getLevel();        receiverAccountId = receiver->GetSession()->GetAccountId();    }    else    {        receiverTeam = sObjectMgr->GetPlayerTeamByGUID(receiverGuid);//.........这里部分代码省略.........
开发者ID:mynew2,项目名称:trinitycore-1,代码行数:101,


示例5: MAKE_NEW_GUID

//.........这里部分代码省略.........        level = fields[1].GetUInt8();        money = fields[2].GetUInt32();        accId = fields[3].GetUInt32();        race = fields[4].GetUInt8();        Class = fields[5].GetUInt8();        mapId = fields[6].GetUInt16();        areaId = fields[7].GetUInt16();		        QueryResult row = CharacterDatabase.PQuery("SELECT * FROM `jail` WHERE `guid`='%u' LIMIT 1", GUID_LOPART(target_guid));	            if (!row)        {             p_jail_isjailed = false;        }        else        {            Field *data = row->Fetch();            p_jail_isjailed = true;            p_jail_guid = data[0].GetUInt32();            p_jail_char = data[1].GetString();            p_jail_release = data[2].GetUInt32();            p_jail_amnestietime = data[3].GetUInt32();            p_jail_reason = data[4].GetString();            p_jail_times = data[5].GetUInt32();            p_jail_gmacc = data[6].GetUInt32();            p_jail_gmchar = data[7].GetString();            p_jail_lasttime = data[8].GetString();            p_jail_duration = data[9].GetUInt32();            gmname = "";        }    }    std::string username   = GetTrinityString(LANG_ERROR);    std::string email      = GetTrinityString(LANG_ERROR);    std::string last_ip    = GetTrinityString(LANG_ERROR);    uint32 security        = 0;    std::string last_login = GetTrinityString(LANG_ERROR);    PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO);    stmt->setInt32(0, int32(realmID));    stmt->setUInt32(1, accId);    PreparedQueryResult result = LoginDatabase.Query(stmt);    if (result)    {        Field* fields = result->Fetch();        username      = fields[0].GetString();        security      = fields[1].GetUInt8();        email         = fields[2].GetString();        muteTime      = fields[5].GetUInt64();        if (email.empty())            email = "-";        if (!m_session || m_session->GetSecurity() >= AccountTypes(security))        {            last_ip = fields[3].GetString();            last_login = fields[4].GetString();            uint32 ip = inet_addr(last_ip.c_str());#if TRINITY_ENDIAN == BIGENDIAN            EndianConvertReverse(ip);#endif            PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_IP2NATION_COUNTRY);
开发者ID:Ussmaan,项目名称:ProjectRisingDarkness,代码行数:67,


示例6: SetHordeFlagPicker

void BattleGroundWS::EventPlayerCapturedFlag(Player *Source){    if(GetStatus() != STATUS_IN_PROGRESS)        return;    uint8 type = 0;    uint32 winner = 0;    const char *message = "";    //TODO FIX reputation and honor gains for low level players!    Source->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT);    if(Source->GetTeam() == ALLIANCE)    {        if (!this->IsHordeFlagPickedup())            return;        SetHordeFlagPicker(0);                              // must be before aura remove to prevent 2 events (drop+capture) at the same time                                                            // horde flag in base (but not respawned yet)        m_FlagState[BG_TEAM_HORDE] = BG_WS_FLAG_STATE_WAIT_RESPAWN;                                                            // Drop Horde Flag from Player        Source->RemoveAurasDueToSpell(BG_WS_SPELL_WARSONG_FLAG);        if(m_FlagDebuffState == 1)          Source->RemoveAurasDueToSpell(WS_SPELL_FOCUSED_ASSAULT);        if(m_FlagDebuffState == 2)          Source->RemoveAurasDueToSpell(WS_SPELL_BRUTAL_ASSAULT);        message = GetTrinityString(LANG_BG_WS_CAPTURED_HF);        type = CHAT_MSG_BG_SYSTEM_ALLIANCE;        if(GetTeamScore(ALLIANCE) < BG_WS_MAX_TEAM_SCORE)            AddPoint(ALLIANCE, 1);        PlaySoundToAll(BG_WS_SOUND_FLAG_CAPTURED_ALLIANCE);        RewardReputationToTeam(890, BG_WSG_Reputation[m_HonorMode][BG_WSG_FLAG_CAP], ALLIANCE);          // +35 reputation        RewardHonorToTeam(BG_WSG_Honor[m_HonorMode][BG_WSG_FLAG_CAP], ALLIANCE);                    // +40 bonushonor    }    else    {        if (!this->IsAllianceFlagPickedup())            return;        SetAllianceFlagPicker(0);                           // must be before aura remove to prevent 2 events (drop+capture) at the same time                                                            // alliance flag in base (but not respawned yet)        m_FlagState[BG_TEAM_ALLIANCE] = BG_WS_FLAG_STATE_WAIT_RESPAWN;                                                            // Drop Alliance Flag from Player        Source->RemoveAurasDueToSpell(BG_WS_SPELL_SILVERWING_FLAG);        if(m_FlagDebuffState == 1)          Source->RemoveAurasDueToSpell(WS_SPELL_FOCUSED_ASSAULT);        if(m_FlagDebuffState == 2)          Source->RemoveAurasDueToSpell(WS_SPELL_BRUTAL_ASSAULT);        message = GetTrinityString(LANG_BG_WS_CAPTURED_AF);        type = CHAT_MSG_BG_SYSTEM_HORDE;        if(GetTeamScore(HORDE) < BG_WS_MAX_TEAM_SCORE)            AddPoint(HORDE, 1);        PlaySoundToAll(BG_WS_SOUND_FLAG_CAPTURED_HORDE);        RewardReputationToTeam(889, BG_WSG_Reputation[m_HonorMode][BG_WSG_FLAG_CAP], HORDE);             // +35 reputation        RewardHonorToTeam(BG_WSG_Honor[m_HonorMode][BG_WSG_FLAG_CAP], HORDE);                       // +40 bonushonor    }    SpawnBGObject(BG_WS_OBJECT_H_FLAG, BG_WS_FLAG_RESPAWN_TIME);    SpawnBGObject(BG_WS_OBJECT_A_FLAG, BG_WS_FLAG_RESPAWN_TIME);    WorldPacket data;    ChatHandler::FillMessageData(&data, Source->GetSession(), type, LANG_UNIVERSAL, NULL, Source->GetGUID(), message, NULL);    SendPacketToAll(&data);    UpdateFlagState(Source->GetTeam(), 1);                  // flag state none    UpdateTeamScore(Source->GetTeam());    // only flag capture should be updated    UpdatePlayerScore(Source, SCORE_FLAG_CAPTURES, 1);      // +1 flag captures...    if(GetTeamScore(ALLIANCE) == BG_WS_MAX_TEAM_SCORE)        winner = ALLIANCE;    if(GetTeamScore(HORDE) == BG_WS_MAX_TEAM_SCORE)        winner = HORDE;    if(winner)    {        UpdateWorldState(BG_WS_FLAG_UNK_ALLIANCE, 0);        UpdateWorldState(BG_WS_FLAG_UNK_HORDE, 0);        UpdateWorldState(BG_WS_FLAG_STATE_ALLIANCE, 1);        UpdateWorldState(BG_WS_FLAG_STATE_HORDE, 1);        RewardHonorToTeam(BG_WSG_Honor[m_HonorMode][BG_WSG_WIN], winner);        EndBattleGround(winner);    }    else    {        m_FlagsTimer[GetTeamIndexByTeamId(Source->GetTeam()) ? 0 : 1] = BG_WS_FLAG_RESPAWN_TIME;    }}
开发者ID:de-dima,项目名称:243,代码行数:88,


示例7: GetTrinityString

void BattleGroundWS::EventPlayerClickedOnFlag(Player *Source, GameObject* target_obj){    if(GetStatus() != STATUS_IN_PROGRESS)        return;    const char *message;    uint8 type = 0;    //alliance flag picked up from base    if(Source->GetTeam() == HORDE && this->GetFlagState(ALLIANCE) == BG_WS_FLAG_STATE_ON_BASE        && this->m_BgObjects[BG_WS_OBJECT_A_FLAG] == target_obj->GetGUID())    {        message = GetTrinityString(LANG_BG_WS_PICKEDUP_AF);        type = CHAT_MSG_BG_SYSTEM_HORDE;        PlaySoundToAll(BG_WS_SOUND_ALLIANCE_FLAG_PICKED_UP);        SpawnBGObject(BG_WS_OBJECT_A_FLAG, RESPAWN_ONE_DAY);        SetAllianceFlagPicker(Source->GetGUID());        m_FlagState[BG_TEAM_ALLIANCE] = BG_WS_FLAG_STATE_ON_PLAYER;        //update world state to show correct flag carrier        UpdateFlagState(HORDE, BG_WS_FLAG_STATE_ON_PLAYER);        UpdateWorldState(BG_WS_FLAG_UNK_ALLIANCE, 1);        Source->CastSpell(Source, BG_WS_SPELL_SILVERWING_FLAG, true);        if(m_FlagState[1] == BG_WS_FLAG_STATE_ON_PLAYER)          m_BothFlagsKept = true;    }    //horde flag picked up from base    if (Source->GetTeam() == ALLIANCE && this->GetFlagState(HORDE) == BG_WS_FLAG_STATE_ON_BASE        && this->m_BgObjects[BG_WS_OBJECT_H_FLAG] == target_obj->GetGUID())    {        message = GetTrinityString(LANG_BG_WS_PICKEDUP_HF);        type = CHAT_MSG_BG_SYSTEM_ALLIANCE;        PlaySoundToAll(BG_WS_SOUND_HORDE_FLAG_PICKED_UP);        SpawnBGObject(BG_WS_OBJECT_H_FLAG, RESPAWN_ONE_DAY);        SetHordeFlagPicker(Source->GetGUID());        m_FlagState[BG_TEAM_HORDE] = BG_WS_FLAG_STATE_ON_PLAYER;        //update world state to show correct flag carrier        UpdateFlagState(ALLIANCE, BG_WS_FLAG_STATE_ON_PLAYER);        UpdateWorldState(BG_WS_FLAG_UNK_HORDE, 1);        Source->CastSpell(Source, BG_WS_SPELL_WARSONG_FLAG, true);        if(m_FlagState[0] == BG_WS_FLAG_STATE_ON_PLAYER)          m_BothFlagsKept = true;    }    //Alliance flag on ground(not in base) (returned or picked up again from ground!)    if(this->GetFlagState(ALLIANCE) == BG_WS_FLAG_STATE_ON_GROUND && Source->IsWithinDistInMap(target_obj, 10) && target_obj->GetGOInfo()->id == BG_OBJECT_A_FLAG_GROUND_WS_ENTRY)    {        if(Source->GetTeam() == ALLIANCE)        {            message = GetTrinityString(LANG_BG_WS_RETURNED_AF);            type = CHAT_MSG_BG_SYSTEM_ALLIANCE;            UpdateFlagState(HORDE, BG_WS_FLAG_STATE_WAIT_RESPAWN);            RespawnFlag(ALLIANCE, false);            SpawnBGObject(BG_WS_OBJECT_A_FLAG, RESPAWN_IMMEDIATELY);            PlaySoundToAll(BG_WS_SOUND_FLAG_RETURNED);            UpdatePlayerScore(Source, SCORE_FLAG_RETURNS, 1);            m_BothFlagsKept = false;        }        else        {            message = GetTrinityString(LANG_BG_WS_PICKEDUP_AF);            type = CHAT_MSG_BG_SYSTEM_HORDE;            PlaySoundToAll(BG_WS_SOUND_ALLIANCE_FLAG_PICKED_UP);            SpawnBGObject(BG_WS_OBJECT_A_FLAG, RESPAWN_ONE_DAY);            SetAllianceFlagPicker(Source->GetGUID());            Source->CastSpell(Source, BG_WS_SPELL_SILVERWING_FLAG, true);            m_FlagState[BG_TEAM_ALLIANCE] = BG_WS_FLAG_STATE_ON_PLAYER;            UpdateFlagState(HORDE, BG_WS_FLAG_STATE_ON_PLAYER);            if(m_FlagDebuffState == 1)              Source->CastSpell(Source,WS_SPELL_FOCUSED_ASSAULT,true);            if(m_FlagDebuffState == 2)              Source->CastSpell(Source,WS_SPELL_BRUTAL_ASSAULT,true);            UpdateWorldState(BG_WS_FLAG_UNK_ALLIANCE, 1);        }        //called in HandleGameObjectUseOpcode:        //target_obj->Delete();    }    //Horde flag on ground(not in base) (returned or picked up again)    if(this->GetFlagState(HORDE) == BG_WS_FLAG_STATE_ON_GROUND && Source->IsWithinDistInMap(target_obj, 10) && target_obj->GetGOInfo()->id == BG_OBJECT_H_FLAG_GROUND_WS_ENTRY)    {        if(Source->GetTeam() == HORDE)        {            message = GetTrinityString(LANG_BG_WS_RETURNED_HF);            type = CHAT_MSG_BG_SYSTEM_HORDE;            UpdateFlagState(ALLIANCE, BG_WS_FLAG_STATE_WAIT_RESPAWN);            RespawnFlag(HORDE, false);            SpawnBGObject(BG_WS_OBJECT_H_FLAG, RESPAWN_IMMEDIATELY);            PlaySoundToAll(BG_WS_SOUND_FLAG_RETURNED);            UpdatePlayerScore(Source, SCORE_FLAG_RETURNS, 1);            m_BothFlagsKept = false;        }        else        {            message = GetTrinityString(LANG_BG_WS_PICKEDUP_HF);            type = CHAT_MSG_BG_SYSTEM_ALLIANCE;            PlaySoundToAll(BG_WS_SOUND_HORDE_FLAG_PICKED_UP);            SpawnBGObject(BG_WS_OBJECT_H_FLAG, RESPAWN_ONE_DAY);            SetHordeFlagPicker(Source->GetGUID());            Source->CastSpell(Source, BG_WS_SPELL_WARSONG_FLAG, true);//.........这里部分代码省略.........
开发者ID:de-dima,项目名称:243,代码行数:101,


示例8: GetPlayer

void WorldSession::HandleSendMail(WorldPacket& recvData){    ObjectGuid mailbox;    uint64 money, COD;    std::string receiver, subject, body;    uint32 bodyLength, subjectLength, receiverLength;	uint32 unk1, unk2;	uint8 itemCount;	recvData >> unk1 >> unk2;                       // both unknown	recvData >> COD >> money;                       // money and cod        	mailbox[0] = recvData.ReadBit();	mailbox[6] = recvData.ReadBit();	mailbox[4] = recvData.ReadBit();	mailbox[1] = recvData.ReadBit();	bodyLength = recvData.ReadBits(11);	mailbox[3] = recvData.ReadBit();	receiverLength = recvData.ReadBits(9);	mailbox[7] = recvData.ReadBit();	mailbox[5] = recvData.ReadBit();	itemCount = recvData.ReadBits(5);               // attached items count	if (itemCount > MAX_MAIL_ITEMS)                       // client limit    {        GetPlayer()->SendMailResult(0, MAIL_SEND, MAIL_ERR_TOO_MANY_ATTACHMENTS);        recvData.rfinish();                   // set to end to avoid warnings spam        return;    }	ObjectGuid itemGuids[MAX_MAIL_ITEMS];    uint8 bitOrder[8] = {1, 7, 2, 5, 0, 6, 3, 4};    for (uint8 i = 0; i < itemCount; ++i)		recvData.ReadBitInOrder(itemGuids[i], bitOrder);	subjectLength = recvData.ReadBits(9);	mailbox[2] = recvData.ReadBit();    for (uint8 i = 0; i < itemCount; ++i)	{		recvData.read_skip<uint8>();                // item slot in mail, not used		recvData.ReadByteSeq(itemGuids[i][3]);		recvData.ReadByteSeq(itemGuids[i][0]);		recvData.ReadByteSeq(itemGuids[i][2]);		recvData.ReadByteSeq(itemGuids[i][1]);		recvData.ReadByteSeq(itemGuids[i][6]);		recvData.ReadByteSeq(itemGuids[i][5]);		recvData.ReadByteSeq(itemGuids[i][7]);		recvData.ReadByteSeq(itemGuids[i][4]);    }	recvData.ReadByteSeq(mailbox[1]);	body = recvData.ReadString(bodyLength);	recvData.ReadByteSeq(mailbox[0]);	subject = recvData.ReadString(subjectLength);	recvData.ReadByteSeq(mailbox[2]);	recvData.ReadByteSeq(mailbox[6]);	recvData.ReadByteSeq(mailbox[5]);	recvData.ReadByteSeq(mailbox[7]);	recvData.ReadByteSeq(mailbox[3]);	recvData.ReadByteSeq(mailbox[4]);	receiver = recvData.ReadString(receiverLength);    // packet read complete, now do check    if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))        return;    if (receiver.empty())        return;    Player* player = _player;    if (player->getLevel() < sWorld->getIntConfig(CONFIG_MAIL_LEVEL_REQ))    {        SendNotification(GetTrinityString(LANG_MAIL_SENDER_REQ), sWorld->getIntConfig(CONFIG_MAIL_LEVEL_REQ));        return;    }    uint64 rc = 0;    if (normalizePlayerName(receiver))        rc = sObjectMgr->GetPlayerGUIDByName(receiver);    if (!rc)    {        sLog->outInfo(LOG_FILTER_NETWORKIO, "Player %u is sending mail to %s (GUID: not existed!) with subject %s and body %s includes %u items, " UI64FMTD " copper and " UI64FMTD " COD copper with unk1 = %u, unk2 = %u",            player->GetGUIDLow(), receiver.c_str(), subject.c_str(), body.c_str(), itemCount, money, COD, unk1, unk2);        player->SendMailResult(0, MAIL_SEND, MAIL_ERR_RECIPIENT_NOT_FOUND);        return;    }    sLog->outInfo(LOG_FILTER_NETWORKIO, "Player %u is sending mail to %s (GUID: %u) with subject %s and body %s includes %u items, " UI64FMTD " copper and " UI64FMTD " COD copper with unk1 = %u, unk2 = %u", player->GetGUIDLow(), receiver.c_str(), GUID_LOPART(rc), subject.c_str(), body.c_str(), itemCount, money, COD, unk1, unk2);    if (player->GetGUID() == rc)    {        player->SendMailResult(0, MAIL_SEND, MAIL_ERR_CANNOT_SEND_TO_SELF);        return;    }	uint32 cost = itemCount ? 30 * itemCount : 30;  // price hardcoded in client//.........这里部分代码省略.........
开发者ID:CATACLYSMDEV,项目名称:JadeCore-5.4.8-18291--dev-,代码行数:101,


示例9: CHECK_PACKET_SIZE

void WorldSession::HandleMessagechatOpcode( WorldPacket & recv_data ){    CHECK_PACKET_SIZE(recv_data,4+4+1);    uint32 type;    uint32 lang;    recv_data >> type;    recv_data >> lang;    if(type >= MAX_CHAT_MSG_TYPE)    {        sLog.outError("CHAT: Wrong message type received: %u", type);        return;    }    //sLog.outDebug("CHAT: packet received. type %u, lang %u", type, lang );    // prevent talking at unknown language (cheating)    LanguageDesc const* langDesc = GetLanguageDescByID(lang);    if(!langDesc)    {        SendNotification(LANG_UNKNOWN_LANGUAGE);        return;    }    if(langDesc->skill_id != 0 && !_player->HasSkill(langDesc->skill_id))    {        // also check SPELL_AURA_COMPREHEND_LANGUAGE (client offers option to speak in that language)        Unit::AuraList const& langAuras = _player->GetAurasByType(SPELL_AURA_COMPREHEND_LANGUAGE);        bool foundAura = false;        for(Unit::AuraList::const_iterator i = langAuras.begin();i != langAuras.end(); ++i)        {            if((*i)->GetModifier()->m_miscvalue == lang)            {                foundAura = true;                break;            }        }        if(!foundAura)        {            SendNotification(LANG_NOT_LEARNED_LANGUAGE);            return;        }    }    if(lang == LANG_ADDON)    {        // Disabled addon channel?        if(!sWorld.getConfig(CONFIG_ADDON_CHANNEL))            return;    }    // LANG_ADDON should not be changed nor be affected by flood control    else    {        // send in universal language if player in .gmon mode (ignore spell effects)        if (_player->isGameMaster())            lang = LANG_UNIVERSAL;        else        {            // send in universal language in two side iteration allowed mode            if (sWorld.getConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHAT))                lang = LANG_UNIVERSAL;            else            {                switch(type)                {                    case CHAT_MSG_PARTY:                    case CHAT_MSG_RAID:                    case CHAT_MSG_RAID_LEADER:                    case CHAT_MSG_RAID_WARNING:                        // allow two side chat at group channel if two side group allowed                        if(sWorld.getConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))                            lang = LANG_UNIVERSAL;                        break;                    case CHAT_MSG_GUILD:                    case CHAT_MSG_OFFICER:                        // allow two side chat at guild channel if two side guild allowed                        if(sWorld.getConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD))                            lang = LANG_UNIVERSAL;                        break;                }            }            // but overwrite it by SPELL_AURA_MOD_LANGUAGE auras (only single case used)            Unit::AuraList const& ModLangAuras = _player->GetAurasByType(SPELL_AURA_MOD_LANGUAGE);            if(!ModLangAuras.empty())                lang = ModLangAuras.front()->GetModifier()->m_miscvalue;        }        if (!_player->CanSpeak())        {            std::string timeStr = secsToTimeString(m_muteTime - time(NULL));            SendNotification(GetTrinityString(LANG_WAIT_BEFORE_SPEAKING),timeStr.c_str());            return;        }        if (type != CHAT_MSG_AFK && type != CHAT_MSG_DND)            GetPlayer()->UpdateSpeakTime();    }//.........这里部分代码省略.........
开发者ID:megamage,项目名称:mangos,代码行数:101,


示例10: ModifyStartDelayTime

void BattleGroundAB::Update(uint32 diff){    BattleGround::Update(diff);    if (GetStatus() == STATUS_WAIT_JOIN && GetPlayersSize())    {        ModifyStartDelayTime(diff);        if (!(m_Events & 0x01))        {            m_Events |= 0x01;            // setup here, only when at least one player has ported to the map            if (!SetupBattleGround())            {                EndNow();                return;            }            sLog.outDebug("Arathi Basin: entering state STATUS_WAIT_JOIN ...");            // despawn banners, auras and buffs            for (int obj = BG_AB_OBJECT_BANNER_NEUTRAL; obj < BG_AB_DYNAMIC_NODES_COUNT * 8; ++obj)                SpawnBGObject(obj, RESPAWN_ONE_DAY);            for (int i = 0; i < BG_AB_DYNAMIC_NODES_COUNT * 3; ++i)                SpawnBGObject(BG_AB_OBJECT_SPEEDBUFF_STABLES + i, RESPAWN_ONE_DAY);            // Starting doors            SpawnBGObject(BG_AB_OBJECT_GATE_A, RESPAWN_IMMEDIATELY);            SpawnBGObject(BG_AB_OBJECT_GATE_H, RESPAWN_IMMEDIATELY);            DoorClose(BG_AB_OBJECT_GATE_A);            DoorClose(BG_AB_OBJECT_GATE_H);            // Starting base spirit guides            _NodeOccupied(BG_AB_SPIRIT_ALIANCE,ALLIANCE);            _NodeOccupied(BG_AB_SPIRIT_HORDE,HORDE);            SetStartDelayTime(START_DELAY0);        }        // After 1 minute, warning is signalled        else if (GetStartDelayTime() <= START_DELAY1 && !(m_Events & 0x04))        {            m_Events |= 0x04;            SendMessageToAll(GetTrinityString(LANG_BG_AB_ONEMINTOSTART));        }        // After 1,5 minute, warning is signalled        else if (GetStartDelayTime() <= START_DELAY2 && !(m_Events & 0x08))        {            m_Events |= 0x08;            SendMessageToAll(GetTrinityString(LANG_BG_AB_HALFMINTOSTART));        }        // After 2 minutes, gates OPEN ! x)        else if (GetStartDelayTime() < 0 && !(m_Events & 0x10))        {            m_Events |= 0x10;            SendMessageToAll(GetTrinityString(LANG_BG_AB_STARTED));            // spawn neutral banners            for (int banner = BG_AB_OBJECT_BANNER_NEUTRAL, i = 0; i < 5; banner += 8, ++i)                SpawnBGObject(banner, RESPAWN_IMMEDIATELY);            for (int i = 0; i < BG_AB_DYNAMIC_NODES_COUNT; ++i)            {                //randomly select buff to spawn                uint8 buff = urand(0, 2);                SpawnBGObject(BG_AB_OBJECT_SPEEDBUFF_STABLES + buff + i * 3, RESPAWN_IMMEDIATELY);            }            DoorOpen(BG_AB_OBJECT_GATE_A);            DoorOpen(BG_AB_OBJECT_GATE_H);            PlaySoundToAll(SOUND_BG_START);            if (sWorld.getConfig(CONFIG_BG_START_MUSIC))                PlaySoundToAll(SOUND_BG_START_L70ETC); //MUSIC            SetStatus(STATUS_IN_PROGRESS);            for (BattleGroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)                if (Player* plr = sObjectMgr.GetPlayer(itr->first))                    plr->RemoveAurasDueToSpell(SPELL_PREPARATION);        }    }    else if (GetStatus() == STATUS_IN_PROGRESS)    {        int team_points[2] = { 0, 0 };        for (int node = 0; node < BG_AB_DYNAMIC_NODES_COUNT; ++node)        {            // 3 sec delay to spawn new banner instead previous despawned one            if (m_BannerTimers[node].timer)            {                if (m_BannerTimers[node].timer > diff)                    m_BannerTimers[node].timer -= diff;                else                {                    m_BannerTimers[node].timer = 0;                    _CreateBanner(node, m_BannerTimers[node].type, m_BannerTimers[node].teamIndex, false);                }            }            // 1-minute to occupy a node from contested state            if (m_NodeTimers[node])//.........这里部分代码省略.........
开发者ID:Xadras,项目名称:looking4group-core,代码行数:101,


示例11: GetPlayer

void WorldSession::HandleSendMail(WorldPacket & recv_data){    uint64 mailbox, unk3;    std::string receiver, subject, body;    uint32 unk1, unk2, money, COD;    uint8 unk4;    recv_data >> mailbox;    recv_data >> receiver;    recv_data >> subject;    recv_data >> body;    recv_data >> unk1;                                      // stationery?    recv_data >> unk2;                                      // 0x00000000    uint8 items_count;    recv_data >> items_count;                               // attached items count    if (items_count > MAX_MAIL_ITEMS)                       // client limit    {        GetPlayer()->SendMailResult(0, MAIL_SEND, MAIL_ERR_TOO_MANY_ATTACHMENTS);        recv_data.rpos(recv_data.wpos());                   // set to end to avoid warnings spam        return;    }    uint64 itemGUIDs[MAX_MAIL_ITEMS];    for (uint8 i = 0; i < items_count; ++i)    {        recv_data.read_skip<uint8>();                       // item slot in mail, not used        recv_data >> itemGUIDs[i];    }    recv_data >> money >> COD;                              // money and cod    recv_data >> unk3;                                      // const 0    recv_data >> unk4;                                      // const 0    // packet read complete, now do check    if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))        return;    if (receiver.empty())        return;    Player* pl = _player;    if (pl->getLevel() < sWorld.getConfig(CONFIG_MAIL_LEVEL_REQ))    {        SendNotification(GetTrinityString(LANG_MAIL_SENDER_REQ), sWorld.getConfig(CONFIG_MAIL_LEVEL_REQ));        return;    }    uint64 rc = 0;    if (normalizePlayerName(receiver))        rc = objmgr.GetPlayerGUIDByName(receiver);    if (!rc)    {        sLog.outDetail("Player %u is sending mail to %s (GUID: not existed!) with subject %s and body %s includes %u items, %u copper and %u COD copper with unk1 = %u, unk2 = %u",            pl->GetGUIDLow(), receiver.c_str(), subject.c_str(), body.c_str(), items_count, money, COD, unk1, unk2);        pl->SendMailResult(0, MAIL_SEND, MAIL_ERR_RECIPIENT_NOT_FOUND);        return;    }    sLog.outDetail("Player %u is sending mail to %s (GUID: %u) with subject %s and body %s includes %u items, %u copper and %u COD copper with unk1 = %u, unk2 = %u", pl->GetGUIDLow(), receiver.c_str(), GUID_LOPART(rc), subject.c_str(), body.c_str(), items_count, money, COD, unk1, unk2);    if (pl->GetGUID() == rc)    {        pl->SendMailResult(0, MAIL_SEND, MAIL_ERR_CANNOT_SEND_TO_SELF);        return;    }    uint32 cost = items_count ? 30 * items_count : 30;  // price hardcoded in client    uint32 reqmoney = cost + money;    if (pl->GetMoney() < reqmoney)    {        pl->SendMailResult(0, MAIL_SEND, MAIL_ERR_NOT_ENOUGH_MONEY);        return;    }    Player *receive = objmgr.GetPlayer(rc);    uint32 rc_team = 0;    uint8 mails_count = 0;                                  //do not allow to send to one player more than 100 mails    uint8 receiveLevel = 0;    if (receive)    {        rc_team = receive->GetTeam();        mails_count = receive->GetMailSize();        receiveLevel = receive->getLevel();    }    else    {        rc_team = objmgr.GetPlayerTeamByGUID(rc);        if (QueryResult_AutoPtr result = CharacterDatabase.PQuery("SELECT COUNT(*) FROM mail WHERE receiver = '%u'", GUID_LOPART(rc)))//.........这里部分代码省略.........
开发者ID:Elevim,项目名称:RG-332,代码行数:101,


示例12: while

/* Invoked if a player used a banner as a gameobject */void BattleGroundAB::EventPlayerClickedOnFlag(Player *source, GameObject* /*target_obj*/){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    uint8 node = BG_AB_NODE_STABLES;    Map * tmpMap = source->GetMap();    GameObject* obj = tmpMap->GetGameObject(m_BgObjects[node*8+7]);    while ((node < BG_AB_DYNAMIC_NODES_COUNT) && ((!obj) || (!source->IsWithinDistInMap(obj,10))))    {        ++node;        obj = tmpMap->GetGameObject(m_BgObjects[node*8+BG_AB_OBJECT_AURA_CONTESTED]);    }    if (node == BG_AB_DYNAMIC_NODES_COUNT)    {        // this means our player isn't close to any of banners - maybe cheater ??        return;    }    uint8 teamIndex = GetTeamIndexByTeamId(source->GetBGTeam());    // Message to chatlog    char buf[256];    uint8 type = (teamIndex == 0) ? CHAT_MSG_BG_SYSTEM_ALLIANCE : CHAT_MSG_BG_SYSTEM_HORDE;    // Check if player really could use this banner, not cheated    if (!(m_Nodes[node] == 0 || teamIndex == m_Nodes[node]%2))        return;    source->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT);    uint32 sound = 0;    // If node is neutral, change to contested    if (m_Nodes[node] == BG_AB_NODE_TYPE_NEUTRAL)    {        UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);        m_prevNodes[node] = m_Nodes[node];        m_Nodes[node] = teamIndex + 1;        // burn current neutral banner        _DelBanner(node, BG_AB_NODE_TYPE_NEUTRAL, 0);        // create new contested banner        _CreateBanner(node, BG_AB_NODE_TYPE_CONTESTED, teamIndex, true);        _SendNodeUpdate(node);        m_NodeTimers[node] = BG_AB_FLAG_CAPTURING_TIME;        sprintf(buf, GetTrinityString(LANG_BG_AB_NODE_CLAIMED), _GetNodeName(node), (teamIndex == 0) ? GetTrinityString(LANG_BG_AB_ALLY) : GetTrinityString(LANG_BG_AB_HORDE));        sound = SOUND_NODE_CLAIMED;        SendObjectiveComplete(BG_AB_CREDITMARKER[node], teamIndex,BG_AB_NodePositions[node][1],BG_AB_NodePositions[node][2]);    }    // If node is contested    else if ((m_Nodes[node] == BG_AB_NODE_STATUS_ALLY_CONTESTED) || (m_Nodes[node] == BG_AB_NODE_STATUS_HORDE_CONTESTED))    {        // If last state is NOT occupied, change node to enemy-contested        if (m_prevNodes[node] < BG_AB_NODE_TYPE_OCCUPIED)        {            UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);            m_prevNodes[node] = m_Nodes[node];            m_Nodes[node] = teamIndex + BG_AB_NODE_TYPE_CONTESTED;            // burn current contested banner            _DelBanner(node, BG_AB_NODE_TYPE_CONTESTED, !teamIndex);            // create new contested banner            _CreateBanner(node, BG_AB_NODE_TYPE_CONTESTED, teamIndex, true);            _SendNodeUpdate(node);            m_NodeTimers[node] = BG_AB_FLAG_CAPTURING_TIME;            sprintf(buf, GetTrinityString(LANG_BG_AB_NODE_ASSAULTED), _GetNodeName(node));            SendObjectiveComplete(BG_AB_CREDITMARKER[node], teamIndex,BG_AB_NodePositions[node][1],BG_AB_NodePositions[node][2]);        }        // If contested, change back to occupied        else        {            UpdatePlayerScore(source, SCORE_BASES_DEFENDED, 1);            m_prevNodes[node] = m_Nodes[node];            m_Nodes[node] = teamIndex + BG_AB_NODE_TYPE_OCCUPIED;            // burn current contested banner            _DelBanner(node, BG_AB_NODE_TYPE_CONTESTED, !teamIndex);            // create new occupied banner            _CreateBanner(node, BG_AB_NODE_TYPE_OCCUPIED, teamIndex, true);            _SendNodeUpdate(node);            m_NodeTimers[node] = 0;            _NodeOccupied(node,(teamIndex == 0) ? ALLIANCE:HORDE);            sprintf(buf, GetTrinityString(LANG_BG_AB_NODE_DEFENDED), _GetNodeName(node));        }        sound = (teamIndex == 0) ? SOUND_NODE_ASSAULTED_ALLIANCE : SOUND_NODE_ASSAULTED_HORDE;    }    // If node is occupied, change to enemy-contested    else    {        UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);        m_prevNodes[node] = m_Nodes[node];        m_Nodes[node] = teamIndex + BG_AB_NODE_TYPE_CONTESTED;        // burn current occupied banner        _DelBanner(node, BG_AB_NODE_TYPE_OCCUPIED, !teamIndex);        // create new contested banner        _CreateBanner(node, BG_AB_NODE_TYPE_CONTESTED, teamIndex, true);        _SendNodeUpdate(node);        _NodeDeOccupied(node);        m_NodeTimers[node] = BG_AB_FLAG_CAPTURING_TIME;        sprintf(buf, GetTrinityString(LANG_BG_AB_NODE_ASSAULTED), _GetNodeName(node));        sound = (teamIndex == 0) ? SOUND_NODE_ASSAULTED_ALLIANCE : SOUND_NODE_ASSAULTED_HORDE;        SendObjectiveComplete(BG_AB_CREDITMARKER[node], teamIndex,BG_AB_NodePositions[node][1],BG_AB_NodePositions[node][2]);//.........这里部分代码省略.........
开发者ID:Xadras,项目名称:looking4group-core,代码行数:101,


示例13: ModifyStartDelayTime

void BattleGroundEY::Update(time_t diff){    BattleGround::Update(diff);    // after bg start we get there (once)    if (GetStatus() == STATUS_WAIT_JOIN && GetPlayersSize())    {        ModifyStartDelayTime(diff);        if(!(m_Events & 0x01))        {            m_Events |= 0x01;            // setup here, only when at least one player has ported to the map            if(!SetupBattleGround())            {                EndNow();                return;            }            SpawnBGObject(BG_EY_OBJECT_DOOR_A, RESPAWN_IMMEDIATELY);            SpawnBGObject(BG_EY_OBJECT_DOOR_H, RESPAWN_IMMEDIATELY);//            SpawnBGCreature(EY_SPIRIT_MAIN_ALLIANCE, RESPAWN_IMMEDIATELY);//            SpawnBGCreature(EY_SPIRIT_MAIN_HORDE, RESPAWN_IMMEDIATELY);            for(uint32 i = BG_EY_OBJECT_A_BANNER_FEL_REALVER_CENTER; i < BG_EY_OBJECT_MAX; ++i)                SpawnBGObject(i, RESPAWN_ONE_DAY);            SetStartDelayTime(START_DELAY0);        }        // After 1 minute, warning is signalled        else if(GetStartDelayTime() <= START_DELAY1 && !(m_Events & 0x04))        {            m_Events |= 0x04;            SendMessageToAll(GetTrinityString(LANG_BG_EY_ONE_MINUTE));        }        // After 1,5 minute, warning is signalled        else if(GetStartDelayTime() <= START_DELAY2 && !(m_Events & 0x08))        {            m_Events |= 0x08;            SendMessageToAll(GetTrinityString(LANG_BG_EY_HALF_MINUTE));        }        // After 2 minutes, gates OPEN ! x)        else if(GetStartDelayTime() < 0 && !(m_Events & 0x10))        {            m_Events |= 0x10;            SpawnBGObject(BG_EY_OBJECT_DOOR_A, RESPAWN_ONE_DAY);            SpawnBGObject(BG_EY_OBJECT_DOOR_H, RESPAWN_ONE_DAY);            for(uint32 i = BG_EY_OBJECT_N_BANNER_FEL_REALVER_CENTER; i <= BG_EY_OBJECT_FLAG_NETHERSTORM; ++i)                SpawnBGObject(i, RESPAWN_IMMEDIATELY);            for(uint32 i = 0; i < EY_POINTS_MAX; ++i)            {                //randomly spawn buff                uint8 buff = urand(0, 2);                SpawnBGObject(BG_EY_OBJECT_SPEEDBUFF_FEL_REALVER + buff + i * 3, RESPAWN_IMMEDIATELY);            }            SendMessageToAll(GetTrinityString(LANG_BG_EY_BEGIN));            PlaySoundToAll(SOUND_BG_START);            if(sWorld.getConfig(CONFIG_BG_START_MUSIC))                PlaySoundToAll(SOUND_BG_START_L70ETC); //MUSIC            SetStatus(STATUS_IN_PROGRESS);            for(BattleGroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)                if(Player *plr = objmgr.GetPlayer(itr->first))                    plr->RemoveAurasDueToSpell(SPELL_PREPARATION);        }    }    else if(GetStatus() == STATUS_IN_PROGRESS)    {        m_PointAddingTimer -= diff;        if(m_PointAddingTimer <= 0)        {            m_PointAddingTimer = BG_EY_FPOINTS_TICK_TIME;            if (m_TeamPointsCount[BG_TEAM_ALLIANCE] > 0)                AddPoints(ALLIANCE, BG_EY_TickPoints[m_TeamPointsCount[BG_TEAM_ALLIANCE] - 1]);            if (m_TeamPointsCount[BG_TEAM_HORDE] > 0)                AddPoints(HORDE, BG_EY_TickPoints[m_TeamPointsCount[BG_TEAM_HORDE] - 1]);        }        if(m_FlagState == BG_EY_FLAG_STATE_WAIT_RESPAWN || m_FlagState == BG_EY_FLAG_STATE_ON_GROUND)        {            m_FlagsTimer -= diff;            if(m_FlagsTimer < 0)            {                m_FlagsTimer = 0;                if (m_FlagState == BG_EY_FLAG_STATE_WAIT_RESPAWN)                    RespawnFlag(true);                else                    RespawnFlagAfterDrop();            }        }        m_TowerCapCheckTimer -= diff;        if(m_TowerCapCheckTimer <= 0)        {            //check if player joined point            /*I used this order of calls, because although we will check if one player is in gameobject's distance 2 times//.........这里部分代码省略.........
开发者ID:Bootz,项目名称:TC-One,代码行数:101,


示例14: secsToTimeString

void WorldSession::HandleTextEmoteOpcode(WorldPacket& recvData){    if (!GetPlayer()->IsAlive())        return;    if (!GetPlayer()->CanSpeak())    {        std::string timeStr = secsToTimeString(m_muteTime - time(NULL));        SendNotification(GetTrinityString(LANG_WAIT_BEFORE_SPEAKING), timeStr.c_str());        return;    }    uint32 text_emote, emoteNum;    ObjectGuid guid;    recvData >> text_emote;    recvData >> emoteNum;    recvData >> guid;			if (GetPlayer()->IsSpectator())		 {		SendNotification(LANG_SPEC_CAN_NOT_CHAT);		return;		}    sScriptMgr->OnPlayerTextEmote(GetPlayer(), text_emote, emoteNum, guid);    EmotesTextEntry const* em = sEmotesTextStore.LookupEntry(text_emote);    if (!em)        return;    uint32 emote_anim = em->textid;    switch (emote_anim)    {        case EMOTE_STATE_SLEEP:        case EMOTE_STATE_SIT:        case EMOTE_STATE_KNEEL:        case EMOTE_ONESHOT_NONE:            break;        default:            // Only allow text-emotes for "dead" entities (feign death included)            if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))                break;            GetPlayer()->HandleEmoteCommand(emote_anim);            break;    }    Unit* unit = ObjectAccessor::GetUnit(*_player, guid);    CellCoord p = Trinity::ComputeCellCoord(GetPlayer()->GetPositionX(), GetPlayer()->GetPositionY());    Cell cell(p);    cell.SetNoCreate();    Trinity::EmoteChatBuilder emote_builder(*GetPlayer(), text_emote, emoteNum, unit);    Trinity::LocalizedPacketDo<Trinity::EmoteChatBuilder > emote_do(emote_builder);    Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::EmoteChatBuilder > > emote_worker(GetPlayer(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE), emote_do);    TypeContainerVisitor<Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::EmoteChatBuilder> >, WorldTypeMapContainer> message(emote_worker);    cell.Visit(p, message, *GetPlayer()->GetMap(), *GetPlayer(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE));    GetPlayer()->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE, text_emote, 0, unit);    //Send scripted event call    if (unit && unit->GetTypeId() == TYPEID_UNIT && ((Creature*)unit)->AI())        ((Creature*)unit)->AI()->ReceiveEmote(GetPlayer(), text_emote);}
开发者ID:beast007,项目名称:Wrath-WoW,代码行数:66,


示例15: time

//.........这里部分代码省略.........        sWorld->SendWorldText(LANG_JAIL_ANNOUNCE, jail_char.c_str(), timetojail, jail_gmchar.c_str(), jail_reason.c_str());        if ((sWorld->getIntConfig(CONFIG_JAIL_MAX_JAILS) == jail_times) && !sWorld->getBoolConfig(CONFIG_JAIL_BAN))        {            QueryResult result = CharacterDatabase.PQuery("SELECT * FROM `characters` WHERE `guid`='%u' LIMIT 1", GUID_LOPART(GUID));            if (!result)            {                PSendSysMessage(LANG_NO_PLAYER, cname.c_str());                return true;            }            Field *fields = result->Fetch();            Player::DeleteFromDB(GUID, fields[1].GetUInt32());        }        else if ((sWorld->getIntConfig(CONFIG_JAIL_MAX_JAILS) == jail_times) && sWorld->getBoolConfig(CONFIG_JAIL_BAN))        {            QueryResult result = CharacterDatabase.PQuery("SELECT * FROM `characters` WHERE `guid`='%u' LIMIT 1", GUID_LOPART(GUID));            if (!result)            {                PSendSysMessage(LANG_NO_PLAYER, cname.c_str());                return true;            }            Field *fields = result->Fetch();            uint32 acc_id = fields[1].GetUInt32();            result = LoginDatabase.PQuery("SELECT * FROM `account` WHERE `id`='%u' LIMIT 1", acc_id);            if (!result)            {                PSendSysMessage(LANG_NO_PLAYER, cname.c_str());                return true;            }            ban_reason = GetTrinityString(LANG_JAIL_BAN_REASON);            ban_by = GetTrinityString(LANG_JAIL_BAN_BY);            LoginDatabase.PExecute("INSERT IGNORE INTO `account_banned` (`id`,`bandate`,`bannedby`,`banreason`) VALUES ('%u',UNIX_TIMESTAMP,'%s','%s')", acc_id, ban_by.c_str(), ban_reason.c_str());        }        return true;    }    QueryResult result = CharacterDatabase.PQuery("SELECT * FROM `characters` WHERE `guid`='%u' LIMIT 1", chr->GetGUIDLow());    if (!result)    {        PSendSysMessage(LANG_NO_PLAYER, cname.c_str());        return true;    }    Field *fields = result->Fetch();    if(chr->GetName() == m_session->GetPlayerName())    {        SendSysMessage(LANG_JAIL_NO_JAIL);        return true;    }    chr->SaveToDB();    chr->m_jail_guid = fields[0].GetUInt32();    chr->m_jail_char = fields[2].GetString();    chr->m_jail_isjailed = true;    chr->m_jail_release = localtime + (jailtime * 60 * 60);    chr->m_jail_amnestietime = localtime +(60* 60 * 24 * sWorld->getIntConfig(CONFIG_JAIL_AMNESTIE));    chr->m_jail_reason = jailreason;    chr->m_jail_times = chr->m_jail_times+1;    chr->m_jail_gmacc = m_session->GetAccountId();    chr->m_jail_gmchar = m_session->GetPlayerName();    chr->m_jail_duration = jailtime;    chr->_SaveJail();    PSendSysMessage(LANG_JAIL_WAS_JAILED, fields[2].GetString().c_str(), jailtime);    ChatHandler(chr).PSendSysMessage(LANG_JAIL_YOURE_JAILED, m_session->GetPlayerName(), jailtime);    ChatHandler(chr).PSendSysMessage(LANG_JAIL_REASON, m_session->GetPlayerName(), jailreason.c_str());    sWorld->SendWorldText(LANG_JAIL_ANNOUNCE, fields[2].GetString().c_str(), timetojail, m_session->GetPlayerName(), jailreason.c_str());    if (sWorld->getIntConfig(CONFIG_JAIL_MAX_JAILS) == chr->m_jail_times)    {        chr->GetSession()->KickPlayer();        chr->DeleteFromDB(fields[0].GetUInt64(), fields[1].GetUInt32());    }    else if ((sWorld->getIntConfig(CONFIG_JAIL_MAX_JAILS) == chr->m_jail_times) && sWorld->getBoolConfig(CONFIG_JAIL_BAN))    {        uint32 acc_id = chr->GetSession()->GetAccountId();        ban_reason = GetTrinityString(LANG_JAIL_BAN_REASON);        ban_by = GetTrinityString(LANG_JAIL_BAN_BY);        LoginDatabase.PExecute("INSERT IGNORE INTO `account_banned` (`id`,`bandate`,`bannedby`,`banreason`) VALUES ('%u',UNIX_TIMESTAMP,'%s','%s')", acc_id, ban_by.c_str(), ban_reason.c_str());        chr->GetSession()->LogoutPlayer(false);    }    else chr->GetSession()->LogoutPlayer(false);    return true;}
开发者ID:Deviuss,项目名称:TrinityCore,代码行数:101,


示例16: secsToTimeString

void WorldSession::HandleTextEmoteOpcode( WorldPacket & recv_data ){    if(!GetPlayer()->isAlive())        return;    if (!GetPlayer()->CanSpeak())    {        std::string timeStr = secsToTimeString(m_muteTime - time(NULL));        SendNotification(GetTrinityString(LANG_WAIT_BEFORE_SPEAKING),timeStr.c_str());        return;    }    CHECK_PACKET_SIZE(recv_data,4+4+8);    uint32 text_emote, emoteNum;    uint64 guid;    recv_data >> text_emote;    recv_data >> emoteNum;    recv_data >> guid;    const char *nam = 0;    uint32 namlen = 1;    Unit* unit = ObjectAccessor::GetUnit(*_player, guid);    Creature *pCreature = dynamic_cast<Creature *>(unit);    if(unit)    {        nam = unit->GetName();        namlen = (nam ? strlen(nam) : 0) + 1;    }    EmotesTextEntry const *em = sEmotesTextStore.LookupEntry(text_emote);    if (em)    {        uint32 emote_anim = em->textid;        WorldPacket data;        switch(emote_anim)        {            case EMOTE_STATE_SLEEP:            case EMOTE_STATE_SIT:            case EMOTE_STATE_KNEEL:            case EMOTE_ONESHOT_NONE:                break;            default:                GetPlayer()->HandleEmoteCommand(emote_anim);                break;        }        data.Initialize(SMSG_TEXT_EMOTE, (20+namlen));        data << GetPlayer()->GetGUID();        data << (uint32)text_emote;        data << emoteNum;        data << (uint32)namlen;        if( namlen > 1 )        {            data.append(nam, namlen);        }        else        {            data << (uint8)0x00;        }        GetPlayer()->SendMessageToSetInRange(&data,sWorld.getConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE),true);        //Send scripted event call        if (pCreature && Script)            Script->ReceiveEmote(GetPlayer(),pCreature,text_emote);    }}
开发者ID:megamage,项目名称:mangos,代码行数:72,


示例17: GetPlayer

void WorldSession::HandleSendMail(WorldPacket & recvData){    uint64 mailbox, unk3;    std::string receiver, subject, body;    uint32 unk1, unk2, money, COD;    uint8 unk4;    recvData >> mailbox;    recvData >> receiver;    recvData >> subject;    recvData >> body;    recvData >> unk1;                                      // stationery?    recvData >> unk2;                                      // 0x00000000    uint8 items_count;    recvData >> items_count;                               // attached items count    if (items_count > MAX_MAIL_ITEMS)                       // client limit    {        GetPlayer()->SendMailResult(0, MAIL_SEND, MAIL_ERR_TOO_MANY_ATTACHMENTS);        recvData.rfinish();                   // set to end to avoid warnings spam        return;    }    uint64 itemGUIDs[MAX_MAIL_ITEMS];    for (uint8 i = 0; i < items_count; ++i)    {        recvData.read_skip<uint8>();                       // item slot in mail, not used        recvData >> itemGUIDs[i];    }    recvData >> money >> COD;                              // money and cod    recvData >> unk3;                                      // const 0    recvData >> unk4;                                      // const 0    // packet read complete, now do check    if (!CanOpenMailBox(mailbox))        return;    if (receiver.empty())        return;    Player* player = _player;    if (player->getLevel() < sWorld->getIntConfig(CONFIG_MAIL_LEVEL_REQ))    {        SendNotification(GetTrinityString(LANG_MAIL_SENDER_REQ), sWorld->getIntConfig(CONFIG_MAIL_LEVEL_REQ));        return;    }    uint64 rc = 0;    if (normalizePlayerName(receiver))        rc = sObjectMgr->GetPlayerGUIDByName(receiver);    if (!rc)    {        ;//sLog->outDetail("Player %u is sending mail to %s (GUID: not existed!) with subject %s and body %s includes %u items, %u copper and %u COD copper with unk1 = %u, unk2 = %u",        //    player->GetGUIDLow(), receiver.c_str(), subject.c_str(), body.c_str(), items_count, money, COD, unk1, unk2);        player->SendMailResult(0, MAIL_SEND, MAIL_ERR_RECIPIENT_NOT_FOUND);        return;    }    ;//sLog->outDetail("Player %u is sending mail to %s (GUID: %u) with subject %s and body %s includes %u items, %u copper and %u COD copper with unk1 = %u, unk2 = %u", player->GetGUIDLow(), receiver.c_str(), GUID_LOPART(rc), subject.c_str(), body.c_str(), items_count, money, COD, unk1, unk2);    if (player->GetGUID() == rc)    {        player->SendMailResult(0, MAIL_SEND, MAIL_ERR_CANNOT_SEND_TO_SELF);        return;    }    uint32 cost = items_count ? 30 * items_count : 30;  // price hardcoded in client    uint32 reqmoney = cost + money;      // Check for overflow    if (reqmoney < money)    {        player->SendMailResult(0, MAIL_SEND, MAIL_ERR_NOT_ENOUGH_MONEY);        return;    }    if (!player->HasEnoughMoney(reqmoney))    {        player->SendMailResult(0, MAIL_SEND, MAIL_ERR_NOT_ENOUGH_MONEY);        return;    }    Player* receive = ObjectAccessor::FindPlayerInOrOutOfWorld(rc);    uint32 rc_teamId = TEAM_NEUTRAL;    uint16 mails_count = 0;                                  //do not allow to send to one player more than 100 mails    if (receive)    {        rc_teamId = receive->GetTeamId();        mails_count = receive->GetMailSize();//.........这里部分代码省略.........
开发者ID:AzerothShard-Dev,项目名称:azerothcore,代码行数:101,


示例18: GetTrinityString

std::string CliHandler::GetNameLink() const{    return GetTrinityString(LANG_CONSOLE_COMMAND);}
开发者ID:SuetyPoet,项目名称:pgcompcore,代码行数:4,


示例19: SendSysMessage

void ChatHandler::SendSysMessage(uint32 entry){    SendSysMessage(GetTrinityString(entry));}
开发者ID:SuetyPoet,项目名称:pgcompcore,代码行数:4,


示例20: ModifyStartDelayTime

void BattleGroundWS::Update(time_t diff){    BattleGround::Update(diff);    // after bg start we get there (once)    if (GetStatus() == STATUS_WAIT_JOIN && GetPlayersSize())    {        ModifyStartDelayTime(diff);        if(!(m_Events & 0x01))        {            m_Events |= 0x01;            // setup here, only when at least one player has ported to the map            if(!SetupBattleGround())            {                EndNow();                return;            }//            for(uint32 i = WS_SPIRIT_MAIN_ALLIANCE; i <= WS_SPIRIT_MAIN_HORDE; i++)//                SpawnBGCreature(i, RESPAWN_IMMEDIATELY);            for(uint32 i = BG_WS_OBJECT_DOOR_A_1; i <= BG_WS_OBJECT_DOOR_H_4; i++)            {                SpawnBGObject(i, RESPAWN_IMMEDIATELY);                DoorClose(i);            }            for(uint32 i = BG_WS_OBJECT_A_FLAG; i <= BG_WS_OBJECT_BERSERKBUFF_2; i++)                SpawnBGObject(i, RESPAWN_ONE_DAY);            SetStartDelayTime(START_DELAY0);        }        // After 1 minute, warning is signalled        else if(GetStartDelayTime() <= START_DELAY1 && !(m_Events & 0x04))        {            m_Events |= 0x04;            SendMessageToAll(GetTrinityString(LANG_BG_WS_ONE_MINUTE));        }        // After 1,5 minute, warning is signalled        else if(GetStartDelayTime() <= START_DELAY2 && !(m_Events & 0x08))        {            m_Events |= 0x08;            SendMessageToAll(GetTrinityString(LANG_BG_WS_HALF_MINUTE));        }        // After 2 minutes, gates OPEN ! x)        else if(GetStartDelayTime() < 0 && !(m_Events & 0x10))        {            m_Events |= 0x10;            for(uint32 i = BG_WS_OBJECT_DOOR_A_1; i <= BG_WS_OBJECT_DOOR_A_4; i++)                DoorOpen(i);            for(uint32 i = BG_WS_OBJECT_DOOR_H_1; i <= BG_WS_OBJECT_DOOR_H_2; i++)                DoorOpen(i);            SpawnBGObject(BG_WS_OBJECT_DOOR_A_5, RESPAWN_ONE_DAY);            SpawnBGObject(BG_WS_OBJECT_DOOR_A_6, RESPAWN_ONE_DAY);            SpawnBGObject(BG_WS_OBJECT_DOOR_H_3, RESPAWN_ONE_DAY);            SpawnBGObject(BG_WS_OBJECT_DOOR_H_4, RESPAWN_ONE_DAY);            for(uint32 i = BG_WS_OBJECT_A_FLAG; i <= BG_WS_OBJECT_BERSERKBUFF_2; i++)                SpawnBGObject(i, RESPAWN_IMMEDIATELY);            SendMessageToAll(GetTrinityString(LANG_BG_WS_BEGIN));            PlaySoundToAll(SOUND_BG_START);            if(sWorld.getConfig(CONFIG_BG_START_MUSIC))                PlaySoundToAll(SOUND_BG_START_L70ETC); //MUSIC - Custom config            SetStatus(STATUS_IN_PROGRESS);            for(BattleGroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)                if(Player* plr = objmgr.GetPlayer(itr->first))                    plr->RemoveAurasDueToSpell(SPELL_PREPARATION);        }    }    else if(GetStatus() == STATUS_IN_PROGRESS)    {        if(m_FlagState[BG_TEAM_ALLIANCE] == BG_WS_FLAG_STATE_WAIT_RESPAWN)        {            m_FlagsTimer[BG_TEAM_ALLIANCE] -= diff;            if(m_FlagsTimer[BG_TEAM_ALLIANCE] < 0)            {                m_FlagsTimer[BG_TEAM_ALLIANCE] = 0;                RespawnFlag(ALLIANCE, true);            }        }        if(m_FlagState[BG_TEAM_ALLIANCE] == BG_WS_FLAG_STATE_ON_GROUND)        {            m_FlagsDropTimer[BG_TEAM_ALLIANCE] -= diff;            if(m_FlagsDropTimer[BG_TEAM_ALLIANCE] < 0)            {                m_FlagsDropTimer[BG_TEAM_ALLIANCE] = 0;                RespawnFlagAfterDrop(ALLIANCE);                m_BothFlagsKept = false;            }        }        if(m_FlagState[BG_TEAM_HORDE] == BG_WS_FLAG_STATE_WAIT_RESPAWN)        {            m_FlagsTimer[BG_TEAM_HORDE] -= diff;//.........这里部分代码省略.........
开发者ID:de-dima,项目名称:243,代码行数:101,


示例21: CHECK_PACKET_SIZE

void WorldSession::HandleBattleGroundArenaJoin( WorldPacket & recv_data ){    CHECK_PACKET_SIZE(recv_data, 8+1+1+1);    sLog.outDebug("WORLD: CMSG_BATTLEMASTER_JOIN_ARENA");    recv_data.hexlike();    // ignore if we already in BG or BG queue    if(_player->InBattleGround())        return;    uint64 guid;                                            // arena Battlemaster guid    uint8 type;                                             // 2v2, 3v3 or 5v5    uint8 asGroup;                                          // asGroup    uint8 isRated;                                          // isRated    Group * grp;    recv_data >> guid >> type >> asGroup >> isRated;    Creature *unit = ObjectAccessor::GetCreature(*_player, guid);    if(!unit)        return;    if(!unit->isBattleMaster())                             // it's not battle master        return;    uint8 arenatype = 0;    uint32 arenaRating = 0;    switch(type)    {        case 0:            arenatype = ARENA_TYPE_2v2;            break;        case 1:            arenatype = ARENA_TYPE_3v3;            break;        case 2:            arenatype = ARENA_TYPE_5v5;            break;        default:            sLog.outError("Unknown arena type %u at HandleBattleGroundArenaJoin()", type);            return;    }    //check existance    BattleGround* bg = NULL;    if( !(bg = sBattleGroundMgr.GetBattleGroundTemplate(BATTLEGROUND_AA)) )    {        sLog.outError("Battleground: template bg (all arenas) not found");             return;    }    uint8 bgTypeId = bg->GetTypeID();    uint32 bgQueueTypeId = sBattleGroundMgr.BGQueueTypeId(bgTypeId, arenatype);    // check queueing conditions    if(!asGroup)    {        // check if already in queue        if (_player->GetBattleGroundQueueIndex(bgQueueTypeId) < PLAYER_MAX_BATTLEGROUND_QUEUES)            //player is already in this queue            return;        // check if has free queue slots        if(!_player->HasFreeBattleGroundQueueId())            return;    }    else    {        grp = _player->GetGroup();        // no group found, error        if(!grp)            return;        uint32 err = grp->CanJoinBattleGroundQueue(bgTypeId, bgQueueTypeId, arenatype, arenatype, (bool)isRated, type);        switch(err)        {            // TODO: add error-based feedback to players in all cases        case BG_JOIN_ERR_GROUP_TOO_MANY:            {            WorldPacket data;            ChatHandler::FillMessageData(&data, NULL, CHAT_MSG_BG_SYSTEM_NEUTRAL, LANG_UNIVERSAL, NULL, 0, GetTrinityString(LANG_ARENA_GROUP_TOO_LARGE), NULL);            SendPacket(&data);            }            return;            break;        case BG_JOIN_ERR_GROUP_NOT_ENOUGH:            {            WorldPacket data;            ChatHandler::FillMessageData(&data, NULL, CHAT_MSG_BG_SYSTEM_NEUTRAL, LANG_UNIVERSAL, NULL, 0, GetTrinityString(LANG_ARENA_NOT_ENOUGH_PLAYERS), NULL);            SendPacket(&data);            }            return;            break;        case BG_JOIN_ERR_MIXED_ARENATEAM:            {            WorldPacket data;            ChatHandler::FillMessageData(&data, NULL, CHAT_MSG_BG_SYSTEM_NEUTRAL, LANG_UNIVERSAL, NULL, 0, GetTrinityString(LANG_ARENA_YOUR_TEAM_ONLY), NULL);            SendPacket(&data);            }            return;//.........这里部分代码省略.........
开发者ID:megamage,项目名称:mangos,代码行数:101,


示例22: switch

//.........这里部分代码省略.........        {            SendNotification(LANG_UNKNOWN_LANGUAGE);            recvData.rfinish();            return;        }        if (langDesc->skill_id != 0 && !sender->HasSkill(langDesc->skill_id))        {            // also check SPELL_AURA_COMPREHEND_LANGUAGE (client offers option to speak in that language)            Unit::AuraEffectList const& langAuras = sender->GetAuraEffectsByType(SPELL_AURA_COMPREHEND_LANGUAGE);            bool foundAura = false;            for (Unit::AuraEffectList::const_iterator i = langAuras.begin(); i != langAuras.end(); ++i)            {                if ((*i)->GetMiscValue() == int32(lang))                {                    foundAura = true;                    break;                }            }            if (!foundAura)            {                SendNotification(LANG_NOT_LEARNED_LANGUAGE);                recvData.rfinish();                return;            }        }        if (lang == LANG_ADDON)        {            // LANG_ADDON is only valid for the following message types            switch (type)            {                case CHAT_MSG_PARTY:                case CHAT_MSG_RAID:                case CHAT_MSG_GUILD:                case CHAT_MSG_BATTLEGROUND:                case CHAT_MSG_WHISPER:                    // check if addon messages are disabled                    if (!sWorld->getBoolConfig(CONFIG_ADDON_CHANNEL))                    {                        recvData.rfinish();                        return;                    }                    break;                default:                    TC_LOG_ERROR("network", "Player %s (GUID: %u) sent a chatmessage with an invalid language/message type combination",                        GetPlayer()->GetName().c_str(), GetPlayer()->GetGUIDLow());                    recvData.rfinish();                    return;            }        }        // LANG_ADDON should not be changed nor be affected by flood control        else        {            // send in universal language if player in .gm on mode (ignore spell effects)            if (sender->IsGameMaster())                lang = LANG_UNIVERSAL;            else            {                // send in universal language in two side iteration allowed mode                if (HasPermission(rbac::RBAC_PERM_TWO_SIDE_INTERACTION_CHAT))                    lang = LANG_UNIVERSAL;                else                {                    switch (type)                    {                        case CHAT_MSG_PARTY:                        case CHAT_MSG_PARTY_LEADER:                        case CHAT_MSG_RAID:                        case CHAT_MSG_RAID_LEADER:                        case CHAT_MSG_RAID_WARNING:                            // allow two side chat at group channel if two side group allowed                            if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))                                lang = LANG_UNIVERSAL;                            break;                        case CHAT_MSG_GUILD:                        case CHAT_MSG_OFFICER:                            // allow two side chat at guild channel if two side guild allowed                            if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD))                                lang = LANG_UNIVERSAL;                            break;                    }                }                // but overwrite it by SPELL_AURA_MOD_LANGUAGE auras (only single case used)                Unit::AuraEffectList const& ModLangAuras = sender->GetAuraEffectsByType(SPELL_AURA_MOD_LANGUAGE);                if (!ModLangAuras.empty())                    lang = ModLangAuras.front()->GetMiscValue();            }            if (!sender->CanSpeak())            {                std::string timeStr = secsToTimeString(m_muteTime - time(NULL));                SendNotification(GetTrinityString(LANG_WAIT_BEFORE_SPEAKING), timeStr.c_str());                recvData.rfinish(); // Prevent warnings                return;            }        }    }
开发者ID:redlaine,项目名称:InfinityCore-Ark,代码行数:101,


示例23: SendTradeStatus

void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket){    if (GetPlayer()->m_trade)        return;    uint64 ID;    if (!GetPlayer()->isAlive())    {        SendTradeStatus(TRADE_STATUS_YOU_DEAD);        return;    }    if (GetPlayer()->hasUnitState(UNIT_STAT_STUNNED))    {        SendTradeStatus(TRADE_STATUS_YOU_STUNNED);        return;    }    if (isLogingOut())    {        SendTradeStatus(TRADE_STATUS_YOU_LOGOUT);        return;    }    if (GetPlayer()->isInFlight())    {        SendTradeStatus(TRADE_STATUS_TARGET_TO_FAR);        return;    }    if (GetPlayer()->getLevel() < sWorld.getIntConfig(CONFIG_TRADE_LEVEL_REQ))    {        SendNotification(GetTrinityString(LANG_TRADE_REQ), sWorld.getIntConfig(CONFIG_TRADE_LEVEL_REQ));        return;    }    recvPacket >> ID;    Player* pOther = ObjectAccessor::FindPlayer(ID);    if (!pOther)    {        SendTradeStatus(TRADE_STATUS_NO_TARGET);        return;    }    if (pOther == GetPlayer() || pOther->m_trade)    {        SendTradeStatus(TRADE_STATUS_BUSY);        return;    }    if (!pOther->isAlive())    {        SendTradeStatus(TRADE_STATUS_TARGET_DEAD);        return;    }    if (pOther->isInFlight())    {        SendTradeStatus(TRADE_STATUS_TARGET_TO_FAR);        return;    }    if (pOther->hasUnitState(UNIT_STAT_STUNNED))    {        SendTradeStatus(TRADE_STATUS_TARGET_STUNNED);        return;    }    if (pOther->GetSession()->isLogingOut())    {        SendTradeStatus(TRADE_STATUS_TARGET_LOGOUT);        return;    }    if (pOther->GetSocial()->HasIgnore(GetPlayer()->GetGUIDLow()))    {        SendTradeStatus(TRADE_STATUS_IGNORE_YOU);        return;    }    if (!sWorld.getBoolConfig(CONFIG_ALLOW_TWO_SIDE_TRADE) && pOther->GetTeam() !=_player->GetTeam())    {        SendTradeStatus(TRADE_STATUS_WRONG_FACTION);        return;    }    if (!pOther->IsWithinDistInMap(_player,10.0f,false))    {        SendTradeStatus(TRADE_STATUS_TARGET_TO_FAR);        return;    }    if (pOther->getLevel() < sWorld.getIntConfig(CONFIG_TRADE_LEVEL_REQ))    {        SendNotification(GetTrinityString(LANG_TRADE_OTHER_REQ), sWorld.getIntConfig(CONFIG_TRADE_LEVEL_REQ));        return;    }//.........这里部分代码省略.........
开发者ID:AdrElecTro,项目名称:CactusEMU,代码行数:101,


示例24: PSendSysMessage

//.........这里部分代码省略.........        return false;    }    if (target)    {        std::string nameLink = playerLink(target_name);        // check online security        if (HasLowerSecurity(target, 0))            return false;        if (target->IsBeingTeleported())        {            PSendSysMessage(LANG_IS_TELEPORTED, nameLink.c_str());            SetSentErrorMessage(true);            return false;        }        Map* pMap = m_session->GetPlayer()->GetMap();        if (pMap->IsBattlegroundOrArena())        {            // only allow if gm mode is on            if (!_player->isGameMaster())            {                PSendSysMessage(LANG_CANNOT_GO_TO_BG_GM, nameLink.c_str());                SetSentErrorMessage(true);                return false;            }            // if both players are in different bgs            else if (target->GetBattlegroundId() && m_session->GetPlayer()->GetBattlegroundId() != target->GetBattlegroundId())                target->LeaveBattleground(false); // Note: should be changed so target gets no Deserter debuff            // all's well, set bg id            // when porting out from the bg, it will be reset to 0            target->SetBattlegroundId(m_session->GetPlayer()->GetBattlegroundId(), m_session->GetPlayer()->GetBattlegroundTypeId());            // remember current position as entry point for return at bg end teleportation            if (!target->GetMap()->IsBattlegroundOrArena())                target->SetBattlegroundEntryPoint();        }        else if (pMap->IsDungeon())        {            Map* cMap = target->GetMap();            if (cMap->Instanceable() && cMap->GetInstanceId() != pMap->GetInstanceId())                target->UnbindInstance(pMap->GetInstanceId(), target->GetDungeonDifficulty(), true);            // we are in instance, and can summon only player in our group with us as lead            if (!m_session->GetPlayer()->GetGroup() || !target->GetGroup() ||                (target->GetGroup()->GetLeaderGUID() != m_session->GetPlayer()->GetGUID()) ||                (m_session->GetPlayer()->GetGroup()->GetLeaderGUID() != m_session->GetPlayer()->GetGUID()))                // the last check is a bit excessive, but let it be, just in case            {                PSendSysMessage(LANG_CANNOT_SUMMON_TO_INST, nameLink.c_str());                SetSentErrorMessage(true);                return false;            }        }        PSendSysMessage(LANG_SUMMONING, nameLink.c_str(), "");        if (needReportToTarget(target))            ChatHandler(target).PSendSysMessage(LANG_SUMMONED_BY, playerLink(_player->GetName()).c_str());        // stop flight if need        if (target->isInFlight())        {            target->GetMotionMaster()->MovementExpired();            target->CleanupAfterTaxiFlight();        }        // save only in non-flight case        else            target->SaveRecallPosition();        // before GM        float x, y, z;        m_session->GetPlayer()->GetClosePoint(x, y, z, target->GetObjectSize());        target->TeleportTo(m_session->GetPlayer()->GetMapId(), x, y, z, target->GetOrientation());        target->SetPhaseMask(m_session->GetPlayer()->GetPhaseMask(), true);    }    else    {        // check offline security        if (HasLowerSecurity(NULL, target_guid))            return false;        std::string nameLink = playerLink(target_name);        PSendSysMessage(LANG_SUMMONING, nameLink.c_str(), GetTrinityString(LANG_OFFLINE));        // in point where GM stay        Player::SavePositionInDB(m_session->GetPlayer()->GetMapId(),            m_session->GetPlayer()->GetPositionX(),            m_session->GetPlayer()->GetPositionY(),            m_session->GetPlayer()->GetPositionZ(),            m_session->GetPlayer()->GetOrientation(),            m_session->GetPlayer()->GetZoneId(),            target_guid);    }    return true;}
开发者ID:Deviuss,项目名称:TrinityCore,代码行数:101,


示例25: MAKE_NEW_GUID

//show info of playerbool ChatHandler::HandlePInfoCommand(const char* args){    Player* target;    uint64 target_guid;    std::string target_name;    uint32 parseGUID = MAKE_NEW_GUID(atol((char*)args), 0, HIGHGUID_PLAYER);    if (sObjectMgr->GetPlayerNameByGUID(parseGUID, target_name))    {        target = sObjectMgr->GetPlayerByLowGUID(parseGUID);        target_guid = parseGUID;    }    else if (!extractPlayerTarget((char*)args, &target, &target_guid, &target_name))        return false;    uint32 accId = 0;    uint32 money = 0;    uint32 total_player_time = 0;    uint8 level = 0;    uint32 latency = 0;    uint8 race;    uint8 Class;    int64 muteTime = 0;    int64 banTime = -1;    uint32 mapId;    uint32 areaId;    uint32 phase = 0;    // get additional information from Player object    if (target)    {        // check online security        if (HasLowerSecurity(target, 0))            return false;        accId = target->GetSession()->GetAccountId();        money = target->GetMoney();        total_player_time = target->GetTotalPlayedTime();        level = target->getLevel();        latency = target->GetSession()->GetLatency();        race = target->getRace();        Class = target->getClass();        muteTime = target->GetSession()->m_muteTime;        mapId = target->GetMapId();        areaId = target->GetAreaId();        phase = target->GetPhaseMask();    }    // get additional information from DB    else    {        // check offline security        if (HasLowerSecurity(NULL, target_guid))            return false;        //                                                     0          1      2      3        4     5      6    7        QueryResult result = CharacterDatabase.PQuery("SELECT totaltime, level, money, account, race, class, map, zone FROM characters "                                                      "WHERE guid = '%u'", GUID_LOPART(target_guid));        if (!result)            return false;        Field* fields = result->Fetch();        total_player_time = fields[0].GetUInt32();        level = fields[1].GetUInt32();        money = fields[2].GetUInt32();        accId = fields[3].GetUInt32();        race = fields[4].GetUInt8();        Class = fields[5].GetUInt8();        mapId = fields[6].GetUInt16();        areaId = fields[7].GetUInt16();    }    std::string username = GetTrinityString(LANG_ERROR);    std::string email = GetTrinityString(LANG_ERROR);    std::string last_ip = GetTrinityString(LANG_ERROR);    uint32 security = 0;    std::string last_login = GetTrinityString(LANG_ERROR);    QueryResult result = LoginDatabase.PQuery("SELECT a.username, aa.gmlevel, a.email, a.last_ip, a.last_login, a.mutetime "                                                "FROM account a "                                                "LEFT JOIN account_access aa "                                                "ON (a.id = aa.id) "                                                "WHERE a.id = '%u'", accId);    if (result)    {        Field* fields = result->Fetch();        username = fields[0].GetString();        security = fields[1].GetUInt32();        email = fields[2].GetString();        muteTime = fields[5].GetUInt64();        if (email.empty())            email = "-";        if (!m_session || m_session->GetSecurity() >= AccountTypes(security))        {            last_ip = fields[3].GetString();            last_login = fields[4].GetString();//.........这里部分代码省略.........
开发者ID:DragonFire,项目名称:TRcore,代码行数:101,


示例26: GUID_LOPART

//show info of playerbool ChatHandler::HandlePInfoCommand(const char* args){    Player* target;    uint64 target_guid;    std::string target_name;    if (!extractPlayerTarget((char*)args,&target,&target_guid,&target_name))        return false;    uint32 accId = 0;    uint32 money = 0;    uint32 total_player_time = 0;    uint8 level = 0;    uint32 latency = 0;    uint8 race;    uint8 Class;    // get additional information from Player object    if (target)    {        // check online security        if (HasLowerSecurity(target, 0))            return false;        accId = target->GetSession()->GetAccountId();        money = target->GetMoney();        total_player_time = target->GetTotalPlayedTime();        level = target->getLevel();        latency = target->GetSession()->GetLatency();        race = target->getRace();        Class = target->getClass();    }    // get additional information from DB    else    {        // check offline security        if (HasLowerSecurity(NULL, target_guid))            return false;        //                                                     0          1      2      3        4     5        QueryResult result = CharacterDatabase.PQuery("SELECT totaltime, level, money, account, race, class FROM characters WHERE guid = '%u'", GUID_LOPART(target_guid));        if (!result)            return false;        Field *fields = result->Fetch();        total_player_time = fields[0].GetUInt32();        level = fields[1].GetUInt32();        money = fields[2].GetUInt32();        accId = fields[3].GetUInt32();        race = fields[4].GetUInt8();        Class = fields[5].GetUInt8();    }    std::string username = GetTrinityString(LANG_ERROR);    std::string email = GetTrinityString(LANG_ERROR);    std::string last_ip = GetTrinityString(LANG_ERROR);    uint32 security = 0;    std::string last_login = GetTrinityString(LANG_ERROR);    QueryResult result = LoginDatabase.PQuery("SELECT a.username,aa.gmlevel,a.email,a.last_ip,a.last_login "                                                "FROM account a "                                                "LEFT JOIN account_access aa "                                                "ON (a.id = aa.id) "                                                "WHERE a.id = '%u'",accId);    if (result)    {        Field* fields = result->Fetch();        username = fields[0].GetString();        security = fields[1].GetUInt32();        email = fields[2].GetString();        if (email.empty())            email = "-";        if (!m_session || m_session->GetSecurity() >= AccountTypes(security))        {            last_ip = fields[3].GetString();            last_login = fields[4].GetString();        }        else        {            last_ip = "-";            last_login = "-";        }    }    std::string nameLink = playerLink(target_name);    PSendSysMessage(LANG_PINFO_ACCOUNT, (target?"":GetTrinityString(LANG_OFFLINE)), nameLink.c_str(), GUID_LOPART(target_guid), username.c_str(), accId, email.c_str(), security, last_ip.c_str(), last_login.c_str(), latency);    std::string race_s, Class_s;    switch(race)    {        case RACE_HUMAN:            race_s = "Human";       break;        case RACE_ORC:              race_s = "Orc";         break;        case RACE_DWARF:            race_s = "Dwarf";       break;        case RACE_NIGHTELF:         race_s = "Night Elf";   break;        case RACE_UNDEAD_PLAYER:    race_s = "Undead";      break;        case RACE_TAUREN:           race_s = "Tauren";      break;        case RACE_GNOME:            race_s = "Gnome";       break;//.........这里部分代码省略.........
开发者ID:sanysan,项目名称:ChaosCore-1,代码行数:101,



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


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