Everything posted by reapler
-
SmoothMove
It should now support also other versions. But everything above wotlk is downgraded, since the needed information / knowledge isn't available for me. This means it still smooths the paths but keyboard moving and strafe will not work on these.
-
SmoothMove
Thank you for your feedback, the second version had no check but i'm going to find offsets and hopefully make it available. The algorithm is currently specified to work with these min/max'ed settings, it may be possible in the future to improve it on sharp edges.
-
Crash: System.OutOfMemoryException
Oh how awkward, i'm gonna update this if i've got time ;) some things have been changed and is going terribly wrong on 'different' API
-
SmoothMove
It would work partially. Since the face function itself is for 3.3.5a the click to move part would work fine if "Use keyboard moving" is disabled but i'm gonna finishing this first and release for other versions (1.12.1 / 2.4.3) if i've got time.
-
SmoothMove
I think there's nothing much to help, but thanks anyway.
-
SmoothMove
Probably yes, with traceline it should be doable but this will take time ;) if you get stuck somewhere you may send a picture with map and obstacle via pm.
-
SmoothMove
Yes, i think i can fix this, maybe i need to write a custom behavior for this in the worst case.
-
SmoothMove
Thank you for your feedback, i may resolve the unstuck problem soon, since canceling click to move in event blocking also the unstuck behavior.
-
SmoothMove
- 3585 downloads
- Version 18.2.6.40273
SmoothMove To This plugin offers smoothed paths with manual key input in order to achieve a natural movement with strafe and facing like from a player. Settings can be changed via a simple gui Note: - keyboard moving / strafing is not available for flying - fully supported versions with keyboard moving and strafing are available on 1.12.1, 2.4.3, 3.3.5a, above it supports only smoothed paths - this plugin may not work correctly with custom fightclasses or plugins with movement affecting behavior - side project, new versions / fixes may to be delayed Feedback, suggestions or problems? Please leave your feedback here. Would you like to report a bug? At first please disable all other plugins & use not a custom fightclass. If you can still reproduce the bug, a detailed list of steps and a log would be helpful. If you notice it's a bug with another plugin or fightclass you may also describe the problem here(not guaranteed it can be fixed). Project is currently discontinued Source: SmoothMove.rar Someone has been already found to continue the project in the future. New updates will be noticed here. -
Left click unit
Yes, you can. For example: //3.3.5a 12340 public void MoveForwardStart() { wManager.Wow.Memory.WowMemory.InjectAndExecute( new [] { //more parameters can be appended by the wrapper wManager.Wow.Memory.WowMemory.CallWrapperCode( (uint)wManager.Wow.Memory.WowMemory.Memory.MainModuleAddress + 0x1FC200), wManager.Wow.Memory.WowMemory.RetnToHookCode, }, true ); }
-
Left click unit
Yes, in vanilla you need to change the target guid, since the api only allows target or local player as argument. It looks like this: public void CastSpell(string spellName, WoWObject obj) { if (!obj.IsValid) return; ulong tmp = wManager.Wow.Memory.WowMemory.Memory.ReadUInt64( (uint) wManager.Wow.Memory.WowMemory.Memory.MainModuleAddress + 0x74E2D8); wManager.Wow.Memory.WowMemory.Memory.WriteUInt64( (uint) wManager.Wow.Memory.WowMemory.Memory.MainModuleAddress + 0x74E2D8, obj.Guid); Lua.LuaDoString("CastSpellByName('"+spellName+"');"); wManager.Wow.Memory.WowMemory.Memory.WriteUInt64( (uint) wManager.Wow.Memory.WowMemory.Memory.MainModuleAddress + 0x74E2D8, tmp); } Someone may think why not using objectmanager's target property from local player, the reason is the setter has some additional code for actually change the target and some other features.
-
Left click unit
It's also possible to do this on vanilla, but with mouseover guid: public void Target(ulong guid) { if (guid == 0) return; ulong tmp = wManager.Wow.Memory.WowMemory.Memory.ReadUInt64( (uint) wManager.Wow.Memory.WowMemory.Memory.MainModuleAddress + 0x74E2C8); wManager.Wow.Memory.WowMemory.Memory.WriteUInt64( (uint) wManager.Wow.Memory.WowMemory.Memory.MainModuleAddress + 0x74E2C8, guid); wManager.Wow.Helpers.Lua.LuaDoString("TargetUnit('mouseover');"); wManager.Wow.Memory.WowMemory.Memory.WriteUInt64( (uint) wManager.Wow.Memory.WowMemory.Memory.MainModuleAddress + 0x74E2C8, tmp); }
-
Left click unit
This should gonna do its work: public void Target(ulong guid) { wManager.Wow.Helpers.Lua.RunMacroText("/target "+wManager.Wow.ObjectManager.ObjectManager.GetObjectByGuid(guid)?.Name+""); } Edit: i reconsider my answer, this may not be a ideal solution. If you gonna look at the interact function in WRobot, you'll notice it's a direct function call via asm. So another solution would be to overwrite the guid from the local player's focus and target it via lua: public void Target(WoWObject obj) { var tmp = ObjectManager.Me.FocusGuid; ObjectManager.Me.FocusGuid = obj.Guid; Lua.RunMacroText("/target focus"); ObjectManager.Me.FocusGuid = tmp; } public void Target(ulong guid) { var tmp = ObjectManager.Me.FocusGuid; ObjectManager.Me.FocusGuid = guid; Lua.RunMacroText("/target focus"); ObjectManager.Me.FocusGuid = tmp; } Usage: var firstOrDefault = ObjectManager.GetObjectWoWUnit().OrderBy(i => i.GetDistance).FirstOrDefault(); if (firstOrDefault != null) Target(firstOrDefault.Guid);
- ObjectManager.GetWoWUnitHostile() in c# Fight class
-
PathFinder.Pather.FindZ(); NullReferenceException
*Happens on 3.3.5a
-
GoToClick
Hello, @Shiinu i investigated the problem, it was caused by WRobot's RDManager. I'll will forward this bug to the bugtracker(https://wrobot.eu/bugtracker/pathfinderpatherfindz-nullreferenceexception-r901/). As soon it will be fixed, GoToClick will continue working.
-
PathFinder.Pather.FindZ(); NullReferenceException
Hello, this exception occured on calling "wManager.Wow.Helpers.PathFinder.Pather.FindZ();" method.
-
All my bots on Warmane Outland got banned
Hello, if someone is familiar with its programming language, this person can also write up such a detection. They may have an excellent serverside detection, recording paths of players and process the data aswell logging playtime per day, multiple accounts on the same ip address, trades, mails and everything you could think of that can be useful to detect, can trigger a notification if the action is uncommon. However it should be considered also players can just report you as a bot(most of the time it is obvious).
-
Why does this code crash WRobot?
A small template, also creates an instance on null. Saving manually with "sRogueSettings.CurrentSetting.Save();" public class SRogueSettings : robotManager.Helpful.Settings { public bool UseBuffFood { get; set; } public string BuffFoodName { get; set; } //... public static SRogueSettings CurrentSetting { get { if (_currentSetting == null && !_cannotLoad) Load(); return _currentSetting; } set { _currentSetting = value; } } private static bool _cannotLoad; private static SRogueSettings _currentSetting; public bool Save() { try { _cannotLoad = !Save(AdviserFilePathAndName("SRogue", ObjectManager.Me.Name + "." + Usefuls.RealmName)); return !_cannotLoad; } catch (Exception e) { Logging.WriteError(e.ToString()); _cannotLoad = true; return false; } } public static bool Load() { try { if (File.Exists(AdviserFilePathAndName("SRogue", ObjectManager.Me.Name + "." + Usefuls.RealmName))) { CurrentSetting = Load<SRogueSettings>(AdviserFilePathAndName("SRogue", ObjectManager.Me.Name + "." + Usefuls.RealmName)); return true; } _cannotLoad = true; CurrentSetting = new SRogueSettings { UseBuffFood = true, BuffFoodName = "", }; } catch (Exception e) { Logging.WriteError(e.ToString()); } return false; } }
-
Why does this code crash WRobot?
You may check first whether "sRogueSettings.CurrentSetting" is null: private void FoodManager() { try { if (sRogueSettings.CurrentSetting == null) robotManager.Helpful.Logging.Write("CurrentSetting is null"); else robotManager.Helpful.Logging.Write("CurrentSetting is not null"); } catch (Exception e) { robotManager.Helpful.Logging.WriteError(e.ToString()); } } You get probably "CurrentSetting is null" ;) So in this case this means you haven't initialized "CurrentSetting" = no instance to your object is given = "CurrentSetting" is null, hence you cannot accessing its properties. In the end you need to call "sRogueSettings.Load();" to create an instance. However If it's not the case, you may check for other variables against null.
-
Why does this code crash WRobot?
Hello, if something crashes and it's not a stack overflow (recursive call) you may wrap your code in a try-catch statement: private void FoodManager() { try { if (sRogueSettings.CurrentSetting.UseBuffFood && sRogueSettings.CurrentSetting.BuffFoodName != null && sRogueSettings.CurrentSetting.BuffFoodBuffName != null) { uint foodID = wManager.Wow.Helpers.ItemsManager.GetIdByName(sRogueSettings.CurrentSetting.BuffFoodName); if (!ObjectManager.Me.HaveBuff(sRogueSettings.CurrentSetting.BuffFoodBuffName) && ItemsManager.HasItemById(foodID) && wManagerSetting.CurrentSetting.FoodName != sRogueSettings.CurrentSetting.BuffFoodName) { wManagerSetting.CurrentSetting.FoodName = sRogueSettings.CurrentSetting.BuffFoodName; } else if (ObjectManager.Me.HaveBuff(sRogueSettings.CurrentSetting.BuffFoodBuffName) && wManagerSetting.CurrentSetting.FoodName != originalFoodSetting) { wManagerSetting.CurrentSetting.FoodName = originalFoodSetting; } } } catch (Exception e) { robotManager.Helpful.Logging.WriteError(e.ToString()); } } I think you have probably a null reference exception on your settings, so you would check for "sRogueSettings.CurrentSetting" whether it is null at first. And "sRogueSettings.CurrentSetting.BuffFoodName != null" is not necessary on a string, since checking against null will result always in false.
-
Sleep/Pause/Wait for all theards
Hello @happiness7 this should fit: //minimum net framework 4.5 Task.Run(() => { Products.InPause = true; Thread.Sleep(6000); Products.InPause = false; }); If you also want to block plugin thread, just remove "Task.Run"
-
How to add wrobot dll as relative reference to my project
Hello @Weicheng, adding the references to your visual studio project shouldn't make any problems in the end. The compiled libary can be put in the desired folder and can be run as long the referenced libraries are in "\WRobot\Bin\" or in the same folder with its executing library but this doesn't count for net framework related libraries. So, yes under normal conditions you can distribute your library and they're good to go.
-
[C#] Detect Raid Members HP
It's a .dll file.
-
[C#] Detect Raid Members HP
Hello, you may decompile my fightclass: https://wrobot.eu/files/file/1211-holy-paladin-the-holy-grail/ it uses a generic method to retrieve the allied players, but i think this should fit very well for the most situations.