/*
* Copyright (C) 2008-2012 TrinityCore
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see .
*/
/* ScriptData
Name: ah_bot_commandscript
%Complete: 100
Comment: All ah_bot related commands
Category: commandscripts
EndScriptData */
#include "ScriptMgr.h"
#include "Chat.h"
#include "AuctionHouseBot.h"
#include "Config.h"
class ah_bot_commandscript : public CommandScript
{
public:
ah_bot_commandscript() : CommandScript("ah_bot_commandscript") { }
std::vector GetCommands() const override
{
static std::vector commandTable =
{
{ "ahbotoptions", SEC_GAMEMASTER, true, &HandleAHBotOptionsCommand, "" },
};
return commandTable;
}
static bool HandleAHBotOptionsCommand(ChatHandler* handler, const char*args)
{
uint32 ahMapID = 0;
char* opt = strtok((char*)args, " ");
char* ahMapIdStr = strtok(NULL, " ");
if (ahMapIdStr)
{
ahMapID = uint32(strtoul(ahMapIdStr, NULL, 0));
switch (ahMapID)
{
case 2:
case 6:
case 7:
break;
default:
opt = NULL;
break;
}
}
if (!opt)
{
handler->PSendSysMessage("Syntax is: ahbotoptions $option $ahMapID (2, 6 or 7) $parameter");
handler->PSendSysMessage("Try ahbotoptions help to see a list of options.");
return false;
}
int l = strlen(opt);
if (strncmp(opt, "help", l) == 0)
{
handler->PSendSysMessage("AHBot commands:");
handler->PSendSysMessage("ahexpire");
handler->PSendSysMessage("minitems");
handler->PSendSysMessage("maxitems");
//handler->PSendSysMessage("");
//handler->PSendSysMessage("");
handler->PSendSysMessage("percentages");
handler->PSendSysMessage("minprice");
handler->PSendSysMessage("maxprice");
handler->PSendSysMessage("minbidprice");
handler->PSendSysMessage("maxbidprice");
handler->PSendSysMessage("maxstack");
handler->PSendSysMessage("buyerprice");
handler->PSendSysMessage("bidinterval");
handler->PSendSysMessage("bidsperinterval");
return true;
}
else if (strncmp(opt, "ahexpire", l) == 0)
{
if (!ahMapIdStr)
{
handler->PSendSysMessage("Syntax is: ahbotoptions ahexpire $ahMapID (2, 6 or 7)");
return false;
}
auctionbot->Commands(0, ahMapID, 0, NULL);
}
else if (strncmp(opt, "minitems", l) == 0)
{
char* param1 = strtok(NULL, " ");
if (!ahMapIdStr || !param1)
{
handler->PSendSysMessage("Syntax is: ahbotoptions minitems $ahMapID (2, 6 or 7) $minItems");
return false;
}
auctionbot->Commands(1, ahMapID, 0, param1);
}
else if (strncmp(opt, "maxitems", l) == 0)
{
char* param1 = strtok(NULL, " ");
if (!ahMapIdStr || !param1)
{
handler->PSendSysMessage("Syntax is: ahbotoptions maxitems $ahMapID (2, 6 or 7) $maxItems");
return false;
}
auctionbot->Commands(2, ahMapID, 0, param1);
}
else if (strncmp(opt, "mintime", l) == 0)
{
handler->PSendSysMessage("ahbotoptions mintime has been deprecated");
return false;
/*
char* param1 = strtok(NULL, " ");
if (!ahMapIdStr || !param1)
{
PSendSysMessage("Syntax is: ahbotoptions mintime $ahMapID (2, 6 or 7) $mintime");
return false;
}
auctionbot.Commands(3, ahMapID, 0, param1);
*/
}
else if (strncmp(opt, "maxtime", l) == 0)
{
handler->PSendSysMessage("ahbotoptions maxtime has been deprecated");
return false;
/*
char* param1 = strtok(NULL, " ");
if (!ahMapIdStr || !param1)
{
PSendSysMessage("Syntax is: ahbotoptions maxtime $ahMapID (2, 6 or 7) $maxtime");
return false;
}
auctionbot.Commands(4, ahMapID, 0, param1);
*/
}
else if (strncmp(opt, "percentages", l) == 0)
{
char* param1 = strtok(NULL, " ");
char* param2 = strtok(NULL, " ");
char* param3 = strtok(NULL, " ");
char* param4 = strtok(NULL, " ");
char* param5 = strtok(NULL, " ");
char* param6 = strtok(NULL, " ");
char* param7 = strtok(NULL, " ");
char* param8 = strtok(NULL, " ");
char* param9 = strtok(NULL, " ");
char* param10 = strtok(NULL, " ");
char* param11 = strtok(NULL, " ");
char* param12 = strtok(NULL, " ");
char* param13 = strtok(NULL, " ");
char* param14 = strtok(NULL, " ");
if (!ahMapIdStr || !param14)
{
handler->PSendSysMessage("Syntax is: ahbotoptions percentages $ahMapID (2, 6 or 7) $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14");
handler->PSendSysMessage("1 GreyTradeGoods 2 WhiteTradeGoods 3 GreenTradeGoods 4 BlueTradeGoods 5 PurpleTradeGoods");
handler->PSendSysMessage("6 OrangeTradeGoods 7 YellowTradeGoods 8 GreyItems 9 WhiteItems 10 GreenItems 11 BlueItems");
handler->PSendSysMessage("12 PurpleItems 13 OrangeItems 14 YellowItems");
handler->PSendSysMessage("The total must add up to 100%%");
return false;
}
uint32 greytg = uint32(strtoul(param1, NULL, 0));
uint32 whitetg = uint32(strtoul(param2, NULL, 0));
uint32 greentg = uint32(strtoul(param3, NULL, 0));
uint32 bluetg = uint32(strtoul(param4, NULL, 0));
uint32 purpletg = uint32(strtoul(param5, NULL, 0));
uint32 orangetg = uint32(strtoul(param6, NULL, 0));
uint32 yellowtg = uint32(strtoul(param7, NULL, 0));
uint32 greyi = uint32(strtoul(param8, NULL, 0));
uint32 whitei = uint32(strtoul(param9, NULL, 0));
uint32 greeni = uint32(strtoul(param10, NULL, 0));
uint32 bluei = uint32(strtoul(param11, NULL, 0));
uint32 purplei = uint32(strtoul(param12, NULL, 0));
uint32 orangei = uint32(strtoul(param13, NULL, 0));
uint32 yellowi = uint32(strtoul(param14, NULL, 0));
uint32 totalPercent = greytg + whitetg + greentg + bluetg + purpletg + orangetg + yellowtg + greyi + whitei + greeni + bluei + purplei + orangei + yellowi;
if (totalPercent == 0 || totalPercent != 100)
{
handler->PSendSysMessage("Syntax is: ahbotoptions percentages $ahMapID (2, 6 or 7) $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14");
handler->PSendSysMessage("1 GreyTradeGoods 2 WhiteTradeGoods 3 GreenTradeGoods 4 BlueTradeGoods 5 PurpleTradeGoods");
handler->PSendSysMessage("6 OrangeTradeGoods 7 YellowTradeGoods 8 GreyItems 9 WhiteItems 10 GreenItems 11 BlueItems");
handler->PSendSysMessage("12 PurpleItems 13 OrangeItems 14 YellowItems");
handler->PSendSysMessage("The total must add up to 100%%");
return false;
}
char param[100];
param[0] = '\0';
strcat(param, param1);
strcat(param, " ");
strcat(param, param2);
strcat(param, " ");
strcat(param, param3);
strcat(param, " ");
strcat(param, param4);
strcat(param, " ");
strcat(param, param5);
strcat(param, " ");
strcat(param, param6);
strcat(param, " ");
strcat(param, param7);
strcat(param, " ");
strcat(param, param8);
strcat(param, " ");
strcat(param, param9);
strcat(param, " ");
strcat(param, param10);
strcat(param, " ");
strcat(param, param11);
strcat(param, " ");
strcat(param, param12);
strcat(param, " ");
strcat(param, param13);
strcat(param, " ");
strcat(param, param14);
auctionbot->Commands(5, ahMapID, 0, param);
}
else if (strncmp(opt, "minprice", l) == 0)
{
char* param1 = strtok(NULL, " ");
char* param2 = strtok(NULL, " ");
if (!ahMapIdStr || !param1 || !param2)
{
handler->PSendSysMessage("Syntax is: ahbotoptions minprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $price");
return false;
}
if (strncmp(param1, "grey", l) == 0)
auctionbot->Commands(6, ahMapID, AHB_GREY, param2);
else if (strncmp(param1, "white", l) == 0)
auctionbot->Commands(6, ahMapID, AHB_WHITE, param2);
else if (strncmp(param1, "green", l) == 0)
auctionbot->Commands(6, ahMapID, AHB_GREEN, param2);
else if (strncmp(param1, "blue", l) == 0)
auctionbot->Commands(6, ahMapID, AHB_BLUE, param2);
else if (strncmp(param1, "purple", l) == 0)
auctionbot->Commands(6, ahMapID, AHB_PURPLE, param2);
else if (strncmp(param1, "orange", l) == 0)
auctionbot->Commands(6, ahMapID, AHB_ORANGE, param2);
else if (strncmp(param1, "yellow", l) == 0)
auctionbot->Commands(6, ahMapID, AHB_YELLOW, param2);
else
{
handler->PSendSysMessage("Syntax is: ahbotoptions minprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $price");
return false;
}
}
else if (strncmp(opt, "maxprice", l) == 0)
{
char* param1 = strtok(NULL, " ");
char* param2 = strtok(NULL, " ");
if (!ahMapIdStr || !param1 || !param2)
{
handler->PSendSysMessage("Syntax is: ahbotoptions maxprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $price");
return false;
}
if (strncmp(param1, "grey", l) == 0)
auctionbot->Commands(7, ahMapID, AHB_GREY, param2);
else if (strncmp(param1, "white", l) == 0)
auctionbot->Commands(7, ahMapID, AHB_WHITE, param2);
else if (strncmp(param1, "green", l) == 0)
auctionbot->Commands(7, ahMapID, AHB_GREEN, param2);
else if (strncmp(param1, "blue", l) == 0)
auctionbot->Commands(7, ahMapID, AHB_BLUE, param2);
else if (strncmp(param1, "purple", l) == 0)
auctionbot->Commands(7, ahMapID, AHB_PURPLE, param2);
else if (strncmp(param1, "orange",l) == 0)
auctionbot->Commands(7, ahMapID, AHB_ORANGE, param2);
else if (strncmp(param1, "yellow", l) == 0)
auctionbot->Commands(7, ahMapID, AHB_YELLOW, param2);
else
{
handler->PSendSysMessage("Syntax is: ahbotoptions maxprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $price");
return false;
}
}
else if (strncmp(opt, "minbidprice", l) == 0)
{
char* param1 = strtok(NULL, " ");
char* param2 = strtok(NULL, " ");
if (!ahMapIdStr || !param2 || !param2)
{
handler->PSendSysMessage("Syntax is: ahbotoptions minbidprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $price");
return false;
}
uint32 minBidPrice = uint32(strtoul(param2, NULL, 0));
if (minBidPrice < 1 || minBidPrice > 100)
{
handler->PSendSysMessage("The min bid price multiplier must be between 1 and 100");
return false;
}
if (strncmp(param1, "grey", l) == 0)
auctionbot->Commands(8, ahMapID, AHB_GREY, param2);
else if (strncmp(param1, "white", l) == 0)
auctionbot->Commands(8, ahMapID, AHB_WHITE, param2);
else if (strncmp(param1, "green", l) == 0)
auctionbot->Commands(8, ahMapID, AHB_GREEN, param2);
else if (strncmp(param1, "blue", l) == 0)
auctionbot->Commands(8, ahMapID, AHB_BLUE, param2);
else if (strncmp(param1, "purple", l) == 0)
auctionbot->Commands(8, ahMapID, AHB_PURPLE, param2);
else if (strncmp(param1, "orange", l) == 0)
auctionbot->Commands(8, ahMapID, AHB_ORANGE, param2);
else if (strncmp(param1, "yellow", l) == 0)
auctionbot->Commands(8, ahMapID, AHB_YELLOW, param2);
else
{
handler->PSendSysMessage("Syntax is: ahbotoptions minbidprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $price");
return false;
}
}
else if (strncmp(opt, "maxbidprice", l) == 0)
{
char* param1 = strtok(NULL, " ");
char* param2 = strtok(NULL, " ");
if (!ahMapIdStr || !param1 || !param2)
{
handler->PSendSysMessage("Syntax is: ahbotoptions maxbidprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $price");
return false;
}
uint32 maxBidPrice = uint32(strtoul(param2, NULL, 0));
if (maxBidPrice < 1 || maxBidPrice > 100)
{
handler->PSendSysMessage("The max bid price multiplier must be between 1 and 100");
return false;
}
if (strncmp(param1, "grey", l) == 0)
auctionbot->Commands(9, ahMapID, AHB_GREY, param2);
else if (strncmp(param1, "white", l) == 0)
auctionbot->Commands(9, ahMapID, AHB_WHITE, param2);
else if (strncmp(param1, "green", l) == 0)
auctionbot->Commands(9, ahMapID, AHB_GREEN, param2);
else if (strncmp(param1, "blue", l) == 0)
auctionbot->Commands(9, ahMapID, AHB_BLUE, param2);
else if (strncmp(param1, "purple", l) == 0)
auctionbot->Commands(9, ahMapID, AHB_PURPLE, param2);
else if (strncmp(param1, " orange", l) == 0)
auctionbot->Commands(9, ahMapID, AHB_ORANGE, param2);
else if (strncmp(param1, "yellow", l) == 0)
auctionbot->Commands(9, ahMapID, AHB_YELLOW, param2);
else
{
handler->PSendSysMessage("Syntax is: ahbotoptions max bidprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $price");
return false;
}
}
else if (strncmp(opt, "maxstack",l) == 0)
{
char* param1 = strtok(NULL, " ");
char* param2 = strtok(NULL, " ");
if (!ahMapIdStr || !param1 || !param2)
{
handler->PSendSysMessage("Syntax is: ahbotoptions maxstack $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $value");
return false;
}
// uint32 maxStack = uint32(strtoul(param2, NULL, 0));
// if (maxStack < 0)
// {
// handler->PSendSysMessage("maxstack can't be a negative number.");
// return false;
// }
if (strncmp(param1, "grey",l) == 0)
auctionbot->Commands(10, ahMapID, AHB_GREY, param2);
else if (strncmp(param1, "white", l) == 0)
auctionbot->Commands(10, ahMapID, AHB_WHITE, param2);
else if (strncmp(param1, "green", l) == 0)
auctionbot->Commands(10, ahMapID, AHB_GREEN, param2);
else if (strncmp(param1, "blue", l) == 0)
auctionbot->Commands(10, ahMapID, AHB_BLUE, param2);
else if (strncmp(param1, "purple", l) == 0)
auctionbot->Commands(10, ahMapID, AHB_PURPLE, param2);
else if (strncmp(param1, "orange", l) == 0)
auctionbot->Commands(10, ahMapID, AHB_ORANGE, param2);
else if (strncmp(param1, "yellow", l) == 0)
auctionbot->Commands(10, ahMapID, AHB_YELLOW, param2);
else
{
handler->PSendSysMessage("Syntax is: ahbotoptions maxstack $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $value");
return false;
}
}
else if (strncmp(opt, "buyerprice", l) == 0)
{
char* param1 = strtok(NULL, " ");
char* param2 = strtok(NULL, " ");
if (!ahMapIdStr || !param1 || !param2)
{
handler->PSendSysMessage("Syntax is: ahbotoptions buyerprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue or purple) $price");
return false;
}
if (strncmp(param1, "grey", l) == 0)
auctionbot->Commands(11, ahMapID, AHB_GREY, param2);
else if (strncmp(param1, "white", l) == 0)
auctionbot->Commands(11, ahMapID, AHB_WHITE, param2);
else if (strncmp(param1, "green", l) == 0)
auctionbot->Commands(11, ahMapID, AHB_GREEN, param2);
else if (strncmp(param1, "blue", l) == 0)
auctionbot->Commands(11, ahMapID, AHB_BLUE, param2);
else if (strncmp(param1, "purple", l) == 0)
auctionbot->Commands(11, ahMapID, AHB_PURPLE, param2);
else if (strncmp(param1, "orange", l) == 0)
auctionbot->Commands(11, ahMapID, AHB_ORANGE, param2);
else if (strncmp(param1, "yellow", l) == 0)
auctionbot->Commands(11, ahMapID, AHB_YELLOW, param2);
else
{
handler->PSendSysMessage("Syntax is: ahbotoptions buyerprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue or purple) $price");
return false;
}
}
else if (strncmp(opt, "bidinterval", l) == 0)
{
char* param1 = strtok(NULL, " ");
if (!ahMapIdStr || !param1)
{
handler->PSendSysMessage("Syntax is: ahbotoptions bidinterval $ahMapID (2, 6 or 7) $interval(in minutes)");
return false;
}
auctionbot->Commands(12, ahMapID, 0, param1);
}
else if (strncmp(opt, "bidsperinterval", l) == 0)
{
char* param1 = strtok(NULL, " ");
if (!ahMapIdStr || !param1)
{
handler->PSendSysMessage("Syntax is: ahbotoptions bidsperinterval $ahMapID (2, 6 or 7) $bids");
return false;
}
auctionbot->Commands(13, ahMapID, 0, param1);
}
else
{
handler->PSendSysMessage("Syntax is: ahbotoptions $option $ahMapID (2, 6 or 7) $parameter");
handler->PSendSysMessage("Try ahbotoptions help to see a list of options.");
return false;
}
return true;
}
};
void AddAHBotCommandScripts()
{
new ah_bot_commandscript();
}