PHP: <StackItemsAction /> <DisenchantAction ActionType="Mill" ItemTarget="All" ItemQuality="Uncommon" ItemId="0" /> Try to mill everything?
Oh and InGBankCount() doesnt work for HORDE? Got 2 Horde and 1 Alliance and i get the correct amount of items and the alliance character but on horde side i get ZERO for that item even if in GBank is 120 of it. Fix please Horde Character: (Gobbo Rogue) [15:28:06.622 N] [ProfessionSlave]: Refreshing DataStore Data [17:28:09.017 N]PB 1.573: InteractAction complete [15:28:08.953 D] InteractDebug:606774264 [15:28:09.005 D] Interact Done:606774264 [15:28:09.070 D] PB 1.573: DataStore Imported [15:28:14.176 D] PB 1.573: Wait for 00:00:05 or until false Completed [15:28:14.232 D] Lua failed! Status: Alliance Character: (Dwarf Hunter) [15:27:55.703 N] [ProfessionSlave]: Refreshing DataStore Data [17:27:57.873 N]PB 1.573: InteractAction complete [15:27:57.811 D] InteractDebug:744015120 [15:27:57.862 D] Interact Done:744015120 [15:27:57.922 D] PB 1.573: DataStore Imported [15:28:02.961 D] PB 1.573: Wait for 00:00:05 or until false Completed I print out in HB's Log how much crap red gems i have in my GuildBank Ofc All Datastore shit is installed On Alliance Character i got the correct amount on horde side i get 0 even if i have 300 Reinstalled only neccesary Datastore AddOn Reinstalled all Datastore Shit with Altoholic Cleared all WTF dataz from that AddOns Cleared My profile Data and PB Data in settings Still same issue View attachment Rogue Log.txt
Prospect Specific item: <StackItemsAction /> <If Condition="InbagCount(72092) > 5" IgnoreCanRun="True"> <DisenchantAction ActionType="Prospect" ItemTarget="Specific" ItemQuality="Uncommon" ItemId="72092" /> </If> Milling all herb: <StackItemsAction /> <If Condition="InbagCount(72237) > 5" IgnoreCanRun="True"> <DisenchantAction ActionType="Mill" ItemTarget="All" ItemQuality="Uncommon" ItemId="0" /> </If>
Newbie help plz NOTE: Newbie question inbound... I loaded up PB via the SVN link and things look to be loading up fine. I get no errors but basically my toon does nothing once I start things up. I have selected PB and Combat as my second. I see that it is using singular as the CC. I scanned the logs and didn't see anything glaring. Can someone take a peek at this and show me the obvious? View attachment 7012 2013-04-15 11.27.txt
Highvoltz do you have some infos? Reinstalled PB and changed back to the last 2-3 revisions but it didnt helped. Horde is broken for GBank item counting
Would it be possible to implement GB sorting? Like normal sorting thats implemented already, but for guild banks? Atm I have plenty of not full stacks in gb's, and I have no idea how to sort it fast... Withdrawing, sorting and depositing would take long time to implement, and execute :/ Edit; I used Bankstack (wow addon) and command /compress guild. I saved over 1 gb tab - would be nice to have it integrated into PB, but there is workaround, even easy to implement into profile. Consider this request as very low priority
Doesn't the StackItemsAction apply for GBs as well? PHP: <StackItemsAction /> Just make a wait action so the profile freezes while on loading screen. PHP: <!-- Waits 30 seconds --> <WaitAction Condition="false" Timeout="30000" />
Hey, i am using DataStore to let my toon know what items are in GuildBank. This only works for my alliance toon but for my 2 horde toons it doesnt work. Everytime i print out to HBs Log i get 0 for every itemID. This is a simple profile because i wanted to get sure thats its not a profile problem. - 0 Plugins enabled - DataStore knows on every character how much itemsi have in my GB - FRESH installed HB - PB updated fresh - All same AddOns - Same HB folder - Same profile - All toons in Dalaran same GuildBank PHP: <?xml version="1.0" encoding="utf-8"?> <Professionbuddy> <ChangeBotAction BotName="Combat Bot" /> <CallSubRoutine SubRoutineName="RefreshDataStore" /> <!-- Movement --> <Declaration Code="WoWPoint gotoPoint;" /> <!-- Shortcut for HB's logtext colors and formating --> <Declaration Code="private void LogText(string format, params object[] args) { Logging.Write(Colors.DarkOrange, "[InscriptionSlave]: " + format, args); }" /> <Declaration Code="public bool SellableShoulderEnchantInGB { get { return InGBankCount (87578) > 0;}}" /> <Declaration Code="public bool SellableEpicShoulderEnchantInGB { get { return InGBankCount (87559) > 0;}}" /> <CustomAction Code="LogText("Green Tea Leaf in GB {0} ",InGBankCount(72234));" /> <CustomAction Code="LogText("Silkweed in GB {0} ",InGBankCount(72235));" /> <CustomAction Code="LogText("Rain Poppy in GB {0} ",InGBankCount(72237));" /> <CustomAction Code="LogText("Snow Lily in GB {0} ",InGBankCount(79010));" /> <CustomAction Code="LogText("Fools Cap in GB {0} ",InGBankCount(79011));" /> <CustomAction Code="LogText("Desecrated Herb in GB {0} ",InGBankCount(89639));" /> <CustomAction Code="LogText("Crap Orange {0} ",InGBankCount(76130));" /> <CustomAction Code="LogText("Crap Blue {0} ",InGBankCount(76133));" /> <CustomAction Code="LogText("Crap Yellow {0} ",InGBankCount(76134));" /> <CustomAction Code="LogText("Crap Violet {0} ",InGBankCount(76135));" /> <CustomAction Code="LogText("Crap Red {0} ",InGBankCount(76136));" /> <CustomAction Code="LogText("Crap Green {0} ",InGBankCount(76137));" /> <CustomAction Code="LogText("Rare Red in GB {0} ",InGBankCount(76131));" /> <CustomAction Code="LogText("Rare Blue in GB {0} ",InGBankCount(76138));" /> <CustomAction Code="LogText("Rare Green n GB {0} ",InGBankCount(76139));" /> <CustomAction Code="LogText("Rare Orange in GB {0} ",InGBankCount(76140));" /> <CustomAction Code="LogText("Rare Violet in GB {0} ",InGBankCount(76141));" /> <CustomAction Code="LogText("Rare Yellow in GB {0} ",InGBankCount(76142));" /> <CustomAction Code="LogText("Starlight Ink in GB {0} ",InGBankCount(79255));" /> <CustomAction Code="LogText("Ink of Dreams in GB {0} ",InGBankCount(79254));" /> <CustomAction Code="LogText("SellableShoulderEnchantInGB {0} ",SellableShoulderEnchantInGB);" /> <CustomAction Code="LogText("SellableEpicShoulderEnchantInGB {0} ",SellableEpicShoulderEnchantInGB);" /> <!-- Movement --> <SubRoutine SubRoutineName="Goto Point"> <While Condition="gotoPoint.Distance(Me.Location) > 3" IgnoreCanRun="True"> <CustomAction Code="MoveTo(gotoPoint);" /> </While> </SubRoutine> <!-- Go To GuildBank --> <SubRoutine SubRoutineName="GoToGuildBank"> <If Condition="Me.ZoneId == 4395" IgnoreCanRun="True"> <CustomAction Code="gotoPoint = new WoWPoint(5973.146, 630.3968, 650.6273);" /> <CallSubRoutine SubRoutineName="Goto Point" /> </If> </SubRoutine> <!-- DataStore Shit --> <SubRoutine SubRoutineName="RefreshDataStore"> <CallSubRoutine SubRoutineName="GoToGuildBank" /> <CustomAction Code="LogText("Refreshing DataStore Data");" /> <InteractionAction InteractType="GameObject" Entry="0" InteractDelay="2000" GameObjectType="GuildBank" SpellFocus="Anvil" /> <CustomAction Code="RefreshDataStore();" /> <WaitAction Condition="false" Timeout="5000" /> </SubRoutine> </Professionbuddy> Maybe its my own fault because something in the profile is wrong (maybe public declarations? i dont know) But maybe its a PB problem - if thats the case, then it would be nice if you can fix it highvoltz Maybe someone knows what the problem is Thse are the parts of the Logfile (i addet a full Logfile in my earlier post) HORDE characters [InscriptionSlave]: Refreshing DataStore Data PB 1.573: InteractAction complete InteractDebug:593057872 Interact Done:593057872 PB 1.573: DataStore Imported PB 1.573: Wait for 00:00:05 or until false Completed Lua failed! Status: [InscriptionSlave]: Green Tea Leaf in GB 0 Lua failed! Status: [InscriptionSlave]: Silkweed in GB 0 Lua failed! Status: [InscriptionSlave]: Rain Poppy in GB 0 Lua failed! Status: [InscriptionSlave]: Snow Lily in GB 0 Alliance character [InscriptionSlave]: Refreshing DataStore Data InteractDebug:561842120 PB 1.573: InteractAction complete Interact Done:561842120 PB 1.573: DataStore Imported PB 1.573: Wait for 00:00:05 or until false Completed [InscriptionSlave]: Green Tea Leaf in GB 0 [InscriptionSlave]: Silkweed in GB 0 [InscriptionSlave]: Rain Poppy in GB 0 [InscriptionSlave]: Snow Lily in GB 0
thanks highvoltz for the amazing botbase! i use it almost exclusively to write profiles, but one feature that i really need is a "repair" action that will go to the nearest repair vendor. my current workaround is to force a sell action at a specific vendor that i know does repairs, and use an addon to auto repair... unfortunately, if the requirements for the action are met at a point where he is far away from that vendor, then he wastes a lot of time flying to the vendor.
Okay, some more informations. Inrego made me this simple code to Cache GBank items. This is the simple profile i made - just to check if it works. Code: <?xml version="1.0" encoding="utf-8"?> <Professionbuddy> <ChangeBotAction BotName="Combat Bot" /> <CallSubRoutine SubRoutineName="CacheGBItems" /> <!-- Movement --> <Declaration Code="WoWPoint gotoPoint;" /> <!-- Shortcut for HB's logtext colors and formating --> <Declaration Code="private void LogText(string format, params object[] args) { Logging.Write(Colors.DarkOrange, "[CachedItem]: " + format, args); }" /> <!-- Cache GuildBank items --> <Declaration Code="public Dictionary<uint, int> CachedGBankCount; public int FreeGBankSlots; public void CacheGBankCount() { CachedGBankCount = new Dictionary<uint, int>(); using (StyxWoW.Memory.AcquireFrame()) { var tabCount = Lua.GetReturnVal<int>("return GetNumGuildBankTabs()", 0); var GoldInGB = Lua.GetReturnVal<int>("return GetGuildBankMoney()", 0); var numFreeSlots = 0; for (int i = 1; i <= tabCount; i++) { numFreeSlots += FreeSlotsInTab(i); var tabInfo = Lua.GetReturnValues(string.Format("return GetGuildBankTabInfo({0})", i)); var viewable = int.Parse(tabInfo[2]) == 1; var withdrawsAllowed = int.Parse(tabInfo[4]); if (viewable && withdrawsAllowed > 0) { for (int j = 1; j <= 98; j++) { var id = Lua.GetReturnVal<uint>(string.Format("id = string.match(GetGuildBankItemLink({0},{1}), \"item:[%d]+\") id=string.sub(id, 6) return id", i, j), 0); var count = Lua.GetReturnVal<int>(string.Format("return GetGuildBankItemInfo({0},{1})", i, j), 1); if (!CachedGBankCount.ContainsKey(id)) CachedGBankCount.Add(id, count); else CachedGBankCount[id] += count; } } } FreeGBankSlots = numFreeSlots; } } public int GBankCount(uint id) { int count = 0; CachedGBankCount.TryGetValue(id, out count); return count; } private static int FreeSlotsInTab(int tabIndex) { const string lua = "local tab = {0} " + "local c = 0 " + "for i=1, MAX_GUILDBANK_SLOTS_PER_TAB do " + " local link = GetGuildBankItemLink(tab,i)" + " if not link then " + " c = c+1 " + " end " + "end " + "return c"; return Lua.GetReturnVal<int>(string.Format(lua, tabIndex), 0); }" /> <!-- Output to Hbs Log--> <CustomAction Code="LogText("Green Tea Leaf in GB {0} ",GBankCount(72234));" /> <CustomAction Code="LogText("Silkweed in GB {0} ",GBankCount(72235));" /> <CustomAction Code="LogText("Rain Poppy in GB {0} ",GBankCount(72237));" /> <CustomAction Code="LogText("Snow Lily in GB {0} ",GBankCount(79010));" /> <CustomAction Code="LogText("Fools Cap in GB {0} ",GBankCount(79011));" /> <CustomAction Code="LogText("Desecrated Herb in GB {0} ",GBankCount(89639));" /> <CustomAction Code="LogText("Crap Orange in GB {0} ",GBankCount(76130));" /> <CustomAction Code="LogText("Crap Blue in GB {0} ",GBankCount(76133));" /> <CustomAction Code="LogText("Crap Yellow in GB {0} ",GBankCount(76134));" /> <CustomAction Code="LogText("Crap Violet in GB {0} ",GBankCount(76135));" /> <CustomAction Code="LogText("Crap Red in GB {0} ",GBankCount(76136));" /> <CustomAction Code="LogText("Crap Green in GB {0} ",GBankCount(76137));" /> <CustomAction Code="LogText("Rare Orange in GB {0} ",GBankCount(76140));" /> <CustomAction Code="LogText("Rare Blue in GB {0} ",GBankCount(76138));" /> <CustomAction Code="LogText("Rare Yellow in GB {0} ",GBankCount(76142));" /> <CustomAction Code="LogText("Rare Violet in GB {0} ",GBankCount(76141));" /> <CustomAction Code="LogText("Rare Red in GB {0} ",GBankCount(76131));" /> <CustomAction Code="LogText("Rare Green in GB {0} ",GBankCount(76139));" /> <CustomAction Code="LogText("Starlight Ink in GB {0} ",GBankCount(79255));" /> <CustomAction Code="LogText("Ink of Dreams in GB {0} ",GBankCount(79254));" /> <!-- Movement --> <SubRoutine SubRoutineName="Goto Point"> <While Condition="gotoPoint.Distance(Me.Location) > 3" IgnoreCanRun="True"> <CustomAction Code="MoveTo(gotoPoint);" /> </While> </SubRoutine> <!-- Go To GuildBank --> <SubRoutine SubRoutineName="GoToGuildBank"> <If Condition="Me.ZoneId == 4395" IgnoreCanRun="True"> <CustomAction Code="gotoPoint = new WoWPoint(5973.146, 630.3968, 650.6273);" /> <CallSubRoutine SubRoutineName="Goto Point" /> </If> </SubRoutine> <!-- Cache GuildBank items --> <SubRoutine SubRoutineName="CacheGBItems"> <CallSubRoutine SubRoutineName="GoToGuildBank" /> <CustomAction Code="LogText("Caching GuildBank items");" /> <InteractionAction InteractType="GameObject" Entry="0" InteractDelay="2000" GameObjectType="GuildBank" SpellFocus="Anvil" /> <CustomAction Code="CacheGBankCount();" /> <WaitAction Condition="false" Timeout="5000" /> </SubRoutine> </Professionbuddy> The first try i let my 3 toons run this profile this happened: - I got this errors on both HORDE toons - In HBs Log it prints out i have 0 of every item - Alliance toon no error and correct output of ALL items (even they are not in Tab 1 oO) Err: Custom ActionCacheGBankCount() System.OverflowException: Value was either too large or too small for an Int32. at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) at System.String.System.IConvertible.ToInt32(IFormatProvider provider) at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) at System.Convert.ChangeType(Object value, Type conversionType) at Styx.WoWInternals.Lua.GetReturnVal[T](String lua, UInt32 retVal) at CodeDriver.CacheGBankCount() at CodeDriver.Code1007595460(Object context) at HighVoltz.Composites.CustomAction.Run(Object context) in c:\Users\Admin\Desktop\Honorbuddy\Bots\Professionbuddy\Composites\CustomAction.cs:line 70 Err: Custom ActionCacheGBankCount() System.OverflowException: Value was either too large or too small for an Int32. at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) at System.String.System.IConvertible.ToInt32(IFormatProvider provider) at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) at System.Convert.ChangeType(Object value, Type conversionType) at Styx.WoWInternals.Lua.GetReturnVal[T](String lua, UInt32 retVal) at CodeDriver.CacheGBankCount() at CodeDriver.Code794575022(Object context) at HighVoltz.Composites.CustomAction.Run(Object context) in c:\Users\Admin\Desktop\Honorbuddy\Bots\Professionbuddy\Composites\CustomAction.cs:line 70 The second try i let my 3 toons run this profile this happened: - I got no errors on all toons - In HBs Log it prints out i have 0 of every item - Lua failed! Status: right before the output lines Only the first default GuildTab was opened because browsing through tabs is not included (i dont know how) //edit The third try i let my 3 toons run this profile the exact same stuff happned as in try: - I got this errors on both HORDE toons - In HBs Log it prints out i have 0 of every item - Alliance toon no error and correct output of ALL items (even they are not in Tab 1 oO) The next 3 tries the same result (error on horde alliance okay)
I have a weird PB/GB2 problem. It is kinda hard/annoying to reproduce (cannot Heart as often as I would like to have a totally clean pass through the profile), so I will just describe it. I have a profile with parts taken from SmartMOP and what it does is it gathers herbs (GB2), when full hearts to city, switches to combat bot, mills and creates enchants, then portals back to Pandaria (this is pretty much taken literally from SmartMOP), there waits a bit, switches to GB2, waits a bit again and starts GB2. And my problem is that after return from the city GB2, for the lack of better word, "stutters". Normally, when GB2 flies around, it will never reach the yellow markers that show target of the current move, switching to a new one just before. When it stutters, it will fly all the way to the yellow marker, wait a bit, then move on to the next one. Same when going after a herb, it flies to it, waits a bit, and only then starts gathering. Sometimes stopping/starting helps, sometimes I have to take down HB. Has any of you seen anything similar, or got any ideas what might be the cause?
Attaching log where this happens. It apparently does not happen for all the yellow spots (observed it, cannot be found in log, afaik), so my best guess is that the profile leaves some checks/threads/stuff "running", which means PB takes long time to hand ticks over to GB. Also attached the profile, in case it is some basic don't do there.
Hello! I'd like to automatise the change of QuestBot profiles. How can I "stop" the flow of actions in order to wait for the quest bot to end the profile? Also, what's the best way to check if the character has already done a quest series or not? Thanks.