[C++] VIP: Custom Commands. (Trinity)

Indította FantasyGFX, 2012 április 15, 03:37:10 DÉLUTÁN

Előző téma - Következő téma

FantasyGFX

E:\Trinity\src\server\scripts\Custom\vipcommands.cpp

#include "ScriptMgr.h"
#include "ObjectMgr.h"
#include "MapManager.h"
#include "Chat.h"
#include "Common.h"

class vipcommands : public CommandScript
{
public:
    vipcommands() : CommandScript("vipcommands") { }

    ChatCommand* GetCommands() const
    {
        static ChatCommand vipCommandTable[] =

        {
            { "mall",     SEC_PLAYER,     true, &HandleVipMallCommand,         "", NULL },
            { "chat",     SEC_PLAYER,     true, &HandleVipChatCommand,         "", NULL },
            { "changerace",    SEC_PLAYER,  false, &HandleChangeRaceCommand,             "", NULL },
    { "changefaction", SEC_PLAYER,  false, &HandleChangeFactionCommand, "", NULL },
    { "maxskills", SEC_PLAYER,  false, &HandleMaxSkillsCommand, "", NULL },
    { "customize", SEC_PLAYER,  false, &HandleCustomizeCommand, "", NULL },
    { "tele",           SEC_PLAYER,  false, &HandleTeleCommand, "", NULL },

            { NULL,             0,                     false, NULL,                                           "", NULL }
        };
        static ChatCommand commandTable[] =
        {
            { "vip",     SEC_PLAYER,   true, NULL,      "",  vipCommandTable},
       { NULL,             0,                  false, NULL,                               "", NULL }
        };
        return commandTable;
    }


static bool HandleTeleCommand(ChatHandler* handler, const char* args)
    {
        if (!*args)
            return false;

        Player* me = handler->GetSession()->GetPlayer();

        // id, or string, or [name] Shift-click form |color|Htele:id|h[name]|h|r
        GameTele const* tele = handler->extractGameTeleFromLink((char*)args);

        if (!tele)
        {
            handler->SendSysMessage(LANG_COMMAND_TELE_NOTFOUND);
            handler->SetSentErrorMessage(true);
            return false;
        }

        if (me->isInCombat())
        {
            handler->SendSysMessage(LANG_YOU_IN_COMBAT);
            handler->SetSentErrorMessage(true);
            return false;
        }

        MapEntry const* map = sMapStore.LookupEntry(tele->mapId);
        if (!map || map->IsBattlegroundOrArena())
        {
            handler->SendSysMessage(LANG_CANNOT_TELE_TO_BG);
            handler->SetSentErrorMessage(true);
            return false;
        }

        // stop flight if need
        if (me->isInFlight())
        {
            me->GetMotionMaster()->MovementExpired();
            me->CleanupAfterTaxiFlight();
        }
        // save only in non-flight case
        else
            me->SaveRecallPosition();

        me->TeleportTo(tele->mapId, tele->position_x, tele->position_y, tele->position_z, tele->orientation);
        return true;
}

static bool HandlevipCommand(ChatHandler* handler, const char* args)
    {

        Player* me = handler->GetSession()->GetPlayer();

            me->Say("vip command?", LANG_UNIVERSAL);
            return true;
    }

static bool HandleChangeRaceCommand(ChatHandler* handler, const char* args)
    {

        Player* me = handler->GetSession()->GetPlayer();
me->SetAtLoginFlag(AT_LOGIN_CHANGE_RACE);
handler->PSendSysMessage("Relog to change race of your character.");
        return true;
    }

static bool HandleChangeFactionCommand(ChatHandler* handler, const char* args)
    {

        Player* me = handler->GetSession()->GetPlayer();
me->SetAtLoginFlag(AT_LOGIN_CHANGE_FACTION);
handler->PSendSysMessage("Relog to change faction of your character.");
        return true;
    }

static bool HandleMaxSkillsCommand(ChatHandler* handler, const char* args)
    {

        Player* me = handler->GetSession()->GetPlayer();
me->UpdateSkillsForLevel();
handler->PSendSysMessage("Your weapon skills are now maximized.");
        return true;
    }

static bool HandleCustomizeCommand(ChatHandler* handler, const char* args)
    {

        Player* me = handler->GetSession()->GetPlayer();
me->SetAtLoginFlag(AT_LOGIN_CUSTOMIZE);
handler->PSendSysMessage("Relog to customize your character.");
        return true;
    }

static bool HandleVipMallCommand(ChatHandler* handler, const char* args)
    {

        Player* me = handler->GetSession()->GetPlayer();

        if (me->isInCombat())
        {
            handler->SendSysMessage(LANG_YOU_IN_COMBAT);
            handler->SetSentErrorMessage(true);
            return false;
        }

        // stop flight if need
        if (me->isInFlight())
        {
            me->GetMotionMaster()->MovementExpired();
            me->CleanupAfterTaxiFlight();
        }
        // save only in non-flight case
        else
            me->SaveRecallPosition();

me->TeleportTo(0, 23.8378f, -1588.85f, 195.419f, 4.54306f); // MapId, X, Y, Z, O
                return true;
    }


static bool HandleVipChatCommand(ChatHandler * handler, const char * args)
{
if (!args)
return false;

std::string msg = "";
Player * player = handler->GetSession()->GetPlayer();

switch(player->GetSession()->GetSecurity())
{
case SEC_Vip: // VIP
msg += "|cffff0000[V.I.P|r |cff18be00Chat:|r [";
msg += player->GetName();
msg += "]: |CFF7BBEF7";
break;

case SEC_MODERATOR: // Trial GM
msg += "|cffff0000[Trial GM|r |cff18be00Chat:|r [";
msg += player->GetName();
msg += "]: |CFF7BBEF7";
break;

case SEC_JuniorGM: // Junior GM
msg += "|CFF520084[Junior GM|r |cff18be00Chat:|r [";
msg += player->GetName();
msg += "]: |CFF7BBEF7";
break;

case SEC_GAMEMASTER: // GM
msg += "|cff00ffff[GM|r |cff18be00Chat:|r [";
msg += player->GetName();
msg += "]: |CFF7BBEF7";
break;

case SEC_SeniorGM: // Senior GM
msg += "|CFF7BBEF7[Senior GM|r |cff18be00Chat:|r [";
msg += player->GetName();
msg += "]: |CFF7BBEF7";
break;

case SEC_ADMINISTRATOR: // Admin
msg += "|cfffa9900[Admin|r |cff18be00Chat:|r [";
msg += player->GetName();
msg += "]: |CFF7BBEF7";
break;

case SEC_SeniorAdmin: // Senior Admin
msg += "|CFF18E7BD[Senior Admin|r |cff18be00Chat:|r [";
msg += player->GetName();
msg += "]: |CFF7BBEF7";
break;

    case SEC_Dev: // Dev
msg += "|CFF18BE00[Dev|r |cff18be00Chat:|r [";
msg += player->GetName();
msg += "]: |CFF7BBEF7";
break;

case SEC_HeadDev: // Head Dev
msg += "|CFF086142[Head Dev|r |cff18be00Chat:|r [";
msg += player->GetName();
msg += "]: |CFF7BBEF7";
break;

    case SEC_HeadAdmin: // Head Admin
msg += "|CFF18BE00[Head Admin|r |cff18be00Chat:|r [";
msg += player->GetName();
msg += "]: |CFF7BBEF7";
break;

case SEC_CoOwner: // CO - OWNER
msg += "|CFF7BBEF7[Co-Owner|r |cff18be00Chat:|r [";
msg += player->GetName();
msg += "]: |cffff0000";
break;

case SEC_Owner: // OWNER
      msg += "|CFF7BBEF7[OWNER|r |cff18be00Chat:|r [";
msg += player->GetName();
msg += "]: |cffff0000";
break;

case SEC_CONSOLE: // Root, Console!
msg += "|CFF18BE00[ROOT|r |cff18be00Chat:|r [";
msg += player->GetName();
msg += "]: |cffff0000";
break;
}

msg += args;
sWorld->SendServerMessage(SERVER_MSG_STRING, msg.c_str(), 0);

return true;
}

};

void AddSC_vipcommands()
{
    new vipcommands();


E:\Trinity\src\server\scripts\Custom\CMakeLists.txt

# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

set(scripts_STAT_SRCS
  ${scripts_STAT_SRCS}

+Custom/vipcommands.cpp

)
message("  -> Prepared: Custom")


E:\Trinity\src\server\game\Scripting\ScriptLoader.cpp

#ifdef SCRIPTS
/* This is where custom scripts' loading functions should be declared. */

+void AddSC_vipcommands();

#endif

void AddCustomScripts()
{
#ifdef SCRIPTS
/* This is where custom scripts should be added. */

+AddSC_vipcommands();

#endif
}


E:\Trinity\src\server\shared\Common.h
-for fix vip chat!


enum AccountTypes
{
-    SEC_PLAYER         = 0,
-    SEC_MODERATOR      = 1,
-    SEC_GAMEMASTER     = 2,
-    SEC_ADMINISTRATOR  = 3,
-    SEC_CONSOLE        = 4                                  // must be always last in list, accounts must have less security level always also
+       SEC_PLAYER                     = 0,    // PLAYER
+       SEC_Vip                            = 1,    // VIP
+   SEC_MODERATOR                  = 2,    // TRAILGM
+       SEC_JuniorGM                   = 3,    // Junior GM
+       SEC_GAMEMASTER                 = 4,    // GM
+       SEC_SeniorGM                   = 5,    // Senior GM
+       SEC_ADMINISTRATOR              = 6,    // Admin
+       SEC_SeniorAdmin                = 7,    // Senior Admin
+       SEC_Dev                        = 8,    // DEV
+       SEC_HeadDev                        = 9,    // HEAD DEV
+   SEC_HeadAdmin                  = 10,   // HEAD ADMIN !
+       SEC_CoOwner                    = 11,   // CO-OWNER !
+       SEC_Owner                      = 12,   // OWNER !
+       SEC_CONSOLE                    = 13        // CONSOLE
+
};


SQL :: VIP Commands..

INSERT INTO `command` VALUES ('vip', '1', 'Syntax: .vip');
INSERT INTO `command` VALUES ('vip changerace', '1', 'Syntax: .vip changerace');
INSERT INTO `command` VALUES ('vip changefaction', '1', 'Syntax: .vip changefaction');
INSERT INTO `command` VALUES ('vip maxskills', '1', 'Syntax: .vip maxskills');
INSERT INTO `command` VALUES ('vip customize', '1', 'Syntax: .vip customize');
INSERT INTO `command` VALUES ('vip mall', '1', 'Syntax: .vip mall');
INSERT INTO `command` VALUES ('vip chat', '1', 'Syntax: .vip chat');
INSERT INTO `command` VALUES ('vip tele', '1', 'Syntax: .vip tele #location\r\n\r\nTeleport player to a given location.');


List :: VIP Commands..

.vip .
.vip changerace ......
.vip changefaction ......
.vip maxskills ......
.vip customize ......
.vip mall :: location in vip mall
.vip chat :: Do .vip chat "text" to access our global chat!
.vip tele ::#location\r\n\r\nTeleport player to a given location.

FantasyGFX

commands .buff .mall .heal

#include "ScriptPCH.h"
#include "Chat.h"


uint32 auras[] = { 15366, 16609, 48073, 48162, 48074, 48170, 43223, 48934, 48938, 25899, 36880, 43015, 43017, 9381, 467, 69994, 3077, 78, 33080, 33081, 33082, 24705, 26035, 48161, 48073, 48469, 16609, 15366 };

class buff_commandscript : public CommandScript
{
public:
    buff_commandscript() : CommandScript("buff_commandscript") { }

ChatCommand* GetCommands() const
    {
        static ChatCommand IngameCommandTable[] =
        {
{ "buff",            SEC_PLAYER,  false, &HandleBuffCommand,             "", NULL },
{ "mall",            SEC_PLAYER,  false, &HandleMallCommand,             "", NULL },
{ "heal",            SEC_PLAYER,  false, &HandleHealCommand,             "", NULL },
            { NULL,             0,                  false, NULL,                              "", NULL }
        };
return IngameCommandTable;
    }

static bool HandleBuffCommand(ChatHandler * handler, const char * args)
    {
        Player * me = handler->GetSession()->GetPlayer();

me->RemoveAurasByType(SPELL_AURA_MOUNTED);
for(int i = 0; i < 30; i++)
    me->AddAura(auras[i], me);
handler->PSendSysMessage("You're buffed now!");
return true;
    }

static bool HandleMallCommand(ChatHandler * handler, const char * args)
    {
        Player * me = handler->GetSession()->GetPlayer();

me-> TeleportTo(530, -1850.209961f, 5435.821777f, -10.961435f, 3.403913f);
handler->PSendSysMessage("You Have Been Teleported!");
return true;
    }

static bool HandleHealCommand(ChatHandler * handler, const char * args)
    {
        Player * me = handler->GetSession()->GetPlayer();

me-> SetHealth(me->GetMaxHealth());
handler->PSendSysMessage("You Have Been Healed!");
return true;
    }
};

void AddSC_Ingame_commandscript()
{
    new buff_commandscript();
}


http://pastebin.com/EtU6GCB9

Powered by EzPortal