Well, I am trying to construct this into a perl command. I found the 'join group' code for the bot.
Code:
bool Bot::AddBotToGroup(Bot* bot, Group* group) {
bool Result = false;
int i = 0;
if(bot && group) {
//Let's see if the bot is already in the group
for(i = 0; i < MAX_GROUP_MEMBERS; i++) {
if(group->members[i] && !strcasecmp(group->members[i]->GetCleanName(), bot->GetCleanName()))
return false;
}
// Put the bot in the group
for(i = 0; i < MAX_GROUP_MEMBERS; i++) {
if(group->members[i] == NULL) {
group->members[i] = bot;
break;
}
}
// We copy the bot name in the group at the slot of the bot
strcpy(group->membername[i], bot->GetCleanName());
bot->SetGrouped(true);
//build the template join packet
EQApplicationPacket* outapp = new EQApplicationPacket(OP_GroupUpdate, sizeof(GroupJoin_Struct));
GroupJoin_Struct* gj = (GroupJoin_Struct*) outapp->pBuffer;
strcpy(gj->membername, bot->GetCleanName());
gj->action = groupActJoin;
int z = 1;
for(i=0; i < MAX_GROUP_MEMBERS; i++) {
if(group->members[i] && group->members[i]->IsClient()) {
if(group->IsLeader(group->members[i])) {
strcpy(gj->yourname, group->members[i]->GetName());
strcpy(group->members[i]->CastToClient()->GetPP().groupMembers[0], group->members[i]->GetName());
group->members[i]->CastToClient()->QueuePacket(outapp);
}
else {
strcpy(group->members[i]->CastToClient()->GetPP().groupMembers[0+z], group->members[i]->GetName());
group->members[i]->CastToClient()->QueuePacket(outapp);
}
}
z++;
}
safe_delete(outapp);
// Need to send this only once when a group is formed with a bot so the client knows it is also the group leader
if(group->GroupCount() == 2) {
Mob *TempLeader = group->GetLeader();
group->SendUpdate(groupActUpdate, TempLeader);
}
Result = true;
}
return Result;
}
Before I do this however, I need to find a way to remove ownership checks. It will error out if I try to just put the bot in anyone's group. Im trying to find it but I'm not having the best of luck.