I fixed a few exploits on mine;
for players who make armies of Bots and invite them as they fight and loose bots;
in command.cpp around line 8161;
replace
Code:
if(!strcasecmp(sep->arg[1], "group") && !strcasecmp(sep->arg[2], "add"))
{
if((c->GetTarget() == NULL) || (c->GetTarget() == c) || !c->GetTarget()->IsBot())
{
c->Message(15, "You must target a bot!");
return;
}
With this;
Code:
if(!strcasecmp(sep->arg[1], "group") && !strcasecmp(sep->arg[2], "add"))
{
if((c->GetTarget() == NULL) || (c->GetTarget() == c) || !c->GetTarget()->IsBot() || (c->IsEngaged())) //Angelox
{
c->Message(15, "You must target a bot and can't be engaged!");
return;
}
for players who kill players or any mob with the '#bot raid group create';
in command.cpp around line 8645;
replace
Code:
c->Message(15, "You must have created your raid and your group must be full before doing that!");
Mob* kmob = c->GetTarget();
if(kmob != NULL) {
kmob->Kill();
}
With
Code:
c->Message(15, "You must have created your raid and your group must be full before doing that!");
Mob* kmob = c->GetTarget();
if(kmob != NULL) {
kmob->GetTarget(); //Problem? kmob->Kill() was here b4 Angelox
}
And finally, Since th '#Bot update as it really doesn't work right (at least for me and what I got it doesn't), and is an exploit for no down time (this full heals the bot), I just quoted it out (I'm content to updates when zoning/re-logging the bot);
command.cpp, line 7202 replace;
Code:
c->Message(15, "#bot update [target] - you must type that command once you gain a level.");
with
Code:
c->Message(15, "#bot update You must zone or re-log to see updated Bot"); //Angelox: removed for exploit (doesn't work right anyways
and quote out lines 8462 - 8486 (more or less)
Code:
/* if(!strcasecmp(sep->arg[1], "update")) {
// // Congdar: add IsEngaged check for exploit to keep bots alive by repeatedly using #bot update.
// // Angelox: Disabled it totally as it is an exploit for no down time
if(c->GetTarget() != NULL)
{
if(c->GetTarget()->IsBot() && (c->GetTarget()->BotOwner == c->CastToMob()) && !c->GetTarget()->IsEngaged()) {
Mob *bot = c->GetTarget();
bot->SetLevel(c->GetLevel());
bot->CalcBotStats();
}
else {
if(c->GetTarget()->IsEngaged()) {
c->Message(15, "You cannot update while engaged.");
}
else {
c->Message(15, "You must target a bot first");
}
}
}
else {
c->Message(15, "You must target a bot first");
}
return;
}
*/
This fixes are tested and running on a few mini-login servers, mad by request of the owners.