Program Simple_Bod_Taker;
var ProfileList : Array of String; // Variable Declaration
var i : Integer; // we declare this for loop
const Timeout = 60000; // Declaring a Constant 60 * 1000ms( 1s = 1000ms ) = 60 Min
const NPCID = $00003011; // Here we save the ID of the NPC
const BODGumpID_Small = $9BADE6EA; // static type for small BodGumps on Runuo
const BodGumpID_Large = $A125B54A; // static type for large BodGumps on Runuo
const GumpButtonPacket = 1; // PacketValue to send "OK-Button"
const ContextMenuEntryValue = 1; // Entrypoint for Context on Runuo Sample
Procedure Login(Profile:String);
begin
if ( Connected() ) then
begin
Disconnect();// To Avoid already online Character
Wait(10000); // If we Logout we wait 10 seconds
end;
while ( Not Connected() ) do // Loop until we Connect
begin
while ( ProfileName() <> Profile ) do // We Check if we need to change Profile
begin
ChangeProfile(Profile); // We change Profile
Wait(30000); // For Security we wait 30 seconds
end;
Connect(); // We connect to Gameserver
Wait(10000); // Security Wait
end;
end;
Procedure Logout();
begin
while ( Connected() ) do // Logout Loop
begin
Disconnect();// Logout Character
Wait(10000); // If we Logout we wait 10 seconds
end;
end;
Procedure HideCharacter();
begin
while ( Not Hidden() ) do
begin
UseSkill('Hiding'); // Use Hiding
Wait(11000); // Wait ActionDelay( 10s ) + 1s latency ( latency can be different.. good maybe 50ms , lag maybe 800ms.. so 1s is safe )
end;
end;
Procedure GetBod(ID:Cardinal);
var Flag : Boolean; // Checkup Flag
var ii,iii : Integer; // Loop Check
begin
Flag := False; // Just to setup the loop
while ( Not Flag ) do //loop until you got Bod...
begin
if ( GetDistance( ID ) > 1 ) then // Checks if NPC is too far away
begin
newMoveXY( GetX(ID) , GetY(ID) , False , 1 , True ); // Moves to NPC with tolerance 1 Tile
Wait(500); // Wait 500
end
else
begin
for ii := 0 to GetGumpsCount() - 1 do // Checking all Gumps
begin
if (( GetGumpID(ii) = BODGumpID_Small) or ( GetGumpID(ii) = BODGumpID_Large)) then // If Gump popped up
begin
if ( NumGumpButton(ii,GumpButtonPacket) ) then // Press Ok-Button
begin
exit; // Exit this procedure
end;
end;
end;
if ( GetDistance( ID ) <= 2 ) then // Secondary Check if distance is ok
begin
ClearContextMenu(); // Clear old Context Menu Data
Wait(500);
RequestContextMenu(ID); // Request Context Menu from ID; Note : Stealth knows now the whole context
Wait(1000);
SetContextMenuHook(ID,ContextMenuEntryValue); // Simple Hook to "Bulk Order Deed" in Context
end;
end;
end;
end;
begin
ProfileList :=['Crome']; //Here we fill the Array
while ( True ) do // We make here an infinite Loop with this
begin
for i := 0 to Length(ProfileList) - 1 do // Array starts with Slot 0 so if we have 10 Items we have from 0 - 9.
begin
Login(ProfileList[i]); // Call Procedure Login
GetBod(NPCID); // Call Procedure GetBod
HideCharacter(); // Call Procedure HideCharacter for Hiding char
Logout(); // Calls Procedure Logout
// Loop end for Profile
end;
exit;
Wait(Timeout);// Here we go with the Delay...
end;
end.
Very simple Script for Runuo ( shortly selfmade and 10x tested ) how to login , move to BlacksmithID , GetBod , Hide Character , Logout and Switch Profile ( Note Profile contains accountdata, but script only need profilenames => perfect for sharing).Osi have yet 1 limitation. you need to declare the Servernumber and the Characternumber before. So if Serverlist changes the value could differ. Maybe will be updated in future.
You also could expand this script in a lot of ways like :
Login at home
Get LRC Suite
Recall To Bodgiver
Scan Gump and declare if take or not
Use Bribery
Recall Home
Sort Bods
Drop LRC Suite
and much more..
const Timeout = 60000; // Declaring a Constant 60 * 1000ms( 1s = 1000ms ) = 60 Min
const NPCID = $00003011; // Here we save the ID of the NPC
const BODGumpID_Small = $9BADE6EA; // static type for small BodGumps on Runuo
const BodGumpID_Large = $A125B54A; // static type for large BodGumps on Runuo
const GumpButtonPacket = 1; // PacketValue to send "OK-Button"
const ContextMenuEntryValue = 1; // Entrypoint for Context on Runuo Sample
This could differ from Server to Server.
With Version 6.0 we will introduce the new API, so i will write a few advanced scripts in Delphi or .Net ( Not sure yet. Since i start as Delphi-Developer irl soon ... )