Page 1 of 1

Rom Bot error

Posted: Thu May 22, 2014 9:52 am
by Lamkefyned
*I just update everything and delete all my userfunctions and waypoints and change the ingamefunctions and boot the rombot and throws me this error
error.jpg
*ROM BOT R777

*MICROMACRO V1.04.167

Re: Rom Bot error

Posted: Thu May 22, 2014 10:15 am
by rock5
What this means is that in your userfunctions.lua file it does some code when it load, probably a RoMScript, that causes setupMacro to run early when starting the bot. In most cases the bot will still start ok but in some cases this will cause an error or some other strange effect. For example when the game has been patched and the addresses need to be updated, usually the bot updates the addresses when it starts. But because of the code in userfunctions.lua it will cause an error because it tries to do run setupMacro before the addresses have been updated.

The message is just a warning letting you know that a potential problem exists.

Usually userfunction.lua (and userfunctions in the userfunctions folder for that matter) should only create functions, not execute code. If you have to execute code you should be careful what you do.

Re: Rom Bot error

Posted: Thu May 22, 2014 10:22 am
by Lamkefyned
without userfunctions throws this error but with userfunctions not

Okey understood Rock5 many thanks

Re: Rom Bot error

Posted: Tue May 27, 2014 7:07 pm
by cibervagos
Hi Rock! I have a problem. Some times (many times) my bot get stuck on Clearing Target. I don't know where I need to start looking for. :cry:

Re: Rom Bot error

Posted: Tue May 27, 2014 8:20 pm
by rock5
ClearTarget is used in a lot of places in the bot so I need to know what it was doing when it got stuck. For now I'll assume it's the one at the end of the fight. Seeing as the bot usually works, maybe you have some bad code in the onLeaveCombat section of your profile?

Re: Rom Bot error

Posted: Wed May 28, 2014 5:08 pm
by cibervagos
I have 2 function in my waypoint.

Function 1 (Looking for the Boss)

Code: Select all

function Buscando()
	local jefe = player:findNearestNameOrId(102349); -- Life Leecher (Origin)
	if jefe then
		player:target(jefe);
		local blanco = player:getTarget();
		sendPartyChat('|H|h|cffCC99FFEncontré a |r|cffAA6666'..blanco.Name..'|r|cffCC99FF! con |r|cffFFAAAA'..tostring(blanco.HP)..'|r|cffCC99FF de HP.|r|h')
		RoMScript('SetRaidTarget("target",1);');
		keyboardPress(key.VK_SPACE); -- I jump to avoid an obstacule (if there).
		yrest(600);
		keyboardPress(key.VK_7); -- Pull skill (I have a meele character).
		yrest(3000);
		keyboardPress(key.VK_1); 
		yrest(800);
		blanco:update()
		if blanco.HP > 0 then
			sendPartyChat('|H|h|cffCC99FFA darle rosca!!!!!|r|h')
			repeat
				succionavida = player:findEnemy(nil,102350) -- Summoned Boss
				if succionavida then -- I don't need this for now. I need replace fight loop to use it.
					player:target(succionavida)
					otroBicho = player:getTarget();
					sendPartyChat('|H|h|cffCC99FFMato primero el trucho...|r|h')
					repeat 
						player:fight()
						otroBicho:update()
					until otroBicho.HP == 0 -- Here stuck some time. When combat end. Clearing Target.
				else
					player:target(jefe)
				end
				if 60 > (player.HP/player.MaxHP*100) then -- I don't need this for now. 
					RoMScript("SendChatMessage('|H|h|cffFF4444JUEPUTA!!|r|h', 'SAY')")
				end
				player:fight()
				blanco:update()
			until blanco.HP == 0
			Looteando();
			sendPartyChat('|H|h|cffCC99FFListo|r|h')
			yrest(500)
			succionavida = player:findEnemy(nil,102350)
			if succionavida then
				player:target(succionavida)
				otroBicho = player:getTarget();
				if otroBicho.HP > 0 then
					sendPartyChat('|H|h|cffCC99FFVamos por el otro!|r|h')
					repeat
						player:fight()
						otroBicho:update()
					until otroBicho.HP == 0 -- Here stuck some time. When combat end. Clearing Target.
					sendPartyChat('|H|h|cffCC99FFMuertos los 2.|r|h')
				else
					Looteando(); -- Call loot function
				end
			else
				Looteando();
			end
		else
			blanco:update()
			if blanco.HP == 0 then
				sendPartyChat('|H|h|cffCC99FFParece que esta muerto... a lootear!|r|h')
				Looteando();
			end
		end
	end
end	
Function 2 (Looting the Boss):

Code: Select all

function Looteando()
	player:updateBattling()
	if (not player.Battling) then
		local elBicho = player:findNearestNameOrId(102349)
		if elBicho then
			player:target(elBicho);
			local blanco = player:getTarget();
			if blanco.HP == 0 then
				buffed = player:getBuff(504033) -- looking for root buff
				if buffed then
					sendPartyChat('|H|h|cffCC99FFSe encontro un puto Debuff que impide el looteo.|r|h')
					for index, buff in pairs(player.Buffs) do
						if string.find(buffed.Name,buff.Name,1, true) then
							lefttime=RoMScript("GetPlayerBuffLeftTime(GetPlayerBuff("..index..", 'HELPFUL'))"); -- Try to get debuff remaining time (never work :'( )
							print("Intentando tomar tiempo del buff: "..tostring(lefttime));
							sendPartyChat('|H|h|cffCC99FFAún no puedo tomar el tiempo de |r|cffFFFF88'..buff.Name..'.|r|cffCC99FFPuede ser |r|cffFFAAAA'..tostring((lefttime))..'|r|cffCC99FFseg.??|r|h')
							sendPartyChat('|H|h|cffCC99FFPor las dudas descanso por |r|cffFFAAAA45|r|cffCC99FF seg.|r|h')
							player:rest(45);
							return
						end
					end
				else
					sendPartyChat('|H|h|cffCC99FFNo se encontro Debuff.|r|h')
				end
				sendPartyChat('|H|h|cffAA6666'..blanco.Name..'|r|cffCC99FF está morido. A lootear!!|r|h')
				player:target(elBicho);
				player:loot(elBicho)
				sendPartyChat('|H|h|cffCC99FFDone ;].|r|h') -- Here stuck some time. Clearing Target.
			else
				sendPartyChat('|H|h|cffCC99FFTodavia no se murió??.|r|h')
			end
		end
	end
end
I quit the second function from OnLeaveCombat be couse bot stuck many time. Now I don't have anything in OnLeaveCombat.
Sorry for my english.

Re: Rom Bot error

Posted: Wed May 28, 2014 6:01 pm
by lisa
you have

Code: Select all

               repeat 
                  player:fight()
                  otroBicho:update()
               until otroBicho.HP == 0 -- Here stuck some time. When combat end. Clearing Target.
player:fight() will fight until target is dead or fight reaches time limit set in profile.
So the only reason why you would need to use that repeat loop is if the fight is ending before boss dies due to time limit being reached, if that is the case then just change that value in your profile.

Code: Select all

<option name="MAX_FIGHT_TIME"     	value="30" />
With some bosses it is possible that the bot may think fight is over when it really isn't, HoS boss comes to mind where it becomes impossible to attack it for a period of time and then it comes back, in this case though the bot stays in combat and then when boss comes back again the bot attacks it again, so end result is boss still dies but bot says it killed 2-3 of the boss in it's counting. Either way default bot code still works fine.

Re: Rom Bot error

Posted: Wed May 28, 2014 6:17 pm
by cibervagos
Ty Lisa. In my case the Boss desapear and come back in a few seconds summoning a second Boss. So, I will quit the loop and I try changing MAX_FIGHT_TIME. Be couse my Druid need many time to kill that Boss :D

Re: Rom Bot error

Posted: Wed May 28, 2014 8:12 pm
by rock5
And in future tell us from the beginning that you are using your own code or we will just assume you are talking about the bot code and we'll waste time looking for a problem that isn't there.

Re: Rom Bot error

Posted: Wed May 28, 2014 9:43 pm
by cibervagos
rock5 wrote:And in future tell us from the beginning that you are using your own code or we will just assume you are talking about the bot code and we'll waste time looking for a problem that isn't there.
Ok. Sorry for that.

I quit the loop. But bot still doing the same. Stuck on Clearing Target and take 99% of CPU usage. (Note: MM don't back to shell. Just keep on Clearing Target).

I will try one or two thing before going to bed.

Re: Rom Bot error

Posted: Wed May 28, 2014 9:57 pm
by lisa
cibervagos wrote:Stuck on Clearing Target and take 99% of CPU usage
that is because you have a loop with no rests in it so MM will be doing hundreds of memory reads every single second to the point that it goes insane.

The reason it is clearing target is because that is what player:fight() does when it has no target.


You need to look at the boss fight more closely as to what is happening and what you are telling the bot to do in response to that.

Code: Select all

               repeat 
                  player:fight()
                  otroBicho:update()
               until otroBicho.HP == 0 -- Here stuck some time. When combat end. Clearing Target.
So second boss comes out and you tell bot to attack it, that's fine but once the bot thinks second boss is dead you tell it to keep attacking it until it's HP is 0, bad news for you that won't work, the reason why player:fight() ends when the target is lost is because HP doesn't always go to exactly 0, so that is you main issue right there, assuming the HP always goes to 0 when it dies.

As soon as your target is dead the game takes the target away from you, hence why player fight uses that instead of monitoring HP for when to stop attacking. So you need to ask yourself, with boss 2 why would you lose target and boss not be dead?

Maybe try testing with the other pawn functions, such as :isAlive()

Code: Select all

               repeat 
                  player:fight()
                  yrest(100)
               until not otroBicho:isAlive()
but to be honest that is far to simple to work reliably, you will probably need to do a check for if you have a target and if not then to actually target otroBicho and no doubt add in more and more code to make it reliable.
This is why player:fight() is more than 300 lines of code because things go wrong and you need to be able to deal with issues.

Re: Rom Bot error

Posted: Wed May 28, 2014 9:59 pm
by rock5
Lisa beat me, just.

What she said.

Re: Rom Bot error

Posted: Wed May 28, 2014 10:15 pm
by cibervagos
Ty for answer so fast :D ! I don't have the loop anymore.
I replace

Code: Select all

 repeat
        player:fight()
       otroBicho:update()
 until otroBicho.HP == 0 -- Here stuck some time. When combat end. Clearing Target.
Just for

Code: Select all

player:fight()
in every loop.

But keep doing the same.

But meaby I can resolve it changing player:fight() with my own fight function. Now Im testing the waypoint without the first function. Just keeping the second.

Re: Rom Bot error

Posted: Wed May 28, 2014 10:23 pm
by rock5
Maybe you could show us your updated code.

Re: Rom Bot error

Posted: Thu May 29, 2014 4:14 pm
by cibervagos
Well, the problem is solved. Lisa was right. I forgot replace one more loop. Now the bot don't stuck anymore on Clearing Target. Unfortunately, the script don't work correctly without the loop. Be couse the combat allways finish before Boss die. So, use this function for fight or use normal waypoint is the same.

Here is my code:

Code: Select all

	function Buscando()
		local jefe = player:findNearestNameOrId(102349);
		if jefe then
			player:target(jefe);
			local blanco = player:getTarget();
			sendPartyChat('|H|h|cffCC99FFEncontré a |r|cffAA6666'..blanco.Name..'|r|cffCC99FF! con |r|cffFFAAAA'..tostring(blanco.HP)..'|r|cffCC99FF de HP.|r|h')
			RoMScript('SetRaidTarget("target",1);');
			keyboardPress(key.VK_SPACE);
			yrest(600);
			keyboardPress(key.VK_7);
			yrest(3000);
			keyboardPress(key.VK_1);
			yrest(800);
			blanco:update()
			if blanco.HP > 0 then
				sendPartyChat('|H|h|cffCC99FFA darle rosca!!!!!|r|h')
				player:fight()
				Looteando();
				sendPartyChat('|H|h|cffCC99FFListo|r|h')
				yrest(500)
				succionavida = player:findEnemy(nil,102350)
				if succionavida then
					player:target(succionavida)
					otroBicho = player:getTarget();
					if otroBicho.HP > 0 then
						sendPartyChat('|H|h|cffCC99FFVamos por el otro!|r|h')
						player:fight()
						sendPartyChat('|H|h|cffCC99FFMuertos los 2.|r|h')
					else
						Looteando();
					end
				else
					Looteando();
				end
			else
				Looteando();
			end
		end
	end	
Next step: Make a new working loop and use my own fighting function (becouse I need interrupt the fight to check party for heals). But I will do it by my self.

Thank you so much Rock and Lisa for your help.

If anyone is interested on this code, just ask for it and I will post the new code. (Or if I get some trouble with the new code I will post here :lol: :P )