Jump to content

blueboy

Members
  • Posts

    723
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by blueboy

  1. Hi, Yes I agree, it works fine with the blueboy repo and it's alot sleeker, great work. :cool: Less important; I couldn't get it to work with the 'Tasssador' repo, but I can still use the old script for that :rolleyes: Thanks for your contribution
  2. Yes, I was using the gethash.sh script to obtain the HASH from the commit History of two different repos. First the MaNGOS repo with version format [9XXX]. The http://github.com/Tasssadar/Valhalla-Project also uses square brackets to version the commits, in this format '[prXXX]'. So I needed a script that would filter out '[prXXX]' and search for a pattern, that contains two characters (i.e '[9'). If you can get your script to do this, that would be great. I will certainly give it go, thanks Cheers
  3. Hi, Yes it seems to work. I have refined both survey and find commands in a revised patch. The survey command now limits the number of link strings displayed. I found that in some places there were too many objects found, to display properly. I thought it would be a good idea to only display the first 12 found. You can obviously change this to whatever you want. I also found that the bot(s) will literally travel to the objects location. So if the object is a 'sign', eight foot off the ground, the bot will hover there. I have now adjusted find so the bot(s) height will always be at ground level, so the bot now stands below the 'sign' at the objects location. Revised survey/find patch diff --git a/src/game/PlayerbotAI.cpp b/src/game/PlayerbotAI.cpp index 12533fb..28d48c9 100644 --- a/src/game/PlayerbotAI.cpp +++ b/src/game/PlayerbotAI.cpp @@ -2229,6 +2229,75 @@ void PlayerbotAI::extractItemIds(const std::string& text, std::list<uint32>& ite } } +bool PlayerbotAI::extractGOinfo(const std::string& text, uint32 &guid, uint32 &entry, int &mapid, float &x, float &y, float &z) const +{ + + // Link format + // |cFFFFFF00|Hfound:" << guid << ':' << entry << ':' << x << ':' << y << ':' << z << ':' << mapid << ':' << "|h[" << gInfo->name << "]|h|r"; + // |cFFFFFF00|Hfound:5093:1731:-9295:-270:81.874:0:|h[Copper Vein]|h|r + + uint8 pos = 0; + + // extract GO guid + int i = text.find("Hfound:", pos); // base H = 11 + if (i == -1) // break if error + return false; + + pos = i + 7; //start of window in text 11 + 7 = 18 + int endPos = text.find(':', pos); // end of window in text 22 + if (endPos == -1) //break if error + return false; + std::string guidC = text.substr(pos, endPos - pos); // get string within window i.e guid 22 - 18 = 4 + guid = atol(guidC.c_str()); // convert ascii to long int + + // extract GO entry + pos = endPos + 1; + endPos = text.find(':', pos); // end of window in text + if (endPos == -1) //break if error + return false; + + std::string entryC = text.substr(pos, endPos - pos); // get string within window i.e entry + entry = atol(entryC.c_str()); // convert ascii to float + + // extract GO x + pos = endPos + 1; + endPos = text.find(':', pos); // end of window in text + if (endPos == -1) //break if error + return false; + + std::string xC = text.substr(pos, endPos - pos); // get string within window i.e x + x = atof(xC.c_str()); // convert ascii to float + + // extract GO y + pos = endPos + 1; + endPos = text.find(':', pos); // end of window in text + if (endPos == -1) //break if error + return false; + + std::string yC = text.substr(pos, endPos - pos); // get string within window i.e y + y = atof(yC.c_str()); // convert ascii to float + + // extract GO z + pos = endPos + 1; + endPos = text.find(':', pos); // end of window in text + if (endPos == -1) //break if error + return false; + + std::string zC = text.substr(pos, endPos - pos); // get string within window i.e z + z = atof(zC.c_str()); // convert ascii to float + + //extract GO mapid + pos = endPos + 1; + endPos = text.find(':', pos); // end of window in text + if (endPos == -1) //break if error + return false; + + std::string mapidC = text.substr(pos, endPos - pos); // get string within window i.e mapid + mapid = atoi(mapidC.c_str()); // convert ascii to int + pos = endPos; // end + return true; +} + // extracts currency in #g#s#c format uint32 PlayerbotAI::extractMoney(const std::string& text) const { @@ -2676,6 +2745,23 @@ void PlayerbotAI::HandleCommand(const std::string& text, Player& fromPlayer) EquipItem(**it); } + // find item in world + else if (text.size() > 2 && text.substr(0, 2) == "f " || text.size() > 5 && text.substr(0, 5) == "find ") + { + uint32 guid; + float x,y,z; + uint32 entry; + int mapid; + if(extractGOinfo(text, guid, entry, mapid, x, y, z)) + { // sLog.outDebug("find: guid : %u entry : %u x : (%f) y : (%f) z : (%f) mapid : %d",guid, entry, x, y, z, mapid); + m_bot->UpdateGroundPositionZ(x,y,z); + SetMovementOrder( MOVEMENT_STAY ); + m_bot->GetMotionMaster()->MovePoint( mapid, x, y, z ); + } + else + SendWhisper("I have no info on that object", fromPlayer); + } + else if (text == "quests") { bool hasIncompleteQuests = false; @@ -2803,7 +2889,45 @@ void PlayerbotAI::HandleCommand(const std::string& text, Player& fromPlayer) ch.SendSysMessage(out.str().c_str()); } + // Survey project: 09:50 09/03/10 + else if (text == "survey") + { + float distance = 100.0f; + uint32 count = 0; + std::ostringstream detectout; + + QueryResult *result = WorldDatabase.PQuery("SELECT guid, id, position_x, position_y, position_z, map, " + "(POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) AS order_ " + "FROM gameobject WHERE map='%u' AND (POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) <= '%f' ORDER BY order_", + m_bot->GetPositionX(), m_bot->GetPositionY(), m_bot->GetPositionZ(), + m_bot->GetMapId(), m_bot->GetPositionX(), m_bot->GetPositionY(), m_bot->GetPositionZ(), distance*distance); + if (result) + { + do + { + Field *fields = result->Fetch(); + uint32 guid = fields[0].GetUInt32(); + uint32 entry = fields[1].GetUInt32(); + float x = fields[2].GetFloat(); + float y = fields[3].GetFloat(); + float z = fields[4].GetFloat(); + int mapid = fields[5].GetUInt16(); + + GameObjectInfo const * gInfo = ObjectMgr::GetGameObjectInfo(entry); + + if(!gInfo) + continue; + + if(count < 12) // count, limits number of links + detectout << "|cFFFFFF00|Hfound:" << guid << ":" << entry << ":" << x << ":" << y << ":" << z << ":" << mapid << ":" << "|h[" << gInfo->name << "]|h|r"; + ++count; + } while (result->NextRow()); + + delete result; + } + SendWhisper(detectout.str().c_str(), fromPlayer); + } else { // if this looks like an item link, reward item it completed quest and talking to NPC diff --git a/src/game/PlayerbotAI.h b/src/game/PlayerbotAI.h index 377dfaa..02d829c 100644 --- a/src/game/PlayerbotAI.h +++ b/src/game/PlayerbotAI.h @@ -126,6 +126,9 @@ class MANGOS_DLL_SPEC PlayerbotAI // extracts item ids from links void extractItemIds(const std::string& text, std::list<uint32>& itemIds) const; + // extracts gameobject info from link + bool extractGOinfo(const std::string& text, uint32 &guid, uint32 &entry, int &mapid, float &x, float &y, float &z) const; + // extracts currency from a string as #g#s#c and returns the total in copper uint32 extractMoney(const std::string& text) const; Hope you like it
  4. Hi Guys Before you report that MaNGOS[9579] does not work with playerbot, I thought I would get in first. If your getting; Then you need to add #include "ObjectGuid.h" to WorldSession.h, and it should be happy:D Hope this helps
  5. Hi, Thanks for the info. Yes your right the changes to ObjectAccessor had broken the playerbot patch. They have modified the function GetObjectByTypeMask and shifted it from the ObjectAccessor class to Player class. As such, the function needs to be addressed differently. Changes were also made with the parameters passed. uint32 itemId = itemIds.front(); bool wasRewarded = false; uint64 questRewarderGUID = m_bot->GetSelection(); - Object* const pNpc = ObjectAccessor::GetObjectByTypeMask(*m_bot, questRewarderGUID, TYPEMASK_UNIT|TYPEMASK_GAMEOBJECT); + Object* const pNpc = (WorldObject*) m_bot->GetObjectByTypeMask(questRewarderGUID, TYPEMASK_CREATURE_OR_GAMEOBJECT); if (!pNpc)0 return; I have updated the code on blueboy to be compatible with MaNGOS[9578] Hope this helps
  6. Hi mrelfire, No more crash dumps please, they're not telling me much. We have already determined that the crash occurs as the AuraMap is accessed to determine available spells (@ line 866 HasAura function in PlayerbotAI.cpp). The question is why is it crashing on your systems, and not on mine. Your both using Windows, but I also need know what else your running (i.e mods, multiple realms, etc..). Also, does your system crash immediately, or is it triggered by some event like combat for instance. You could try, placing a flag in the function HasAura, and observe on the server whether the function works at all. //typedef std::Pair<uint32, uint8> spellEffectPair; //typedef std::multimap<spellEffectPair, Aura*> AuraMap; bool PlayerbotAI::HasAura(uint32 spellId, const Unit& player) const { for (Unit::AuraMap::const_iterator iter = player.GetAuras().begin(); iter != player.GetAuras().end(); ++iter) { sLog.outDebug("PlayerbotAI::HasAura"); // Flag to monitor use if (iter->second->GetId() == spellId) return true; } return false; } I have tried this and it cycles through all available spells for each bot, without issue. Please try this and let me know how you get on. Cheers
  7. O.K I've had some sleep :cool: I need some more info from you. I cannot reproduce your issue on my linux box. How is the crash triggered? // As soon as the bots logon and try to apply AURAS (i.e spells), or after some specific event. @Everyone If this issue is also happening to you, let me know Please get back to me
  8. Hi, You tell me? I provided the survey patch in post #890 ,a couple of days ago. It is only a prototype, so I have no intention of integrating it into the playerbot code yet. It needs testing and refining!. I have provided a find command that works with the survey command, to detect things. Hope this helps
  9. Hi Bramm, So you commented out the two typedefs in PlayerbotAI.cpp, and your still getting the access violation :confused: Hmmm I'll have another look at the code, once I've had some sleep. I've been up all night removing trailing whitespaces form the code. Thanks for the feedback
  10. Hi, Your using the wrong repository. We have been using git://github.com/blueboy/mangos.git since December last yesr. I have just updated it the be compatible with the latest MaNGOS[9573] Hope this helps
  11. Hi, I do not have much time for game play : ( , so bear with me. The default attacked stance for mage bots is 'ranged'. However if the bot is close to the hostile and or has low mana, it may well switch the mellee attack. I have looked at the 'DoNextCombatManeuver' function in PlayerbotMageAI.cpp and the spells tend to be processed sequentially. Let me explain, Initially the default choice is SpellSequence = SPELL_FROST. Under, SPELL_FROST option there is a list of frost spells. The mage will cast the first spell it can. It is then instructed to choose SpellSequence = SPELL_FIRE and casts the first fire spell it can, and so forth until it cycles back to SpellSequence = SPELL_FROST. If you are unhappy with the ordering of spells, then change it (i.e move a favourite spell further up the list) I would place the most mana costly spells at the top of the list and then place them in decreasing order. That way, there is more chance of a more powerfull spell being cast. Hope this helps
  12. Hi, Thanks for the info I will certainly look into this. Interestingly in post #522 from WOLFMAN I had a similar issue to your second point. He had a situation where he could enter the gates of Moltencore, but his bot raid party would not follow (i.e teleport). It turned out that there was a quest requirement that needed to be completed before they could enter. If this is the location, do not look at #522, as I provide the solution and it might spoil your fun. Please let me know. Cheers
  13. Hi mrelfire, I think I have a solution for you. Around MaNGOS[9415] they were making changes with SpellEffectIndex, and they changed the type definition spellEffectPair in Unit.h; @@ -951,7 +951,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject { public: typedef std::set<Unit*> AttackerSet; - typedef std::Pair<uint32, uint8> spellEffectPair; + typedef std::Pair<uint32, SpellEffectIndex> spellEffectPair; typedef std::multimap< spellEffectPair, Aura*> AuraMap; typedef std::list<Aura *> AuraList; typedef std::list<DiminishingReturn> Diminishing; @@ -1168,7 +1168,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject0 Now in PlayerbotAI.cpp for function HasAura; //typedef std::Pair<uint32, uint8> spellEffectPair; //typedef std::multimap<spellEffectPair, Aura*> AuraMap; bool PlayerbotAI::HasAura(uint32 spellId, const Unit& player) const { for (Unit::AuraMap::const_iterator iter = player.GetAuras().begin(); iter != player.GetAuras().end(); ++iter) { if (iter->second->GetId() == spellId) return true; } return false; } Your crash dump points to an access violation in PlayerbotAI.cpp @ line 866 in HasAura, as it tries to access AuraMap. I believe that both of the type definitions are redundant, and that of spellEffectPair contradicts the changes made above. I have succesfully compiled, with both typedefs commented out. I believe this should solve your crash. If it works I will remove these typedefs, next time I update blueboy. Please let me know. Hope this helps
  14. Hi Guys As promised here is the survey patch diff --git a/src/game/PlayerbotAI.cpp b/src/game/PlayerbotAI.cpp index 507d183..e097a16 100644 --- a/src/game/PlayerbotAI.cpp +++ b/src/game/PlayerbotAI.cpp @@ -2229,6 +2229,76 @@ void PlayerbotAI::extractItemIds(const std::string& text, std::list<uint32>& ite } } +void PlayerbotAI::extractGOinfo(const std::string& text, uint32 &guid, uint32 &entry, int &mapid, float &x, float &y, float &z) const +{ + + // Link format + // |cFFFFFF00|Hfound:" << guid << ':' << entry << ':' << x << ':' << y << ':' << z << ':' << mapid << ':' << "|h[" << gInfo->name << "]|h|r"; + // |cFFFFFF00|Hfound:5093:1731:-9295:-270:81.874:0:|h[Copper Vein]|h|r + + sLog.outDebug("extractGOinfo: text = %s",text.c_str()); + uint8 pos = 0; + while (true) + { + // extract GO guid + int i = text.find("Hfound:", pos); // base H = 11 + if (i == -1) // break if error + break; + pos = i + 7; //start of window in text 11 + 7 = 18 + int endPos = text.find(':', pos); // end of window in text 22 + if (endPos == -1) //break if error + break; + std::string guidC = text.substr(pos, endPos - pos); // get string within window i.e guid 22 - 18 = 4 + uint32 guid = atol(guidC.c_str()); // convert ascii to long int + + // extract GO entry + pos = endPos + 1; + endPos = text.find(':', pos); // end of window in text + if (endPos == -1) //break if error + break; + + std::string entryC = text.substr(pos, endPos - pos); // get string within window i.e entry + entry = atol(entryC.c_str()); // convert ascii to float + + // extract GO x + pos = endPos + 1; + endPos = text.find(':', pos); // end of window in text + if (endPos == -1) //break if error + break; + + std::string xC = text.substr(pos, endPos - pos); // get string within window i.e x + x = atof(xC.c_str()); // convert ascii to float + + // extract GO y + pos = endPos + 1; + endPos = text.find(':', pos); // end of window in text + if (endPos == -1) //break if error + break; + + std::string yC = text.substr(pos, endPos - pos); // get string within window i.e y + y = atof(yC.c_str()); // convert ascii to float + + // extract GO z + pos = endPos + 1; + endPos = text.find(':', pos); // end of window in text + if (endPos == -1) //break if error + break; + + std::string zC = text.substr(pos, endPos - pos); // get string within window i.e z + z = atof(zC.c_str()); // convert ascii to float + + //extract GO mapid + pos = endPos + 1; + endPos = text.find(':', pos); // end of window in text + if (endPos == -1) //break if error + break; + + std::string mapidC = text.substr(pos, endPos - pos); // get string within window i.e mapid + mapid = atoi(mapidC.c_str()); // convert ascii to int + pos = endPos; // end + } +} + // extracts currency in #g#s#c format uint32 PlayerbotAI::extractMoney(const std::string& text) const { @@ -2675,6 +2745,19 @@ void PlayerbotAI::HandleCommand(const std::string& text, Player& fromPlayer) for (std::list<Item*>::iterator it = itemList.begin(); it != itemList.end(); ++it) EquipItem(**it); } + + // find item in world + else if (text.size() > 2 && text.substr(0, 2) == "f " || text.size() > 5 && text.substr(0, 5) == "find ") + { + uint32 guid; + float x,y,z; + uint32 entry; + int mapid; + extractGOinfo(text, guid, entry, mapid, x, y, z); + // sLog.outDebug("find: guid : %u entry : %u x : (%f) y : (%f) z : (%f) mapid : %d",guid, entry, x, y, z, mapid); + SetMovementOrder( MOVEMENT_STAY ); + m_bot->GetMotionMaster()->MovePoint( mapid, x, y, z ); + } else if (text == "quests") { @@ -2801,9 +2884,45 @@ void PlayerbotAI::HandleCommand(const std::string& text, Player& fromPlayer) ChatHandler ch(&fromPlayer); SendWhisper("I have this much space ", fromPlayer); ch.SendSysMessage(out.str().c_str()); - } - - + } + // Survey project: 09:50 09/03/10 + else if (text == "survey") + { + float distance = 100.0f; + uint32 count = 0; + std::ostringstream detectout; + + QueryResult *result = WorldDatabase.PQuery("SELECT guid, id, position_x, position_y, position_z, map, " + "(POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) AS order_ " + "FROM gameobject WHERE map='%u' AND (POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) <= '%f' ORDER BY order_", + m_bot->GetPositionX(), m_bot->GetPositionY(), m_bot->GetPositionZ(), + m_bot->GetMapId(), m_bot->GetPositionX(), m_bot->GetPositionY(), m_bot->GetPositionZ(), distance*distance); + + if (result) + { + do + { + Field *fields = result->Fetch(); + uint32 guid = fields[0].GetUInt32(); + uint32 entry = fields[1].GetUInt32(); + float x = fields[2].GetFloat(); + float y = fields[3].GetFloat(); + float z = fields[4].GetFloat(); + int mapid = fields[5].GetUInt16(); + + GameObjectInfo const * gInfo = ObjectMgr::GetGameObjectInfo(entry); + + if(!gInfo) + continue; + + detectout << "|cFFFFFF00|Hfound:" << guid << ":" << entry << ":" << x << ":" << y << ":" << z << ":" << mapid << ":" << "|h[" << gInfo->name << "]|h|r"; + ++count; + } while (result->NextRow()); + + delete result; + } + SendWhisper(detectout.str().c_str(), fromPlayer); + } else { // if this looks like an item link, reward item it completed quest and talking to NPC diff --git a/src/game/PlayerbotAI.h b/src/game/PlayerbotAI.h index 2045ac2..105066e 100644 --- a/src/game/PlayerbotAI.h +++ b/src/game/PlayerbotAI.h @@ -126,6 +126,9 @@ class MANGOS_DLL_SPEC PlayerbotAI // extracts item ids from links void extractItemIds(const std::string& text, std::list<uint32>& itemIds) const; + // extracts gameobject info from link + void extractGOinfo(const std::string& text, uint32 &guid, uint32 &entry, int &mapid, float &x, float &y, float &z) const; + // extracts currency from a string as #g#s#c and returns the total in copper uint32 extractMoney(const std::string& text) const; The present patch finds all gameobjects within the local, regardless of level and event restrictions or existance on the map. It would be sensible to filter items that have no immediate relevance. An perfect example while testing, 'Brightly Colored Eggs' were detected in Elwynn Forest. These appear during Noblegarden, the ingame holiday which takes place for about 24 hours usually on Easter Sunday. At any other time, their detection is irrelevant. Also it might be an idea to limit the number of objects displayed. The Darkmoon Faire is in Elwynn Forest at present, and there were too many objects to handle in one location, when I did a survey. The find command will direct the bot(s) to travel to the objects location, and then wait for further instructions. This could be useful in securing the item, without endangering the player. If the bot(s) encounter hostiles either in transit or at the location, they will fight. The location of the bot(s) will show up on the minimap, so you can also travel to the location even thought the bot(s) might not be in Line of Sight. I gave information on how to use the survey and find commands in post #884 Overview The first stage is to interrogate the database for all gameobjects based upon distance from a specified player or bot. The recovered data is then loaded into 'link' strings. All instances are then passed to the client. [botname]whispers: [Peachbloom][iron Vein][Chair][Water Barrel][Chest] etc... The user then decides on the next action. For instance, lets find a particular object. Hold down the shift key and click on the link. This then copies the link to the dialog bar. extractGOinfo function recovers all gameobject data from the 'link' string, that is used by the find command to MovePoint the bot to the object location. /w botname find [iron Vein] I would be grateful if you could give me feedback good or bad, and any ideas. Cheers
  15. Hi, No, like I said this is a prototype and I will post a test patch on the forum shortly. I want to keep blueboy repo clean. Cheers
  16. Hi Guys, I have some great news that you maybe interested in. I have created a 'survey' command that will detect all local gameobjects. Bots will report objects in link form, within a circular perimeter about the bot. I have also created a 'find' command to test it's functionallity. All necessary gameobject info is passed to the find command, simply by holding the shift key down and clicking on the appropriate link. This is hot off the press, and I have yet to create a working patch. /w <botname> survey // a specified bot will report known local objects /p survey // group will report all local objects [Copper vein][Earthroot][battered Chest] and then to test it, /w <botname> find <link> // bot will travel to the objects location This is only a prototype, but it has far reaching possibilities, for further development. * Prospecting, Herb collecting, Hunting, Skinning etc... * Getting bots to complete those collection quests that upto now have been impossible * Utilize the bot's class features, interacting with objects i.e Rogues asked to lockpick and open chest I want to get you all onboard with its development, so you will be familar its workings, and hopefully encourage you to join in Hope this helps
  17. Hi, So you get the 'whitespace' warnings when you apply the patch? I never had that on my system. I will however endeavour to clean all future commits. If you still get an issue, please let me know. Cheers
  18. Hmm, I've just tried git apply --whitespace=fix playerbot.patch and I get the same. But why are you fixing the patch:confused: Do you get any errrors when you apply the patch or compile. (--dry-run to test the patch before applying to code). Applied to a fresh download of MaNGOS. patch --dry-run -p1 < playerbot.patch P.S I have revised the gethash script in #394, and this will automatically get the HASH from the MaNGOS commit history. #!/bin/bash [ -f "hash.txt" ] && rm hash.txt git log --pretty=oneline > commit.txt { while read line do echo $line > line.txt index=0 while read -r -n1 char; do MYARRAY[$index]=$char let "index++" done < line.txt ELEMENTS=${#MYARRAY[@]} i=0;t=1;n=2 while [ $n -lt $ELEMENTS ] do [ "${MYARRAY[$t]}" == "[" ] && [ "${MYARRAY[$n]}" == "9" ] && exit echo -n "${MYARRAY[$i]}" >> hash.txt let "i++";let "t++";let "n++" done rm hash.txt done } < commit.txt It looks for the pattern '[9' which is used on the MaNGOS branch, for versioning. I realise this might be different on Evo-X. I will check future commits for whitespaces, but try it without the 'whitespace=fix'. Cheers
  19. Hi, Thanks for testing the patches. Interestly when I created the 'PlayerbotAI.DisableBotsInRealm' option, I had no real way to test it out, as I only had a single realm. Since then I have setup dual test realms on one server, and in doing so I now see that the feature is made redundant by the existing 'PlayerbotAI.DisableBot' option. The reason for this is that each realm uses a separate 'mangosd.conf' file. Thus by activating 'PlayerbotAI.DisableBot' in one or the other, you are effectively disabling bots for that realm. I will therefore remove this at the earliest opportunity. I have found the layout of the AI in playerbot to be quite starightforward. If you wish to tackle a general AI feature, then look to PlayerbotAI.cpp file. This also redirects each class AI to separate files. If you wish to add a new feature, general or class specific, use the existing blocks of code as templates, which is the essence of object orientated programming (c or c++). Thanks again
  20. Hi, Thanks for the suggestions. I kind of like the idea of repairing the bots. Maybe we could get the master to initiate the repair, by selecting the right NPC. I will definitely look into this Cheers
  21. Hi, Thanks for the suggestions, I will attempt to tackle some of these, but you will need to be patient. I still believe that the master should be the key in locating quest objects and not the bots. If you have got any ideas how to independently detect quest objects, I would be interested :confused: The only way to learn c++, is through practice. I'm a complete novice compared the the guys who originally desgined playerbot. I'm learning slowly and I am willing to help you, if you want to have a go. Playerbot certainly deserves the attention more than one person, in orderto maintain its momentum. Cheers
  22. Hi, Thanks for the comments and information. I haven't experienced any problems with whitespaces myself, but appreciate that 170 warnings would be annoying. I have checked online and this seems to be a long standing issue. I have found a few methods to clean up the code, but I will need your feedback to say whether it works. How do you create your patches? I posted my approach #394 and it seems to work without issue, with the existing code on blueboy. I will amend the '%u' issue too. In the meantime, you can manually change these to '%d' and see whether your compiler still complains. I'm using Gnu c++, on a 32bit linux box (OpenSuSE 11.2), I beleive you can change the 'warning levels' as a compiler option. I'm using the default settings, and I don't get these warnings. If it is any help these are my build settings #!/bin/bash ../configure --prefix=/home/mangos/wow2 --sysconfdir=/home/mangos/wow2/etc \\ --with-python \\ --enable-cli \\ --enable-ra \\ --datadir=/home/mangos/wow2/data Please get back to me, Cheers
  23. Hi, O.K , If it is any help, I've just tested the code with MaNGOS[9531] SD2[1635] PSMDB[295][Project Silvermoon] auctionhousebot[Naicisum] autobroadcast[Xeross]old and compiles and run without issue. I hope you find the cause of your crash. Cheers
  24. Hi, Can you give me anymore information. The dump does not tell me much. Can you describe your system? i.e What mods and database are you using? what locale are you using? i.e Russian, enGB, enUS When does the crash occur? As the server loads or when you try and summon a bot? Please get back to me, I'm compiling playerbot with MaNGOS[9531] as I type this. Hopefully we can find a solution.
  25. Thanks, I'm not sure how useful it is though. It certainly makes the process of feeding, more Blizzard like. I'm eager to focus on the rogue AI now, perhaps automate lockpicking. Cheers
×
×
  • 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