Jump to content

Matenia

Elite user
  • Posts

    2226
  • Joined

  • Last visited

Reputation Activity

  1. Like
    Matenia got a reaction from Pudge in Protection from SpellManager.CastSpellBy && LuaDoString (or what?)   
    They probably disconnected you, because you didn't have their MPQs. 
    You can probably add a custom MPQ that's loaded at the very beginning that just loads FrameXML or something that copies CastSpellByName
     
    originalCastSpellByName = CastSpellByName -- later in wrobot use this code: originalCastSpellByName("Frostbolt") Maybe that will work. Otherwise - weird. THey definitely heavily modify the UI with their MPQs
  2. Like
    Matenia got a reaction from TheSmokie in Is there a way to blacklist an NPC by ID as opposed to current target?   
    Add the entry 23534 to the blacklist editor under entryid (name doesn't matter, but feel free to add it).
    You can also open HMP's settings and add it to the trainer blacklist there (again, gotta add 23534)
  3. Haha
    Matenia got a reaction from TheSmokie in Fightclass Framework for 2.4.3/3.3.5a and more   
    There will be no updates for people who don't even own a wRobot license. Me telling you what to do to fix it was already generous. It's an incredibly easy fix in only 2 methods.
  4. Thanks
    Matenia got a reaction from TheSmokie in Fightclass Framework for 2.4.3/3.3.5a and more   
    public string FullName() { return _rank != null ? ($"{_name}({RotationSpellbook.RankString} {_rank})") : _name; } public bool IsKnown() { return RotationSpellbook.IsKnown(_name, _rank ?? 1); } Change these lines in RotationSpell. I guess I accidentally messed this up when merging two frameworks.
    If you use Spell.NameInGame instead of _name, it should use the localized name.
     
    if (spell.Spell.Name == "Shoot" && IsAutoRepeating("Shoot")) { return true; } //IsAutoRepeating should use spell.Name.NameInGame As far as I can tell, everything else already uses the localized name. 
     
    There is also one more issue with something not localized (shouldn't matter too much):
     
    // this error is not found through casting or combatlog events because it's caused by the client checking IsSpellInRange when using CastSpellByName // we could technically execute this check ourselves in CombatLogUtil but usually the client-side range check (memory based GetDistance) is enough) and cheaper! // therefore we're listening to error messages and executing this check lazily if (id == "UI_ERROR_MESSAGE" && (args[0] == "Out of range." || args[0] == "You are too far away!")) { RotationSpellVerifier.ClearIfOutOfRange(); } Also this should probably be reworked or use the non-Lua wRobot option:
    public static bool CastingSpell(this WoWUnit unit, params string[] names) { return RotationCombatUtil.ExecuteActionOnUnit(unit, (luaUnitId) => { string luaString = $@" local isCastingSpell = false; local name = UnitCastingInfo(""{luaUnitId}"") if {LuaOrCondition(names, "name")} then isCastingSpell = true end return isCastingSpell;"; return Lua.LuaDoString<bool>(luaString); }); }  
  5. Thanks
    Matenia got a reaction from Kamogli in Fightclass Framework for 2.4.3/3.3.5a and more   
    public string FullName() { return _rank != null ? ($"{_name}({RotationSpellbook.RankString} {_rank})") : _name; } public bool IsKnown() { return RotationSpellbook.IsKnown(_name, _rank ?? 1); } Change these lines in RotationSpell. I guess I accidentally messed this up when merging two frameworks.
    If you use Spell.NameInGame instead of _name, it should use the localized name.
     
    if (spell.Spell.Name == "Shoot" && IsAutoRepeating("Shoot")) { return true; } //IsAutoRepeating should use spell.Name.NameInGame As far as I can tell, everything else already uses the localized name. 
     
    There is also one more issue with something not localized (shouldn't matter too much):
     
    // this error is not found through casting or combatlog events because it's caused by the client checking IsSpellInRange when using CastSpellByName // we could technically execute this check ourselves in CombatLogUtil but usually the client-side range check (memory based GetDistance) is enough) and cheaper! // therefore we're listening to error messages and executing this check lazily if (id == "UI_ERROR_MESSAGE" && (args[0] == "Out of range." || args[0] == "You are too far away!")) { RotationSpellVerifier.ClearIfOutOfRange(); } Also this should probably be reworked or use the non-Lua wRobot option:
    public static bool CastingSpell(this WoWUnit unit, params string[] names) { return RotationCombatUtil.ExecuteActionOnUnit(unit, (luaUnitId) => { string luaString = $@" local isCastingSpell = false; local name = UnitCastingInfo(""{luaUnitId}"") if {LuaOrCondition(names, "name")} then isCastingSpell = true end return isCastingSpell;"; return Lua.LuaDoString<bool>(luaString); }); }  
  6. Like
    Matenia got a reaction from Stresse in Fightclass Framework for 2.4.3/3.3.5a and more   
    If you've seen my 1.12 fightclass framework, this is basically the much enhanced version.
    It should work for WoW 2.4.3 and 3.3.5a, possibly many more expansions. The only thing you would have to do is adjust the way combatlog events are parsed, if paramters have changed in your expansion. Everything else should be handled by wRobot. 

    Below you can find the GitHub repository. It also contains a very simple enhancement shaman fightclass as an example that you could change to fit your own needs.
    This is for developers only. If you're a regular user, I recommend just buying my fightclasses. They are, in my opinion, fairly priced.

    Features:
    - checks with server if a spell was successful
    - support for different types of spells 
    - no more double casts of any sort (heals, debuffs, damage)
    - possibility to ignore server responses
    - easy offtarget handling
    - performant caching and rotation handling
    - possibility to use as a healing framework
    - support for wanding
    - multilanguage support
    - dispel by debuff type
     

    https://github.com/Schaka/wRobotFightclassFrameworkEnhanced
     
    @Droidz would be nice if you could sticky/pin this thread
  7. Like
    Matenia got a reaction from justakeenz in Ban hammer - Frostmourne   
    If it was detected, no bot would ever escape and you'd get caught just for using wRotation. Detected means they can detect that the bot attaches to the game and alters the game's state in memory.

    If people use repetitive behavior or are otherwise "easily" recognized as bots, they get caught in reports. I've botted on Warmane for long enough to know it's not detected.
    They have employed "traps" in the past to make some things bots do harder. But wRobot usually worked around those.
  8. Thanks
    Matenia got a reaction from Pudge in Current step name   
    If you're looking into steps by name, you'll need the Quester.dll as a dependency, see custom code section here: 
     
  9. Like
    Matenia got a reaction from Talamin in PVP rotations?   
    Because "people wanting scripts for PvP" isn't actually anything. It's the occasional hardstuck 1800 hoping scripts will make them Gladiator. 
    I've been trying to sell shit for PvP for ages - just to automate the boring honor grind. I sold a total of like 150 fightclasses since 2016. The silent masses buy PvE shit to level. There is no money in it. Whenever someone PMs me, they don't wanna pay 30€/hour, which is already a piss poor rate for freelance software development. 

    People just want free shit, but they can't even be bothered to use the fightclass editor to make an autokicker script.

    Plus it's actually really scummy and you'll just stay hardstuck 1900 instead. Don't bring cheats to competitive environments. Just git gud, shitters.
     
  10. Like
    Matenia got a reaction from Photogenic in PVP rotations?   
    Because "people wanting scripts for PvP" isn't actually anything. It's the occasional hardstuck 1800 hoping scripts will make them Gladiator. 
    I've been trying to sell shit for PvP for ages - just to automate the boring honor grind. I sold a total of like 150 fightclasses since 2016. The silent masses buy PvE shit to level. There is no money in it. Whenever someone PMs me, they don't wanna pay 30€/hour, which is already a piss poor rate for freelance software development. 

    People just want free shit, but they can't even be bothered to use the fightclass editor to make an autokicker script.

    Plus it's actually really scummy and you'll just stay hardstuck 1900 instead. Don't bring cheats to competitive environments. Just git gud, shitters.
     
  11. Thanks
    Matenia got a reaction from TheSmokie in PVP rotations?   
    Because "people wanting scripts for PvP" isn't actually anything. It's the occasional hardstuck 1800 hoping scripts will make them Gladiator. 
    I've been trying to sell shit for PvP for ages - just to automate the boring honor grind. I sold a total of like 150 fightclasses since 2016. The silent masses buy PvE shit to level. There is no money in it. Whenever someone PMs me, they don't wanna pay 30€/hour, which is already a piss poor rate for freelance software development. 

    People just want free shit, but they can't even be bothered to use the fightclass editor to make an autokicker script.

    Plus it's actually really scummy and you'll just stay hardstuck 1900 instead. Don't bring cheats to competitive environments. Just git gud, shitters.
     
  12. Thanks
    Matenia got a reaction from sidalibns in Go To Trainers command (for all classes)   
    Update hasn't been released yet. But then this will go to the class trainer in your database and force train all skills there.
  13. Like
    Matenia got a reaction from Apexx in Fightclasses & Stuns   
    Your client blocks it from sending abilities to the server if you're stunned. So the spamming you see isn't visible to anyone and the server isn't receiving any info about it either.
  14. Haha
    Matenia reacted to Bambo in Bambos Profile   
    die profile sind schon seit langem wieder online und bei deiner art weiß ich schon warum ich zu dir nicht freundlich war, meine preise update ich nicht weil es im forum verboten ist threads zu updaten ohne content zu updaten, das gilt für paid profile threads nunmal, augen auf im forum, danke
    Lies doch mal was der Schmeisser noch am selben tag gepostet hat ?
  15. Like
    Matenia got a reaction from Pudge in C# Variable in Lua.DoString() gives lua error   
    Why are you using @ in a non-multi-line string?
    This isn't a problem with LuaDoString.

     
    //next time take a look at your ingame Lua errors and you'll see what's actually appearing in the game and why it's a problem var name = "qq"; var subject = 123; var text = "1\n2\n3\n4\n5\n6"; Lua.LuaDoString("SendMail(\"" + name + "\", \"" + subject + "\", \"" + text + "\")"); // don't use @ in combination with \n otherwise at least double escape \n as \\n // also, don't mix ' with ", you're bound to run into issues with names containing ' eventually  
  16. Like
    Matenia got a reaction from Marsbar in C# Variable in Lua.DoString() gives lua error   
    Why are you using @ in a non-multi-line string?
    This isn't a problem with LuaDoString.

     
    //next time take a look at your ingame Lua errors and you'll see what's actually appearing in the game and why it's a problem var name = "qq"; var subject = 123; var text = "1\n2\n3\n4\n5\n6"; Lua.LuaDoString("SendMail(\"" + name + "\", \"" + subject + "\", \"" + text + "\")"); // don't use @ in combination with \n otherwise at least double escape \n as \\n // also, don't mix ' with ", you're bound to run into issues with names containing ' eventually  
  17. Like
    Matenia reacted to Droidz in How to cast revive once?   
    your code is illogical, mouseover is in wrobot API you don't need to write in memory manually, why do "o.Name == o.Name" ? Why blacklist corpse in blacklist for hostile unit? (and search corpse without check if corpse is in this blacklist). 
    It's nice to help, but this type of code can mislead users.
     
     
    Code (not tested) with target should look like:
    var revive = new Spell("Revive", false); if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !ObjectManager.Me.IsCast && revive.KnownSpell && revive.IsSpellUsable) { var corpse = ObjectManager.GetObjectWoWCorpse().Where(c => !wManager.wManagerSetting.IsBlackListed(c.Guid)).FirstOrDefault(); if (corpse != null && corpse.IsValid) { Interact.ClearTarget(); // or Interact.InteractGameObject(corpse.GetBaseAddress); revive.Launch(); Interact.InteractGameObject(corpse.GetBaseAddress); wManager.wManagerSetting.AddBlackList(corpse.Guid, 1000 * 60 * 10); } } with focus should look like:
    var revive = new Spell("Revive", false); if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !ObjectManager.Me.IsCast && revive.KnownSpell && revive.IsSpellUsable) { var corpse = ObjectManager.GetObjectWoWCorpse().Where(c => !wManager.wManagerSetting.IsBlackListed(c.Guid)).FirstOrDefault(); if (corpse != null && corpse.IsValid) { var old = ObjectManager.Me.FocusGuid; ObjectManager.Me.FocusGuid = corpse.Guid; revive.Launch(true, true, false, "focus"); ObjectManager.Me.FocusGuid = old; wManager.wManagerSetting.AddBlackList(corpse.Guid, 1000 * 60 * 10); } }  
     
  18. Thanks
    Matenia got a reaction from Photogenic in How to cast revive once?   
    Use a timer you set when using SpellManager.CastSpellByName and add to the condiiton that the timer needs to be ready
    Edit: Ideally you want one timer per unit guid you tried to rezz
  19. Thanks
    Matenia reacted to Talamin in How to cast revive once?   
    Because you don´t have a cooldown on your revive ability and usefuls.waitiscast just wait until the Cast is done. So when the target don´t accept the ressurrection immediatly he get´s spammed over and over again. Therefore just use a timer for each target you already casted revive on, so it won´t spam revive on the same target again and again.
  20. Thanks
    Matenia got a reaction from Photogenic in Improve dungeon pathing   
    PathFinder.OffMeshConnections.Add(new PathFinder.OffMeshConnection(new List<Vector3> { new Vector3(-861.2993, -3758.589, 19.47886, "None"), new Vector3(-849.3063, -3742.703, 22.49161, "None"), new Vector3(-842.8103, -3734.129, 19.89155, "None"), new Vector3(-849.7686, -3735.616, 19.88754, "None"), new Vector3(-848.3646, -3731.851, 21.27056, "None"), new Vector3(-843.2056, -3727.342, 25.23064, "None"), new Vector3(-839.3514, -3726.285, 26.32008, "None") }, (int) ContinentId.Kalimdor) { Type = PathFinder.OffMeshConnectionType.Bidirectional, Name = "Ratchet - Gazlowe", TryToUseEvenIfCanFindPathSuccess = true }); PathFinder.OffMeshConnections.Add(new PathFinder.OffMeshConnection(new List<Vector3> { new Vector3(1155.042, 182.7223, 3.134686, "None"), new Vector3(1157.968, 184.0907, 5.895848, "None"), new Vector3(1157.852, 185.0874, 6.79552, "None"), new Vector3(1169.146, 188.5145, 17.70432, "None"), new Vector3(1176.177, 183.1431, 21.6543, "None"), new Vector3(1174.764, 180.1774, 21.44643, "None"), new Vector3(1170.609, 182.9803, 23.67873, "None"), new Vector3(1167.625, 185.7788, 27.12425, "None"), new Vector3(1165.26, 188.2767, 28.77732, "None"), new Vector3(1161.465, 183.8654, 29.03481, "None"), new Vector3(1164.393, 176.3627, 31.69842, "None") }, (int) ContinentId.Kalimdor) { Type = PathFinder.OffMeshConnectionType.Bidirectional, Name = "Stonetalon - Big machine", TryToUseEvenIfCanFindPathSuccess = true }); PathFinder.OffMeshConnections.Add(new PathFinder.OffMeshConnection(new List<Vector3> { new Vector3(-9009.081, 851.679, 105.893, "None"), new Vector3(-9017.271, 864.8356, 109.8218, "None"), new Vector3(-9014.967, 882.9603, 112.9219, "None"), new Vector3(-8999.138, 890.7767, 115.9936, "None"), new Vector3(-8982.68, 880.2233, 119.937, "None"), new Vector3(-8982.612, 866.5609, 123.3268, "None"), new Vector3(-8992.165, 860.2961, 126.6532, "None"), new Vector3(-9001.312, 864.4201, 129.772, "None"), new Vector3(-9013.052, 873.2303, 132.0581, "None"), new Vector3(-9007.667, 877.3668, 135.9138, "None"), new Vector3(-9003.198, 874.1686, 139.3298, "None"), new Vector3(-9004.052, 868.6579, 142.6572, "None"), new Vector3(-9009.047, 867.0392, 145.7849, "None"), new Vector3(-9013.107, 871.0745, 148.6166, "None"), new Vector3(-9016.262, 884.7032, 29.6207, "None") }, (int) ContinentId.Azeroth) { Type = PathFinder.OffMeshConnectionType.Bidirectional, Name = "SW Mage Tower", TryToUseEvenIfCanFindPathSuccess = true });  
  21. Thanks
    Matenia got a reaction from Pudge in Manipulations in character selection menu   
    That should work. Lua.LuaDoString takes some extra arguments like "notInGame" or something, so maybe try those
  22. Like
    Matenia got a reaction from Pudge in Manipulations in character selection menu   
    Extract GlueXML from your client's MPQ find out what everything is called and then use those names.
  23. Like
    Matenia got a reaction from thebk150 in Calculate distance between totem and player target   
    Find totem in objectmanager by name or entry, then confirm it's your pet (IsMyPet property) and check unit.Position.DistanceTo(ObjectManager.Target.Position) <= 30
  24. Thanks
    Matenia got a reaction from TheSmokie in Warmane Icecrown Bot Detection   
    Dude, you're completely uninformed. First of, it doesn't matter what right they have. Second, whether they or Blizzard have that right would make no difference. Warden is part of Wow's binary. You're checking part of the memory section that the process itself occupies, not scanning RAM at random. This is also how CRC checks work.
    They aren't scanning your system at random either. The way this check works is that the client can be patched to execute Lua code as "secure" rather than tainted, the way it normally is. The client usually checks (in itself) if the function is allowed to be executed (for example, casting a spell from code can only be done using secure action buttons in a certain way, or macros). The server never knows if a spell was sent to it "legitimately". 

    They execute Lua code on your client and hook some functions that you would normally use. So if you cast a spell in a way that's against the rules, it will now notify them.
  25. Thanks
    Matenia got a reaction from freaq in Bot wont start - error   
    You're loading a grinder profile in the quester product
×
×
  • Create New...