Esempio n. 1
0
//.guild disband
bool ChatHandler::HandleGuildDisbandCommand(const char* /*args*/, WorldSession* m_session)
{
    Player* selected_player = GetSelectedPlayer(m_session, true, true);
    if (selected_player == nullptr)
        return true;

#if VERSION_STRING != Cata
    if (!selected_player->IsInGuild())
    {
        RedSystemMessage(m_session, "%s is not in a guild.", selected_player->GetName());
        return true;
    }
#else
    if (!selected_player->GetGuild())
    {
        RedSystemMessage(m_session, "%s is not in a guild.", selected_player->GetName());
        return true;
    }
#endif

#if VERSION_STRING != Cata
    GreenSystemMessage(m_session, "Disbanded Guild: %s", selected_player->GetGuild()->getGuildName());
    sGMLog.writefromsession(m_session, "Disbanded Guild %s", selected_player->GetGuild()->getGuildName());
#else
    GreenSystemMessage(m_session, "Disbanded Guild: %s", selected_player->GetGuild()->getName().c_str());
    sGMLog.writefromsession(m_session, "Disbanded Guild %s", selected_player->GetGuild()->getName().c_str());
#endif
    selected_player->GetGuild()->disband();
    return true;
}
Esempio n. 2
0
//.pet setlevel
bool ChatHandler::HandlePetSetLevelCommand(const char* args, WorldSession* m_session)
{
    if (!*args)
        return false;


    int32 newLevel = atol(args);
    if (newLevel < 1)
        return false;

    Player* selected_player = GetSelectedPlayer(m_session, false, true);
    Pet* selected_pet = nullptr;
    if (selected_player != nullptr)
    {
        selected_pet = selected_player->GetSummon();
        if (selected_pet == nullptr)
        {
            RedSystemMessage(m_session, "Player has no pet.");
            return true;
        }
    }
    else
    {
        Creature* selected_creature = GetSelectedCreature(m_session, false);
        if (selected_creature == nullptr)
            return false;

        if (!selected_creature->IsPet())
            return false;

        selected_pet = static_cast< Pet* >(selected_creature);

        selected_player = selected_pet->GetPetOwner();
    }

    if ((uint32)newLevel > selected_player->getLevel())
    {
        RedSystemMessage(m_session, "You can not set a pet level higher than thew player level!");
        newLevel = selected_player->getLevel();
    }

    selected_pet->setLevel(newLevel);
    selected_pet->SetUInt32Value(UNIT_FIELD_PETEXPERIENCE, 0);
    selected_pet->SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, selected_pet->GetNextLevelXP(newLevel));
    selected_pet->ApplyStatsForLevel();
    selected_pet->UpdateSpellList();

    if (selected_player != m_session->GetPlayer())
    {
        GreenSystemMessage(m_session, "Set %s's pet to level %lu.", selected_player->GetName(), newLevel);
        SystemMessage(selected_player->GetSession(), "%s set your pet to level %lu.", m_session->GetPlayer()->GetName(), newLevel);
        sGMLog.writefromsession(m_session, "leveled %s's pet to %lu", selected_player->GetName(), newLevel);
    }
    else
    {
        GreenSystemMessage(m_session, "You set your pet to level %lu.", newLevel);
    }

    return true;
}
Esempio n. 3
0
//.pet removespell
bool ChatHandler::HandlePetRemoveSpellCommand(const char* args, WorldSession* m_session)
{
    Player* selected_player = GetSelectedPlayer(m_session, true, true);
    if (selected_player == nullptr)
        return true;

    if (selected_player->GetSummon() == nullptr)
    {
        RedSystemMessage(m_session, "%s has no pet.", selected_player->GetName());
        return true;
    }

    if (!*args)
        return false;

    uint32 SpellId = atol(args);
    SpellInfo* spell_entry = sSpellCustomizations.GetSpellInfo(SpellId);
    if (spell_entry == nullptr)
    {
        RedSystemMessage(m_session, "Invalid spell id requested.");
        return true;
    }

    std::list<Pet*> summons = selected_player->GetSummons();
    for (std::list<Pet*>::iterator itr = summons.begin(); itr != summons.end(); ++itr)
    {
        (*itr)->RemoveSpell(SpellId);
    }

    GreenSystemMessage(m_session, "Removed spell %u from %s's pet.", SpellId, selected_player->GetName());

    return true;
}
Esempio n. 4
0
//.pet rename
bool ChatHandler::HandlePetRenameCommand(const char* args, WorldSession* m_session)
{
    Player* selected_player = GetSelectedPlayer(m_session, true, true);
    if (selected_player == nullptr)
        return true;

    Pet* selected_pet = selected_player->GetSummon();
    if (selected_pet == nullptr)
    {
        RedSystemMessage(m_session, "You have no pet.");
        return true;
    }

    if (strlen(args) < 2)
    {
        RedSystemMessage(m_session, "You must specify a name.");
        return true;
    }

    if (selected_player != m_session->GetPlayer())
    {
        GreenSystemMessage(m_session, "Renamed %s's pet to %s.", selected_player->GetName(), args);
        SystemMessage(selected_player->GetSession(), "%s renamed your pet to %s.", m_session->GetPlayer()->GetName(), args);
        sGMLog.writefromsession(m_session, "renamed %s's pet to %s", selected_player->GetName(), args);
    }
    else
    {
        GreenSystemMessage(m_session, "You renamed you pet to %s.", args);
    }

    selected_pet->Rename(args);

    return true;
}
Esempio n. 5
0
//.guild removeplayer
bool ChatHandler::HandleGuildRemovePlayerCommand(const char* /*args*/, WorldSession* m_session)
{
    Player* selected_player = GetSelectedPlayer(m_session, true, true);
    if (selected_player == nullptr)
        return true;

#if VERSION_STRING != Cata
    if (selected_player->IsInGuild())
    {
        RedSystemMessage(m_session, "%s not in a guild.", selected_player->GetName());
        return true;
    }
#else
    if (selected_player->GetGuild())
    {
        RedSystemMessage(m_session, "%s not in a guild.", selected_player->GetName());
        return true;
    }
#endif

#if VERSION_STRING != Cata
    if (selected_player->GetGuild()->GetGuildLeader() != selected_player->getGuidLow() || !m_session->GetPlayer()->isGMFlagSet())
    {
        RedSystemMessage(m_session, "Only guild leaders and gms can remove players from a guild!");
        return true;
    }

    GreenSystemMessage(m_session, "Kicked %s from Guild: %s", selected_player->GetName(), selected_player->GetGuild()->getGuildName());

    if (selected_player != m_session->GetPlayer())
        sGMLog.writefromsession(m_session, "Kicked %s from Guild %s", selected_player->GetName(), selected_player->GetGuild()->getGuildName());

    selected_player->GetGuild()->RemoveGuildMember(selected_player->getPlayerInfo(), selected_player->GetSession());
#else
    if (selected_player->GetGuild()->getLeaderGUID() != selected_player->getGuid() || !m_session->GetPlayer()->isGMFlagSet())
    {
        RedSystemMessage(m_session, "Only guild leaders and gms can remove players from a guild!");
        return true;
    }

    GreenSystemMessage(m_session, "Kicked %s from Guild: %s", selected_player->GetName(), selected_player->GetGuild()->getName().c_str());

    if (selected_player != m_session->GetPlayer())
        sGMLog.writefromsession(m_session, "Kicked %s from Guild %s", selected_player->GetName(), selected_player->GetGuild()->getName().c_str());

    selected_player->GetGuild()->handleRemoveMember(selected_player->GetSession(), selected_player->getGuid());
#endif
    return true;
}
Esempio n. 6
0
//.guild rename
bool ChatHandler::HandleRenameGuildCommand(const char* args, WorldSession* m_session)
{
    Player* selected_player = GetSelectedPlayer(m_session, true, true);
    if (selected_player == nullptr)
        return true;

#if VERSION_STRING != Cata
    if (selected_player->IsInGuild())
    {
        RedSystemMessage(m_session, "%s not in a guild.", selected_player->GetName());
        return true;
    }
#else
    if (selected_player->GetGuild())
    {
        RedSystemMessage(m_session, "%s not in a guild.", selected_player->GetName());
        return true;
    }
#endif

    if (!*args)
        return false;

#if VERSION_STRING != Cata
    Guild* guild = objmgr.GetGuildByGuildName(std::string(args));
#else
    Guild* guild = sGuildMgr.getGuildByName(std::string(args));
#endif
    if (guild != nullptr)
    {
        RedSystemMessage(m_session, "Guild name %s is already taken.", args);
        return true;
    }
    else
    {
#if VERSION_STRING != Cata
        GreenSystemMessage(m_session, "Changed guild name of %s to %s. This will take effect next restart.", selected_player->GetGuild()->getGuildName(), args);
        CharacterDatabase.Execute("UPDATE guilds SET `guildName` = \'%s\' WHERE `guildId` = '%u'", CharacterDatabase.EscapeString(std::string(args)).c_str(), selected_player->GetGuild()->getGuildId());
        sGMLog.writefromsession(m_session, "Changed guild name of '%s' to '%s'", selected_player->GetGuild()->getGuildName(), args);
#else
        GreenSystemMessage(m_session, "Changed guild name of %s to %s. This will take effect next restart.", selected_player->GetGuild()->getName().c_str(), args);
        CharacterDatabase.Execute("UPDATE guilds SET `guildName` = \'%s\' WHERE `guildId` = '%u'", CharacterDatabase.EscapeString(std::string(args)).c_str(), selected_player->GetGuild()->getId());
        sGMLog.writefromsession(m_session, "Changed guild name of '%s' to '%s'", selected_player->GetGuild()->getName().c_str(), args);
#endif
    }

    return true;
}
Esempio n. 7
0
//.pet create
bool ChatHandler::HandlePetCreateCommand(const char* args, WorldSession* m_session)
{
    Player* selected_player = GetSelectedPlayer(m_session, true, true);
    if (selected_player == nullptr)
        return true;

    if (!*args)
        return false;

    uint32 entry = atol(args);
    CreatureProperties const* creature_proto = sMySQLStore.GetCreatureProperties(entry);
    if (creature_proto == nullptr)
    {
        RedSystemMessage(m_session, "Creature Entry: %u is not a valid endtry!", entry);
        return true;
    }

    selected_player->DismissActivePets();
    selected_player->RemoveFieldSummon();

    float followangle = -M_PI_FLOAT * 2;
    LocationVector vector(selected_player->GetPosition());
    vector.x += (3 * (cosf(followangle + selected_player->GetOrientation())));
    vector.y += (3 * (sinf(followangle + selected_player->GetOrientation())));

    Pet* pet = objmgr.CreatePet(entry);
    if (!pet->CreateAsSummon(entry, creature_proto, nullptr, selected_player, nullptr, 1, 0, &vector, true))
    {
        pet->DeleteMe();
        return true;
    }

    pet->GetAIInterface()->SetUnitToFollowAngle(followangle);

    if (selected_player != m_session->GetPlayer())
    {
        sGMLog.writefromsession(m_session, "used created pet with entry %u for player %s", entry, selected_player->GetName());
        BlueSystemMessage(m_session, "Pet with entry %u created for player %s.", entry, selected_player->GetName());
        BlueSystemMessage(selected_player->GetSession(), "%s created a pet with entry %u for you.", m_session->GetPlayer()->GetName(), entry);

    }
    else
    {
        BlueSystemMessage(m_session, "Pet with entry %u created.", entry);
    }

    return true;
}
Esempio n. 8
0
//.pet dismiss
bool ChatHandler::HandlePetDismissCommand(const char* args, WorldSession* m_session)
{
    Player* selected_player = GetSelectedPlayer(m_session, false, true);
    Pet* selected_pet = nullptr;
    if (selected_player != nullptr)
    {
        if (selected_player->GetSummon() == nullptr)
        {
            RedSystemMessage(m_session, "Player has no pet.");
            return true;
        }
        else
        {
            selected_player->DismissActivePets();
        }
    }
    else
    {
        // no player selected, see if it is a pet
        Creature* selected_creature = GetSelectedCreature(m_session, false);
        if (selected_creature == nullptr)
            return false;

        if (!selected_creature->IsPet())
            return false;

        selected_pet = static_cast< Pet* >(selected_creature);

        selected_player = selected_pet->GetPetOwner();
        selected_pet->Dismiss();
    }

    if (selected_player != m_session->GetPlayer())
    {
        GreenSystemMessage(m_session, "Dismissed %s's pet.", selected_player->GetName());
        SystemMessage(selected_player->GetSession(), "%s dismissed your pet.", m_session->GetPlayer()->GetName());
        sGMLog.writefromsession(m_session, "used dismiss pet command on player %s", selected_player->GetName());
    }
    else
    {
        GreenSystemMessage(m_session, "Your pet is dismissed.");
    }

    return true;
}
Esempio n. 9
0
bool ChatHandler::HandleGuildInfoCommand(const char* /*args*/, WorldSession* session)
{
    Player* selected_player = GetSelectedPlayer(session, true, true);
    if (selected_player == nullptr)
        return true;

    if (!selected_player->GetGuild())
    {
        RedSystemMessage(session, "%s is not in a guild.", selected_player->GetName());
        return true;
    }

    GreenSystemMessage(session, "Player Guild Information:");
    GreenSystemMessage(session, "  GuildName: %s", selected_player->GetGuild()->getName().c_str());
    GreenSystemMessage(session, "  GuildId: %u", selected_player->GetGuild()->getId());
    GreenSystemMessage(session, "  Player rank: %u", selected_player->GetRankFromDB(selected_player->getGuid()));

    return true;
}
Esempio n. 10
0
//.guild listmembers
bool ChatHandler::HandleGuildListMembersCommand(const char* /*args*/, WorldSession* m_session)
{
    Player* selected_player = GetSelectedPlayer(m_session, true, true);
    if (selected_player == nullptr)
        return true;

#if VERSION_STRING != Cata
    if (selected_player->IsInGuild())
    {
        RedSystemMessage(m_session, "%s not in a guild.", selected_player->GetName());
        return true;
    }
#else
    if (selected_player->GetGuild())
    {
        RedSystemMessage(m_session, "%s not in a guild.", selected_player->GetName());
        return true;
    }
#endif

#if VERSION_STRING != Cata
    GreenSystemMessage(m_session, "Now showing guild members for %s", selected_player->GetGuild()->getGuildName());
#else
    GreenSystemMessage(m_session, "Now showing guild members for %s", selected_player->GetGuild()->getName().c_str());
#endif

#if VERSION_STRING != Cata
    selected_player->GetGuild()->Lock();
    for (GuildMemberMap::iterator itr = selected_player->GetGuild()->GetGuildMembersBegin(); itr != selected_player->GetGuild()->GetGuildMembersEnd(); ++itr)
    {
        GuildMember* member = itr->second;
        if (!member || !member->pPlayer)
            continue;

        BlueSystemMessage(m_session, "%s (Rank: %s)", member->pPlayer->name, member->pRank->szRankName);
    }
    selected_player->GetGuild()->Unlock();
#endif

    return true;
}
Esempio n. 11
0
//.guild create
bool ChatHandler::HandleGuildCreateCommand(const char* args, WorldSession* m_session)
{
#if VERSION_STRING != Cata
    Player* selected_player = GetSelectedPlayer(m_session, true, true);
    if (selected_player == nullptr)
        return true;

    if (!*args)
        return false;

    if (selected_player->IsInGuild())
    {
        RedSystemMessage(m_session, "%s is already in a guild.", selected_player->GetName());
        return true;
    }

    if (strlen((char*)args) > 75)
    {
        // send message to user
        char buf[256];
        snprintf((char*)buf, 256, "The name was too long by %u", (uint32)strlen(args) - 75);
        SystemMessage(m_session, buf);
        return true;
    }

    for (uint32 i = 0; i < strlen(args); i++)
    {
        if (!isalpha(args[i]) && args[i] != ' ')
        {
            SystemMessage(m_session, "Error, name can only contain chars A-Z and a-z.");
            return true;
        }
    }

    Guild* pGuild = NULL;
    pGuild = objmgr.GetGuildByGuildName(std::string(args));

    if (pGuild)
    {
        RedSystemMessage(m_session, "Guild name is already taken.");
        return true;
    }

    Charter tempCharter(0, selected_player->getGuidLow(), CHARTER_TYPE_GUILD);
    tempCharter.SignatureCount = 0;
    tempCharter.GuildName = std::string(args);

    pGuild = Guild::Create();
    pGuild->CreateFromCharter(&tempCharter, selected_player->GetSession());
    GreenSystemMessage(m_session, "Guild created");
    sGMLog.writefromsession(m_session, "Created guild '%s'", args);
    return true;
#else
    Player* selected_player = GetSelectedPlayer(m_session, true, true);
    if (selected_player == nullptr)
        return true;

    if (!*args)
        return false;

    if (selected_player->GetGuild())
    {
        RedSystemMessage(m_session, "%s is already in a guild.", selected_player->GetName());
        return true;
    }

    if (strlen((char*)args) > 75)
    {
        // send message to user
        char buf[256];
        snprintf((char*)buf, 256, "The name was too long by %u", (uint32)strlen(args) - 75);
        SystemMessage(m_session, buf);
        return true;
    }

    for (uint32 i = 0; i < strlen(args); i++)
    {
        if (!isalpha(args[i]) && args[i] != ' ')
        {
            SystemMessage(m_session, "Error, name can only contain chars A-Z and a-z.");
            return true;
        }
    }

    Charter tempCharter(0, selected_player->getGuidLow(), CHARTER_TYPE_GUILD);
    tempCharter.SignatureCount = 0;
    tempCharter.GuildName = std::string(args);

    Guild* guild = new Guild;
    if (!guild->create(selected_player, std::string(args)))
    {
        delete guild;
        SystemMessage(m_session, "Guild not created");
        return true;
    }

    sGuildMgr.addGuild(guild);

    //\todo danko
    //pGuild->CreateFromCharter(&tempCharter, selected_player->GetSession());
    GreenSystemMessage(m_session, "Guild created");
    sGMLog.writefromsession(m_session, "Created guild '%s'", args);
    return true;
#endif
}
Esempio n. 12
0
//.guild join
bool ChatHandler::HandleGuildJoinCommand(const char* args, WorldSession* m_session)
{
    Player* selected_player = GetSelectedPlayer(m_session, true, true);
    if (selected_player == nullptr)
        return true;

#if VERSION_STRING != Cata
    if (selected_player->IsInGuild())
    {
        RedSystemMessage(m_session, "%s is already in a guild.", selected_player->GetName());
        return true;
    }
#else
    if (selected_player->GetGuild())
    {
        RedSystemMessage(m_session, "%s is already in a guild.", selected_player->GetName());
        return true;
    }
#endif

    if (!*args)
        return false;

#if VERSION_STRING != Cata
    Guild* guild = objmgr.GetGuildByGuildName(std::string(args));
    if (guild != nullptr)
    {
        guild->getLock().Acquire();
        uint32 memberCount = static_cast<uint32>(guild->GetNumMembers());
        guild->getLock().Release();

        if (memberCount >= MAX_GUILD_MEMBERS)
        {
            m_session->SystemMessage("That guild is full.");
            return true;
        }

        guild->AddGuildMember(selected_player->getPlayerInfo(), m_session, -2);
        GreenSystemMessage(m_session, "You have joined the guild '%s'", guild->getGuildName());
        sGMLog.writefromsession(m_session, "Force joined guild '%s'", guild->getGuildName());
        return true;
    }
    else
    {
        RedSystemMessage(m_session, "Guild %s is not a valid guildname!", args);
    }
#else
    Guild* guild = sGuildMgr.getGuildByName(std::string(args));
    if (guild != nullptr)
    {
        uint32 memberCount = guild->getMembersCount();

        if (memberCount >= worldConfig.guild.maxMembers)
        {
            m_session->SystemMessage("That guild is full.");
            return true;
        }

        guild->addMember(selected_player->getGuid(), 4);
        GreenSystemMessage(m_session, "You have joined the guild '%s'", guild->getName().c_str());
        sGMLog.writefromsession(m_session, "Force joined guild '%s'", guild->getName().c_str());
        return true;
    }
    else
    {
        RedSystemMessage(m_session, "Guild %s is not a valid guildname!", args);
    }
#endif

    return false;
}