Jump to content

CaughtUMirin

Members
  • Posts

    23
  • Joined

  • Last visited

Posts posted by CaughtUMirin

  1.  

     

    On 8/5/2016 at 7:20 PM, capnmarvel said:

    why? i want to do BGs, but watching while bot play for me, cant do that ?

    You can, sure. Just expect to be banned in a couple weeks.

     

    Normies are smart nowadays. They've had to deal with mass BG bots for a couple years now. Blizz has started cracking down HARD on pvp botting and many of those normies know EXACTLY what to look out for to tell if someone is botting or not.

  2. DK is my main, and I wrote a pretty beastly all-in-one DK routine (switches automatically based on current spec/talent set up).

     

    What exactly is your question? How do the festering strikes work?

     

    Also note: If you REALLY want to make an UH dk fight class that isn't garbage, you need to do 2 things:

    1. Learn unholy DK on your own. Unholy DK is definitely a l2p class and the guides are garbage atm (especially Icy-Veins)

     

    2. Don't waste your time trying to use the profile creator if you want a good routine. Get your feet wet and try out C# fight class coding. UH DK is another class that you WILL change talents based on what you're currently doing, and also conditions change a good bit based on whether you're aoeing or single targeting.

  3. 7 hours ago, BetterSister said:

    Wanna tell us too? :blink:

    I'm basically doing what Droidz is doing. Using the GUIDs to get make sure the user is correct.

     

     

     

     

    This code is tested and should work (I modified it to return any role, but I'll test again and make sure). Here's my code:

     public enum Roles
        {
            TANK,
            HEALER,
            DAMAGER
        }
    
    
        public static List<string> GetGUIDsByRole(Roles role)
        {
            
            string lua =       
               @"guids = """";
                for groupindex = 1,GetNumGroupMembers() do
                   if IsInRaid() then
                      local role = UnitGroupRolesAssigned(""raid"" .. groupindex);
                      if role == ""{0}"" then
                         local name = UnitGUID(""raid"" .. groupindex);
                         guids  = guids ..  name .. "" "";
                      end
                   elseif IsInGroup() then
                      local role = UnitGroupRolesAssigned(""party"" .. groupindex)
                      if role == ""{0}"" then
                         local name = UnitGUID(""party"" .. groupindex);
                         guids = name;
                         return;   
                      end
                   end
                end ";
    
            var val = Lua.LuaDoString(string.Format(lua, role), "guids");
            if (string.IsNullOrWhiteSpace(val))
            {
                Logging.WriteFight("No tanks found!");
                return new List<string>();
            }
            var tankNames = val.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
            return tankNames;
        }

     

     

     

    And Here's where I map them to units:

    public static List<WoWPlayer> GetPartyMembersByRole(Roles role, Vector3 positionCenter, int maxHealthPercent = 100, float maxDistance = float.MaxValue, bool orderByHealth = true)
            {
                var guids = GetGUIDsByRole(role);
                if (guids.Count == 0)
                    return new List<WoWPlayer>();
            
                var units = Party.GetPartyHomeAndInstance().Where(m => guids.Contains(m.Guid128.ToString()) && m.IsValid && m.IsAlive && m.HealthPercent < maxHealthPercent && m.Position.DistanceTo(positionCenter) <= maxDistance);
    
                if (orderByHealth)
                    units = units.OrderBy(p => p.HealthPercent);
    
                return units.ToList();
            }

     

     

     

     

     

    This issue would also break SpellManager.CastSpellByNameOn(), so I do this to get the full/CRZ name when casting a heal:

    public static string GetCRZName(WoWUnit unit)
        {
            if (!(unit is WoWPlayer))
                return unit.Name;
            string lua = @"class, classFilename, race, raceFilename, sex, name, realm = GetPlayerInfoByGUID(UnitGUID(""{0}""));
                        if(realm ~= nil and realm ~= """") then   
                           name = name .. ""-"" .. realm;
                        end";
    
            var name = Lua.LuaDoString(string.Format(lua, unit.Guid128.ToString()), "name");
            return name;
        } 
    
    
    public static async Task<bool> CastHeal(Spell spell, WoWUnit unit, bool reqs, bool ignoreUsable = false)
        {
            if (!reqs) return false;
            string myspell = spell.Name;
            if (!spell.KnownSpell) return false;
            if (!spell.IsSpellUsable && !ignoreUsable) return false;
            if (SpellManager.GetSpellCooldownTimeLeft(myspell) > 0) return false;
            try
            {
                
                SpellManager.CastSpellByNameOn(myspell, GetCRZName(unit));
                if (LastLog != myspell)
                {
                    Logging.WriteFight(myspell);
                    LastLog = myspell;
                }
                await Task.Delay(Usefuls.Latency);
                return true;
            }
            catch (Exception e) { Logging.WriteFight("CastOn: " + myspell + " " + e.ToString()); }
            return false;
        }

     

     

    Note: I check to see if realm is nil or empty because realm isn't returned if the player is on the same realm. I also check to make sure the WoWUnit is a player before executing the code because it will error out otherwise.

  4. Yeah my lua is pretty similar, but my problem was with the WowPlayer object and not being able to get the realm name from the WowPlayer instance. Here's the code I'm using to get the tank names:

     var lua = new[]
            {
                "partyTanks = \"\";",
                "for groupindex = 1,GetNumGroupMembers() do",
                "   if IsInRaid() then",
                "	    local role = UnitGroupRolesAssigned(\"raid\" .. groupindex);",
                "		if role == \"TANK\" then",
                // "		    local name = GetUnitName(\"raid\" .. groupindex, true);",
                "			local name, realm = UnitName(\"raid\" .. groupindex);",
                "			partyTanks  = partyTanks ..  name .. \",\";",
                "		end",
                "   elseif IsInGroup() then",
                "	    local role = UnitGroupRolesAssigned(\"party\" .. groupindex)",
                "		if role == \"TANK\" then",
                //  "		    local name = GetUnitName(\"party\" .. groupindex, true);",
                "			local name, realm = UnitName(\"party\" .. groupindex);",
                "			partyTanks = name;",
                "			return;   ",
                "		end",
                "   end",
                "end ",
            };
    
            var val = Lua.LuaDoString(lua, "partyTanks");
            if (string.IsNullOrWhiteSpace(val))
            {
                Logging.WriteFight("No tanks found!");
                return new List<string>();
            }
            var tankNames = val.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); //Remove last comma and empty entries if raid.
            Logging.WriteDebug("Tanks: " + string.Join(", ", tankNames));
            return tankNames;

     

     

    And here's the code I use to find the WoWPlayer instance for the tank(s):

    List<WoWPlayer> tankList = Party.GetPartyHomeAndInstance().Where(m => tankNames.Contains(m.Name)).ToList();

     

    Note: My Fight Class is in full CS.

     

    Let's say I have 2 people from different realms in my cross-realm raid: Steve-Kel'Thuzad who is a tank and Steve-Frostwolf who is a DPS.

     

    The lua code to get the tank will return back "Steve", "Steve (*)", or "Steve-Kel'Thuzad" depending on which lua function you use to get the unit name. The 3 common ones are:

    • local name, realm = UnitName(unit); //Steve
    • local name = GetUnitName(unit); //Steve (*)
    • local name = GetUnitName(unit, true); //Steve-Kel'Thuzad

     

    The problem comes here...

    • Steve-Kel'Thuzad's WoWPlayer instance returns "Steve" for WowPlayer.Name
    • Steve-Frostwolf's WoWPlayer instance ALSO returns "Steve" for WoWPlayer.Name

     

    Now, when I use Party.GetPartyHomeAndInstance().Where(m => tankNames.Contains(m.Name)), I will get the following results:

    • local name, realm = UnitName(unit); //Steve
      • 2 instances of WoWPlayer
    • local name = GetUnitName(unit); //Steve (*)
      • 0 intstances of WoWPlayer
    • local name = GetUnitName(unit, true); //Steve-Kel'Thuzad
      • 0 instances of WoWPlayer

     

    While it's quite rare to get 2 people with the same name in a CRZ group, it does happen, and when it does it breaks healing profiles completely. With Blizz becoming more and more crazy for CRZ, I won't be surprised it I'm not the only one who's ran into this issue.

     

    What would be perfect is WoWPlayer properties to get the CRZ name and/or realm.

     

    So, for instance, WoWPlayer.CrossRealmName would return [name]-[realm] if the player is on another realm and [name] if the player is on the same realm as me.

     

     

    I hope this was easy to understand. I live in the states and it's pretty late here lol.

  5. Just my luck, but in an LFR I did today I had a tank and dps with the same name, but different server.

     

    I use a lua script to get the name of the tanks and then grab the WoWPlayer instance by the name. This kinda broke and my healer was prioritizing the DPS over the Tank because the DPS was closer.

     

    I can get the realm easily enough with the lua script (GetUnitName("raid\ .. groupindex, true); returns [name]-[realm] or [name] if the player is on the same server), but I don't see a property in the WoWPlayer class to get the realm name for that player.

     

    Is there any way to get the WoWPlayer's realm if they are on a different realm?

     

    Edit: Or if there's a way to get the WoWPlayer instance from the raid/party unit name (raid1, raid2, party1, party2, etc) then I could make that work.

  6. I use it on live and I like it. The community is small so you will need to educate yourself on the basics of xml and C# (and lua, definitely brush up on lua), but that's a good thing imo because it keeps those away who tend to do dumb shit that would get the bot on Blizz's radar.

     

    There are a few hiccups with the bot, but nothing I haven't been able to fix with a plugin or whatnot.

     

    Overall I'm happy with it

  7. Well I I made a small hack in CS code that makes my character mount up and press the the "Space" key before doing any flying.

     

    I have to copy/paste it before any long moving, but it works :)

     

     

    Here's the code:

     

    <QuestsSorted Action="RunCode" NameClass="if (!wManager.Wow.ObjectManager.ObjectManager.Me.IsMounted)
                {
                    wManager.Wow.Helpers.Lua.RunMacroText(&quot;/cast &quot; + wManager.wManagerSetting.CurrentSetting.FlyingMountName);
                    wManager.Wow.Helpers.Usefuls.WaitIsCasting();
                    wManager.Wow.Helpers.Move.JumpOrAscend(wManager.Wow.Helpers.Move.MoveAction.PressKey);
                }" />

     

×
×
  • Create New...