• Visit Rebornbuddy
  • ExilebuddyBeta Developers Testing/Feedback Thread

    Discussion in 'Archives' started by pushedx, May 22, 2014.

    Thread Status:
    Not open for further replies.
    1. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,258
      Likes Received:
      290
      Trophy Points:
      83
      ExilebuddyBeta #808 is finally ready for developer testing/coding! This thread will serve as your quick start guide to the current state of the Beta build and what is needed from users interested in using it. In addition, this thread is for developer feedback/questions/comments/requests about the current Beta.

      ExilebuddyBeta is currently in a "for developers" state. There is no GrindBot7, no Exile CR, or any other finished bot/routine/plugin code provided, as there is in Release. The new bot code will be added later after developer testing, as it requires a total rewrite of just about everything to solve the various issues the old bot has shown. Right now, the focus is devloping and testing this new Beta to make sure developers have everything they need to work with the Exilebuddy API. What is provided right now, are examples of the bot/routine/plugin implementations with a few placeholder code examples. These are setup in a way you can copy/paste the structure, do the necessary renaming, and have your own code ready to be added pretty quickly.

      The purpose of this Beta is simple: start gearing up community driven Exilebuddy development, like the other well established Buddy bots. We will still provide a simple bot to be used with Exilebuddy, but it's time for the community to be able to do their own things, without Exilebuddy getting in the way (as it has in the past).

      To get started, please read over the http://www.thebuddyforum.com/exileb...guides/160806-exilebuddybeta-users-guide.html. It contains just about everything you need to get started with using the new UI. The last section in the guide goes over some of the development basics, and links to some new guides. Most of these guides are not complete yet, because they take a lot of time to adequately write. As a result, content will be added based on what developers have issues with from working with the Beta.

      Bot development is by no means easy, so it would help if you have some experience using C# and have a general idea of programming. Some things we'll not be able to help with, as they fall outside the scope of what this thread is for, but if that is the case, we'll let you know. For example, asking how to put together a bunch of different bot parts to make a complete bot is not doable, but if you need help finding what bot parts you need to do something, that is doable. So, we can't help you write a bot that does Maps, but we can help point you in the right direction of what pieces you need and what considerations have to be made. Once we have our new bot done for Beta, then this scope can broaden some, but for now, developers must be able to do most of their own work.
       
    2. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,258
      Likes Received:
      290
      Trophy Points:
      83
      Latest Download

      ExilebuddyBeta Changelog

      #863 [PoE 1.1.5.6]
      • LokiPoe.GuiControlSize updated to use UI scaling correctly now.
      • Added the API formatting function to DatStatWrapper. The new ApiId property now has the value we use.
      • Added a script to generate our StatType.cs file. This replaces an old private tool.
      • Scripts now dump to a folder called dump, to keep the root bot folder cleaner.
      • Added scripts to dump Chests and WorldAreas.
      • Removed old stuff from GameConstants.
      • Added LokiPoe.SupportedClientVersion to get a client version number.
      • Added Scripts for dumping BaseItemTypes, BuffDefinitions, and Stats. These are to replace the old private tools we had, and so users can locally have the information rather than rely on us.
      • Added a BotStats plugin example that shows tracking exp and exploration complete. To add loot tracking, you'd just event handle OnLoot like ExilebuddyRoutine or the PickitBot shows.
      • BotManager and RoutineManager now do not fire change events if the new bot/routine are not different objects.
      • WorldAreaDat.Instance.Entries replaced with Dat.WorldAreas.
      • WorldAreaEntry replaced with DatWorldAreaWrapper, which contains access to a lot more information than before.
      • LokiPoe.CorruptedAreaNames removed in favor of obtaining the information from Dat.WorldAreas.
      • LokiPoe.GoverningTownName, GoverningTownId removed in favor of accessing it from CurrentWorldArea.
      • Added GameData.Dat.BuffDefinitions, BaseItemTypes, Stats, Chests. Before, external tools were used to dump the values from the GGPK files, so they were never available though the API itself. This is so those tools are no longer needed.

      #862 [PoE 1.1.5.6]
      • ChestPoi is now public (used to be internal).
      • Added PoiManagerInfo to expose the current poi name/desc to the gui. This logic used to be in ExilebuddyBot.
      • Added ExilebuddyBot.EnableStashingOnFreeSpacePercent, which allows users to use the FreeSpaceToTriggerStashingPercent setting. It is now defaulted to false, so the bot will now stash each time in town as it was.
      • BotState.NeedsToStash added to handle a case where force stashing is necessary, but FreeSpaceToTriggerStashingPercent would otherwise prevent it. Several pois updated to use this.
      • ShrinePoi now only executes if there is a shrine within 30 units. This is for consistency with other Pois and to make sure the bot doesn't try to travel too far too an off-screen poi.
      • BossFarmExplorePoi now uses PathDistance for checking area transition distances to try and avoid getting stuck behind doors.
      • BossFarmBot now uses ExilebuddyBotSettings.DeathsBeforeNewInstance.
      • A new Poi tab was added to the gui to help debug Poi issues. It is for debugging purposes.

      #861 [PoE 1.1.5.6]
      • AreaPather updated to handle traveling through towns better and the zones right before a town (hopefully).
      • TravelToGrindZonePoi updated to handle towns in the path correctly (hopefully).

      #860 [PoE 1.1.5.6]
      • BossCombatPoi / boss_combat logic removed since it does not fit in with the current design (BossFarmBot).
      • Targeting now includes bosses via a unique check (BossFarmBot).
      • BestTarget logic reverted to before to handle bosses that spawn adds (BossFarmBot).
      • HandleMerveilTheSirenCombat / HandleMerveilTheTwistedCombat / HandleBrutusCombat are still in the CR but not used as specific boss farming logic would have to be added, but that goes against the design of the generic nature of the routine. A better example will be shown in ExampleRoutine most likely (BossFarmBot).
      • Fixed a bug where ExplorationCompletePoi did not disable failed handlers across multiple calls.
      • GemLeveler should now not clear skillgems when starting the bot on character selection or title screen.
      • Fixed caching issues in ExilebuddyRoutine.
      • Fixed the minion/cast issue where the bot appeared to be targeting the minions. It wasn't targeting the minions, but rather the last checked location for a dead body due to incorrect logic.
      • Added boss combat logic placeholders for Merveil (BossFarmBot).
      • Fixed minion refresh logic from not correctly clearing the type/skill id (ExilebuddyRoutine).
      • Fixed an infinite execution cycle in HandleInventoryItemsPoi.

      #859 [PoE 1.1.5.4]
      • Added ObjectManager.MerveilTheSiren and ObjectManager.MerveilTheTwisted.
      • Added support for Merveil farming.
      • StuckDetection now uses TimeInArea rather than TimeInInstance.
      • Experimental change to StaticStringCache to clear it to prevent issues from long running bots.
      • LocalData.WorldAreaId and WorldAreaName now do not use StaticStringCache to avoid an issue where the read is done too soon.
      • Pois now prefer AreaStateCache's cached version of WorldAreaId and WorldAreaName rather than from LokiPoe.
      • TakeAreaTransitionCoroutine delay is now set to 5s for both new instances and not as some issues were happening from it not waiting long enough.
      • AreaStateCache.TimeInArea added to track local time in an area and allows for resetting via ResetTimeInArea(). This is for boss areas.
      • BossFarmSettings now has TotalBossCount and BrutusCount, which are set through a BossFarmBotEventManager.BossFarmComplete handler.
      • Added BossFarmBotEventManager to handle events for the bot.
      • NeedsTownRun is now an int where: 0 - no town run needed, 1: town run and return via portal, 3: town run, and don't take portal back (for boss farming or switching grind zones)
      • OpenWaypointCoroutine now uses PathDistance for the waypoint so it doesn't try to approach from the low ground in A1.
      • TownRunPoi updated to use the new NeedsTownRun setup.
      • Added Inventory.InventorySpacePercent. It will return the % as an int (e.g., 50 for 50%) of the number of inventory space left.
      • StashPoi now takes a delegate for triggering stash runs based on InventorySpacePercent. This is to eliminate needless town runs.
      • TownRunPoi will now only take a waypoint to town if it is close enough, and the town run was triggered with a sepcific flag. This is for handling boss areas -> town trips so portals are not used.
      • Added a basic BossFarmBot with initial support for running Brutus. Please remember this bot is a WIP, so there might be bugs or other unexpected behaviors. In addition, customization is very limited as logic is worked on. Please report any issues.
      • NewInstanceOverrides logic moved into AreaStateCache from BotState, as it's globally useful.
      • Most Pois that had dependencies on ExilebuddyBotSettings or BotState have been updated to take delegates for get/set for the settings they need. This allows users to make use of the Pois and solves the shared variable issue. The changed Pois are: SortInventoryPoi, TravelToGrindZonePoi, LootPoi, ResurrectPoi, TownRunPoi, HandleInventoryItemsPoi, PortalBackToGrindZonePoi, StashPoi, and WithdrawPoi.
      • TravelToGrindZonePoi will now handle going back to town to get to a grind zone by setting the NeedsTownRun flag.
      • Fixed a bug in AreaPather where the town waypoint connections were incorrect. The bot will now generate a path through town correctly. For example, going from Prisoner's Gate -> Upper Prison now goes through Lioneye's Watch, as sopposed to skipping directly to Lower Prison.
      • Fixed a bug where the AreaPather connection between Prisoner's Gate and Upper Prison was wrong due to the area name changes a while back.
      • Added LokiPoe.ObjectManager.Brutus.
      • Added a 'boss_combat' logic handler to ExilebuddyRoutine for the new BossFarmBot.
      • Placeholder logic for the Brutus fight has also been added via HandleBrutusCombat.
      • Added logic to handle ProximityShield in ExilebuddyRoutine.
      • Added Actor.HasProximityShield.

      #858 [PoE 1.1.5.4]
      • Added basic trap support to ExilebuddyRoutine.
      • PlayerInventory.FindBestStashTabForItem now takes a maxStashTabsToUse param.
      • StashItemsCoroutine now passes MainSettings.MaxStashPagesToUse to FindBestStashTabForItem.
      • Added static type properties to Item and InventoryItem for ease of use for checking metadata paths. For example, the following were added: IsMapType, IsMapFragmentType, IsCurrencyType, IsBeltType, ... etc...
      • Fixed a bug where WithdrawItemsCoroutine would withdraw from stash tabs past MainSettings.MaxStashPagesToUse.
      • ExplorePoi logic reverted to reduce the blacklisting of explore nodes. The old logic could result in a rare exploration lockup with blacklisted mobs.
      • Added a TransferBot example that shows using less commonly used aspects of the API. Please see/modify the code before running it.
      • Temporarily disabled the blacklisting (for stuck/desync) done in ExilebuddyRoutine. It's a bit too aggressive and causing some issues.

      #857 [PoE 1.1.5.4]
      • Added additional Weapon information: MinDps, MaxDps, MinDamage, MaxDamage, MinElementalDamage, MaxElementalDamage, MinChaosDamage, MaxChaosDamage, MinLightningDamage, MaxLightningDamage, MinColdDamage, MaxColdDamage, MinFireDamage, MaxFireDamage, MinPhysicalDamage, MaxPhysicalDamage.
      • Updated Armor object to expose item data. EnergyShieldValue, BaseEnergyShield, ArmorValue, BaseArmor, EvasionValue, and BaseEvasion are now available.
      • Added a Shield object to expose item data. BaseChanceToBlock and ChanceToBlockValue are now available.
      • Item.Quality changed from uint to int.
      • Updated Weapon object to expose item data. CritialStrikeChance, BaseCritialStrikeChance, AttacksPerSecond, BaseAttacksPerSecond, BaseMaxPhysicalDamage, BaseMinPhysicalDamage, BaseWeaponType.
      • BaseComponent.IsCorrupted implemented.
      • Added Item.IsCorrupted to tell if an item is corrupted.
      • Added Chest.IsCorrupted to tell if a chest is corrupted.
      • GemLeveler does not execute if the player is dead now.
      • Added Map item support to the API. You can now obtain the map's level (as opposed to just the item level).
      • Fixed a bug where the filename was not saved in the Dev tab.

      #856 [PoE 1.1.5.4]
      • MeleeAoe will now not cast in ExilebuddyRoutine if there are not at least 3 mobs near the player in melee range.
      • Added configurable settings to StuckDetection.
      • Fixed a bug in Monster.CannotDie where the caster of the aura was not handled correctly (which is why the bot ignored them).

      #855 [PoE 1.1.5.4]
      • Updates for 1.1.5.4.
      • ShouldExplore spam should now be removed from ExilebuddyRoutine.
      • Added a QuestRewards plugin example that shows some basic logic of processing/accepting a quest reward.

      #854 [Poe 1.1.5.3]
      • StuckDetection plugin is now enabled by default so users can submit logs with stuck information.
      • Added some position/bounds logic to StuckDetection for stuck identification.
      • Added a PoiMetric class to track Poi execution metrics.
      • Added a system of poi metric tracking to PoiManager. The new StuckDetection plugin makes use of the API. PoiManager.PoiMetricLifetimeMs controls how long metrics are tracked. PoiManager.OnMetricsComplete can be subscribed to, to process the metric results.
      • Added PoiManager.OnPreExecute and PoiManager.OnPostExecute for poi execution so plugins can process the execution flow. The StuckDetection plugin makes use of this.
      • Added a new StuckDetection plugin for Exilebuddybot.
      • GemLeveler now saves settings after add/remove actions.
      • An execution error in IdPoi was fixed where if the bot died while id'ing, it'd get stuck.

      #853 [PoE 1.1.5.3]
      • MainSettings.MsBetweenTicks is now set to 15 by default for new configurations. Users can adjust this setting to change the bot execution speed. Lower values = faster execution, but higher overhead.
      • Added PoiManager.ClearBlacklist and BlacklistNames to get the current blacklisted names.
      • Aura logic now triggers on area change, to handle chickening.
      • UseLooseCandlePoi will now not execute if you are not grinding The Archives.
      • Added PoiManager functions to blacklist a poi name from being registered.
      • GemLeveler updated to properly distinguish between left/right hand and offleft/offright hand skill gems. Your Settings\GemLeveler.json settings files need to be deleted if you upgrade.

      #852 [PoE 1.1.5.3]
      • ExilebuddyBot now attempts to restart the bot if an exception occurs that would otherwise finish the main coroutine. This is something that will always happen after Chickening, because the logout cannot be detected in the coroutine logic at every possible execution point.
      • Added burning, shock, frozen, and bleeding flask logic to the AutoFlask plugin.
      • Actor.IsBurning added as an alias for Actor.IsIgnited.
      • Utility.LifeFlasks and Utility.ManaFlasks added.
      • AreaStateCache.HasBurningGround, HasLightningGround, and HasIceGround added. The AutoFlask plugin does not use flasks in areas with those stats. The burning ground might not be correct, so it needs testing.
      • The "Settings" tab in the main gui now only displays settings from enabled plugins. This is to address an issues where users might think a plugin is enabled (such as chicken) when it really wasn't because the settings is available.
      • Flask based pois removed from ExampleBot/ExilebuddyBot. The new AutoFlask plugin will replace that functionality. The AutoFlask plugin is enabled by default.
      • Chicken based poi removed from ExilebuddyBot. The new Chicken plugin will replace that functionality.
      • PluginManager.PluginEnabled and PluginManager.PluginDisabled events added so global plugin enable/disable event handling is possible (which the main gui now makes use of).

      #851 [PoE 1.1.5.3]
      • Fixed a bug where the namespace the new plugins reference needs to be changed for building. This is just a short term work around.
      • Fixed a bug where the GemLeveler would level multiple gems too fast.
      • Fixed a bug in AreaStateCache.OnStart where logic executed when the bot was not in game.
      • ItemEvaluator Blacklists now do not log anymore.
      • SkillListComboBoxConverter updated to add in the numeric skill ids at the bottom of the skill list. This solves a complicated issue for now involving the CR skills getting reset, which would be a bad thing.
      • Fixed a bug where the Refresh Skills button did not call LokiPoe.AcquireFrame.
      • Added a Schedule plugin that provides some basic run limiting logic.
      • BotGui.Controls moved to Loki.Utilities.Controls so 3rd parties can make use of them.
      • Loki.Utilities.Math now holds math stuff rather than Loki.Utilities. RD stuff updated to use the correct conflicting types as a result.
      • Added a RandomWaits plugin that provides a basic random town wait plugin.
      • Added Wpf.SetupTimePickerSelectedTimeBinding to bind the now exposed TimePicker control.
      • Fixed an issue where TspExplorer might not complete exploration if the final node is inaccessible, thus making the path get stuck at the end.
      • ExamplePlugin event handler logic updated to register/unregister in OnStart/OnStop rather than OnEnable/OnDisable.

      #845 [PoE 1.1.5.3]
      • Updates for 1.1.5.3.

      #844 [PoE 1.1.5.2]
      • AreaStateCache.Blacklist now has a log param to disable logging.
      • Added PickitBotSettings.MinimalMonsterRange.
      • PickitBot now uses PluginManager.
      • OnLoot event processing added to PickitBot.
      • Added a new bot example, PickitBot. This bot will loot items the player runs over based on the item filter settings. It is really basic and is being provided since the older version of EB had a similar example.
      • Configurations now support using the - character.
      • ItemEvaluator.OnSaved event handled so users know when the filter changes.
      • DefaultTargetingCalcuation now contains a static function RegisterOnSavedEvent that needs to be called to handle item filter reloading properly when default targeting is used.
      • ExilePather updated to support an Enabled/Locked flag so bots can not use it at all to get rid of the pathfinding generation overhead. A Reload function was added so users can Reload it after Enabling it again.
      • Fixed a performance bug in PathfindingExtensions where the cached values were never cached and always updated.
      • Removed ExilebuddyBot specific logic from AreaStateCache.
      • Added Add All / Remove All to the GemLeveler Plugin.
      • TspExplorer should now not get stuck on an ignored node due to location caching.

      #842 [PoE 1.1.5.2]
      • ExilebuddyBotEventManager added to handle various ExilebuddyBot specific events.
      • LootPoi now clears the interaction table on area change.
      • Item.ItemLevel is now an int rather than uint.
      • Logic updated in GemLeveler to refresh on start/stop.
      • Added an example of using the new ExilebuddyBotEventManager to ExilebuddyRoutine.
      • Implemented the new gui driven GemLeveler plugin.
      • Added InventoryItem.LevelSkillGemError to replace string errors.
      • InventoryItem.LevelSkillGem updated to use LevelSkillGemError rather than string errors.

      #840 [PoE 1.1.5.2]
      • Added basic totem logic to ExilebuddyRoutine.
      • Updated the gui so the log is always shown at the bottom of the screen.
      • Various core improvements and bug fixes.

      #839 [PoE 1.1.5.2]
      • Updates for 1.1.5.2.

      #838 [PoE 1.1.5.1]
      • Updates for 1.1.5.1.
      • ExilebuddyRoutine updated to try and handle !IsInGame state correctly by storing the spell id and carrying it through until you are actually in game.
      • Added AreaStateCache.StaticLocations to expose all registered locations.
      • Fixed buff logic in ExilebuddyRoutine to execute all buffs once, then throttle.
      • Started the process of adding static area detection to AreaStateCache.

      Archive 2
      Archive 1
       
      Last edited: Aug 3, 2014
    3. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,258
      Likes Received:
      290
      Trophy Points:
      83
      This post will organize various requests/responses/features and the current state/roadmap for them.
       
    4. darkbluefirefly

      darkbluefirefly Community Developer

      Joined:
      Nov 8, 2013
      Messages:
      1,927
      Likes Received:
      18
      Trophy Points:
      38
      Dude, this is such win, on the fly code testing and it's dam fast. Autologin, etc. All from one dev. Seriously, y u spoiling us? I'll get coding tonight from what iI've learned from you ^^.
       
    5. babosasa

      babosasa New Member

      Joined:
      Jun 22, 2012
      Messages:
      418
      Likes Received:
      0
      Trophy Points:
      0
      just tried the login function, the bot couldn't detect the character name, keep saying "character not found".
       
      Last edited: May 22, 2014
    6. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,258
      Likes Received:
      290
      Trophy Points:
      83
      Double check to make sure your character name is spelled correctly, case matters.

      If it still can't find it, logout to the Character selection screen, and switch to the Dev tab and do these steps:

      1. In the "Code" edit box paste in:
      Code:
      using System;
      using Loki.Utilities;
      using log4net;
      using Loki.Game;
      using Loki.Bot;
      using Loki.Bot.v2.Settings;
      
      public class MyClass
      {
      	private static readonly ILog Log = Logger.GetLoggerInstanceForType();
      
      	public void Execute()
      	{
      		using(LokiPoe.AcquireFrame())
      		{
      			Log.DebugFormat("Character: [{0}]", LoginSettings.Instance.Character);
      			foreach (var ch in LokiPoe.SelectCharacterState.Characters)
      			{
      				Log.DebugFormat("{0}", ch.Name);
      			}
      		}
      	}
      }
      
      2. In the "Assemblies" edit box, paste in:
      Code:
      Exilebuddybeta.exe
      log4net.dll
      greymagic.dll
      system.dll
      
      3. In the "Class" edit box, paste in:
      Code:
      MyClass
      
      4. Click the "Run Code" button.

      5. Switch to the "Log" tab and check the listed character names against your character name set in Settings.

      If you don't see your character name, then you are using the wrong account. If you do see your character name, and it matches case, it should be selecting it fine. As far as I'm aware, you can't have special symbols or any characters that would cause your character name to not match.

      If that still doesn't work, please send me a log, as it contains the exact reason why i's failing.
       
      Last edited: May 23, 2014
    7. Urgent2009

      Urgent2009 Member

      Joined:
      Mar 10, 2014
      Messages:
      182
      Likes Received:
      9
      Trophy Points:
      18
      I'm so excited about this. Will give it all I got in a weeks time!
       
    8. maths

      maths New Member

      Joined:
      Jan 11, 2014
      Messages:
      162
      Likes Received:
      0
      Trophy Points:
      0
      i know nothing in programming a bot or anything like that, espessially in English, will ill be able to use the new beta, i tried it and add no clue how to make it work, is it actually ussable? i have no idea where or how to set the area i want to bot, im i suppose to stay with the old release?
       
    9. randomstraw

      randomstraw Community Developer

      Joined:
      Jul 17, 2012
      Messages:
      1,611
      Likes Received:
      10
      Trophy Points:
      38
      the beta is ONLY for developement purposes right now.
      For actually farming use the stable version. (release)
       
    10. toNyx

      toNyx Well-Known Member

      Joined:
      Oct 29, 2011
      Messages:
      3,771
      Likes Received:
      35
      Trophy Points:
      48
      Awesome! can't wait to be at home to test this new code ! btw pushedx, could you add a Plugin section on the subforum so we can share the work, I already had a flask plugin working fine with settings etc, but since the code has been reworked I guess I'll have to fix issues before releasing it.

      Btw, are settings now in XML or still json? (I was using xml to store plugins settings)

      Great job pushedx, keep it up !
       
    11. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,258
      Likes Received:
      290
      Trophy Points:
      83
      The setting system is still json and will remain so. We always felt that it's an easy to use format that minimized clutter and is easy to work with.

      I'll ask Tony to do some forum reorganization soon, as the current layout doesn't quite correlate to the way EB is setup. This will not take place until after the Beta is made into the official Release, and all versions are compatible with each other, since otherwise we're going to have two sets of threads for everything, and it'll be confusing for users.

      However, since this Beta stuff is still in a testing phase, you can just post stuff in the Profiles section and just prefix your thread with [Bot/Plugin/Routine] if you wish and add a [Beta] prefix to it so people know it's for the beta version, as opposed to having a Beta suffix which makes it look like the actual code is in a Beta version.
       
    12. toNyx

      toNyx Well-Known Member

      Joined:
      Oct 29, 2011
      Messages:
      3,771
      Likes Received:
      35
      Trophy Points:
      48
      Okay, took a look at the stuff in this beta, and the first weird thing I found was the "Config" button removal for plugins...

      To be honest, when we had this button we could use any method to create forms and stuff, now we are stuck with a xaml strange thing (I don't manage to bind data to textboxes in it...)

      Right, XAML is kind of decent, customizable and have other benefits but you'll scare anyone who wants to start coding plugins... and this is not good. tried to migrate my actual plugin code to a XAML form my brain gave up and I broke some walls.

      Every other bots have a config button for plugins, this one should too. Easier to use/manage, and you're free to use any dev way for forms and stuff.

      Keep this button alive, and add the possibility to disable it if we don't need to or if people want to deal with xaml.

      Anyway, the bot is looking good, less messy than the actual one, good job

      EDIT : btw, change the password box to hidden chars ;)
       
      Last edited: May 24, 2014
    13. jimmy06

      jimmy06 Moderator Staff Member Moderator

      Joined:
      May 12, 2010
      Messages:
      824
      Likes Received:
      20
      Trophy Points:
      18
      The only feedback I can give you is that it's impossible to even compile the test plugin.

      Code:
      Error	13	The type or namespace name 'Loki' could not be found (are you missing a using directive or an assembly reference?)	C:\Users\Rob\Documents\Visual Studio 2013\Projects\EBPlugin\EBPlugin\ExamplePluginSettings.cs	2	7	EBPlugin
      Error	14	The type or namespace name 'Loki' could not be found (are you missing a using directive or an assembly reference?)	C:\Users\Rob\Documents\Visual Studio 2013\Projects\EBPlugin\EBPlugin\ExamplePluginSettings.cs	3	7	EBPlugin
      Error	15	The type or namespace name 'Loki' could not be found (are you missing a using directive or an assembly reference?)	C:\Users\Rob\Documents\Visual Studio 2013\Projects\EBPlugin\EBPlugin\ExamplePlugin.cs	8	7	EBPlugin
      Error	16	The type or namespace name 'JsonSettings' could not be found (are you missing a using directive or an assembly reference?)	C:\Users\Rob\Documents\Visual Studio 2013\Projects\EBPlugin\EBPlugin\ExamplePluginSettings.cs	9	42	EBPlugin
      Error	17	The type or namespace name 'Loki' could not be found (are you missing a using directive or an assembly reference?)	C:\Users\Rob\Documents\Visual Studio 2013\Projects\EBPlugin\EBPlugin\ExamplePlugin.cs	10	7	EBPlugin
      Error	18	The type or namespace name 'Loki' could not be found (are you missing a using directive or an assembly reference?)	C:\Users\Rob\Documents\Visual Studio 2013\Projects\EBPlugin\EBPlugin\ExamplePlugin.cs	11	7	EBPlugin
      Error	19	The type or namespace name 'Loki' could not be found (are you missing a using directive or an assembly reference?)	C:\Users\Rob\Documents\Visual Studio 2013\Projects\EBPlugin\EBPlugin\ExamplePlugin.cs	12	7	EBPlugin
      Error	20	The type or namespace name 'IPlugin' could not be found (are you missing a using directive or an assembly reference?)	C:\Users\Rob\Documents\Visual Studio 2013\Projects\EBPlugin\EBPlugin\ExamplePlugin.cs	17	27	EBPlugin
      Error	21	The type or namespace name 'GuiTickEventArgs' could not be found (are you missing a using directive or an assembly reference?)	C:\Users\Rob\Documents\Visual Studio 2013\Projects\EBPlugin\EBPlugin\ExamplePlugin.cs	163	47	EBPlugin
      
       
    14. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,258
      Likes Received:
      290
      Trophy Points:
      83
      Embracing change is not an easy thing to do. I truly hated WPF and having to use XAML for the longest time (EB was my first real project with it, as I had to use it). It just seemed weird and inefficient compared to designing with WinForms and being able to easily hook up the events for controls and stuff. The only real data binding needed was for things like datagridviewer or more complex things like that; as just having the code to do the rest was usually good enough.

      However, after having to spend a lot of time adjusting the gui we had, especially when it came to trying to fix the issues the Item Filter Editor had, I've come to see why we're even using it in the first place. I'm not going to give my whole opinion on it, but I just wanted to say, it's taken me a very, very long time to come around to it, after favoring Winforms. I would expect it to be no different for the people who are not using it yet either.

      The reason why you have to have external data binding and event handler hookups in this design is because of our bot setup to not load precompiled user assemblies into the bot. We load everything from code from users, and everything shared on the forums has to be source driven (once again, this is just how Buddybots work).

      This presents a problem with WPF and XAML, but I managed to work around it with the code you see in the actual SettingsControl. Typically, the bindings and event handling code is added in the XAML itself, which makes it trivial to work with, but that's just not possible with this design, so a compromise had to be made to get the desired design working.

      With that said though, you are not forced into using XAML to code your entire GUI. You are only forced into adhering to the actual interfaces we provide for integration into the bot itself, just like before. In the old code, if you wanted to make your own IBot, you had to provide a XAML Window for the configuration. For the routine and plugin, there was no control, just a button event notification. We had two different systems in place, an no real coherency between them. As a result, I choose one specific implementation, providing a WPF control, and unified them all.

      Here is a screenshot of using WinForms in the new way. I'll include this in the next Beta build as the default plugin code: http://i.imgur.com/IN7UIy4.png.

      So, the XAML you provide to the bot is going to be a basic window with a named button, and the code behind stuff is simply finding the control and adding an event handler for the button click. You'll have the same functionality as before, you just have to provide a little extra for the seamless integration into the bot. In addition, it'll now be accessible through the main settings tab, rather than on a different tab, depending on if it were a bot/plugin.

      There's quite a few reasons why the config buttons were removed, but I don't see them coming back into the main gui. Offering one place for users to access all settings, no matter where they are coming for just makes more sense and is way more user friendly. With this new design, users can have their guis integrated into the bot itself rather than always having to launch a new gui, so I feel that will create a more smooth user interaction overall.

      When it comes to plugins, while it might seem to be better to offer configuration through the plugins tab itself, it's not there because plugins are no longer able to be enabled/disabled once the bot is running. A lot of core structure changes have been made to solve various issues that were happening with the old design. The old design lacked a real hierarchy of execution, so it was really hard to figure out why things would happen, because there was no set way to execute things. The new code is setup in a very specific way so there's a reliable execution flow to design with, which is very important for stability and deterministic behavior.

      So, there's going to be some new things to get used to, but most of the big changes are for long term longevity and trying to stay ahead of the curve, rather than behind it. Moving from BTs to Coroutines was the first step, then updating to .Net 4.5.1 and dropping XP support, and now, trying to make core changes to the bot design to provide the best user/dev experience possible. Unlike most of the other bots, we actually have the flexibility to try new things and "modernize" certain things whereas the others simply cannot due to legacy support and having an exponential amount more of code and resources setup a certain way.

      There are certain complexities for actually hiding the password character in WPF. I'll try to switch it before Release, but that's why it's not already hidden yet. That is one of the downsides to WPF, but there seems to be a workaround I'll give a try to see if that does the trick or not.

      Thanks for the feedback! We're looking for more feedback like this, but I expect we won't get it much until we get the new bot integrated in. I do expect there to be some resistance to changes, but that's expected. Change isn't easy, but in our case, I think it's necessary.

      You meed to add a Reference to ExilebuddyBeta.exe so it can find the actual API. We'll get a custom tailored getting started with Visual Studio guide for EB later, since we've just been referring people to the other general guides for HB/DB.
       
    15. jimmy06

      jimmy06 Moderator Staff Member Moderator

      Joined:
      May 12, 2010
      Messages:
      824
      Likes Received:
      20
      Trophy Points:
      18
      No you need to fix it I've referenced every file within the EB folder just to make sure :) . I'm no novice with this.

      https://www.dropbox.com/s/4z1w17701o3eulg/EBIssue.PNG
       
      Last edited: May 25, 2014
    16. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,258
      Likes Received:
      290
      Trophy Points:
      83
      You need to use .Net 4.5.1 and not .Net 4.5. The assembly isn't loaded in .Net 4.5. :)

      I just reproduced your error by switching to 4.5 from 4.5.1.
       
    17. jimmy06

      jimmy06 Moderator Staff Member Moderator

      Joined:
      May 12, 2010
      Messages:
      824
      Likes Received:
      20
      Trophy Points:
      18
      ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

      Didn't even notice this had changed. I had set the project to it once so I don't know :p
       
    18. toNyx

      toNyx Well-Known Member

      Joined:
      Oct 29, 2011
      Messages:
      3,771
      Likes Received:
      35
      Trophy Points:
      48
      Ok, XAML isn't that bad nor different of winforms, i'm just new to that kind of things and will have to get used to.

      With the help of jimmy I managed to bind the fuck out of the settings yay \o/

      The result is HERE (screenshot)

      Not bad not bad... I still think we should keep plugin's settings in plugin's tab tho, but well... whatever ! This will be an awesome feature for bots/routines in the future :eek:

      *Hey ! Listen...* once we got bots, CRs, and plugins all fully loaded in the common settings gui, customers brains will blow up if there's too many ! :D

      I also noticed a direct access to "Me" from LokiPoe :) nice one.

      Since I don't dev bots directly, I can't make a feedback on Coroutines and stuff, but took a look at them and I guess there's possibilities for a QuestBot, good news!
       
    19. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,258
      Likes Received:
      290
      Trophy Points:
      83
      Access to Me from LokiPoe was re-added since it was something common to Buddybots, that was removed a while ago when a lot of the API was rewritten to fix various issues with how the client worked. I've come to realize it's a lot more convenient, and it's a nice shortcut as opposed to not having it, so it was put back in.

      For Bots/Routines, the Settings window will only show the current selected Bot/Routine and any loaded plugins. If the user has a ton of plugins, there would indeed be a lot of plugin tabs, but, ideally there shouldn't be so many plugins at a time for that to be an issue, as that could present some performance and stability issue as a whole if someone has a ton of plugins doing a bunch of different things. We'll see how that goes though over time, but since the gui now handles resizing correctly, and saves position/size, it should work out.

      Thanks jimmy for helping out. :) I'm glad you are liking XAML a little bit more. This week, we'll make our hard push to get ExampleBot/ExampleRoutine fleshed out with some basics of what we had in the old one to get it back to being usable. I expect 1.1.4 to be released really soon, as GGG has been pretty quiet lately. That might set it back a little, but we should hopefully have something in the near future for people to do stuff with.
       
    20. babosasa

      babosasa New Member

      Joined:
      Jun 22, 2012
      Messages:
      418
      Likes Received:
      0
      Trophy Points:
      0
      can't wait to test the bot ! thx!
       
    Thread Status:
    Not open for further replies.

    Share This Page