Jump to content

kyle1

Members
  • Posts

    72
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by kyle1

  1. Mages were dumb before but this looks like a regression. Pity I can't check it now cos my system is going through upgrade. UPD: Found the bug. Fix is on its way.
  2. malloc84, have you ever heard that documented bugs are features? Playerbot AI uses 2 second ticks to update itself when bot is out of combat, so you should not be amazed when your bots look like idiots on a walk. Regarding duels, there is virtually no AI to handle this yet. Warlock bots, for example, will cast Shadow Bolt only in this case. Forget about PvP or learn about Mangos and improve it. Personally I think that PvP is out of scope of Playerbot. And please be polite to community members. A little kindness goes a long way. Cheers.
  3. When you enter a dungeon with bots following you, make sure you are a group leader. If there are several real players with bots each, every of you should become group leader, enter the dungeon and push leadership to next player with bots outside.
  4. Blueboy, you will need to patch mangos core to make vellums work. Lynx3d created a patch long ago to support vellums, now he's in core dev team, but vellums are still not here. You can pull his branch 'vellums' from github. And answering your question, i'm on Ubuntu 9.10 right now.
  5. Hi. Latest git 1.7.1.1 does the same for me. It is weird why are you not getting any errors. Look at the patch hunk that fails to apply: diff --git a/src/mangosd/Makefile.am b/src/mangosd/Makefile.am index fe1ace1..40b6fdd 100644 --- a/src/mangosd/Makefile.am +++ b/src/mangosd/Makefile.am @@ -40,7 +40,7 @@ mangos_worldd_SOURCES = \\ ## Link world daemon against the shared library mangos_worldd_LDADD = \\ - ../bindings/universal/libmangosscript.la \\ + ../bindings/ScriptDev2/libmangosscript.la \\ ../game/libmangosgame.a \\ ../shared/Database/libmangosdatabase.a \\ ../shared/Config/libmangosconfig.a \\ and here is a fragment of Makefile.am: ## Link world daemon against the shared library mangos_worldd_LDADD = \\ ../bindings/universal/libmangosscript.la \\ ../game/libmangosgame.a \\ ../game/playerbot/libmangosbot.a \\ ../shared/Database/libmangosdatabase.a \\ ../shared/Config/libmangosconfig.a \\ Patch doesn't expect "../game/playerbot/libmangosbot.a \\" string here. We can avoid this conflict just by moving playerbot string a bit lower.
  6. Here is what I get when I try to apply SD2 patch: Checking patch configure.ac... Checking patch src/bindings/Makefile.am... Checking patch src/mangosd/Makefile.am... error: while searching for: ## Link world daemon against the shared library mangos_worldd_LDADD = \\ ../bindings/universal/libmangosscript.la \\ ../game/libmangosgame.a \\ ../shared/Database/libmangosdatabase.a \\ ../shared/Config/libmangosconfig.a \\ error: patch failed: src/mangosd/Makefile.am:40 error: src/mangosd/Makefile.am: patch does not apply If you look at src/mangosd/Makefile.am and patch, you'll see that this error should happen for you as well. I'm using git 1.6.3.3 under Linux (patching with git apply). Anyway the fix is straight and easy.
  7. Hi. I've found a small bug in portal repo (hasn't checked blueboy one). SD2 patch cannot be applied because of PlayerBot patch. Here is the fix: diff --git a/src/mangosd/Makefile.am b/src/mangosd/Makefile.am index 833d991..b776b3d 100644 --- a/src/mangosd/Makefile.am +++ b/src/mangosd/Makefile.am @@ -42,9 +42,9 @@ mangos_worldd_SOURCES = \\ mangos_worldd_LDADD = \\ ../bindings/universal/libmangosscript.la \\ ../game/libmangosgame.a \\ - ../game/playerbot/libmangosbot.a \\ ../shared/Database/libmangosdatabase.a \\ ../shared/Config/libmangosconfig.a \\ + ../game/playerbot/libmangosbot.a \\ ../shared/Auth/libmangosauth.a \\ ../shared/libmangosshared.a \\ ../shared/vmap/libmangosvmaps.a \\ Tested on latest SD2, patch name is MaNGOS-9519-ScriptDev2.patch. Check it please.
  8. Mangos core received updated VMAPS engine today. Also there were an update to support client version 3.3.5 recently. New VMAPS compile ~10 minutes on my PC, old ones did it in ~10 hours So it's fast!!!
  9. Hi, blueboy. I like the idea of extraction of spellid from links cos people are lazy to type usually. But toggling autocast on cast command is not very good. Try to toggle Consume Shadows of warlock's voidwalker, and it will burn all its mana in vain. I suggest to introduce a new command ( (t)oggle for example ) to explicitly toggle autocast for pet spells, and keep petcast command for casting when its needed.
  10. You are right, blueboy, pet spells are not so simple as player ones. Besides autocast flag, some spells can be triggered on/off, like paladin auras, Blood Pact for example. AI will need extra commands to set autocast flag and purge aura spells for pets. Update: Here is a quick fix for your suggestion, red means autocast is off, green - on. else if (text == "pet spells") { Pet *pet = m_bot->GetPet(); if (!pet) { SendWhisper("I have no pet.", fromPlayer); return; } int loc = GetMaster()->GetSession()->GetSessionDbcLocale(); std::ostringstream posOut; std::ostringstream negOut; const std::string ignoreList = ","; std::string alreadySeenList = ","; for (PetSpellMap::iterator itr = pet->m_spells.begin(); itr != pet->m_spells.end(); ++itr) { const uint32 spellId = itr->first; if (itr->second.state == PETSPELL_REMOVED || itr->second.active == ACT_PASSIVE || IsPassiveSpell(spellId)) continue; const SpellEntry* const pSpellInfo = sSpellStore.LookupEntry(spellId); if (!pSpellInfo) continue; std::string comp = ","; comp.append(pSpellInfo->SpellName[loc]); comp.append(","); if (!(ignoreList.find(comp) == std::string::npos && alreadySeenList.find(comp) == std::string::npos)) continue; alreadySeenList += pSpellInfo->SpellName[loc]; alreadySeenList += ","; std::string color; switch (itr->second.active) { case ACT_DISABLED: color = "cffff0000"; break; case ACT_ENABLED: color = "cff00ff00"; break; default: color = "cffffffff"; } if (IsPositiveSpell(spellId)) posOut << " |" << color << "|Hspell:" << spellId << "|h[" << pSpellInfo->SpellName[loc] << "]|h|r"; else negOut << " |" << color << "|Hspell:" << spellId << "|h[" << pSpellInfo->SpellName[loc] << "]|h|r"; } ChatHandler ch(&fromPlayer); SendWhisper("Here's my pet's non-attack spells:", fromPlayer); ch.SendSysMessage(posOut.str().c_str()); SendWhisper("and here's my pet's attack spells:", fromPlayer); ch.SendSysMessage(negOut.str().c_str()); }
  11. Hi, blueboy. Thanks for finding this bug and your research. It was a bad mistake. I'm testing pet spells now and think that code needs more love. I'll post back then there will be any news.
  12. Looking into warlock AI I found that PlayerBot has no ability to cast pet spells. AI expects pet spells to be found in bot's spell list and casted by bot as well. Maybe it was ok before, but it doesn't work now. I created a patch which adds: 1) 'pet spells' command, similar to 'spells'; 2) 'petcast' / 'pc' command, similar to 'cast'/'c' Patch itself: http://pastebin.org/378580 Please test it and leave your comments.
  13. Here is a full patch fixing Soul Link issue: diff --git a/src/game/PlayerbotAI.cpp b/src/game/PlayerbotAI.cpp index 50c7d8b..4602570 100644 --- a/src/game/PlayerbotAI.cpp +++ b/src/game/PlayerbotAI.cpp @@ -820,7 +820,7 @@ uint8 PlayerbotAI::GetBaseManaPercent(const Unit& target) const if (target.GetPower(POWER_MANA) >= target.GetCreateMana()) return (100); else - return (static_cast<float> (target.GetPower(POWER_MANA)) / target.GetMaxPower(POWER_MANA)) * 100; + return (static_cast<float> (target.GetPower(POWER_MANA)) / target.GetCreateMana()) * 100; } uint8 PlayerbotAI::GetBaseManaPercent() const diff --git a/src/game/PlayerbotWarlockAI.cpp b/src/game/PlayerbotWarlockAI.cpp index 31d53e7..d230735 100644 --- a/src/game/PlayerbotWarlockAI.cpp +++ b/src/game/PlayerbotWarlockAI.cpp @@ -44,6 +44,7 @@ PlayerbotWarlockAI::PlayerbotWarlockAI(Player* const master, Player* const bot, SHADOW_WARD = ai->getSpellId("shadow ward"); SOULSHATTER = ai->getSpellId("soulshatter"); SOUL_LINK = ai->getSpellId("soul link"); + SOUL_LINK_AURA = 25228; // dummy aura applied, after spell SOUL_LINK HEALTH_FUNNEL = ai->getSpellId("health funnel"); DETECT_INVISIBILITY = ai->getSpellId("detect invisibility"); // demon summon @@ -444,7 +445,7 @@ void PlayerbotWarlockAI::DoNonCombatActions() // check for buffs with demon if(( pet ) - && ( SOUL_LINK>0 && !m_bot->HasAura(SOUL_LINK, EFFECT_INDEX_0) && ai->GetManaPercent() >= 16 && ai->CastSpell(SOUL_LINK,*m_bot) )) + && ( SOUL_LINK>0 && !m_bot->HasAura(SOUL_LINK_AURA, EFFECT_INDEX_0) && ai->GetBaseManaPercent() >= 16 && ai->CastSpell(SOUL_LINK,*m_bot) )) { //ai->TellMaster( "casting soul link." ); return; diff --git a/src/game/PlayerbotWarlockAI.h b/src/game/PlayerbotWarlockAI.h index 8058c4b..999224c 100644 --- a/src/game/PlayerbotWarlockAI.h +++ b/src/game/PlayerbotWarlockAI.h @@ -41,7 +41,7 @@ class MANGOS_DLL_SPEC PlayerbotWarlockAI : PlayerbotClassAI uint32 SHADOW_BOLT, IMMOLATE, INCINERATE, SEARING_PAIN, CONFLAGRATE, SOUL_FIRE, SHADOWFURY, CHAOS_BOLT, SHADOWFLAME, HELLFIRE, RAIN_OF_FIRE, SHADOWBURN; // DEMONOLOGY - uint32 DEMON_SKIN, DEMON_ARMOR, SHADOW_WARD, FEL_ARMOR, SOULSHATTER, SOUL_LINK, HEALTH_FUNNEL, DETECT_INVISIBILITY; + uint32 DEMON_SKIN, DEMON_ARMOR, SHADOW_WARD, FEL_ARMOR, SOULSHATTER, SOUL_LINK, SOUL_LINK_AURA, HEALTH_FUNNEL, DETECT_INVISIBILITY; // DEMON SUMMON uint32 SUMMON_IMP, SUMMON_VOIDWALKER, SUMMON_SUCCUBUS, SUMMON_FELHUNTER, SUMMON_FELGUARD; Burned all warlock's mana, loged as another character, summoned warlock, warlock bot casted Soul Link right after he regenerated spell cost. All seems fine. This is more proof-of-concept than a real solution, because AI needs new functionality to calculate spell cost dynamically. It shouldn't be that hard.
  14. Looking into Soul Link issue further I found another bug. Soul Link indeed should check base mana percent, and PlayerBotAI has a method for it: uint8 PlayerbotAI::GetBaseManaPercent(const Unit& target) const { if (target.GetPower(POWER_MANA) >= target.GetCreateMana()) return (100); else return (static_cast<float> (target.GetPower(POWER_MANA)) / target.GetMaxPower(POWER_MANA)) * 100; } It looks like it was blindly copypasted from GetManaPercent(). It has to be something like this: uint8 PlayerbotAI::GetBaseManaPercent(const Unit& target) const { if (target.GetPower(POWER_MANA) >= target.GetCreateMana()) return (100); else return (static_cast<float> (target.GetPower(POWER_MANA)) / target.GetCreateMana()) * 100; } ... and WarlockAI Soul Link string should be: && ( SOUL_LINK>0 && !m_bot->HasAura(SOUL_LINK_AURA, EFFECT_INDEX_0) && ai->GetBaseManaPercent() >= 16 && ai->CastSpell(SOUL_LINK,*m_bot) ))
  15. I believe you have not a clear view on how Soul Link works. There is a talent in demonology tree called 'Soul Link' that provides the spell of the same name with id 19028. Btw it costs 16% of base mana, does ai->GetManaPercent() return base or final percents?. After warlock casts this spell he/she gets dummy aura (25228). So we need both spell ids here: one for cast, another for check. To avoid hardcoding spell ids, we can add another variable in the head and use it later: SOUL_LINK_DUMMY_AURA = 25228; && ( SOUL_LINK>0 && !m_bot->HasAura(SOUL_LINK_DUMMY_AURA, EFFECT_INDEX_0) && ai->GetManaPercent() >= 16 && ai->CastSpell(SOUL_LINK,*m_bot) ))
  16. There is a bug in Warlock AI. Warlock bot keeps buffing himself Soul Link until he/she runs out of mana limit. The cause is simple, AI checks for wrong aura id before spell cast. To fix it, change: // check for buffs with demon if(( pet ) && ( SOUL_LINK>0 && !m_bot->HasAura(SOUL_LINK, EFFECT_INDEX_0) && ai->GetManaPercent() >= 16 && ai->CastSpell(SOUL_LINK,*m_bot) )) { //ai->TellMaster( "casting soul link." ); return; } to // check for buffs with demon if(( pet ) && ( SOUL_LINK>0 && !m_bot->HasAura(25228, EFFECT_INDEX_0) && ai->GetManaPercent() >= 16 && ai->CastSpell(SOUL_LINK,*m_bot) )) { //ai->TellMaster( "casting soul link." ); return; } in PlayerbotWarlockAI.cpp Sorry for no diff provided.
  17. This patch had a good testing period without any complaints. Lynx3d, you are a dev now, push it please.
  18. I see this bug rarely on my own server using old vmaps engine. Have to relogin to enter.
  19. Updated Lynx3D's patch to work with 9390 http://paste2.org/p/670036
  20. I'm not a c++ pro and just learning Mangos architecture, so I ask you to point out mistakes if you find any. Aura constructor probably is not the best place for this, but here is the code: diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index d196874..e9123ad 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -432,6 +432,32 @@ m_isRemovedOnShapeLost(true), m_in_use(0), m_deleted(false) } } + // Handling spell duration modifiers (glyphs for example) + switch(m_spellProto->SpellFamilyName) + { + case SPELLFAMILY_DRUID : + // Glyph of thorns + switch (m_spellProto->Id) + { + case 467 : + case 782 : + case 1075 : + case 8914 : + case 9756 : + case 9910 : + case 26992 : + case 53307 : + if ((m_caster_guid == m_target->GetGUID()) && (m_target->HasAura(57862))) + m_maxduration += 50*MINUTE*IN_MILISECONDS; + break; + default : + break; + } + break; + default : + break; + } + if(m_maxduration == -1 || m_isPassive && m_spellProto->DurationIndex == 0) m_permanent = true; UPDATE: Indentation was corrected.
  21. I use Lynx3D's patch for two weeks and it works fine. Was there any reason to commit 9280 without possibility to create enchant scrolls ?
  22. I just have compiled ad on Linux x64 with gcc 4.4.1. I had to add "#include <stdio.h>" into loadlib.cpp and mpq_libmpq.cpp to be able to do it. Probably this should be fixed in mangos sources as well for other users. Linx3D, if you manage to adapt vmap extractor for gcc, please share you work.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use