RoM Working with waypoint files
Here some examples how to work with waypoint files. It shows examples for different types of waypoint files and some special solutions.
Contents
LUA code within a waypoint file
You can use you own lua code within the <waypoint></waypoint> tags. By doing that you can do nearly everything. And there are some prefabricated functions:
To use some of that functions, simply put them into the waypoint tag:<!-- #20 --><waypoint x="799" z="-426">player:restrnd(20, 1, 10);</waypoint>
Caution!!! You must place the codes within the '<waypoint></waypoint>' tag. Not before and not after.
This is wrong:
<waypoints type="TRAVEL" >player:harvest();
<!-- # 1 --><waypoint x="-2060" z="-8216"></waypoint>
</waypoints>
List of functions
player:harvest();
load_paths( [path] [,returnpath] );
if( player.Level > 9 ) then
printf("do some other coding stuff");
end;
__WPL:reverse();
__WPL:setDirection( [WPT_FORWARD | WPT_BACKWARD] );
__WPL:setForcedWaypointType( [["NORMAL"] | ["TRAVEL"] | ["RUN"]]);
player:restrnd([probability [, minrest [, maxrest]]]);
player:rest( minrest [, maxrest[, time|full[, restaddrnd]]])
minrest ( min time to rest in sec) maxrest ( max time to in sec) _resttype ( time | full ) time = rest the given time | full = stop resting after being full / default = time _restaddrnd ( max random addition after being full in sec)
If using type 'full', the bot will only rest if HP or MP is below a defined level. You define that level in your profile with the options:<option name="HP_REST" value="15" />
<option name="MP_REST" value="15" />
Default value if not defined is 15% each.
e.g. player:rest(20) will rest for 20 seconds. player:rest(60, 20) will rest between 60 and 80 seconds. player:rest(90, 40, "full") will rest up to between 90 and 130 seconds, and stop resting if being full player:rest(90, 40, "time") will rest up to between 90 and 130 seconds, and not stop resting if being full player:rest(20, 40, "full, 20") will rest up to between 20 and 60 seconds, and stop resting if being full, and wait after that between 1-20 seconds
stopPE();
player:sleep();
player:logout([true])
if( os.difftime(os.time(), player.BotStartTime) > 3600 ) then
printf("do some other coding stuff");
end;
player:target_NPC( [npc_name] );
player:mouseclickL(x, y [RoM window wide, RoM window high]);
How to use the bot for running between the and NPC <-> blackboard for delivering of daily quests
It starts in Harf. There you have the quest 'Winterspinnenarten' from the blackboard where you deliver 10 winter spider body liquids to the 'Lager im Winternachttal'.
The waypoints are from the blackbard in Harf up to the camp. After each end of the waypoint file is a PAUSE. So you can handle with the NPC/blackboard and after that press 'DEL' to reverse the waypoints and run back.<waypoints type="RUN">
<!-- # 1 --><waypoint x="-14389" z="-380" type="TRAVEL">__WPL:reverse();
player:sleep();</waypoint>
<!-- # 2 --><waypoint x="-14531" z="-253"></waypoint>
...
<!-- #21 --><waypoint x="-18500" z="-2516 type="TRAVEL" >__WPL:reverse();
player:sleep();
</waypoint>
</waypoints>
The type of the waypoints is 'RUN' so the bot will not stop and not fight back, if getting aggro. Only the first an the last WP has type TRAVEL to fight back still sticking mobs.
Some hints: If you deliver the quest with a low level char, than set your loot option (<option name="LOOT" value="true" />) in your profile to 'false'. That will prevent from coming closer to mob groups while looting. It also could be helpful, to reduce your option 'WAYPOINT_DEVIATION' or set it to 0 (and set back to a higher value for normal botting).
Automatic leveling with the Bot
Thats an example how to start with level 1 and change the botting place depending from your level.
We start at the spawn point:<waypoints type="TRAVEL" >
<!-- # 3 --><waypoint x="-3779" z="-8480"></waypoint>
...
<!-- # 8 --><waypoint x="-3034" z="-9034">load_paths("l2-3.xml");</waypoint>
</waypoints>
Now we are at that place:
<waypoints type="NORMAL" >
<!-- # 1 --><waypoint x="-2206" z="-9648"></waypoint>
<!-- # 2 --><waypoint x="-2133" z="-9796">player:restrnd(20, 1, 10);</waypoint>
<!-- # 3 --><waypoint x="-2224" z="-9882">player:restrnd(20, 1, 10);</waypoint>
...
<!-- # 7 --><waypoint x="-2391" z="-9639">
if( player.Level > 4 ) then
load_paths("l5_goto_6.xml");
end;
</waypoint>
</waypoints>
If we reach level 5, we load the next waypoint file. Read here for more Informations about automatic leveling
Read here for further informations about autorepair.