• Visit Rebornbuddy
  • [Bot] Prosto_Pets: Battle Pets 4 in 1, and more

    Discussion in 'Botbases' started by Prostak, Jan 7, 2015.

    1. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      [​IMG]
      Prosto_Pets: Battle Pets Botbase - BETA!

      The security issue mentioned previously has been eliminated from the logs in 0.9.3 version. Now I am once again comfortable to accept the logs attached to this forum. But if you want to send a link to a file in your public Dropbox folder this is ok too: This is a new product and there may be unnoticed security leaks. Thank you.
      What I think is dangerous is to make details of your pet collection composition visible. Like, "I have 188 level 1's, 93 level 2's etc" - this info may be unique and help identify you to someone controlling the databases. Do not post your exact pet composition. Or generalize it a bit, like "more than 150 level 1's instead of 188".

      4 in 1. This BotBase integrates, expands (in a shrinking direction sometimes :)) the functionality of the following products:
      1. Great MyPetBattle protected Lua addon. I've raised a lot of pets to 25 and won a lot of PvP fights using this. But it's a protected Lua, and Lua unlocks are suspected of producing bans. This botbase is using similar (but better) configuration, similar internal tactics representation and some tactics themselves (some are added/modified by me. Just try our crabs :)) - and this Bot does not use Lua unlocker, just regular HB.
      2. Pokehbuddy botbase. Taught me how to roam the world and start pet fights. Fight tactics are replaced completely though.
      3. Pet Battle Swapper plugin. This is a great plugin, but no matter how much I wanted to reduce the amount of my own work, this functionality just can't be kept separate. Team selection modified significantly.
      4. PetArea plugin. Same here. This is rather simple functionality but it better be integrated for more predictable results. So it is integrated.

      See Credits for details.

      And more:
      1. We now have an ability to manually roam the world and BB will start battles when a pet is nearby. Just a click of a checkbox away.
      2. There is an ability to record pet hotspots and create your very-very own, private - not in use by anybody else - profiles.
      3. A lot of profiles - to be precise: 57 profiles in PetZones subdirectory are included. All are gathered by this BotBase. Good thing: each hotspot represents a place where at least one pet at least on one realm was seen (and pet's name is included for no additional charge). Bad things: 1) these profiles were gathered by a flying level 100 toon, so may be not convinient for a non-flying alts. 2) only EK and Pandaria profiles were actually tested. - Extreme caution advised, not suitable for complete AFK yet.

      Installation.
      Do not follow "improvements" suggested in comments below. Follow the exact procedure as described.
      0. Get familiar with SVN Checkout. Here's the guide (thanks, Valpsjuk) : https://www.thebuddyforum.com/honor...-guides/124801-guide-download-update-svn.html
      1. Go to your Honorbuddy\Bots folder. Create Prosto_Pets sub-directory.
      2. Right-click on this link: https://github.com/Prostak/Prosto_Pets/trunk/Prosto_Pets, Select "Copy Link Address".
      3. Right click on Prosto_Pets, select "SVN checkout", it should use the link you've selected in Step 2 an it should create Prosto_Pets directory inside your Bots directory. Check that the file Prosto_Pets.cs (and others) are inside Bots\Prosto_Pets directory, not inside \Bots\Prosto_Pets\trunk\Prosto_Pets.
      4. IMPORTANT: Disable or remove PetArea, Pokehbuddy and Pet Battle Swapper plugins - or any other plugin that is handling Battle Pets. They are not needed anymore (have I said "all in one"?) but may interfere if enabled (and we already have cases of them interfering).
      5. Restart Honorbuddy, select Prosto_Pets as a Bot.
      6. Uhm... Press Start? (yeah, you may want to get familiar with Config first, see below).


      Known limitations.
      0. Tactics will not work with Non-English WoW client. Well, they will but will spam "1" only.
      1. No external tactics (internal only). It is potentially possible to support external tactics format now in use by Pokehbuddy, but: 1) some changes are needed anyway, like: swapouts should be redesigned completely, 2) I personally feel that internal tactics are better. See a separate post below how to create and modify them.
      2. Upd: Does not travel between continents. Need travel by hand. This is why the default zones are selected on the same continent - EK.
      3. Will not Queue for PvP (will fight if queued manually) - just had no time to integrate and test.
      4. Draenor and other rare pets (and probably some not so rare) are not yet in the tactics table (will use "1" button). We will fill tactics for all needed pets I hope. Or you can do it yourself - see "Creating and Modifying Pet Tactics" topic below.
      5. No white or black lists.
      6. Limited testing. For a tested results use high-level toon and a flying mount, Relative, Ringer, Ringerx2 modes, EK or Pandaria.

      Known problems:
      1. Profiles supplied can have problems for a ground-only toon when meshes are not yet loaded. Workarounds: a) use a flying toon, b) do some quests in an area first to get meshes downloaded. I will gather and supply ground-suitable profiles for EK and Calimdor if needed. Done.
      2. Profiles can take you to enemy camp. May need 100 level toon, e.g. in Tw.Highlands.
      3. You need to close the config panel for some changes to take effect.
      See also "Roadmap and Changelog" below.


      Personal further Plans.
      See "Roadmap and Changelog" below.

      -----------------
      Donations are absolutely not necessary, but will be appreciated anyway, Paypal: prosto.pets@gmail.com
       
      Last edited: Jan 25, 2015
    2. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      Roadmap and Changelog

      Roadmap.

      Please consider the following as sharing intentions, but not as making promises. This tool is just a hobby.

      0. Fixing serious problems found by you. ETA as soon as understood, fixed and tested. (Attaching a full log helps to speed up this item greatly):
      - Is it possible to get it to detect that they are underground and get it to ignore them?
      - resolve continents in a language-independent way (now that profile selection has changed it becomes a priority);
      - Im alliance and using the Hinterlands profile to lvl pet I get to Hri'watha research station and attack guards never end spawn near a pet to battle and bot just stays there fighting respawn guards over and over.;
      Done. 1. Ground profiles for EK and Kalimdor. Will add stability to ground-only toons. ETA this weekend.
      1a. Upd: Continue doc creation.
      Done. 2. Adding more explanations to GUI. ETA after this weekend.
      3. Support for other languages. Need a couple of weeks: create tools for an automated dictionary extraction, create the dictionary, integrate the dictionary, test.
      4. Battling fixed opponents, with priority to Garrison Menagerie. Needed: design profiles (I still think the profile is a proper place), add needed functions to Base, find a proper way to put a tactics into the profile. Interpreter will be needed if un-avoidable.
      5. Done by Studio60, see https://www.thebuddyforum.com/honor...extension-prosto_pets-custom-pet-tactics.html I will try to add tactics for the pets you've mentioned in the comments. Most I can promise is 1 pet per update, though.
      6. Done Auto-Loading maps for a continent you are in. Need to fit it somewhere, since I like it. Use closest zone - TBD.
      7. Black/White lists, Misc things like pet *****ers (hm, this is a dirty word?? what about this: "candies"?) - will try to prohibit myself even looking there. Not sure if prohibition succeeds.
      8. Draenor profiles. Still in plans, I need them myself. ETA not clear. But there is always a "make them yourself" option...
      9. Outland, Northrend, Pandaria profiles: re-create with "ground" coords - will reduce fly-ups.
      10. Do not attack undeground pets - after this weekend.
      11. Describe profile selection.

      Wishlist. Does not mean "low priority", means "unsorted"
      1. Safari Hat.
      2. can you implement a function to forfeit if there is no rare in the battle?
      3. "Pet battle already in progress" - reduce
      4. hey how can you change the time of blacklisting pets
      5. Is it possible to include the use of the +25% and +50% exp pet treats? (in additon to safari helmet)
      6. if using a locked team, it auto zone changes based on the pets level instead of min/max level settings?
      -. I may have missed something, it is ok to pester me until I include your favorite here.

      Changelog.
      Code:
      Version 0.9.15:
      - Studio60 120+ pet tactics added.
      
      Version 0.9.14:
      - closest profile selected
      
      Version 0.9.13:   (all corrections by Studio60)
      - speedEnemy corrected
      - Base tactics corrected.
      - debuffLeft added.
      
      Version 0.9.12:
      - more functions for pet tactics
      
      Version 0.9.11:
      - profiles for EK and Kalimdor replaced with ground ones
      - zone selection based on the current continent implemented:
        -- Default zone profile is now empty (--- not set ----).
        -- If the zone is to be autoselected, but not set on "Pet Zone" tab (or set for another continent) - the bot will load a zone for the continent you are in. Stop if failed.
        -- Button to load the zones for the continent added to "Pet Zones" tab. Set to (--- not found ---) if not found.
        -- CATA zones prefix changed to EK and KALI as appropriate.
      
      
      Version 0.9.10:
      - help system implemented
      
      Version 0.9.9:
      - using real names instead of custom names (thanks Studio60)
      - shouldHide fixed (thanks Studio60)
      - tactics for Pierre and Ancient Nest Guardian added (thanks Studio60)
      - tactics for Bronze Whelpling (thanks Valpsjuk)
      - mechanical tactics (too many to list here) by Studio60
      - Bot now remembers last used profile between sessions (and loads it if needed)
      
      Version 0.9.8: to Edacra with thanks
      - dead pets in the current team no longer stop the bot (it will wait for Revive CD) (Edacra issue 1)
      - reload pet journal on Start (Edacra issue 2)
      - movement from the indoor area corrected
      - names of the locked pets are printed
      - Waterfly tactics corrected
      
      Version 0.9.7:
       - "Ignore Elites" checkbox added to the General panel. Will not auto engage Legendary Pets if set (which is default)
      
      Version 0.9.6:
      - text on Min Health corrected;
      - Humanoid/Grommlok support added (thanks Misanthrope)
      
      Version 0.9.5:
      - immediate swap-out fixed for Ringer modes;
      - new tactic functions introduced: family, famEnemy, strong, weak
      
      Version 0.9.4:
      - "Capture Rares" checkbox functions normally now
      
      Version 0.9.3:
      - the known security issue eliminated from the logs;
      - a pet with the swap tab value set at 100 will now be swapped immediately when XP share is granted;
      - enemy "lift-off" condition added to "shouldHide" tactics logic criteria;
      
      Draenor profile added: PetZones\23-25 DRA (A-only, Ground) Shadowmoon Valley (58 Hs,175 Pets) by Prostak.xml
      
      Version 0.9.2:
         - ground detection improved, mushrooms in Draenor should no longer interfere;
         - underwater pets no longer engaged;
         - Zandalari Ankle/Kneerenders tactics corrected;
         - Zangar Crawler, Mossbyte Skitterer, Waterfly tactics, Iron Starlette tactics added
      
       
      Last edited: Jan 25, 2015
    3. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      Credits.

      I am pleased to list all other people and products that this work was greatly helped and influenced by. Use the links provided to check the products directly. Being opened-sourced they provide a great base of education to beginners and newcomers to HB.

      1. MyPetBattle protected Lua addon by tropicdome. I have raised many pets to 25 and won PvP battles using it. Prosto_Pets uses some config choices, internal tactics representation, some battle pet tactics themselves. No Lua unlocker is used, The implementation is in C#, I've used my experience to re-design the functionality using HB functions.
      2. Pokehbuddy botbase by hackersrage. This code was originally a plugin by maybe, and then converted into a botbase by sychotix. I've learned a lot re BotBase organization, movement, pet attacking in C#/HB environment.
      3. Battle Pet Swapper plugin. Organization of Lua code, some of the Lua code itself.
      4. PetArea plugin by team-random. Changing profiles according to a pet level.
      5. FPSware's RAF botbase. Learned botbase organization, GUI organization. Checking "Underwater" conditions.
      6. Cyotec Windows.Forms.Tablist. These fancy Tabs are by their design.
      7. AutoAngler botbase. Learning how to manage a list of Hotspots.
      Upd1:
      8. World Explorer profiles by Mord and skiazo (GB2) and by Darks (Questing). These profiles allowed brave toons equipped with Prosto_Pets bot to sneak into unsuspecting low-population realms and record all the pets there were! I wonder why no Minfernals are captured on record. Probably these realms are not so low-populated as they once were.

      I apologize if I forgot to mention somebody, but I can always update the post :)
       
      Last edited: Jan 11, 2015
    4. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      Configuration and Team Selection.

      ( Work in Progress)
      Contents:
      1. Configuring WHAT you want to level: Selecting your pet team
      2. Selecting HOW you want to level: Configuring the levelling Mode
      3. Deciding WHERE you want to level: Choosing Pet Zones
      4. Configuring what to capture

      Bot configuration GUI allows you to decide:
      - what pets you want to level: which levels to include, use wild pets, blue pets, favorite only or not,
      - how you want to level them: in Ringer mode (allowing low-level pets to have a hit in order to get a share of XP (no exposure - no XP) and then replacing them with a higher-level pet in order to win the battle (no win - no XP). This is done by choosing much more higher level opponent than your pet being leveled: the higher the opponent - more bonus XP. So, say level 1 is put against level 10 opponent which then is finished with level 25.
      - where you want to level them: automatically selecting some Pet Zone profile, loading a specific profile or just manually moving the toon.
      You also may configure what wild pets you want to capture: rares? the ones you don't own?

      Let's look how this configuration can be done.

      1. Configuring WHAT you want to level: Selecting your pet team

      [​IMG]
      Picture 1. "Min Level" switch and "Team Selection" results highlighted.

      Here is the part of the General panel with two most important places to look at while configuring the subset of your pets which you want to level with Prosto_Pets: (1) "Min Level" number and the resulted contents of the team. Raising Min Level will raise the minimum level of pets that Prosto_Pets will consider for leveling. Usually this is rather radical way to cut the size of the selected subset, because you generally have more 1's than anything else.
      Panel marked (2) shows the current composition of the selected team (not all pets you have are shown here, but only the ones you have selected). Text there is rather cryptic, but you'd better get used to it: it helps. Information it contains is actually is pretty simple: [1-25] #5=8, #6=1, #7=1 means you have selected to level a range from level 1 to level 25, which currently contains 8 toons level 5 (# denotes a level, = is followed with how many pets are selected at that level), 1 pet level 6, 1 pet level 7. (This is a noob toon, which has already used Prosto-Pets to level from 1 to 5). Note that 25 in panel 2 corresponds to 25 selected by "Max Level" number switch next to "Min Level" panel. This should always be the case.

      Min and Max levels are not the only filters that you can apply to your selection. Let's look at the others.
      "Min Pet Health" and "Min Ringer Health" specifies the health of the pet or ringers (see the definition of a ringer above) which would you like to have - at least. This is a soft filter. Meaning: if healthy pets are not available, they can be substituted with less healthy ones. But only if not available.
      "Use Wild Pets" - specifies if you would like to include in the selection wild pets or not. "Wild pet" is a pet caught in the wild, as opposed to got by other means. This is a "hard" filter. Non-wild pets will not be used under any circumstances, until checked.
      "Blues Only" - requests the bot to consider only blue pets when making a selection for leveled pets (and Ringers too). This is a "hard" filter. Non-blue pets will not be selected under any circumstances until checked.
      "Favs only" and "Ringer Favs Only" specify if only favorite pets should be selected for leveling and for ringer service, respectively. "Ringer Favs Only" can't be unchecked if "Favs Only" is checked. "Favorite" pet is a pet that you have marked as a Favorite in Blizzard's Pet Journal GUI. This is a hard filter, meaning no non-favorites will be selected if these boxes are checked.

      You may want to modify these filters and see how the team structure shown on Panel (2) is changed. You may also double-click on Panel (2) at any time to see the current team level distribution.

      ...To be Continued...
       
      Last edited: Jan 15, 2015
    5. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      Creating and Modifying Pet Tactics.

      All pet tactics are located in the "Pets" subdirectory. There is one file per pet family, like Aquatic.cs, Critter.cs etc. There is also one file that has a priority over others: Custom.cs. The idea is: you can place your modifications you do not want to share in Custom.cs, the ones that you can share - in the corresponding family file. My recommendation is: share, unless it is some highly personal modifications for PvP battles. I was slow to share my modifications to MyPetBattles logics (just because I am lazy), and they all are gone now - lost during WoW reinstalls. It was a pretty big job, involving dozen of pets, and now I should run my battles without it, or doing the same job twice. Have I shared, it would be preserved.

      Let's look at the individual file to see how the tactics is done. Let's open Aquatic.cs and look for the Crabs:
      Code:
                  else if (petName == "Emperor Crab" || petName == "Shore Crab" || petName == "Shore Crawler" || petName == "Spirebound Crab" || petName == "Strand Crab" || petName == "Strand Crawler")
                      aquatic_abilities = new List<AandC>()
      		{
      			new AandC( "Surge",             () => hpEnemy < hp	),  	    // Slot 1  -- makes it more aggressive
      			new AandC( "Renewing Mists",    () => buffLeft("Renewing Mists") < 2	),  	// Slot 2
      			new AandC( "Healing Wave", 	    () => hp < 0.7 ),	                        // Slot 2
      			new AandC( "Shell Shield", 	    () => buffLeft("Shell Shield") < 2 ),	    // Slot 3
      			new AandC( "Snap" 			),	// Slot 1
      			new AandC( "Surge" 			),	// Slot 1
      			new AandC( "Whirlpool" 		)	// Slot 3
      		};
      
      What we see here. Big "if" above specifies that all different Crab species are served by the same logic below. They all have the same abilities so it's convenient to have them in the same place. But you may separate them and create different logics, say making Emperor Crab more aggressive and Shore Crab - more defensive.
      The list below is what is called "Priority Selector" consisting of "Decorators". That simply means the list elements are checked in the specified order and if the condition is fullfilled - the ability is used. If there is no condition on the line - the ability is used unconditionally.
      So, the first one to be checked is "Surge". It is used if an enemy's health (%) is less than our's. Surge is a pretty nasty ability, it always goes first, so basically we are making sure if the opponent starts to loose the battle that it will loose the battle.
      Other lines are checked only if it is we are below on HP (or if the Surge is not configured). In this case - if we are behind on HP - we are taking care of healing ourselves and applying the shield. Priority is: first heal ourselves if needed, then apply shields if needed. Note that "Renewing Mists" and "Healing Wave" are on the same button, so they do not actually compete. Either of them competes with Shell Shield", which is below in the order.

      Conditions are pretty obvious. Less obvious are these 4 symbols: "()=>". They denote "parameterless lambda-function" but all you should know: they should go as is before any condition. And be absent if there is no condition.
      3 lines below do not have a condition attached. So they are executed unconditionally. There is again "Surge", this time - without a condition. Note that "Snap" is not present above, that means if a crab is equipped with the "Snap" instead of "Surge" it will apply defenses before attacking - always, even if enemy HP% is lower than others. So, simply switching the crab from "Surge" to "Snap" makes it more defensive, with the same logic.

      But. "Whirlpool". It is also unconditional but goes below the "Surge", meaning: it will never be executed. Is it a good thing? Probably not. Let's move Whirlpool above button 1 abilities. Question is: should we attach a condition to it? Let's read the description. "3 round cooldown". That's ok. We do not need to check that: if ability is on cooldown - it will not be used anyway. Further: "in two rounds the opponent's pet will take xxx damage". Could you understand that? What will happens first: cooldown expires or the Whirlpool fires? We do not want to re-apply the Whirpool if it has not fired yet. Probably we are ok without the condition, but better be safe than sorry:

      Code:
      			new AandC( "Surge",             () => hpEnemy < hp	),  	    // Slot 1  -- makes it more aggressive
      			new AandC( "Renewing Mists",    () => buffLeft("Renewing Mists") < 2	),  	// Slot 2
      			new AandC( "Healing Wave", 	    () => hp < 0.7 ),	                        // Slot 2
      			new AandC( "Shell Shield", 	    () => buffLeft("Shell Shield") < 2 ),	    // Slot 3
      			new AandC( "Whirlpool",    ()=> !debuff("Whirlpool") ),	// Slot 3
      			new AandC( "Snap" 			),	// Slot 1
      			new AandC( "Surge" 			),	// Slot 1
      
      We will apply Whirlpool only when it is already gone from the enemy. "Debuff" here means an enemy aura. Even beneficial enemy auras are called "debuff". Our auras are called "buff", even detrimental ones. This is for historical reasons and probably we should changed it . For something less confusing. Eventually.

      What can be placed in conditions? Full list of functions that can be used in conditions is located in PetTacticsBase.cs, in the same "Pets" directory. Here's the current list:
      Code:
              public static float hp // our active pet HP %
              public static float hpEnemy // enemy active pet HP %
              public static int speed // our active pet speed
              public static int speedEnemy // enemy active pet speed
              public static bool buff(string spell) // is buff (aura) "spell" present on our team or on our active pet
              public static int buffLeft(string spell) // number of turns that is left for an aura (-1 if aura is not present)
              public static bool debuff(string spell) // is aura "spell" present on enemy team or on enemy active pet
              public static bool weather(string name) // current weather, empty of none.
              public static bool shouldIHide // enemy has implemented Lift-Off, Burrow, Chew or such: he is invulnerable and will strongly hit on the next round. Used to create counter-tactics.
      
      This list can be expanded - and was already expanded since this page was published. Use Pets\PetTacticsBase.cs to check the current state. You can use even the functions not included here, but it's not recommended: not included things can be changed without notice.

      Now, the procedure to follow.
      0. IMPORTANT: copy the exisitng "PetFamily".cs file to a safe place before modifying it.
      1. Modify it. Keep attention to having all commas "," in place and particularly to these little things "()=>" before conditions.
      2. Close HB, restart HB. If there is no more Prosto_Pets in the bot list - check the log for errors. There will be a line number that caused a compiler to reject your addition. Goto to step1. Check missing commas, extra commas, ()=> and misspels.
      3. Prosto_Pets is in the bot list. Congratulations! Your first logic is ready.
      4. Try it, test it, modify it.
      5. (Optional, but surely recommended). Publish it in this thread, so it can be included for everyone to use and admire.
       
      Last edited: Jan 11, 2015
    6. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      Gathering Pet Info, creating your own Profiles.

      Contents:
      1. Gathering Info.
      2. Gathered Info Format.
      3. Converting Gathered Info into Profiles.
      4. Some Programming Tools to Help Converting.


      1. Gathering Info.
      To gather the information about pets met by you on your way simply check the checkbox "Record Pets" on General tab. It will record info about the pets you've seen and the pets you've fought.
      The most obvious task though is creating a personal profile for some zone or sub-zone. This is better (faster) done without fighting, so you may want to check "Do Not Engage" checkbox also.
      Next, is to decide how you would gather information: by manual route traversing or using a profile pre-made for another task. The most obvious profile to choose is some profile created for some "Explore" achiev. This profile will visit all sub-zones of a zone, and Prosto_Pets will record all pets met. This is how profiles included in PetZones subdir were gathered. (TODO: add Explore profile creators to Credits).

      There are 2 types of Explore profiles. GB2 profiles and Questing profiles. GB2 profiles can be used directly with Prosto_Pets. Questing profiles may have coordinates in the form of MoveTo (X,Y,Z) instead of Hotspot (X,Y,Z), but they may be easily converted to Hotspot format required by Pro_Pets. Exact details are beyond the topic of this guide, just get the idea: either move by hand or by some Hotspot list in the prepared profile.

      2. Gathered Info Format.
      All Hotspot with pets met are recorded in the directory Bots\Prosto_Pets\Pet_Reports in the file with a name Zone_PetReport.xml, e.g. Elwynn Forest_PetReport.xml.
      Prosto_Pets bot does not do any fancy processing, it's just recording what it sees, line by line. e.g:
      Code:
      <Hotspot X="1640.62" Y="-1354.111" Z="4.31748"/>
      <!--Seen Name="Zangar Crawler"-->
      <!--Seen Name="Zangar Crawler"-->
      <!--Battle Name="Zangar Crawler"-->
      <!--Battle Name="Spider"-->
      <!--Battle Name="Mossbite Skitterer"-->
      
      Here we see:
      Hotspot - this is the location where a pet was sighted. Pet's location to be precise. Pet's name is under the "Seen" record: Zangar Crawler. There is also another Zangar Crawler at the same Hotspot. We do not create a new Hotspot record if a new pet is within 200 range from the current Hotspot. So while we do not know the exact coordinates of the 2nd crawler the bot will see it while visiting the Hotspot the next time. Or not, if the pet is dead.
      Now, there is a battle name record. That means there was a battle with Zangar Crawler joined by Spider and Mossbite Skitterer. This is funny but useless info thrown in just because we can. Or may be not. We'll see.

      As I said, Prosto_Pets does not perform any fancy processing, but except one thing. It remembers the GUIDs of the pets met in a zone while in that zone. It will not record them twice until the zone has changed. Going through Elwynn Forest, than to Duskwood then to Elwynn Forest again may result in double-registering some pets and related Hotspots. "Seen many times - recorded once" policy is maintained while the observer is in the zone though.

      3. Converting Gathered Info into Profiles.
      To convert the gathered PetReport to a profile that Prosto_Pets Can use for navigation only two things are absolutely necessary: 1) add a profile header, 2) add a profile trailer. Here they are:
      Profile header:
      Code:
      <HBProfile>
        <Name>04-06 EK (Ground) Redridge Mountains (15 Hs,35 Pets) by Prostak.xml</Name>
        <MinDurability>0.4</MinDurability>
        <MinFreeBagSlots>1</MinFreeBagSlots>
        
        <MinLevel>1</MinLevel>
        <MaxLevel>101</MaxLevel>
        <Factions>99999</Factions>
        
        <MailGrey>False</MailGrey>
        <MailWhite>True</MailWhite>
        <MailGreen>True</MailGreen>
        <MailBlue>True</MailBlue>
        <MailPurple>True</MailPurple>
       
        <SellGrey>True</SellGrey>
        <SellWhite>True</SellWhite>
        <SellGreen>False</SellGreen>
        <SellBlue>False</SellBlue>
        <SellPurple>False</SellPurple>
      
      <Vendors>
      </Vendors>
      
      <Mailboxes>
      </Mailboxes>
      
      <Hotspots>
      
      You may want to change a string between Name and \Name tags though.
      Profile trailer:
      Code:
      </Hotspots>
      <Blackspots>
      </Blackspots>
      </HBProfile>
      
      That's it. You do not need to remove "Seen" and "Battle" enties since they will be ignored by (any) bot anyway. Load the combined file (Profile Trailer + PetReport + Profile Trailer) file into Prosto_Pets (Load Profile button) and hit Start. No, wait. One important thing: Chosing Profile Name.
      Prosto_Pets uses two numbers at the beginning of the file name to determine the level of pets it is just asked "to serve".
      04-06 EK (Ground) Redridge Mountains (15 Hs,35 Pets) by Prostak.xml ; The range 04-06 at the beginning of the file name tells the bot that you are interested in pets level 4 to 6 and it will ignore all pets whose level differs too much from this range.
      EK also tells the bot which continent the profiles refers to, Please include the code on your own profiles to avoid the possible confusion.
      Codes are: EK - Eastern Kingdoms, KALI - Kalimdor, OUT - Outland, NOR - Nothrend, PAN - Pandaria, DRA - Draenor. Cataclysm zones are currently marked with CAT, but this may change in the future to EK and CALI where appropriate. Please refer to Prosto_Pets\PetZones for file naming samples.

      Finally, there is a notice how many hotspots and pets are inside the profile: (15 Hs,35 Pets) - it is not (currently or in visible plans) used by the bot, but it will greatly improve your own life if included. You can immediately see how "good" the profile is, before loading and observing it's behavior. Highly recommended.

      4. Some Programming Tools to Help Converting.

      Here is the very simple tool I've made to help me automate the tasks mentioned above. Nothing fancy: it scans a hard-coded directory (need to be changed before use), creates a "Profiles" sub-directory and performs all the tasks outlined above: choses a proper name, counts pets and hotspots, attaches the header and the trailer.

      This is the place to do more fancy processing if needed: eliminate duplicates (too close hotspots), create optimal routes and what not. Nothing is there so far. You are free to improvise. Or not.

      Upd. Version 2: removes duplicate (too close to existing ones) Hotspots:
      View attachment Pets_Reports_Processing_v2.cs
       
      Last edited: Jan 18, 2015
    7. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      Questions and Answers

      Many things that I was going to described here are already asked and answered. So why I just not scan the forum and add here good questions and (not necessarily just as good) answers. (Yes, I am lazy. But there is only one thing in the world that is WORSE than a lazy programmer. It is a programmer who is NOT lazy). So. (And if somebody does not want to see his/her name here - just let me know).

      Be careful in publishing these numbers. They are eliminated from the logs (you can only see them on your GUI now) and for a good reason: publishing them can reveal your identity to those who control databases.
      So, either modify them before publishing or use approximate descriptions, like "More than 40".


      Yes, thank you, nice explanation.

      C:\Users\Name\Desktop\Honorbuddy 2.5.12441.761\Bots\Prosto_Pets\PetZones\01-02 EK Elwynn Forest (87 Hs,321 Pets) by

      This is the directory it looks for a profile,
      but here's there you have installed it: c:\Users\Name\Desktop\Honorbuddy 2.5.12441.761\Bots\Prosto_Pets\trunk\Prosto_Pets\
      Instead of \Bots\Prosto_Pets to \Bots\Prosto_Pets\trunk\Prosto_Pets

      The best way now is probably to delete the current install and repeat the exact procedure as described in the top post.
      (There were some people giving advice how to improve the recommended procedure, but "improvements" may result in bad installs).
      There are two possibilities, I think.
      1. Use relative mode and raise all the bunch at once (slow, but steady). Current relative params should do, you may adjust them as you go. Goal is to engage as high level opponents as your pets can win without dying (or, only higher-level pets die). This will capture you rares also.
      2. Raise half-a-dozen good Ringers to 25 and go to Pandaria for Ringerx2 mode. Good Ringers: good dps + self-healing. Like crabs (they have good defense plus an attack that always goes first), also some Crimson Dragon. This approach will give you less rares, though.

      So, probably Relative. To capture more (and different) rares you may want to tweak zones - I have selected them to minimize travel time between, not for diversity.
      And this will be a slow journey. 44 is a big number and you'll get more pets on the way. You may want to reduce it by selecting some Favourites and raising only a subset first - this will give you more feeling of a daily progress. But it's a matter of personal taste.

      I forgot to say "Thank you" for this, but this is very interesting and valuable info. A rough estimate of what times are we looking at.
      It would be interesting to check what improvements have the most effect. Like better pet tactics vs optimal profile paths etc.

      Do not use lock, use Min Level bar to raise the selection limits to the LOWEST of what you want to level.

      I need a log to be sure (recommended way is: put it in a shared folder of your Dropbox and send me a link to a file through PM) but it seems indeed like a Tile loading-related problem. But so far I've observed it for ground-only toons, not for flying ones (ground toon needs a ground coordinate, and it HB would not give it until I give it to HB first, kinda Catch 22). It would be interesting to look at the log.

      You need to queue manually with this version. It should fight when fight starts, but I never tested it.

      Have not noticed this. Do not use Capture Mode. At least, not at first. It has some unusual logic inside, that I thought should be convenient, but probably miscalculated. It tries to select pets based on the zone selected, not to select the zone based on the pets you selected. It's for "I need some pets from specifically this zone" - you do not need it at the beginning.

      Personally I like very much "Emperor Crab" and its twin brothers ("Shore Crab", "Shore Crawler", "Spirebound Crab", "Strand Crab", "Strand Crawler"). With "Surge" equpped they have a nice offensive / defensive combination, very little wild pets in Pandaria can beat it (only some birds). Another thing I love is "Wild Crimson Hatchling" with a Healing Flame. Healing is important if you have only a few ringers (high-levels). Anubisath dies more often than Crabs. I am using Chrominius for specialized tasks only, like manual taking on Legendary Pets, so can't tell. I was using a Clockwork Gnome a lot in the past, but not sure if the current tactics are ok. Probably should look into them.

      To fully enjoy our product the customer should try to select a favorite pet and modify its logic by himself :). The guide is just posted. But probably some period of observation and reflection is needed before one started tweaking logic files. Anyway, it's possible.


      3 is a bit low number for an industrial-strength solution :) you know: conveyor belts, hundreds of pets...
      Yes, the design is that bot tries to level a lower pets first. It puts them in the first slots so they receive some hits and a share of XP, and then replaces with a higher ones to win a battle. That's a principle of operation.
      You may forcibly lock (there's a checkbox) level 13 in a 3rd slot, but what's the point?

      The bot's cycle is determined by a Rez CD (8 mins). You should have as much pets leveled simultaneously so that the bot can use some while waiting on CD to heal your favorites. Otherwise, it can wait for Heal CD doing nothing, but it would be a waste of time. So I'd recommend to Fav at least 10 level 13 to raise simultaneously. Level 23 will be picked up later.

      Or. You can lock all of them. Put Health swap at 100 for two low-levels. They will both have a share of XP but let level 23 finish the battle. It can have enough health to survive enough battles. Yeah, could work too.

      Over use is one obvious thing. Untested profiles is another. It is less dangerous for a flying toon: it can (almost) always get from a point to a point and has a 15 sec timer for a battle start. For a ground toon I'd recommend a "dry" run first, with "Do Not Engage" checked. I'll do the same for Draenor profiles before publishing them (Shadowmoon Valley is almost ready), but there are just too many of classic zones.

      No! The whole point was to move from using unlocker to using HB. This is an implementation in C# of the similar (but modified according to my own experience) functionality.

      Getting banned is always a possibility when botting. This bot does not use a LUA unlocker. But it introduces a new area to botting. On one hand, it diversifies botters' activities making them harder to track. On the other - it introduces a new attack vector, potentially introducing new weak points.

      No Lua unlocker here.

      This is an attitude that I understand. Note: doing Pet Battles 24/7 definetely can compromise you, same as Mining 24/7 and posting large collected quantities of ore to AH. But probably Mining 8 h + Petting (uhm? familiar word) 8 h is safer than Mining 16 h. Will AH pet prices be worth it?

      It is a very good question, but I can't answer it. I've tried to avoid obvious potential unmasking decisions, like... but better not to discuss it in the open forum. Code is open, community can review it - but even then we all may miss something obvious allowing Blizz to unmask the user. No warranties here are possible.

      So far the danger is pretty big: untested profiles can get you to "object humping", some security slip can get us all banned. So while I am pleased that people were able to run this bot unattended - this is a risky thing to do, not recommended.
       
      Last edited: Jan 12, 2015
    8. SeijuroHiko

      SeijuroHiko New Member

      Joined:
      Dec 14, 2013
      Messages:
      10
      Likes Received:
      0
      Trophy Points:
      0
      Okay. Ran this for about 3 hours and I really like what I am seeing, I started the bot in vale of eternal blossoms and it battled its way south through Vally of the 4 winds, then Karasang wilds before finally flying all the way into the water leading to fatigue and death... At about 30 mins in, it kinda just stopped doing stuff... stood still untill I manually entered pet combat then even then it took a while but it finally started attacking. This is after a pet battle with a softshell turtle thing at 56.54, 71.07 in Vally of the 4 winds. About 2 hoursish from then, it got stuck at 53.59, 34.73 in Karasang wilds trying to battle a pet between some steps and a rock that I couldn't fit into. Ending my journey needing to spirit rez. Here is a log (I hope).

      EDIT: removed log as requested.

      I think I followed all of the instructions on the "how to attach logs" post.. if not let me know.

      Things I would like to see but don't know are even possible...:
      1. Complete all of my pet battle dailies, with preset teams or teams made to level up a pet. Even if I have to run a different profile per continent.
      2. Capture pets based on breed. I don't always need rares but specific breeds. I would even take a grey to stone up.

      Things I like.: It is much more simple than pokehbuddy. No need for battle area plugin or the pet swapper. But the best feature is probably that it doesn't just spam 1 over and over... I know this isn't fix for EVERY pet yet but I'm still excited for the ones that work so far and am REALLY looking forward to the rest. I am aware that pokehbuddy has pet battle logistics for pets but i found it so difficult to get and add I just gave up on them.
       
      Last edited: Jan 9, 2015
    9. HBfanboy1980

      HBfanboy1980 Active Member

      Joined:
      Jan 16, 2012
      Messages:
      1,139
      Likes Received:
      11
      Trophy Points:
      38
      OK FINALLY!

      I am so all over this. Thank you sir, and prepare for the masses to become your fanboys if this is as good as it sounds from your first post.


      EDIT: I wanted to ask if you have the intention to move this over to the buddystore after you have thouroughly vetted? I'm interested regardless I just think people will be more welcoming if they know one way or the other. Thanks for all your work.
       
      Last edited: Jan 7, 2015
    10. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      My personal plans as far as they are clear to me are described in "Personal Plans" section. That is:
      1) Draenor (sure), 2) big guys automation (not so sure) - will do it if repeating some battles by hand will become intolerable. Will think how to do it best, anyway.

      I do not have any exact plans farther than that. I am naturally curios about Buddystore. The idea of making some money out of a hobby is surely tempting. But this will mean a commitment... and some unnecessary work, line replacing the remaining other's people code - there's like 30% of it still. So: no exact plans (I am not yet a Community Developer even - though surely will apply based on this product) but no promises like not to even look there.

      Probably I can promise this: all the code, pet tactics and profiles that the community will help to improve - will remain available to community. I like how Garrison Butler transition was handled: last open version remains on Github free to use (but unsupported).
       
    11. HBfanboy1980

      HBfanboy1980 Active Member

      Joined:
      Jan 16, 2012
      Messages:
      1,139
      Likes Received:
      11
      Trophy Points:
      38
      perfect answer, i've had a look and my first impression that I like the GUI. Very responsive and so far easy to understand. I'll do some runs with it when I'm done raiding.
       
    12. Mikra

      Mikra New Member

      Joined:
      Jun 6, 2011
      Messages:
      20
      Likes Received:
      0
      Trophy Points:
      0
      So I goto my HB folder, then into Bots folder and create a folder called Prosto_Pets and click on svn update and it downloads the required files, but then when I start HB up its not showing as an option from the bot base?
       
    13. Valpsjuk

      Valpsjuk Member

      Joined:
      Nov 10, 2014
      Messages:
      397
      Likes Received:
      4
      Trophy Points:
      18
      Seems like it thinks Iron Starlette is a humanoid pet?

      I get this as soon as it uses it in battle:

      [Pets] Alert: Unknown humanoid pet: Iron Starlette
       
    14. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      It's actually names all unknown mechanicals as humanoids. But it's just a string in the log. Thanks for catching this that soon - will avoid the confusion.
      And I'll throw in some tactics for Iron Starlette shortly.
      Upd. Was not that easy, since there was no good tactics for Mechs yet.
      But here as I remember doing it in old MyPetBattle days:
      Code:
      			new AandC( "Explode",       () =>   hp < 0.1 	),	        // Slot 3 TODO: check the chances to win conventionally
      			new AandC( "Powerball",     () => 	speed < speedEnemy),	// Slot 2  against Undead
      			new AandC( "Toxic Smoke" ,  () =>   ! buff("Toxic Smoke")			),	// Slot 2
      			new AandC( "Wind-Up",       () =>   ! buff("Wind-Up") 		),	// Slot 1
      			new AandC( "Supercharge",   () =>   shouldIHide ),	            // Slot 2
      			new AandC( "Wind-Up",       () =>   buff("Wind-Up") && buff("Supercharge") && ! shouldIHide ),	// Slot 1
      			new AandC( "Demolish" 			    ),	// Slot 1
      			new AandC( "Powerball"              ),	// Slot 2  against Undead
      
      Will explode if hp is low - hope to catch an enemy after revival.
      Will powerball until the speed is higher (not sure if actually needed)
      Will use Toxic Smoke if not applied already.
      Will wind-up once, the first time.
      Will Supercharge after the enemy has used a hide-strike ability - to catch him.
      Will Wind-up the second time if supercharged and enemy is not blocking.
      Demolish or Powerball otherwise.

      This will be in Pets\Mechanical.cs . Looks I need to test first, a bit complicated.
       
      Last edited: Jan 8, 2015
    15. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      Are you sure you've used a correct link for SVN update? (The one in the post).
      Can you name a couple of files that are now in your Prosto_Pets folder? Is Prosto_Pets.cs there?

      Another reason may be a compilation error. This is unlikely, since other people seem not to have it. But if yes, I will need your log.
       
    16. Valpsjuk

      Valpsjuk Member

      Joined:
      Nov 10, 2014
      Messages:
      397
      Likes Received:
      4
      Trophy Points:
      18
      Next unknown:

      [Pets] Alert: Unknown magic pet: Netherspawn, Spawn of Netherspawn

      Edit: Sorry dude, sounds like I'm just complaining and finding errors :)

      I must say I am so impressed with this bot base, it's so easy to use compared to the alternatives and I just love it already.

      Just one question, say I want to level just three pets to start off my "stable", how do I lock the team to say, one beast, one mechanical and one something else?

      N/M, I am an idiot.... Lock Pet was way to obvious :)
       
      Last edited: Jan 8, 2015
    17. julrevo

      julrevo Member

      Joined:
      Sep 6, 2012
      Messages:
      309
      Likes Received:
      1
      Trophy Points:
      18
      SVN off?
       
    18. Valpsjuk

      Valpsjuk Member

      Joined:
      Nov 10, 2014
      Messages:
      397
      Likes Received:
      4
      Trophy Points:
      18
      SVN works fine for me
       
    19. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      Huh? I've just tested checkout and it seems ok. Or what do you mean?
       
    20. julrevo

      julrevo Member

      Joined:
      Sep 6, 2012
      Messages:
      309
      Likes Received:
      1
      Trophy Points:
      18
      click on your svn link from the first link and get 404 error
       

    Share This Page