Page 1 of 1

Botting in Caves or mines

Posted: Mon Mar 28, 2011 10:00 am
by RicalEyl
I have the problem that the bot is trying to attack enemys through walls which he cant see...
Is there a solution for this, i didnt find one using the search funktion.

The only Idea that I got is to maybe tell him only to attack villains that are like 10m next to him. But I didnt even find a funktion for that. Is there one or another solution for the problem?
Thanks :)

Re: Botting in Caves or mines

Posted: Mon Mar 28, 2011 10:55 am
by lisa
There are profile options which deal with distance and combat. reduce the max combat distance and combat distance if you want it to only attack things close to the bot.
eg

Code: Select all

		<option name="COMBAT_DISTANCE"    value="80" />
		<option name="MAX_TARGET_DIST"    value="85" />

Re: Botting in Caves or mines

Posted: Mon Mar 28, 2011 12:00 pm
by RicalEyl
ok thx :) Ill give it a try

Re: Botting in Caves or mines

Posted: Wed Mar 30, 2011 3:08 am
by Auto Pilot
You can also change the target distance in waypoints themselves, both to not have to use a custom profile for that path and also to change it all along the path (in some big room you might want it at your max range and when going inside some tunnel you probably want it reduced to the minimum) and your waypoint file could look like that

Code: Select all

...
<!-- Entering Tunnel -->
<waypoint x="42" y="42" z="42>changeProfileOption("MAX_TARGET_DIST", 80);</waypoint>
<waypoint x="43" y="42" z="42></waypoint>
<waypoint x="44" y="42" z="42></waypoint>
<!-- Entering big room -->
<waypoint x="45" y="42" z="42>changeProfileOption("MAX_TARGET_DIST", 200);</waypoint>
<waypoint x="46" y="42" z="42></waypoint>
<waypoint x="47" y="42" z="42></waypoint>
<waypoint x="48" y="42" z="42></waypoint>
<!-- Entering Tunnel Again -->
<waypoint x="49" y="42" z="42>changeProfileOption("MAX_TARGET_DIST", 80);</waypoint>
...
Or if one target distance works nicely for the entire instance, use the onLoad tag in waypoint file to change it there

Code: Select all

<?xml version="1.0" encoding="utf-8"?><waypoints>
	<onLoad>
		changeProfileOption("MAX_TARGET_DIST", 80);
	</onLoad>
	<waypoint ....></waypoint>
	.....
</waypoints>

Re: Botting in Caves or mines

Posted: Thu Mar 31, 2011 8:34 am
by Germangold
i need an elegant solution for Cylops Lair and Shrine of Kalin farming...

i use a mage/priest

main skill is Purgatory Fire

how do i pull like 10 Mobs and then firing about 8 rounds of Purgatory Fire?
this is my wp inside cl right before boss #1 room
moobs are always in quad clusters or less
i just want to optimize the killspeed
single targeting is realy out of option is does take to long

Code: Select all

	<!-- Inside CL -->
	<!-- # 8 --><waypoint x="1971" z="1089" >	</waypoint>
	<!-- # 9 --><waypoint x="1990" z="1100" >	</waypoint>
	<!-- # 10 --><waypoint x="2035" z="1278" >	</waypoint>
	<!-- # 11 --><waypoint x="2025" z="1386">	</waypoint>
	<!-- # 12 --><waypoint x="2031" z="1494">	</waypoint>
	<!-- # 13 --><waypoint x="2052" z="1552">	</waypoint>
	<!-- # 14 --><waypoint x="2120" z="1609">	</waypoint>
	<!-- # 15 --><waypoint x="2203" z="1627">	</waypoint>
	<!-- # 16 --><waypoint x="2303" z="1632">	</waypoint>
	<!-- # 17 --><waypoint x="2417" z="1636">	</waypoint>
	<!-- # 18 --><waypoint x="2512" z="1635">	</waypoint>
	<!-- # 19 --><waypoint x="2615" z="1630">	</waypoint>
	<!-- # 20 --><waypoint x="2704" z="1635">	</waypoint>
	<!-- # 21 --><waypoint x="2786" z="1663">	</waypoint>
	<!-- # 22 --><waypoint x="2793" z="1716">	</waypoint>
	<!-- # 23 --><waypoint x="2735" z="1749">	</waypoint>
	<!-- # 24 --><waypoint x="2699" z="1790">	</waypoint>
	<!-- # 25 --><waypoint x="2680" z="1835">	</waypoint>
	<!-- # 26 --><waypoint x="2655" z="1904">	</waypoint>
	<!-- # 27 --><waypoint x="2649" z="1957">	</waypoint>
	<!-- # 28 --><waypoint x="2730" z="2093">	</waypoint>
	<!-- # 29 --><waypoint x="2765" z="2101">	</waypoint>
	<!-- # 30 --><waypoint x="2802" z="2107">	</waypoint>
	<!-- # 31 --><waypoint x="2860" z="2117">	</waypoint>
	<!-- # 32 --><waypoint x="2896" z="2134">	 </waypoint>
	<!-- # 33 --><waypoint x="2936" z="2180">	</waypoint>
	<!-- # 34 --><waypoint x="2941" z="2260">	</waypoint>
	<!-- # 35 --><waypoint x="2943" z="2340">	</waypoint>
	<!-- # 36 --><waypoint x="2946" z="2431">	</waypoint>
	<!-- # 37 --><waypoint x="2957" z="2492">	</waypoint>
	<!-- # 38 --><waypoint x="3008" z="2537">	</waypoint>
	<!-- # 39 --><waypoint x="3054" z="2563">	</waypoint>
	<!-- # 40 --><waypoint x="3135" z="2610">	</waypoint>
	<!-- # 41 --><waypoint x="3212" z="2653">	</waypoint>
	<!-- # 42 --><waypoint x="3281" z="2684"> 	</waypoint>
	<!-- # 43 --><waypoint x="3350" z="2700">	</waypoint>
	<!-- # 44 --><waypoint x="3400" z="2698">	</waypoint>
	<!-- # 45 --><waypoint x="3431" z="2696">  </waypoint>
sth like
pseudocode

Code: Select all

if (player.followedbymobs > 8) then
	player:cast("MAGE_PURGATORY_FIRE"); yrest(150);
	player:cast("MAGE_PURGATORY_FIRE"); yrest(150);
	player:cast("MAGE_PURGATORY_FIRE"); yrest(150);
	player:cast("MAGE_PURGATORY_FIRE"); yrest(150);
	player:cast("MAGE_PURGATORY_FIRE"); yrest(150);
	player:cast("MAGE_PURGATORY_FIRE"); yrest(150);
	player:cast("MAGE_PURGATORY_FIRE"); yrest(150);
end
lootBodies()

followedbymobs is my imaginative funtions to check how many mobs are already on Aggro and targeting the player
if more then eight mobs are on aggro player should imma. start firing purgatory rounds till no mob is left
and additional would be good to add a distance check funktion because there caster type mobs in CL, they used to have a large distance to the player

like
if (player.target == monsterid(101364)) then -- Storm Summoner
player.cast("any instant spell would do the magic");
end

Re: Botting in Caves or mines

Posted: Thu Mar 31, 2011 8:56 am
by Tsutomu
I don't think you can do it without coding new functions in rombot.
What i'd suggest that you pick the points for firing purgatory.

For ex. waypoint 1,2,3 you go by with travel mode, then on 4 you change to normal.
Then, bot will kill all enemies that follow him.

But you will have to plan it all while making waypoint file.
That's the best i can think of you can get right now.

Btw, bot is a bot, it can have many functions, but hardly will ever be able to be effective as human ;)

Re: Botting in Caves or mines

Posted: Thu Mar 31, 2011 9:02 am
by Germangold
the function doesnt has to be hard coded into rombot i meant it more like a userfunction that i can call

i would change all waypoints to TRAVEL > so no attack
and the userfunction would do the rest for me

Re: Botting in Caves or mines

Posted: Thu Mar 31, 2011 9:11 am
by rock5
That means you would have to heal and buff yourself too.

Re: Botting in Caves or mines

Posted: Thu Mar 31, 2011 9:59 am
by Tsutomu
I think that my suggestion is much better than making all points travel.
You'll just need a bit of planning while making a waypoint file but pays off in the end as you'll get what you need.
For example in KS are mostly 3 mobs in stack.
You could take first three, second threee and on third waypoint to make it normal to kill them all.
Much easier than coding a bunch of stuff that will have no good functionality - no buffs, heals etc.
(might use ntBuff though)

Re: Botting in Caves or mines

Posted: Thu Mar 31, 2011 10:06 am
by lisa
I'm wondering if you could create a table of mobs that are targeting you to populate the table and then if i >= 8 then call a function like this

Code: Select all

function killaoe()
   player:cast("MAGE_PURGATORY_FIRE"); yrest(150);
   player:cast("MAGE_PURGATORY_FIRE"); yrest(150);
   player:cast("MAGE_PURGATORY_FIRE"); yrest(150);
   player:cast("MAGE_PURGATORY_FIRE"); yrest(150);
   player:cast("MAGE_PURGATORY_FIRE"); yrest(150);
   player:cast("MAGE_PURGATORY_FIRE"); yrest(150);
   player:cast("MAGE_PURGATORY_FIRE"); yrest(150);
-- change waypoint to normal to fight back.
end
You would need all the waypoints that you are just cruising through before boss to set type to travel, so you could stop at anytime for the aoe and then continue without doing any single target kills.

What you think?

Edit: I assumed if you can solo the bosses then you wouldn't need to many heals along the way. Also if 8 purg is enough to kill the mobs you are lvled and geared to not need heals until bosses.

Re: Botting in Caves or mines

Posted: Thu Mar 31, 2011 10:24 am
by Tsutomu
the flaw to that is that mobs may return -> stop following after a while if he doesn't get more than 8 mobs.

Re: Botting in Caves or mines

Posted: Thu Mar 31, 2011 4:46 pm
by Germangold
8 is just an example,
if i farm CL manually i do pull over 20 mobs together and finsh them with 4x purgaro. fire

onskillcast

Code: Select all

   if not player:hasBuff(GetIdName(500998)) then
		keyboardPress(key.VK_9);   	yrest(555);  end
VK_9 contains an ingame macro
thus is for healing

Code: Select all

/Script FocusUnit(12,"target")
/Script TargetUnit("player")
/Script UseItemByName("Sigil of Regeneration")
/Script TargetUnit("focus12")
/Script FocusUnit(12,"")

my skills in CL

Code: Select all

	<skills_mage>
		<skill name="PRIEST_URGENT_HEAL"   		hotkey="VK_F1" priority="100" hpper="65"  	/>
		<skill name="PRIEST_REGENERATE"    		hotkey="VK_F2" priority="90" hpper="90"		/>
		<skill name="PRIEST_MAGIC_BARRIER" 		hotkey="VK_F3" priority="100" rebuffcut="5" />
		<skill name="MAGE_PURGATORY_FIRE"       hotkey="VK_F4" priority="150" 				/>
		<skill name="MAGE_INTENSIFICATION"      hotkey="VK_F6" priority="110" inbattle="true"	/>
		<skill name="MAGE_ENERGY_INFLUX"		hotkey="VK_F7" priority="110" />
		<skill name="MAGE_ESSENCE_OF_MAGIC" 	hotkey="VK_F8" priority="110" />	
		
		<skill name="MAGE_DISCHARGE" 	hotkey="VK_7" priority="10"/>
		<skill name="PRIEST_HOLY_AURA"     		hotkey="VK_4" priority="120" hpper="22" inbattle="true" />
		<skill name="MAGE_ELEMENTAL_CATALYST" 	hotkey="VK_5" priority="110" inbattle="true" />
	
		<skill name="MAGE_ELECTROSTATIC_CHARGE" hotkey="VK_8" priority="110"   />
	</skills_mage>

Re: Botting in Caves or mines

Posted: Thu Mar 31, 2011 7:41 pm
by rock5
Actually I think it would be pretty easy to create a function that counts targets that have you targeted. Let me give it a try.

Code: Select all

function CountAggroTargets()
	local aggrocount = 0

	local objectList = CObjectList();
	objectList:update();
	for i = 0,objectList:size() do
		local obj = objectList:getObject(i);
		if( obj ~= nil ) then
			local pawn = CPawn(obj.Address);

			if pawn.TargetPtr == player.Address then
				aggrocount = aggrocount + 1
			end
		end
	end
	return aggrocount
end
I don't have time to test it but i think that should work. Most of it was copied straight from other functions.

Re: Botting in Caves or mines

Posted: Mon Jul 18, 2011 4:39 am
by botje
so... how would i use this?

Code: Select all

if 4 > CountAggroTargets then
something like that?

Botje

Re: Botting in Caves or mines

Posted: Mon Jul 18, 2011 5:20 am
by botje
nvm, i got it, i made your fucntion in a addon, then use this:

Code: Select all

if CountAggroTargets() > 2 then
     player:cast("WARRIOR_BLASTING_CYCLONE");
     player:cast("WARRIOR_WHIRLWIND");
     player:cast("WARRIOR_MOON_CLEAVE");
     printf("Found targets: "..CountAggroTargets().."\n");
end
Botje

Re: Botting in Caves or mines

Posted: Tue Jul 19, 2011 4:07 am
by ezgitaran
An alternative;

Code: Select all

function Aoe()
	repeat
	player:cast("MAGE_PURGATORY_FIRE");
			if( 75 > player.HP/player.MaxHP*100 ) then
        	player:cast("PRIEST_REGENERATE");
			end
	yrest(100);
	until sendMacro("GetPlayerCombatState()") == false
	player:lootAll();
end
Aoe until you get out of combat.

Re: Botting in Caves or mines

Posted: Tue Jul 19, 2011 5:15 am
by lisa
You can use a bot function to get if you are in combat or not, it will save doing hundreds of macros

replace

Code: Select all

until sendMacro("GetPlayerCombatState()") == false
with

Code: Select all

until not player.Battling

Re: Botting in Caves or mines

Posted: Tue Jul 19, 2011 9:55 am
by MiesterMan
You're going to want to include a range check with that.