mirror of
https://github.com/mod-playerbots/mod-playerbots
synced 2025-11-29 15:58:20 +08:00
miscs: engine
This commit is contained in:
@@ -87,7 +87,7 @@ AiPlayerbot.RandomBotShowCloak = 1
|
|||||||
AiPlayerbot.DisableRandomLevels = 0
|
AiPlayerbot.DisableRandomLevels = 0
|
||||||
|
|
||||||
# Set randombots starting level here if "AiPlayerbot.DisableRandomLevels" enabled
|
# Set randombots starting level here if "AiPlayerbot.DisableRandomLevels" enabled
|
||||||
AiPlayerbot.RandombotStartingLevel = 1
|
AiPlayerbot.RandombotStartingLevel = 5
|
||||||
|
|
||||||
# Set kill XP rate for bots (default: 1)
|
# Set kill XP rate for bots (default: 1)
|
||||||
# Server XP Rate * AiPlayerbot.KillXPRate
|
# Server XP Rate * AiPlayerbot.KillXPRate
|
||||||
|
|||||||
@@ -305,8 +305,10 @@ void PlayerbotFactory::Randomize(bool incremental)
|
|||||||
pmo->finish();
|
pmo->finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
bot->RemovePet(nullptr, PET_SAVE_AS_CURRENT, true);
|
if (!incremental) {
|
||||||
bot->RemovePet(nullptr, PET_SAVE_NOT_IN_SLOT, true);
|
bot->RemovePet(nullptr, PET_SAVE_AS_CURRENT, true);
|
||||||
|
bot->RemovePet(nullptr, PET_SAVE_NOT_IN_SLOT, true);
|
||||||
|
}
|
||||||
if (bot->getLevel() >= 10)
|
if (bot->getLevel() >= 10)
|
||||||
{
|
{
|
||||||
pmo = sPerformanceMonitor->start(PERF_MON_RNDBOT, "PlayerbotFactory_Pet");
|
pmo = sPerformanceMonitor->start(PERF_MON_RNDBOT, "PlayerbotFactory_Pet");
|
||||||
@@ -1147,6 +1149,7 @@ void PlayerbotFactory::InitEquipmentNew(bool incremental)
|
|||||||
|
|
||||||
void PlayerbotFactory::InitEquipment(bool incremental)
|
void PlayerbotFactory::InitEquipment(bool incremental)
|
||||||
{
|
{
|
||||||
|
// todo(yunfan): to be refactored, too much time overhead
|
||||||
DestroyItemsVisitor visitor(bot);
|
DestroyItemsVisitor visitor(bot);
|
||||||
IterateItems(&visitor, ITERATE_ALL_ITEMS);
|
IterateItems(&visitor, ITERATE_ALL_ITEMS);
|
||||||
|
|
||||||
@@ -1215,13 +1218,11 @@ void PlayerbotFactory::InitEquipment(bool incremental)
|
|||||||
std::vector<uint32>& ids = items[slot];
|
std::vector<uint32>& ids = items[slot];
|
||||||
if (ids.empty())
|
if (ids.empty())
|
||||||
{
|
{
|
||||||
sLog->outMessage("playerbot", LOG_LEVEL_DEBUG, "%s: no items to equip for slot %d", bot->GetName().c_str(), slot);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Item* oldItem = bot->GetItemByPos(INVENTORY_SLOT_BAG_0, slot);
|
Item* oldItem = bot->GetItemByPos(INVENTORY_SLOT_BAG_0, slot);
|
||||||
|
|
||||||
if (incremental && !IsDesiredReplacement(oldItem)) {
|
if (incremental && !IsDesiredReplacement(oldItem)) {
|
||||||
sLog->outMessage("playerbot", LOG_LEVEL_DEBUG, "%s: doesn't desire to replace current slot %d", bot->GetName().c_str(), slot);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1243,7 +1244,6 @@ void PlayerbotFactory::InitEquipment(bool incremental)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (bestItemForSlot == 0) {
|
if (bestItemForSlot == 0) {
|
||||||
// sLog->outMessage("playerbot", LOG_LEVEL_INFO, "%s: equip failed for slot %d(bestItemForSlot == 0))", bot->GetName().c_str(), slot);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (oldItem)
|
if (oldItem)
|
||||||
@@ -1253,7 +1253,6 @@ void PlayerbotFactory::InitEquipment(bool incremental)
|
|||||||
}
|
}
|
||||||
uint16 dest;
|
uint16 dest;
|
||||||
if (!CanEquipUnseenItem(slot, dest, bestItemForSlot)) {
|
if (!CanEquipUnseenItem(slot, dest, bestItemForSlot)) {
|
||||||
sLog->outMessage("playerbot", LOG_LEVEL_DEBUG, "%s: equip failed for slot %d", bot->GetName().c_str(), slot);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Item* newItem = bot->EquipNewItem(dest, bestItemForSlot, true);
|
Item* newItem = bot->EquipNewItem(dest, bestItemForSlot, true);
|
||||||
|
|||||||
@@ -1275,7 +1275,10 @@ void RandomPlayerbotMgr::IncreaseLevel(Player* bot)
|
|||||||
|
|
||||||
PerformanceMonitorOperation* pmo = sPerformanceMonitor->start(PERF_MON_RNDBOT, "IncreaseLevel");
|
PerformanceMonitorOperation* pmo = sPerformanceMonitor->start(PERF_MON_RNDBOT, "IncreaseLevel");
|
||||||
uint32 lastLevel = GetValue(bot, "level");
|
uint32 lastLevel = GetValue(bot, "level");
|
||||||
uint32 level = bot->getLevel();
|
uint8 level = bot->getLevel() + 1;
|
||||||
|
if (level > maxLevel) {
|
||||||
|
level = maxLevel;
|
||||||
|
}
|
||||||
if (lastLevel != level)
|
if (lastLevel != level)
|
||||||
{
|
{
|
||||||
PlayerbotFactory factory(bot, level);
|
PlayerbotFactory factory(bot, level);
|
||||||
|
|||||||
@@ -261,8 +261,8 @@ bool Engine::DoNextAction(Unit* unit, uint32 depth, bool minimal)
|
|||||||
lastRelevance = 0.0f;
|
lastRelevance = 0.0f;
|
||||||
PushDefaultActions();
|
PushDefaultActions();
|
||||||
|
|
||||||
if (queue.Peek() && depth < 1 && !minimal)
|
// if (queue.Peek() && depth < 1 && !minimal)
|
||||||
return DoNextAction(unit, depth + 1, minimal);
|
// return DoNextAction(unit, depth + 1, minimal);
|
||||||
}
|
}
|
||||||
|
|
||||||
// MEMORY FIX TEST
|
// MEMORY FIX TEST
|
||||||
|
|||||||
@@ -26,21 +26,53 @@ bool LootRollAction::Execute(Event event)
|
|||||||
p >> rollType; //need,greed or pass on roll
|
p >> rollType; //need,greed or pass on roll
|
||||||
|
|
||||||
RollVote vote = PASS;
|
RollVote vote = PASS;
|
||||||
if (ItemTemplate const* proto = sObjectMgr->GetItemTemplate(guid.GetEntry()))
|
|
||||||
{
|
// std::vector<Roll*> rolls = group->GetRolls();
|
||||||
switch (proto->Class)
|
// bot->Say("guid:" + std::to_string(guid.GetCounter()) +
|
||||||
{
|
// "item entry:" + std::to_string(guid.GetEntry()), LANG_UNIVERSAL);
|
||||||
case ITEM_CLASS_WEAPON:
|
// for (std::vector<Roll*>::iterator i = rolls.begin(); i != rolls.end(); ++i)
|
||||||
case ITEM_CLASS_ARMOR:
|
// {
|
||||||
if (!QueryItemUsage(proto).empty())
|
// if ((*i)->isValid() && (*i)->itemGUID == guid && (*i)->itemSlot == slot)
|
||||||
vote = NEED;
|
// {
|
||||||
break;
|
// uint32 itemId = (*i)->itemid;
|
||||||
default:
|
// bot->Say("item entry2:" + std::to_string(itemId), LANG_UNIVERSAL);
|
||||||
if (StoreLootAction::IsLootAllowed(guid.GetEntry(), botAI))
|
// ItemTemplate const *proto = sObjectMgr->GetItemTemplate(itemId);
|
||||||
vote = NEED;
|
// if (!proto)
|
||||||
break;
|
// continue;
|
||||||
}
|
|
||||||
}
|
// switch (proto->Class)
|
||||||
|
// {
|
||||||
|
// case ITEM_CLASS_WEAPON:
|
||||||
|
// case ITEM_CLASS_ARMOR:
|
||||||
|
// if (!QueryItemUsage(proto).empty())
|
||||||
|
// vote = NEED;
|
||||||
|
// else if (bot->HasSkill(SKILL_ENCHANTING))
|
||||||
|
// vote = DISENCHANT;
|
||||||
|
// break;
|
||||||
|
// default:
|
||||||
|
// if (StoreLootAction::IsLootAllowed(itemId, botAI))
|
||||||
|
// vote = NEED;
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (ItemTemplate const* proto = sObjectMgr->GetItemTemplate(guid.GetEntry()))
|
||||||
|
// {
|
||||||
|
// switch (proto->Class)
|
||||||
|
// {
|
||||||
|
// case ITEM_CLASS_WEAPON:
|
||||||
|
// case ITEM_CLASS_ARMOR:
|
||||||
|
// if (!QueryItemUsage(proto).empty())
|
||||||
|
// vote = NEED;
|
||||||
|
// break;
|
||||||
|
// default:
|
||||||
|
// if (StoreLootAction::IsLootAllowed(guid.GetEntry(), botAI))
|
||||||
|
// vote = NEED;
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
switch (group->GetLootMethod())
|
switch (group->GetLootMethod())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -135,11 +135,10 @@ bool MovementAction::MoveTo(uint32 mapId, float x, float y, float z, bool idle,
|
|||||||
if (!IsMovingAllowed(mapId, x, y, z)) {
|
if (!IsMovingAllowed(mapId, x, y, z)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// if (bot->HasUnitMovementFlag(MOVEMENTFLAG_FALLING | MOVEMENTFLAG_FALLING_FAR)) {
|
// if (bot->m_movementInfo.HasMovementFlag(MOVEMENTFLAG_FALLING | MOVEMENTFLAG_FALLING_SLOW | MOVEMENTFLAG_FALLING_FAR)) {
|
||||||
// bot->Yell("I'm falling!", LANG_UNIVERSAL);
|
// bot->Say("I'm falling!, flag:" + std::to_string(bot->m_movementInfo.GetMovementFlags()), LANG_UNIVERSAL);
|
||||||
// return false;
|
// return false;
|
||||||
// }
|
// }
|
||||||
// bot->UpdateGroundPositionZ(x, y, z);
|
|
||||||
z += 2.0f;
|
z += 2.0f;
|
||||||
bot->UpdateAllowedPositionZ(x, y, z);
|
bot->UpdateAllowedPositionZ(x, y, z);
|
||||||
// z += 0.5f;
|
// z += 0.5f;
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ WorldLocation ArrowFormation::GetLocationInternal()
|
|||||||
|
|
||||||
float x = master->GetPositionX() - masterUnit->GetX() + botUnit->GetX();
|
float x = master->GetPositionX() - masterUnit->GetX() + botUnit->GetX();
|
||||||
float y = master->GetPositionY() - masterUnit->GetY() + botUnit->GetY();
|
float y = master->GetPositionY() - masterUnit->GetY() + botUnit->GetY();
|
||||||
float z = master->GetPositionZ();
|
float z = master->GetPositionZ() + 5.0f;
|
||||||
|
|
||||||
float ground = master->GetMap()->GetHeight(x, y, z + 0.5f);
|
float ground = master->GetMap()->GetHeight(x, y, z + 0.5f);
|
||||||
if (ground <= INVALID_HEIGHT)
|
if (ground <= INVALID_HEIGHT)
|
||||||
|
|||||||
Reference in New Issue
Block a user