Jump to content

reapler

Elite user
  • Posts

    288
  • Joined

  • Last visited

Reputation Activity

  1. Like
    reapler got a reaction from Seminko in How to check if inventory is full   
    @Seminko it's "wManager.Wow.Helpers.Bag.GetContainerNumFreeSlots"  &  "wManager.Wow.ObjectManager.ObjectManager.Me.IsCast"
    If you are looking for more functions you can search in a decompiler(https://wrobot.eu/forums/topic/6103-frost-dk-rotation-help-needed/#comment-27890).
    It's easy to search something for example, searched "cast" as keyword:
     
    Edit: This may differ from expansion to expansion
  2. Like
    reapler got a reaction from Nowii in Mob Tag Helper ?   
    @Nowii you can try my new plugin:
    Edit link: PartyTagger.dll
  3. Like
    reapler got a reaction from Avvi in Killing another characters tags?   
    Hello, you can try my new plugin:
     
  4. Like
    reapler reacted to eeny in Quest Editor   
    "PickUp quest on item id"  = Item is in the bag.
    If you are picking up a quest from a game object (wanted poster/wooden box for example) you define the Object like any other quest giver NPC, except you tick "is game object"
  5. Like
    reapler reacted to Droidz in Quest Editor   
    You can use the name in "GoToStep" (you can also use step number in GoToStep):


  6. Like
    reapler reacted to iMod in Quest Editor   
    If you are really interrested in creating a nice quest editor in WPF i could offer my help with it. I still started one but lost the focus since it was damn boring alone. I also could offer some SQL knowledge to parse the informations out of a DB. To get all positions of creatures or npc's is kinda easy and i wrote a c# adapter for it which also can parse the openwow page. This is all stuff i made for fun or to learn some new stuff.

    Sample:

  7. Like
    reapler reacted to Droidz in Quest Editor   
    Hello, seem nice.
    And yes sometimes like here https://wrobot.eu/files/file/532-apexis-daily-quests/ or for low level quests ( http://www.wowhead.com/quest=28757/beating-them-back , http://www.wowhead.com/quest=28762/beating-them-back , http://www.wowhead.com/quest=28763/beating-them-back, http://www.wowhead.com/quest=28764/beating-them-back , ...), for the humains he has 1 quest by wow class (but all the quests have same objective), to gain time, you can add all quests id in 1 WRobot quest  (look profile delivred with wrobot for official server). 
  8. Like
    reapler got a reaction from Kikkass in Quest Editor   
    Hello, i'm currently working on a quest editor because the provided one doesn't fit to my imagination.
    I wanted to add some custom functions like adding transport step, specific npc using and so on.
    It looks like this so far (not fully finished):

     
     
    For now i have a few questions of the quests editor window:

     
    -Is it really needed that the marked area to have more than one questid? if yes an example would be useful
    -Does the name of the quest affect the common quest product?  Here "quest1 - KillAndLoot".  So far i tested it, only the quest id influence it but i'm not sure if some other function will also need the name
     
    If you have also other ideas for the editor, please leave your suggestions here.
     
  9. Like
    reapler reacted to arkhan in Quest Editor   
    I've never encounted a situation where i needed to write more than one ID. But I've only do quest 1-80 for cataclysm + mop, so maybe for legion or vanilla is required but i doubt of it.
    Same, so far i've tested, only the id is important.
    Hum, the only thing who came to my mind is to make quest profile quicker. When i need to fill the quest form (KillandLoot, Gatherer, ...) Find the creatures, GameObject and click again to set up their position is really annoying.
    But I've saw in the dev. tools you enter the id/Name of the creature and that return all the position where the bot find this creature/GameObject.
    Maybe there is a way to make a button with ID or Name and click on it to fill up the positions automaticaly?
     
    Anyway great job.
  10. Like
    reapler got a reaction from maylu in Quest Editor   
    Hello, i'm currently working on a quest editor because the provided one doesn't fit to my imagination.
    I wanted to add some custom functions like adding transport step, specific npc using and so on.
    It looks like this so far (not fully finished):

     
     
    For now i have a few questions of the quests editor window:

     
    -Is it really needed that the marked area to have more than one questid? if yes an example would be useful
    -Does the name of the quest affect the common quest product?  Here "quest1 - KillAndLoot".  So far i tested it, only the quest id influence it but i'm not sure if some other function will also need the name
     
    If you have also other ideas for the editor, please leave your suggestions here.
     
  11. Like
    reapler got a reaction from Batman in Loot before resting (eat / drink)?   
    You could use a lower value for that since acquiring data from objectmanager doesn't take too long.
    I would say you can even set it to 50ms but it would be an overkill & not useful in the end.
    I recommend 2000ms.
  12. Like
    reapler got a reaction from Matenia in Random Dismounts   
    @Droidz The "MountTask.OnGroundMount()" has a bug which is also connected with the dismount method but i'm not sure if any products will also use it(but i haven't seen anything on Grinder for example).
    All in all you have 16 usages of the dismount method but i think the dismount was used with a true stopmove parameter so the bug could be in "wManager.Wow.Bot.Tasks.MountTask(1)" or "wManager.Wow.Helpers.MovementManager(2)" because it happens also on grinder as well on party product so it could happen not on "ToTown" state for example.
    But it's just an assumption maybe there are also more false OnMount checks.
  13. Like
    reapler got a reaction from Jasabi in Register Combat_Log with args   
    Hello again, i made a workaround for that if someone is interested(a bit ugly):
    public void Initialize() { EventsLuaWithArgs.OnEventsLuaWithArgs += Events; Lua.LuaDoString ( "wframe = CreateFrame('Frame') " + "local Frame = true " + "arg = {'1', '2', '3', '4','5', '6', '7', '8', '9', '10', '11', '12','13', '14'} " + "wframe:RegisterEvent('COMBAT_LOG_EVENT_UNFILTERED') " + "wframe:SetScript('OnEvent', function(self, event, ...) " + "for i=1, 14 " + "do " + "if select(i, ...) == nil or select(i, ...) == '' then " + "arg[i] = '' " + "else " + "arg[i] = select(i, ...) " + "end " + "end " + "RunMacroText('/click '..arg[1]..'§'..arg[2]..'§'..arg[3]..'§'..arg[4]..'§'..arg[5]..'§'..arg[6]..'§'..arg[7]..'§'..arg[8]..'§'..arg[9]..'§'..arg[10]..'§'..arg[11]..'§'..arg[12]..'§'..arg[13]..'§'..arg[14]..'') " + "end) " ); //... } public void Events(LuaEventsId id, List<string> args) { //Combatlog if (id == LuaEventsId.EXECUTE_CHAT_LINE) { string[] arg = args[0].Replace("/click", "").Split('§'); Logging.Write(arg[3]); Logging.Write(arg[9]); } }  
  14. Like
    reapler got a reaction from Matenia in In BG avoid targeting opposing faction and chasing them   
    I belive you need to write some beloved c# code. You could add a spell in the fightclass editor & set it as c#:
    if (wManager.Statistics.RunningTimeInSec() < 2) { robotManager.Helpful.Logging.Write("Register OnFightStart"); wManager.Events.FightEvents.OnFightStart += delegate(WoWUnit unit, CancelEventArgs cancelable) { if ((int) unit.Reaction < 3) { cancelable.Cancel = true; } }; System.Threading.Thread.Sleep(2000); } it will cancel all starting fights if unit is unfriendly or hostile. But i'm not sure how it will work in bg.
  15. Like
    reapler got a reaction from Matenia in Mouseover ?   
    Hello, it is possible. Here's an c# example:
    if (wManager.Statistics.RunningTimeInSec() < 2) { robotManager.Helpful.Logging.Write("Register OnEventsLuaWithArgs"); wManager.Wow.Helpers.EventsLuaWithArgs.OnEventsLuaWithArgs += delegate (LuaEventsId id, List<string> args) { if (id == LuaEventsId.UPDATE_MOUSEOVER_UNIT) { string name = Lua.LuaDoString("name = UnitName('mouseover')", "name"); int minHealth = 110; //cast heal spells if your mouseover target drops under this value int maxrange = 40; //general range for heal spells WoWUnit unit = wManager.Wow.ObjectManager.ObjectManager.GetObjectWoWPlayer().SingleOrDefault(i => i.Name == name); if (unit != null && unit.IsValid && unit.IsAlive && unit.GetDistance < maxrange && unit.HealthPercent < minHealth && !TraceLine.TraceLineGo(ObjectManager.Me.Position, unit.Position, CGWorldFrameHitFlags.HitTestSpellLoS)) { //here you can add more conditions which spell should be cast robotManager.Helpful.Logging.Write("cast heal on mouseover"); wManager.Wow.Helpers.SpellManager.CastSpellByNameOn("Flash Heal", "mouseover"); //here you can start a thread which checks whether you are still mouse over the unit & cast more heals } } }; System.Threading.Thread.Sleep(2000); }  
    and the example how it can be implemented in fightclass: mouseover heal example.xml
  16. Like
    reapler got a reaction from Matenia in need help from one of you geniuses....   
    @forerun the guids in tbc are in ulong = UInt64.
    But i recommend to override the focus guid like @Droidz mentioned in another post & write it back.
    I see no reason why not to use it while focus is still working(it's already built in every expansion in wManager.dll so you don't need to write offsets for each one).
    This is how it looks like:
    public bool CastSpell(string name, wManager.Wow.ObjectManager.WoWObject obj) { if (!string.IsNullOrWhiteSpace(name) && obj != null) { var tmp = wManager.Wow.ObjectManager.ObjectManager.Me.FocusGuid; wManager.Wow.ObjectManager.ObjectManager.Me.FocusGuid = obj.Guid; new wManager.Wow.Class.Spell(name).Launch(false, false, false, "focus"); wManager.Wow.ObjectManager.ObjectManager.Me.FocusGuid = tmp; return true; } return false; } usage:
    //closest player CastSpell("Flash of Light", wManager.Wow.ObjectManager.ObjectManager.GetNearestWoWPlayer(wManager.Wow.ObjectManager.ObjectManager.GetObjectWoWPlayer())); //target CastSpell("Flash of Light", wManager.Wow.ObjectManager.ObjectManager.Me.TargetObject);  
     
     
    For someone who also needs a method for getting the WoWObject by LuaUnitId (can be used then for other things):
    public WoWObject GetWoWObjectByLuaUnitId(string luaUnitId) { ulong guid; if (!string.IsNullOrWhiteSpace(luaUnitId) && ulong.TryParse(wManager.Wow.Helpers.Lua.LuaDoString("guid = UnitGUID('" + luaUnitId + "')", "guid").Replace("x", string.Empty), System.Globalization.NumberStyles.HexNumber, null, out guid)) return wManager.Wow.ObjectManager.ObjectManager.GetObjectByGuid(guid); return new wManager.Wow.ObjectManager.WoWObject(0); } usage:
    //can be used for any unit => http://wowwiki.wikia.com/wiki/UnitId //get target position from object Logging.Write(GetWoWObjectByLuaUnitId("target").Position.ToString()); //get mouseover guid from object Logging.Write(GetWoWObjectByLuaUnitId("mouseover").Guid.ToString()); //get arena1 maxlevel by descriptor field Logging.Write((GetWoWObjectByLuaUnitId("arena1") as wManager.Wow.ObjectManager.WoWPlayer)?.GetDescriptorAddress(Descriptors.PlayerFields.Maxlevel).ToString());  
  17. Like
    reapler got a reaction from morris79 in Creating a plugin with debugging?   
    Hello, you can decompile wrobot's library to get the api documentation(MemoryRobot-, robotManager- & wManager in Wrobot\Bin) common decompiler are Jetbrains dotPeek, ILSpy, redgate's .net reflector & Justcompile. I also recommend to add it to reference and good extensions for VS make your life easier: ReSharper or Coderush are good extensions.
    And for testing things i'll prefer to link the build to Wrobots plugins folder so you can just compile and run directly with Wrobot & output the log with "robotManager.Helpful.Logging.Write("text");". 
  18. Like
    reapler reacted to camelot10 in New "Script" node in quester profiles   
    you can use namespaces in scripts
  19. Like
    reapler got a reaction from yesimbestworld in WROBOT 5.4 Mistweaver Orbs   
    If you see "01:14:47 - Cast Healing Sphere" in the log you can try this mw.xml and use '/aoecast Healing Sphere' as macro to cast on target.
    Otherwise i think the argument(s) of LuaEventsId.EXECUTE_CHAT_LINE may have a bug like on 3.3.5a the unfiltered combat log but that's just an assumption because this should work
    under normal circumstances.
  20. Like
    reapler got a reaction from yesimbestworld in WROBOT 5.4 Mistweaver Orbs   
    Hello you can try this one: mw.xml
    I tested it on 3.3.5a but it should also work for 5.4. I've written an own method to cast on position.
    The result: you see the green circle almost never.
    There can be more improvements to this code, like to read the input string & check the content. But for this purpose it's enough.
     
    How the code look like:
    if (wManager.Statistics.RunningTimeInSec() < 2) { robotManager.Helpful.Logging.Write("Register OnEventsLuaWithArgs"); wManager.Wow.Helpers.EventsLuaWithArgs.OnEventsLuaWithArgs += delegate (wManager.Wow.Enums.LuaEventsId id, System.Collections.Generic.List<string> args) { if (id == wManager.Wow.Enums.LuaEventsId.EXECUTE_CHAT_LINE) { string spellName = "Healing Sphere"; if (args[0].ToUpper().Equals(("/cast @player " + spellName).ToUpper())) { var t = System.Threading.Tasks.Task.Run(async delegate { System.Threading.Thread.Sleep(3); wManager.Wow.Helpers.ClickOnTerrain.Pulse(wManager.Wow.ObjectManager.ObjectManager.Me.Position); System.Threading.Thread.Sleep(2); wManager.Wow.Helpers.ClickOnTerrain.Pulse(wManager.Wow.ObjectManager.ObjectManager.Me.Position); }); wManager.Wow.Helpers.SpellManager.CastSpellByNameOn(spellName, ""); } if (args[0].ToUpper().Equals(("/cast @target " + spellName).ToUpper())) { if (wManager.Wow.ObjectManager.ObjectManager.Me.Target != 0) { var t = System.Threading.Tasks.Task.Run(async delegate { System.Threading.Thread.Sleep(3); wManager.Wow.Helpers.ClickOnTerrain.Pulse(wManager.Wow.ObjectManager.ObjectManager.Me.TargetObject.Position); System.Threading.Thread.Sleep(2); wManager.Wow.Helpers.ClickOnTerrain.Pulse(wManager.Wow.ObjectManager.ObjectManager.Me.TargetObject.Position); }); wManager.Wow.Helpers.SpellManager.CastSpellByNameOn(spellName, ""); } } if (args[0].ToUpper().Equals(("/cast @focus " + spellName).ToUpper())) { if (wManager.Wow.ObjectManager.ObjectManager.Me.FocusGuid != 0) { var t = System.Threading.Tasks.Task.Run(async delegate { System.Threading.Thread.Sleep(3); wManager.Wow.Helpers.ClickOnTerrain.Pulse(wManager.Wow.ObjectManager.ObjectManager.Me.FocusObj.Position); System.Threading.Thread.Sleep(2); wManager.Wow.Helpers.ClickOnTerrain.Pulse(wManager.Wow.ObjectManager.ObjectManager.Me.FocusObj.Position); }); wManager.Wow.Helpers.SpellManager.CastSpellByNameOn(spellName, ""); } } if (args[0].ToUpper().Equals(("/cast @party1 " + spellName).ToUpper())) { string toParse = wManager.Wow.Helpers.Lua.LuaDoString("guid = UnitGUID('party1')", "guid") .Replace("x", string.Empty); ulong guid = ulong.Parse(toParse, System.Globalization.NumberStyles.HexNumber, null); if (guid != 0) { Vector3 objPosition = wManager.Wow.ObjectManager.ObjectManager.GetObjectByGuid(guid).Position; var t = System.Threading.Tasks.Task.Run(async delegate { System.Threading.Thread.Sleep(3); wManager.Wow.Helpers.ClickOnTerrain.Pulse(objPosition); System.Threading.Thread.Sleep(2); wManager.Wow.Helpers.ClickOnTerrain.Pulse(objPosition); }); wManager.Wow.Helpers.SpellManager.CastSpellByNameOn(spellName, ""); } } if (args[0].ToUpper().Equals(("/cast @party2 " + spellName).ToUpper())) { string toParse = wManager.Wow.Helpers.Lua.LuaDoString("guid = UnitGUID('party2')", "guid") .Replace("x", string.Empty); ulong guid = ulong.Parse(toParse, System.Globalization.NumberStyles.HexNumber, null); if (guid != 0) { Vector3 objPosition = wManager.Wow.ObjectManager.ObjectManager.GetObjectByGuid(guid).Position; var t = System.Threading.Tasks.Task.Run(async delegate { System.Threading.Thread.Sleep(3); wManager.Wow.Helpers.ClickOnTerrain.Pulse(objPosition); System.Threading.Thread.Sleep(2); wManager.Wow.Helpers.ClickOnTerrain.Pulse(objPosition); }); wManager.Wow.Helpers.SpellManager.CastSpellByNameOn(spellName, ""); } } } }; System.Threading.Thread.Sleep(2000); }  
     
    And in-game you just make a macro like this to use:

    You can also replace '@target' with
    '@player'
    '@focus'
    '@party1'
    '@party2'
     
    Edit: updated fightclass & @OP it did work after WRobot update if someone is interested
  21. Like
    reapler got a reaction from yesimbestworld in WROBOT 5.4 Mistweaver Orbs   
    @yesimbestworld So i trimmed the c# code everything worked fine on 3.3.5a dunno what's wrong on 5.4.8 but now it's more simpler to find the error if one will occure: mw.xml
    Try only '/cast Healing Sphere' in your macro(it will now only cast on target). If that method still fails, i'm not able to say what's not working exactly on your expansion.
    Otherwise you may disable addons, plugins or even backup & reset your settings in WRobot.
  22. Like
    reapler reacted to Droidz in New "Script" node in quester profiles   
    Hello,
    Path is relative to "\WRobot\Profiles\Quester\"
    If you want to use external file(s) (because you can put c# code directly in the profile), you can load multiple c# files (since today update), put one file by line.
    I have added this feature for mainly for two reason:
    1: You can use classes, methods, variables of your codes in the "quests order" (steps), and in your quests (also from your quests settings like "Is Complete Condition").
    2: You can run code before than WRobot start (before default WRobot states like Farming, IsAttacked, Looting, Resurrect,...) (useful to change wrobot settings).
     
    Sample of use: test.zip
  23. Like
    reapler got a reaction from Matenia in need help from one of you geniuses....   
    Ok. I have setup everything for tbc: so far i can assume that raidmember or party methods / properties from wManager doesn't work correctly on 2.4.3(got raidmemberlist while not in raid, true on various party getter while not in party and so on) this is also the reason why the cast method doesn't work ;(
    I will maybe report it to the bugtracker while i rewrite it with more lua values hehe
    And thanks for your feedback.
     
    Edit: it seems like the one lua function itself returning different values from 2.4.3 to 3.3.5a
  24. Like
    reapler got a reaction from nxpert in How to find what hostile player is casting   
    @nxpert if you mean the first method then probably yes. The second with 'LuaEventsId.UNIT_SPELLCAST_SENT' & the example should work(args will be received).
     
  25. Like
    reapler reacted to Matenia in Bot side or server side(not detecting respawns)   
    It's a bit of bot. Private servers re-use GUIDs of NPCs, so after the bot temporarily blacklists them (because they're dead) and the server respawns them with the exact same ID, it won't "see" them anymore.
    You can clear your session blacklist. There is already another topic with the C# code for it (you can also click on it in the Tools section).
    And vanilla to wrath profiles should mostly work across expansions. Same as any Outlands or Northrend profile should work on any private server, because those things haven't changed on retail.
×
×
  • Create New...