PDA

View Full Version : [Core/C++] Adding Custom Commands ArcEmu



MikExV™
26-03-10, 02:18 PM
Were Going to start off by opening are place ware are core is located, for instance mine is here "C:\WoWServer\Compile\trunk\src\arcemu-world"
307
We Will Need to Chat.cpp, and Chat.h, Make back ups if you think you may screw some thing up, or if you just want to make shore ;).
I will be making a VIP command table, if your making diffrent don't do it exactly how I do.
Now your going to wanna go down a little bit untell you find

ChatCommand * CommandTableStorage::GetSubCommandTable(const char * name)
{
if(!stricmp(name, "modify"))Go to the bottom and add

else if(!stricmp(name, "vip"))
return _vipCommandTable;308
Now your going to scroll down tell you find

void CommandTableStorage::Dealloc()
{
free( _modifyCommandTable );
free( _debugCommandTable );
free( _waypointCommandTable );And your also going to Add

free( _vipCommandTable);309
Now your going to add this below or some ware near there

static ChatCommand vipCommandTable[] =
{
{ "additem", 'q', &ChatHandler::HandleAddInvItemCommand, "Adds item x count y", NULL, 0, 0, 0 },
{ "advanceallskills", 'q', &ChatHandler::HandleAdvanceAllSkillsCommand, "Advances all skills <x> points.", NULL, 0, 0, 0 },
{ "appear", 'q', &ChatHandler::HandleAppearCommand, "Teleports to x's position.", NULL, 0, 0, 0 },
{ "speed", 'q', &ChatHandler::HandlevipModifySpeedCommand, "Modifies the movement speed of the selected target.", NULL, 0, 0, 0 },
{ "search", 'q', &ChatHandler::HandleLookupItemCommand, "Looks up item string x.", NULL, 0, 0, 0 },
{ "summon", 'q', &ChatHandler::HandleSummonCommand, "Summons x to your position.", NULL, 0, 0, 0 },
{ "guild make", 'q', &ChatHandler::CreateGuildCommand, "Create's Seleceted Player a Guild", NULL, 0, 0, 0},

{ NULL, '0', NULL, "", NULL, 0, 0, 0 }
};
dupe_command_table(vipCommandTable, _vipCommandTable);
t310
The 'q' is what I will put as the account when I make it vip like .account level (account name) q
Now Press Ctrl+S or how ever you save and open Chat.h.
Now Find

class SERVER_DECL CommandTableStorage : public Singleton<CommandTableStorage>
{
// List command containers ex. .character is a container of .character additem
ChatCommand* _modifyCommandTable;
ChatCommand* _debugCommandTable;
ChatCommand* _waypointCommandTable;
ChatCommand* _GMTicketCommandTable;
ChatCommand* _GuildCommandTable;And add

ChatCommand* _vipCommandTable;at the bottom again.
311
Now find

// Level 1 commands
bool CmdSetValueField(WorldSession *m_session, uint32 field, uint32 fieldmax, const char *fieldname, const char* args);and add

bool HandlevipModifySpeedCommand(const char* args, WorldSession *m_session); at the end
Now your going to go to

C:\WoWServer\Compile\trunk\winThats ware mine is yours is in a diffrent location
and open the

arcemuVC90 - All ProjectsNow right click on

arcemu - worldand click build the top one ;)
This may take a few min's.
Make shore at the top its on Release, and not Debug

1>------ Build started: Project: collision, Configuration: Release Win32 ------
1>Linking...
1> Creating library .\..\..\bin\Release\collision.lib and object .\..\..\bin\Release\collision.exp
1>Generating code
1>Finished generating code
1>Embedding manifest...
1>Build log was saved at "file://c:\WoWServer\Compile\trunk\win\VC90\collision___Wi n32_Release\BuildLog.htm"
1>collision - 0 error(s), 0 warning(s)
2>------ Build started: Project: arcemu-world, Configuration: Release Win32 ------
2>Compiling...
2>Chat.cpp
2>Linking...
2> Creating library .\..\..\bin\Release\arcemu-world.lib and object .\..\..\bin\Release\arcemu-world.exp
2>Generating code
2>Finished generating code
2>Embedding manifest...
2>Build log was saved at "file://c:\WoWServer\Compile\trunk\win\VC90\arcemu-world___Win32_Release\BuildLog.htm"
2>arcemu-world - 0 error(s), 0 warning(s)
========== Build: 2 succeeded, 0 failed, 3 up-to-date, 0 skipped ========== If I missed any Thing please tell me.
~MikExV

MikExV™
26-03-10, 02:28 PM
Just tested in game
312
http://mmopro.net/forums/images/misc/pencil.png

Apple
26-03-10, 10:24 PM
nice one!

MikExV™
27-03-10, 11:05 AM
Thank you ;)

Cocain
27-03-10, 11:42 AM
Simple, yet affective. Good guide.

MikExV™
28-03-10, 11:13 AM
Thank you both! I added a Script in the Chat.h that makes it so vips can only mod there speed to 14 and 7 or 8 (Wasen't shore witch was normal)

mec
07-04-10, 04:40 AM
correct me if i'm wrong but shouldnt this be "guild create" ? instead of "guild make"


{ "guild make", 'q', &ChatHandler::CreateGuildCommand, "Create's Seleceted Player a Guild", NULL, 0, 0, 0},

MikExV™
10-04-10, 03:05 AM
correct me if i'm wrong but shouldnt this be "guild create" ? instead of "guild make"


{ "guild make", 'q', &ChatHandler::CreateGuildCommand, "Create's Seleceted Player a Guild", NULL, 0, 0, 0},
Dosent realy matter, it can be eather I could have it set to .make_guild and it would work. or just .make and it would work!

mec
26-04-10, 04:05 AM
i'm just saying cuz the actual arcemu command is .guild create

would it work if you put make?