Page 12 of 16

Re: Party Bot (questions/answers)

Posted: Thu Feb 06, 2014 2:06 am
by lisa
Anyone ever had issues with healer suddenly just starting to attack mobs even though it is set not to.
Had it happening today and can't pinpoint the reason why.

It is acting like it is suddenly doing
Party() instead of Party(true), which is the difference between healing and Dps.

Re: Party Bot (questions/answers)

Posted: Thu Feb 06, 2014 6:46 am
by Miworax
i want to use the partyheal to farm some inis solo / duo but.... if i destroy the group the bot stoped.... and this is in micro macro

12:42am - ...xx/xxxx/Desktop/Rom/scripts/rom/classes/player.lua:3606: bad argument #1 to 'pairs' (table expected, got nil)

maybe someone has a solution ?

Re: Party Bot (questions/answers)

Posted: Thu Feb 06, 2014 7:17 am
by lisa
little more info will help

what version of bot are you using
what version of game are you using

when you leave party are you inside the instance or outside the instance

Re: Party Bot (questions/answers)

Posted: Thu Feb 06, 2014 7:22 am
by Miworax
MicroMacro v1.02 beta 4

game :6.0.5.2683

inside and outside ive tryed, but same error

Re: Party Bot (questions/answers)

Posted: Thu Feb 06, 2014 9:21 am
by lisa
well the game version is latest official version which is good but your copy of Micromacro is very very old.

MicroMacro v1.04.157
is the latest stable version.

Also you didn't mention which version of rombot you are using.
When you start the bot it will do the "image" print and it will print the version.


RoM Bot Version 3.29, Revision 771



I have narrowed down my issue, *pokes finder at Rock*
In your eggpet summon code you force the bot to use player:fight() if it is in combat.

Code: Select all

function CEggPet:Summon()
	self:update()
	while self.EggId > 0 and player.Level > self.Level-5 and self.Summoned == false and player.Alive and player.HP > 0 do
		keyboardRelease( settings.hotkeys.MOVE_FORWARD.key ); yrest(200)
		RoMScript("SummonPet("..self.EggSlot..")")
		repeat
			yrest(500)
			self:update()
			player:updateBattling()
			player:updateCasting()
		until self.Summoned or player.Battling or player.Casting == false
		yrest(500)
		if player.Battling then
			if player:target(player:findEnemy(true, nil, evalTargetDefault)) then
				player:fight()
			end
		end
		self:update()
	end
end
Party healer has it's own version of the fight function and that is why the issue.
Is the check for battling and using player:fight really needed in this function?

Re: Party Bot (questions/answers)

Posted: Thu Feb 06, 2014 9:36 am
by Miworax
Welcome to rom bot! press END to qui
RoM Bot Version 3.29, Revision 753

sorry, now i know what you meen before

Re: Party Bot (questions/answers)

Posted: Thu Feb 06, 2014 9:38 am
by Miworax
and i only use the partyheal , not the partydps or something like that....

i run with my main char into the easy mode and let me heal from my character...

but if ive killed the last boss, i need to destroy and reinvite the group and then there comes the error...

Re: Party Bot (questions/answers)

Posted: Thu Feb 06, 2014 11:07 am
by rock5
lisa wrote:Is the check for battling and using player:fight really needed in this function?
I think the reason for it was to make sure it completed. So if it has aggro then it clears the aggro first then finishes summoning. The bot probably doesn't need it. If we were to exit the function if we have aggro then it would try again latter when it doesn't have aggro. It would affect user code but I doubt there is any user code out there that does it's own summoning.

Re: Party Bot (questions/answers)

Posted: Thu Feb 06, 2014 6:07 pm
by lisa
Miworax wrote:and i only use the partyheal , not the partydps or something like that....

i run with my main char into the easy mode and let me heal from my character...

but if ive killed the last boss, i need to destroy and reinvite the group and then there comes the error...
I would suguest updating to the current bot, the party.lua has been updated 3 times since 753 and that may have been to fix an issue like yours.
rock5 wrote:I think the reason for it was to make sure it completed. So if it has aggro then it clears the aggro first then finishes summoning. The bot probably doesn't need it. If we were to exit the function if we have aggro then it would try again latter when it doesn't have aggro.
Yeah that was exactly my thought, just exit the loop if battling and the usual bot code will take care of the fighting and then it will just try to summon pet again once out of combat.
forcing bot into combat like that also bypasses any other checks in the bot like waypoint type.


would need testing but this could work.

Code: Select all

function CEggPet:Summon()
	self:update()
	if self.EggId > 0 and player.Level > self.Level-5 and self.Summoned == false and player.Alive and player.HP > 0 then
		keyboardRelease( settings.hotkeys.MOVE_FORWARD.key ); yrest(200)
		RoMScript("SummonPet("..self.EggSlot..")")
		repeat
			yrest(500)
			self:update()
			player:updateBattling()
			player:updateCasting()
		until self.Summoned or player.Battling or player.Casting == false
		yrest(500)
		self:update()
	end
end
For some reason I have a feeling there may be a delay in the .Casting and so it may need a longer yrest to give game time to actually start the cast. would need testing.

Re: Party Bot (questions/answers)

Posted: Thu Feb 06, 2014 7:20 pm
by rock5
That looks about right. I think I would leave out the last player:update() as that was mainly for the next loop.

I think summoning is just like everything else, it can be delayed by lag and such. 500ms is a long time. I just timed it on my EU account and it took about 70ms.

Actually we could probably do without the last yrest too.

Re: Party Bot (questions/answers)

Posted: Fri Feb 07, 2014 1:01 am
by lisa
agreed the last eggpet:update() and yrest aren't needed anymore.
I'll try to make some time to test the rest, I can't see why it wouldn't work though.

Re: Party Bot (questions/answers)

Posted: Fri Feb 14, 2014 4:51 pm
by Lamkefyned
how can I make Nitsxg follow and when you reach the boss to take the loot

Re: Party Bot (questions/answers)

Posted: Wed Feb 26, 2014 8:58 am
by ZZZZZ
I use PartyHeals() on my healer when trying to farm Dreamland. When the dreamland round finishes I need it to load a waypoint that 'resets' the instance and then it run's PartyHeals() again. On my main client I made it use

Code: Select all

sendpartychat('code"loadPaths("DreamlandHeal")"') 
to do it, but the issue I have is while the MM window is actually saying that it has loaded DreamlandHeal, it is still running PartyHeals() and hence doesn't do anything.

Code: Select all

Party member 1 has the name of Maintoon
Loaded waypoint path DreamlandHeal.xml
No return path with default naming DreamlandHeal_return.xml found.
We use the normal waypoint path DreamlandHeal.xml now.
Party member 1 has the name of Maintoon
Just need to know if it's possible to actually load that waypoint through Partyhealer. Any advice would be great :)

Re: Party Bot (questions/answers)

Posted: Wed Feb 26, 2014 9:31 am
by rock5
I'd say not.

loadPaths just loads a waypoint file into the variable __WPL. It wont start being used until the current code being run, ends. Because partyheal is a continuously running script, it never ends so it never starts to use the newly loaded path.

The only way I can see it possibly working is if partyheal itself is modified to detect when a new file is loaded and ends itself so the new file can take over.

Re: Party Bot (questions/answers)

Posted: Wed Feb 26, 2014 9:42 am
by ZZZZZ
Could possibly add the waypoint itself into a funtion in a manner of speaking and just run that? Once the function ends (successfully resets instance) it should simply continue with PartyHeals()?

~~ Can you put waypoints into functions/<onLoads>?

Re: Party Bot (questions/answers)

Posted: Wed Feb 26, 2014 6:43 pm
by lisa
There is a current bug that I have noticed but seems to only be on healer chars, need to narrow it down to be able to fix it.

For now though you can just change the party options to false before loading the dreamlandheal WP, would be easier to just do up a userfunction which changes all the options to false and then tell the healer to call it using party chat, just like you do for loading a path.

Then in that WP before loading partyhealer you need to change the party options back to true.

Re: Party Bot (questions/answers)

Posted: Thu Feb 27, 2014 5:22 am
by ZZZZZ
tried using

Code: Select all

function loadDreamland();
		changeProfileOption("PARTY", false)
		changeProfileOption("PARTY_INSTANCE", false)
		loadPaths("DreamlandHeal");
	end
but got the same result, 'loaded' the waypoint but still running partyheals(). Is there any commands to 'kill' the current task before loading another?

Re: Party Bot (questions/answers)

Posted: Thu Feb 27, 2014 10:17 pm
by ZZZZZ
Messing around with things to try and get this to work, but I can't figure out anything that allows you to cease or skip any code that comes after a loadPaths() command.
Needs to be something like

Code: Select all

	function loadDreamland();
		changeProfileOption("PARTY", false)
		changeProfileOption("PARTY_INSTANCE", false)
error("reseting dreamland")
		loadPaths("DreamlandHeal");
	end
but of course without the error, because it'll just stop there and MM will return to its command prompt. Unless there is some way to error it and then enter the correct command (rom/bot path:DreamlandHeal) through a userfunction or such I have no idea.

Re: Party Bot (questions/answers)

Posted: Fri Feb 28, 2014 12:22 am
by rock5
Like I said, I don't think it's possible unless party.lua itself is edited to accept some sort of option to quit.

Re: Party Bot (questions/answers)

Posted: Fri Feb 28, 2014 12:34 am
by ZZZZZ
ok, i got it working a different way anyway :D

Code: Select all

	function resetDreamLandHeal();
		local stage1failed = false
		changeProfileOption("LOOT", false)
		player:moveTo(CWaypoint(4781,1004,9),true)
		player:target_NPC(115689) -- Pioneer Dawn
		if (RoMScript("GetNumSpeakOption()") > 1)then
			DLApplyHealerPots()
			sendpartychat("ready")
			changeProfileOption("PARTY", true)
			changeProfileOption("PARTY_INSTANCE", true)
			PartyHeals();
		else
			stage1failed = true
		end
		if stage1failed == true then
			player:moveTo(CWaypoint(4732,1059,8),true)
			if 20 > inventory:itemTotalCount(208682) then
				sendpartychat("Not enough Dreamland Dust - Exiting")
				error("Not enough Dreamland Crystal Dust to reset");
			end
			player:moveTo(CWaypoint(4675,1061,8),true)
			player:target_NPC(115697) -- Pioneer Frank
			ChoiceOptionByName(getTEXT("ADS_STRING04_1")) -- 'Is there any way to remove the Dreamland energy fluctuations from my body?'
			yrest(1000);
			ChoiceOptionByName("Exchange 20 units of Dreamland Crystal Dust for one Dreamland Energy Fluctuation Masking service")
			yrest(1000);
			DLApplyHealerPots()
			sendpartychat("ready")
			changeProfileOption("PARTY", true)
			changeProfileOption("PARTY_INSTANCE", true)
			PartyHeals();
		end
	end
Just replaced the waypoints with player:moveTo().