Jump to content

Mykoplazma

Members
  • Posts

    183
  • Joined

  • Last visited

Posts posted by Mykoplazma

  1. Yes try yourself delete wRotation.dll put rotation into plugin and the load should go down. But there is a bug which is causing to rotation it's not working anymore ( even as a form of plugin and you need to /reload - at least for private server ) that bug is caused by pathfinding module? Idk why but if I use pathfinding module after some time the rotation is not working anymore. Without it ( like on raid or something ) the problem is not there. So ;)

  2. 2 hours ago, Matenia said:

    To clarify, you just use your own targeting logic and then basically just call your own C# fightclass yourself?

    Well that depens. If you use grinder module or gathering module it has autoattack build inside. So there is no need to make targeting logic just write proper sequence of attack inside the plugin template ( make some checks if target is alive your are not mounted etc ) but this is not so diffucult. If you need to make some multibox action well - I presonally created custom addon which is doing exactly nothing ( 0% load ) and after enabling plugin with custom fighting routine I got multiboxing prupouse wrobot without that hog like fightclass thing. ( 1-2% max with auto follow , auto heal , auto shadowburn without targeting etc ... ) The next thing hogging is pathing system ( sadly ) but that is another story ;)

  3. Fly up using UP key and strafe right and left is so 'natural' ... The same thing is landing. Who use DOWN key to land at ore/herb? Is so 'natural' and sometimes in the middle of the flight the bot can't decide where to fly? And go once to the right once to the left in very fast rate it looks like a patient with cerberal palasy trying to play or something. Generally the whole gathering grinding bots are well they are working but they are so unnatural ( bruteforcing the way to the herb/ore/mob ) and other thing - when the ore/herb is underwater the bot will not dismount sometimes but dig in the water above the herb/ore that looks very funny too. Or even if you have 'don't dig inside or something' it will still try to 'dig' into the texture above. And the whole path generating system don't know how to fly from the point up to the point downhill or vice versa - it will simply go around above the ground. It looks like path genearting system for fliying mount is using path generating system for the ground mount. And this is very botish too. I can record all that situations which are nasty and put a video here but it will be not a good adertisement . ;) There is more bugs of course but I don't remember them all. Please just try to emulate honorbuddy system it was much more natural. That thing is working but it only looks natural on flat map like shimmering flats when the some hills appears ( or god forbid bridges to stuck under, or building ) the whole thing is far from perfect.

  4. The simcraft rotation or other addon is not pefrect. You must write your own rotation and tune it in long run to get the proper high values of dps. Study the char , check all possible values which increase the dps etc etc. The priority system used by example by pqr can be easly simulated in c# using something like that.

    Pseudocodish way

    spellName = "fillerSpellName"

    if (something && something ) spellName = "spell1";

    if (somethingElse && somethingElse ) spellName = "spell2";

    if (somethingElse2 && somethingElse2 ) spellName = "spell3";

    (..)

    Cast(spellName);

    The lowest spell in the program ( or higher in the line number ) will be executed first and then the rest if the condition from the lowest is not ready etc etc.

    I myself after a month of tunning and checking was able to make perfect destro lock rotation but well it was worth it ( conditions in that rotation are different than in simcraft tho )

    About the automatic conversion - well there is no such program here and who knows maybe somebody will write it.

     

     

  5. To cast a spell over mouseover (any mouseover ) you must write the guid of target directly into mouseover adress and then cast the spell on mouseover.

    For pandaria that solution is working:

    string spellName = "Heal";
    unit = ObjectManager.Target;
    var baseAdress = (uint)wManager.Wow.Memory.WowMemory.Memory.MainModuleAddress;
    uint s_MouseOver = baseAdress + 0xD65B28;
    wManager.Wow.Memory.WowMemory.Memory.WriteUInt64(s_MouseOver, unit.Guid);
    SpellManager.CastSpellByNameOn(spellName, "mouseover");

    after digging on ownedcore I found the value of 2.4.3 mouse over adress ( I hope so: ulong mouseOverGuid: wow.exe + 0x86E950 )

    so probably for 2.4.3 the function to cast somethin on mouseover will look like that:

    string spellName = "Heal";
    unit = ObjectManager.Target;
    var baseAdress = (uint)wManager.Wow.Memory.WowMemory.Memory.MainModuleAddress;
    uint s_MouseOver = baseAdress + 0x86E950;
    wManager.Wow.Memory.WowMemory.Memory.WriteUInt64(s_MouseOver, unit.Guid); //WriteUInt64 or 32?
    SpellManager.CastSpellByNameOn(spellName, "mouseover");

    But idk that guid is already 64 bit on tbc or 32? I don't have tbc here but I think this is a good solution maybe somebody skilled can check it? ;)

     

     

  6. Ok don't wanna be rude but

    0x00BD0798

    Is static ? If so you need add wow base memory adress to that to work. On panda you need to do that because the base is different each time wow is executed so the final adress will be different. In the code above that thing is not present.

  7. Ok I get it working 5.4.8 18414 offset.

    MouseGuid  = Wow.exe+D65B28

    After that all is ok and you can cast havoc on not current target without changing the current target and spam shadowburn without changing current target - useful thing. And I don't get strange behaviour nothing is blocked etc. I can run around cast shadwoburn and nuke main target in the same time.

     

  8. Hey reapler do you know haw to cast the spell on guid without targeting ,focusing etc? It was possible on cata (wow+ hack ) to use spell on enemy unit ( like interrupt or something ) without targetting it so you don't loose your focus and target ( very nice for arenas etc ) it was like third focus and when you cast a spell it land on the target and it was in the combat log but there was no targeting the target whatsoever it was working thru simple CastSpellByName("spellname",characterGuid) but I thing there was some kind of internall wraper inside the wow+ or some modification to cast spell by name lua function.

  9. Well there is a bug with pathfinder and if you are near node but is somewhere off the path and pathfinder don't have enough time to calculate proper path before you arrive to the path point ( because is quite slow and uneffective ) it will pass the ore and go to the  next path point. For me what is working that make a perfect path around using some kind of traveling salesman solution, each time where you over the ore make a descent in gathering profile 5yards over it and reduce the search in general setting to 20 yards. Just to disable the crappy pathfinding module and make the bot work like a bllind old lazy bot. But that is working quite nice. Other thing is sometimes even if the bot is flaying over the ore it will still not get it you must open the profille and manually add id of the ore/herb in the fourth tab and disable the gathering  options completely in general settings. This is working for me.

  10. How to draw the circle using method from wManager Radar drawcircle ( I know how to draw a circle on the screen) but I have problem to make it permanent ( wanna make a permanent trail on the map for creating the best gathering route ). So how to make that circle permanent like when the 3d radar is on? ( orange circles and lines ). Is there an easy solution to do that? If I use the method once it will only blink and if I use it in loop after some time wrbot will crash ^^.

  11. The easiest way is to copy something that was working quite well ( top hps on raids ) from the pqr engine files.

     

    Nova_CustomT = { }
    PQR_WriteToChat("Custom Table is empty!", "Alert")
    
    function CalculateHP(t)
    	incomingheals = UnitGetIncomingHeals(t) and UnitGetIncomingHeals(t) or 0
    	return 100 * ( UnitHealth(t) + incomingheals ) / UnitHealthMax(t)
    end
    
    function CanHeal(t)
    	if UnitExists(t)
    	 and UnitInRange(t) 
    	 and UnitIsFriend("player", t)
    	 and UnitIsConnected(t)
    	 and not UnitIsEnemy("player",t) 
    	 and not UnitIsCharmed(t) 
    	 and not UnitIsDeadOrGhost(t) 
    	 and not PQR_IsOutOfSight(t)
    	 and not UnitDebuffID(t,104451) -- Ice Tomb
    	 and not UnitDebuffID(t,76577)  -- Smoke Bomb 
      then return true end 
    end
    
    function SheuronEngine()
    	local group, size = nil, nil
    	lowhpmembers = 0
    	members = { { Unit = "player", HP = CalculateHP("player") } } 
    	-- Check if the Player is apart of the Custom Table
    	for i=1, #Nova_CustomT do if UnitGUID("player") == Nova_CustomT[i].GUID then Nova_CustomT[i].Unit = "player" Nova_CustomT[i].HP = CalculateHP("player") end end
    	--Find the Group Type and Size
    	if GetNumRaidMembers() > 0 then 
    		group = "raid" 
    		size = GetNumRaidMembers() 
    	else 
    		group = "party" 
    		size = GetNumPartyMembers() 
    	end
    	
    	for i = 1, size, 1 do 
    		local member, memberhp = group..i, CalculateHP(group..i) 
    		if CanHeal(member) then
    			if UnitGroupRolesAssigned(member) == "TANK" then memberhp = memberhp - 1 end
    			if UnitThreatSituation(member) == 3 then memberhp = memberhp - 3 end
    			if UnitBuffID(member, 53563) then memberhp = memberhp + 3 end -- Searing Plasma Check
    			for i = 1, #PQ_SP do if UnitDebuffID(member, PQ_SP[i]) then memberhp = memberhp - 9 end end
    			for i=1, #Nova_CustomT do if UnitGUID(member) == Nova_CustomT[i].GUID then Nova_CustomT[i].Unit = member Nova_CustomT[i].HP = memberhp end end -- If they are in the Custom Table add their info in
    			table.insert(members, { Unit = member, HP = CalculateHP(member) } )
    		end
    		if CanHeal(group..i.."pet") then
    			local memberpet, memberpethp = nil, nil
    			if UnitAffectingCombat("player") then
    				 memberpet = group..i.."pet" 
    				 memberpethp = CalculateHP(group..i.."pet") * 2
    			else
    				 memberpet = group..i.."pet"
    				 memberpethp = CalculateHP(group..i.."pet")
    			end
    			for i=1, #Nova_CustomT do if UnitGUID(memberpet) == Nova_CustomT[i].GUID then Nova_CustomT[i].Unit = memberpet Nova_CustomT[i].HP = memberpethp end end
    			table.insert(members, { Unit = memberpet, HP = memberpethp } )
    		end
    	end
    	table.sort(Nova_CustomT, function(x, y) return x.HP < y.HP end)
    	table.sort(members, function(x,y) return x.HP < y.HP end)
    	for i=1,#members do if members[i].HP < 85 then lowhpmembers = lowhpmembers + 1 end end 
    	if CanHeal("target") then table.sort(members, function(x) return UnitIsUnit("target",x.Unit) end) end 
    end                                   
                                                 I 

     

    it looks like that - SheuronEngine() ( that was the standard system to calculate hp in pqr heal bot up to pandas and pqr ban )  will make global variable that will hold  the lowest hp player with priority on tank with incoming heal counted in. I translated it partially to c# and it's working quite well. ( a bit hacky whacky tho ) . In wrobot there is no translated function like unit threat situation and roles assigned and calling lua from c# is very power hogging process. Idk why but calling lua is eating a lot of  power.

    Something like that for example is working but sometimes bugging out ( the name of players sometime canno't be read from memory and you will get Unknown )

    public WoWPlayer FindLowestHealth()
        {
    Dictionary<WoWPlayer, double> players = new Dictionary<WoWPlayer, double>();
    
            int playerHp = Convert.ToInt32(ObjectManager.Me.HealthPercent);
            if (playerHp < 100)
            {
                if (UnitThreatSituation(ObjectManager.Me.Name) == 3) { playerHp = playerHp - 3; }
                if (UnitGroupRolesAssigned(ObjectManager.Me.Name) == "TANK") { playerHp = playerHp - 1; }
            }
            players.Add(ObjectManager.Me, playerHp);
    
            foreach (var wowPlayer in ObjectManager.GetObjectWoWPlayer())
            {
                if (wowPlayer.Name != null && wowPlayer.GetDistance < 40 && wowPlayer.IsAlive && !TraceLine.TraceLineGo(wowPlayer.Position) && UnitIsFriend(wowPlayer.Name) && UnitIsConnected(wowPlayer.Name) && !UnitIsEnemy(wowPlayer.Name) && !UnitIsCharmed(wowPlayer.Name))
                {
                    int otherPlayerHp = Convert.ToInt32(wowPlayer.HealthPercent);
                    if (playerHp < 100)
                    {
                        if (UnitThreatSituation(wowPlayer.Name) == 3) { otherPlayerHp = otherPlayerHp - 3; }
                        if (UnitGroupRolesAssigned(wowPlayer.Name) == "TANK") { otherPlayerHp = otherPlayerHp - 1; }
                    }
                    players.Add(wowPlayer, otherPlayerHp);
                }
            }
            WoWPlayer minHpPlayer = players.Aggregate((l, r) => l.Value < r.Value ? l : r).Key;
            players = null;
            return minHpPlayer;
    }

     

    Calling FindLowestHealth() will return player with lowest hp. ( buggy and not the last version what I'm using now )

  12. There is something generally wrong with figthclasses generated in xml format. It's ok but after one hour ( less on more in my case on pandaria priv ) the fps is going down to 18 ( from 100 ) the text in chat become lighter in color and the prompt is gone and only stop bot /reload in wow and start bot again helps resolve that problem. With my own rotations which are pure cs without any cooldown ( sleep thread ) there is no such problem. Lua overload? The memory is up to 300 megs for wrobot too and I'm only using fight class and no plugins.

×
×
  • Create New...