Page 1 of 1

Repair based on... Problem.

Posted: Sat Feb 06, 2010 5:32 pm
by invader
Hello, new to this so go easy please.

Trying to have my bot train, and then after a certain time/durability/fight counter check return to vender.
All my paths work, except it ignores time/dura/fight check and keeps training forever.

Here is what i used for time test 60 seconds:
<waypoints>
<!-- # 1 --><waypoint x="3457" z="5657"> </waypoint>
<!-- # 2 --><waypoint x="3749" z="5641"> </waypoint>
<!-- # 3 --><waypoint x="3638" z="5559"> </waypoint>
<!-- # 4 --><waypoint x="3624" z="5480"> </waypoint>
<!-- # 5 --><waypoint x="3730" z="5402"> </waypoint>
<!-- # 6 --><waypoint x="3453" z="5476">__WPL:reverse();
if(player.free_counter1 == 0) then player.free_counter1 = os.time(); end;
if( os.difftime(os.time(), player.free_counter1) > 60 ) then
player.free_counter1 = os.time();
load_paths("Dorian_Sell.xml");
end

</waypoint>
</waypoints>
Here is what i tried for durability check:
<waypoints>
<!-- # 1 --><waypoint x="3457" z="5657"> </waypoint>
<!-- # 2 --><waypoint x="3749" z="5641"> </waypoint>
<!-- # 3 --><waypoint x="3638" z="5559"> </waypoint>
<!-- # 4 --><waypoint x="3624" z="5480"> </waypoint>
<!-- # 5 --><waypoint x="3730" z="5402"> </waypoint>
<!-- # 6 --><waypoint x="3453" z="5476">__WPL:reverse();
if( player.free_flag1 == true ) then
player.free_flag1 = false;
loadPaths("5-7_bugs_repair.xml");
end


</waypoint>
</waypoints>
And here is what i tried for fight based:
<waypoints>
<!-- # 1 --><waypoint x="3457" z="5657"> </waypoint>
<!-- # 2 --><waypoint x="3749" z="5641"> </waypoint>
<!-- # 3 --><waypoint x="3638" z="5559"> </waypoint>
<!-- # 4 --><waypoint x="3624" z="5480"> </waypoint>
<!-- # 5 --><waypoint x="3730" z="5402"> </waypoint>
<!-- # 6 --><waypoint x="3453" z="5476">__WPL:reverse();
if( player.Fights-player.free_counter1 > 5 ) then
player.free_counter1 = player.Fights;
load_paths("5-7_bugs_repair.xml");
end
</waypoint>
</waypoints>
I don't understand why it appears to keep training, ignoring the checks to load the other path to repair/buy/sell.

Profile:

Code: Select all

<profile>
	<options>
		<!-- Try the bot with a new char mage                   -->
		<!-- At the pioneer village. Use demo.xml waypoint file -->
		<option name="HP_LOW"			value="60" />
		<option name="MP_LOW_POTION"	value="30" />
		<option name="HP_LOW_POTION"	value="50" />
		<option name="USE_HP_POTION"	value="best" />	<!-- potion select strategy: best|minstack -->
		<option name="USE_MANA_POTION"	value="best" />	<!-- potion select strategy: best|minstack -->

		<!-- Rest if HP or Mana is below that level -->
		<option name="HP_REST" value="30" />
		<option name="MP_REST" value="30" />

		<!-- Shopping options, how many of what do you want to keep in your inventory -->
		<option name="HEALING_POTION" value="99" />
		<option name="MANA_POTION" value="99" />
		<option name="ARROW_QUIVER" value="1" />
		<option name="THROWN_BAG" value="0" />

		<!-- either false or arrow or thrown -->
		<option name="RELOAD_AMMUNITION" value="arrow" />

		<!-- Combat options -->
		<option name="COMBAT_TYPE"        value="" />	<!-- leave empty or choose ranged/melee if not using class default -->
		<option name="COMBAT_RANGED_PULL" value="true" /> <!-- only important for melees -->
		<option name="COMBAT_DISTANCE"    value="200" />
		<option name="MAX_FIGHT_TIME"     value="15" />	<!-- Max time without damage before break -->
		<option name="DOT_PERCENT"        value="80" />
		<option name="ANTI_KS"            value="true" />

		<!-- Attack monsters 3 levels above or 10 below your level -->
		<option name="TARGET_LEVELDIF_ABOVE" value="1" />
		<option name="TARGET_LEVELDIF_BELOW" value="7" />

		<!-- Waypoint and movement settings -->
		<option name="WAYPOINTS"		value="" />  <!-- leave empty to show a list -->
		<option name="RETURNPATH"		value="" />
		<option name="PATH_TYPE"		value="waypoints" />	<!-- waypoints | wander -->
		<option name="WANDER_RADIUS"		value="500" />
		<option name="WAYPOINT_DEVIATION"	value="100" />
		<option name="QUICK_TURN" 		value="true" />

		<!-- Loot settings -->
		<option name="LOOT"               value="true" />
		<option name="LOOT_IN_COMBAT"     value="false" />
		<option name="LOOT_DISTANCE"      value="100" />
		<option name="LOOT_PAUSE_AFTER"   value="15" />		<!-- probability in % for a short rest -->

		<!-- Log out and resurrect settings -->
		<option name="LOGOUT_TIME" 			value="0" />	<!-- in minutes, 0 = timer disabled -->
		<option name="LOGOUT_SHUTDOWN"		value="false" />
		<option name="LOGOUT_WHEN_STUCK"	value="true" />
		<option name="RES_AUTOMATIC_AFTER_DEATH" value="true" />


<option name="INV_AUTOSELL_ENABLE"   value="true" />
<option name="INV_AUTOSELL_FROMSLOT"   value="9" />
<option name="INV_AUTOSELL_TOSLOT"   value="60" />
<option name="INV_AUTOSELL_QUALITY"   value="white,green" />
<option name="INV_AUTOSELL_NOSELL_DURA"   value="110" />





		<!-- For more options and documentation see the RoM Bot Wiki:  -->
		<!-- http://www.solarstrike.net/wiki/index.php5?title=RoM_Bot  -->

	</options>

	<friends>
		<!-- names of friends we help fighting or enemys we don't want to attack -->
		<!-- for umlauts use \129 (ue),\132 (ae),\148 (oe) e.g. K\132fer         -->
		<friend name="MyOtherCharacter1" />
		<friend name="MyOtherCharacter2" />
		<friend name="Elite_Mob_Name1" />
		<friend name="Elite_Mob_Name2" />
	</friends>

	<mobs>
		<!-- names of mobs we want to attack 				-->
		<!-- if no names defined we will attack all mobs	-->
		<mob name="" />
		<mob name="" />
		<mob name="" />
	</mobs>

	<hotkeys>
    	<!-- to communicate with the RoM API / define ingame dummy macro at place 1 -->
		<hotkey name="MACRO"        key="VK_0" />
	</hotkeys>

	<!-- define your skills depending from your actual primary class -->
	<!-- see the example for a priest/mage                           -->
	<!-- delete skills you don't have or don't want to use.          -->
	<!-- For more skills to use see /database/skills.xml             -->
	<!-- demo skills for LvL 1 character for all classes             -->

<skills_scout>
		<skill name="SCOUT_SHOT"        	modifier="" hotkey="VK_4" priority="110" />
		<skill name="SCOUT_VAMPIRE_ARROWS"	modifier="" hotkey="VK_2" priority="85" />
		<skill name="SCOUT_AUTOSHOT"    	modifier="" hotkey="VK_5" priority="90" />
		<skill name="SCOUT_WIND_ARROWS" 	modifier="" hotkey="VK_3" priority="70" />
	</skills_scout>

<skills_knight>
		<skill name="KNIGHT_HOLY_STRIKE"  modifier="" hotkey="VK_6" priority="60" />
		
	</skills_knight>

	<onLoad>
		-- Additional Lua code to execute after loading the profile
		-- and before the bot starts. e.g. You could overwrite profile settings here
		-- like: changeProfileOption("HP_REST", 60);
					
	</onLoad>

	<onDeath>
		-- Additional Lua code to execute on death
		-- pauseOnDeath(); -- Stop the script
		-- player:logout();	-- logout
	</onDeath>


	<onLeaveCombat>
		local dura = inventory:getMainHandDurability();
	printf("Durability:%s\n", dura);
	if( dura < 0.95 ) then
		player.free_flag1 = true;
	end


	</onLeaveCombat>

	<onLevelup>

	</onLevelup>

	<onSkillCast>
		-- Additional Lua code to execute when casting a skill
		-- Note: arg1 contains the skill being used.
		-- i.e. arg1.Name will be the name of the skill being cast
		-- e.g.:
		--if( 15 > player.HP/player.MaxHP*100 ) then
		--    player:cast("PRIEST_SOUL_SOURCE");
		--elseif( 25 > player.HP/player.MaxHP*100 ) then
		--    player:cast("PRIEST_HOLY_AURA");
		--    player:cast("PRIEST_URGENT_HEAL");
		--    player:cast("PRIEST_URGENT_HEAL");
	</onSkillCast>
</profile>
Any help is appreciated,

ideally i would like to return when bags are full, is there a way to check if all bags are full and then load path?

Thanks.

Re: Repair based on... Problem.

Posted: Fri Feb 12, 2010 6:16 pm
by invader
66 views, no suggestions?
Any ideas anyone? Moderator?

i believe i provided all information.

Re: Repair based on... Problem.

Posted: Fri Feb 12, 2010 8:45 pm
by Administrator
The time-based example you gave works fine for me. I haven't tried the others, but I'm sure they probably work as intended, too. You know that the code will only be executed on successfully reaching the waypoint (as in, not getting sidetracked attacking monsters, not getting stuck, or any other number of possible problems), right? So, although you have it set to run after 60 seconds, it may take much longer to reach that waypoint (successfully) and execute the code.

I would check to make sure that your repair path works correctly. Normally when you use loadPaths(), it'll automatically select the nearest waypoint (rather than the begining) to start at. To make sure it starts from the beginning, call __WPL:setWaypointIndex(1) directly after loadPaths(). One possible explanation is that you are switching to the end of the repair path, which then loads your farming waypoints again.

Re: Repair based on... Problem.

Posted: Fri Feb 12, 2010 9:27 pm
by invader
Thanks very much.
I think that was just the problem, i jumped to conclusions before it finished the whole way-point path.

Btw, is there way to load a waypoint if bags are full?

thanks again

Re: Repair based on... Problem.

Posted: Fri Feb 12, 2010 10:18 pm
by Administrator
There is a function to get the number of inventory slots that are used. You could use that. I'm not sure what the function is off-hand. Try looking through this list: http://theromwiki.com/index.php/List_of_Functions