I have a DTM Autoswitcher (Orginally made for a Private Server) since DTM's are accurate it'll work fine I guess? Though I heard about a 50 ms delay…
If the code is messy? Definitly lol.
program New;
{$i SRL/SRL.scar}
var x, y:Integer;
Procedure MeleeGear;
Var MeleeWeapon, MeleeHelmet, MeleeBody, MeleeLegs, MeleeCape, MeleeShield, MeleeAmulet, MeleeRing:Integer;
Begin
{Name of items}MeleeWeapon := DTMFromString('mfgEAAHicE2JgYLBjYmCwZoLQjlDsCsSeQOwLxIFQ2guI3YDYiQmhB4TNgdgMiF8DzXoPxB+B+C0QvwTip0D8EIjvAvFNIL4FZT+Eyr2AqnsD1fsJiBNT04AkExUwdQAjlTAmAAD5IxZ0');
{}MeleeHelmet := DTMFromString('mJgIAAHicvc1fCoJAEMfxcY/RSSxFKQpR9Hj55MUsIwokA8F/F+grTbAvve7AZ3+z7OzuRkQSI5LihANihNhha/E1A0TY42i+9zMUKrf633714q8rLqg1b1Y+0OKNHgNGzFgwaT/oeafzT9zR6LtVeWY1Drgpz5H/9QEKbiCB');
{}MeleeBody := DTMFromString('m5wEAAHictcxJCoNQDIDh1Et4OifoRihuFHFANx6yCBUcwC4U2yP4CxHcuHyBLwlJiC0iL0skRoQQTwTw4MLRevB1H+p9ggwlchRaDykG/r/RqrP/oMeEGQv++GG7OGcrvhjR6Y+mrsiWIebiYdBN7LJCIDI=');
{}MeleeLegs := DTMFromString('mkwEAAHicrczPCkBAEMfx5W4vHtwqifBaFAcHyoWEF/Ct/bk57tRnpvnTpMaYMvZyOGSqTrNPgQqNtNKpr7Hyr8eACbPxsw07Ttx45MKh/aL7UT9sYslxIOEiCugnXmT2HLQ=');
{}MeleeCape := DTMFromString('mqAEAAHicrczbCYNQDIDh9MzgAq7UpRzIGxUUBEUR30spIsUbFgqVLuAvzaOPJ/CFJCRxRCQ3Ii1qFObfZ7ghQgAfIWIkSHWvRKW3jf6Z+HlXDzzR4YURC9744IsNP62P2YoZA3p4V5dsLLIbF8vOYgf08CJW');
{}MeleeShield := DTMFromString('mfgEAAHicrcxNCkBgFIXhyxIsRQb+ChES6xeKIqSIrMA7+Gam36nn3Ds6loikpkiOBBFC+PDgKgFiZChQokKNRv0rWx1a9JiwYMOBCzcevOqe2DFjxADHtmlTAz0xNPnnA0VSFcI=');
{}MeleeAmulet := DTMFromString('mPwEAAHicpcsxCoAwEETRNaVNbuVVVIigiPGmCSpa2KiFeAV/sZVlHHjDsjBWRJwR6ZRTNUpUqkGLHgNGeJzsAyZELNiw48KDW+9D/ytmFDanTaL0ZD988gKGyRRn');
{}MeleeRing := DTMFromString('mUAIAAHicvc3BCoJAEMbx1efoLX0GoUOGYYQh6kF9poo6hJJmCIK9QP+l7+xxB367M8PM7sYYk/p/R7F5hkJKVGhQKy80lyDGXnbYSoQDTjgj117Lny8M+GASm/d4osOo/oyvLKpt/6137PwdV903XFQ/EAQhp++Q2/AcW4sfCgAruQ==');
If not FindColorTolerance(x, y, 3845555, 640, 167, 671, 204, 5) then // If we arnt at Inventory tab
Begin
MoveMouse(659, 187);
GetMousePos(x, y);
ClickMouse(x, y, 1);
Begin
Repeat
Wait(5);
Until FindColorTolerance(x, y, 3845555, 640, 167, 671, 204, 5)
End;
End;
Wait(50);
If FindDTM(MeleeWeapon, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
MoveMouse(x, y);
GetMousePos(x, y);
ClickMouse(x, y, 1);
end;
If FindDTM(MeleeHelmet, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
MoveMouse(x, y);
GetMousePos(x, y);
ClickMouse(x, y, 1);
end;
If FindDTM(MeleeBody, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
MoveMouse(x, y);
GetMousePos(x, y);
ClickMouse(x, y, 1);
end;
If FindDTM(MeleeLegs, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
MoveMouse(x, y);
GetMousePos(x, y);
ClickMouse(x, y, 1);
end;
If FindDTM(MeleeCape, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
MoveMouse(x, y);
GetMousePos(x, y);
ClickMouse(x, y, 1);
end;
If FindDTM(MeleeShield, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
MoveMouse(x, y);
GetMousePos(x, y);
ClickMouse(x, y, 1);
end;
If FindDTM(MeleeAmulet, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
MoveMouse(x, y);
GetMousePos(x, y);
ClickMouse(x, y, 1);
end;
If FindDTM(MeleeRing, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
MoveMouse(x, y);
GetMousePos(x, y);
ClickMouse(x, y, 1);
end;
Wait(50);
FreeDTM(MeleeWeapon);
FreeDTM(MeleeHelmet);
FreeDTM(MeleeBody);
FreeDTM(MeleeLegs);
FreeDTM(MeleeCape);
FreeDTM(MeleeShield);
FreeDTM(MeleeAmulet);
FreeDTM(MeleeRing);
End;
Procedure MagicGear;
Var MagicWeapon, MagicHelmet, MagicBody, MagicLegs, MagicCape, MagicShield, MagicAmulet, MagicRing:Integer;
Begin
{Name of items}MagicWeapon := DTMFromString('maQEAAHicrcxBCkBQFIXh6+3AXmSgyOCVojC2AVYspSQSUmQH/vJmhs+p73YGp+uKSKxECmRIoBEigA/P9Ei9W212KXKUWPjTGh0GrNhx4saFAxtmTBjNtkfV1FxlyT7ODz55ACQrFRU=');
{}MagicHelmet := DTMFromString('mqAEAAHicrcxNCkBQGIXhyxos0V9JIuzH7C5JipAIibAAb7kDA8N76jn11dexhBCh+YoQwIf34cKBre5A/WbIkSJRYsxstqhQokGHARMWbDhw4VZO7FgxokcNKQva1EhvDM3+8gBn9hz1');
{}MagicBody := DTMFromString('mUAIAAHicvc1dCoJAFIbh0XW0He+6cFuZhIEQREKZu8ofSAoGE12CL/gFQxddzoFnDmf4zszGGHMKVzkypEiwl53mA46Sa+eMAhf1Kyq5o3QyN92/+PPhqNHhiTcsPhjV5x8TBmW/Gau5d95t0CLeRpyhR34r8OxfLQ9cKzA=');
{}MagicLegs := DTMFromString('mvQEAAHictcxJCoAwEETRNnfwBJL7bx1QFBxu4AAioiAIQvAG/oAryTIWvN50UaGIlEqkQo4UiUOMDMXbrdGhdWiws9tjwIQFGw6cuGBwf5j3b3t2Y8WMETrSXOWZ/wQ/cOYB3RQjaw==');
{}MagicCape := DTMFromString('maQEAAHicrczbCkBAEIDh2ZWINofkWUQkkUPewPu/hAv5Ze9crqlvDjUzmYiMWmS1nr5HixoVGnQYMGHGYvc37AiVyMWvU97qMQeIkSJHgdL2BhF8KHtrjoSsHbmH+sEnbjFBCew=');
{}MagicShield := DTMFromString('mJgIAAHicvc3RCoJAEIXhWQnLpBQkiZ7JZ1AqkjKUKBTx1aPwX5rAG2934GMOs8PsQUQaT+SBO0pccMJR81X95wVynHW/Qo2natGhx6D5haUR+fLfB2/5ZY+ZjwBrbBAjwQ57pJoTfdsixAoLmMld229ZZC874KaMI/M1AhlAFCw=');
{}MagicAmulet :=DTMFromString('mkwEAAHicrcw7CoRQDIXhzO1sbGZNrsUXiqKCK/WFMqigDii4BP9hbmFheQNfwgkhbxGJlEiqxeqfQwTw9HTh3/LvJkGGAiVybPxrUaFGh0HvPpgwY8WOEwe+WDCiRwPHtujKEHP1MuihLhCsGac=');
{}MagicRing := DTMFromString('mFQEAAHic42VgYLBhYmBwBGJrKO0FxP5AHAjEvkDsBsSuQGwBxKZQHMQIFAfiKCCOh+JoIA4FYl8g9gJiZyB2gaoDiTU1dQBtYyIRkw4YycAoAACyLAlU');
If not FindColorTolerance(x, y, 3845555, 640, 167, 671, 204, 5) then // If we arnt at Inventory tab
Begin
MoveMouse(659, 187);
GetMousePos(x, y);
ClickMouse(x, y, 1);
Wait(20);
Begin
Repeat
Wait(5);
Until FindColorTolerance(x, y, 3845555, 640, 167, 671, 204, 5)
End;
End;
Wait(50);
If FindDTM(MagicWeapon, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
MoveMouse(x, y);
GetMousePos(x, y);
ClickMouse(x, y, 1);
end;
If FindDTM(MagicHelmet, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
MoveMouse(x, y);
GetMousePos(x, y);
ClickMouse(x, y, 1);
end;
If FindDTM(MagicBody, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
MoveMouse(x, y);
GetMousePos(x, y);
ClickMouse(x, y, 1);
end;
If FindDTM(MagicLegs, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
MoveMouse(x, y);
GetMousePos(x, y);
ClickMouse(x, y, 1);
end;
If FindDTM(MagicCape, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
MoveMouse(x, y);
GetMousePos(x, y);
ClickMouse(x, y, 1);
end;
If FindDTM(MagicShield, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
MoveMouse(x, y);
GetMousePos(x, y);
ClickMouse(x, y, 1);
end;
If FindDTM(MagicAmulet, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
MoveMouse(x, y);
GetMousePos(x, y);
ClickMouse(x, y, 1);
end;
If FindDTM(MagicRing, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
MoveMouse(x, y);
GetMousePos(x, y);
ClickMouse(x, y, 1);
end;
If not FindColorTolerance(x, y, 3845555, 732, 169, 760, 204, 5) then // If we arnt at Inventory tab
Begin
MoveMouse(745, 186);
GetMousePos(x, y);
ClickMouse(x, y, 1);
Wait(20);
MoveMouse(609, 407);
End;
Wait(50);
FreeDTM(MagicWeapon);
FreeDTM(MagicHelmet);
FreeDTM(MagicBody);
FreeDTM(MagicLegs);
FreeDTM(MagicCape);
FreeDTM(MagicShield);
FreeDTM(MagicAmulet);
FreeDTM(MagicRing);
End;
begin
SetupSRL;
Repeat
If IsKeyDown(96) then
Begin
WriteLn('Using our Melee Set!');
MeleeGear;
KeyDown(8);
KeyUp(8);
End;
If IsKeyDown(97) then
Begin
WriteLn('Using our Magic Set!');
MagicGear;
KeyDown(8);
KeyUp(8);
End;
Until False;
end.
Also this switches to Magic Tab at the last part and moves to Ice Barrage remove it yourself add timers yourself and create the DTM's yourself.