------------------------------------------------
-- SKILLS
------------------------------------------------
-- Set to 0 if you don't want to use a skill
skill1_time = secondsToTimer(0);
skill2_time = secondsToTimer(0);
skill3_time = secondsToTimer(0);
------------------------------------------------
-- BUFFS
------------------------------------------------
-- Set a buff to 0 if you don't want to use it
buff1_time = minutesToTimer(10);
buff2_time = minutesToTimer(5);
buff3_time = minutesToTimer(0);
------------------------------------------------
-- POTIONS
------------------------------------------------
-- All potion use values are specified in %
-- Set the values to 0 to not use that potion
HP_potion_use = 50;
MP_potion_use = 0;
SP_potion_use = 0;
------------------------------------------------
-- SITTING
------------------------------------------------
-- All sitting values are specified in %
-- We will only sit while out of battle
-- Set the values to 0 to not use sitting
HP_sit = 0;
MP_sit = 0;
SP_sit = 0;
--[[************************************************** *******************
************************************************** ************************
DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING
************************************************** ************************
************************************************** **********************]]
if ( set == 1 ) then
x_coor = memoryReadFloat(proc, x_coor_addr);
y_coor = memoryReadFloat(proc, y_coor_addr);
set = 0;
end;
end
function have_target()
local readid = memoryReadShort(proc, targetid_addr);
printf (readid);
return ( readid ~= 0xFFFFFFFF );
end
function find_target()
keyboardPress(key_attack);
printf ("possibly");
end
function switch_target()
keyboardPress(key_switchtarget);
end
function starting_loc()
local x;
local y;
while ( true ) do
cur_x_coor = memoryReadFloat (proc, x_coor_addr);
cur_y_coor = memoryReadFloat (proc, y_coor_addr);
keyboardPress (key_forward);
x = memoryReadFloat (proc, x_coor_addr);
y = memoryReadFloat (proc, y_coor_addr);
if (x_coor - cur_x_coor > x_coor - x or y_coor - cur_y_coor > y_coor - y) then
keyboardPress (key_left);
end;
if (x < x_coor + 2 or x > x_coor - 2 and y < y_coor + 2 or y > y_coor - 2) then
break;
end;
end
end
------------------------------------------------
-- FIGHT
------------------------------------------------
function fight()
local beginTime = os.time();
local attack_ready = true;
local attack_toggle = function () attack_ready = true; end;
registerTimer("attack_timer", secondsToTimer(3), attack_toggle);
local targetid = memoryReadByte(proc, targetid_addr);
printf("TARGETID: ", targetid);
cur_x_coor = memoryReadFloat (proc, x_coor_addr);
cur_y_coor = memoryReadFloat (proc, y_coor_addr);
if (cur_x_coor > x_coor +40 or cur_x_coor < x_coor - 40) then
starting_loc()
end;
if (cur_y_coor > y_coor +40 or cur_y_coor < y_coor - 40) then
starting_loc()
end;
while( have_target() ) do
local curtarget = memoryReadByte(proc, targetid_addr);
if( targetid ~= curtarget ) then break; end;
local currentTime = os.time();
if( os.difftime(currentTime, beginTime) > 60 ) then -- more than 1 minute has passed
break; -- exit combat
end
if( skill1_ready and skill1_time > 0 ) then
keyboardPress(key_skill1); skill1_ready = false; yrest(1000);
registerTimer("skill1_toggle", skill1_time, skill1_toggle);
end;
if( skill2_ready and skill2_time > 0) then
keyboardPress(key_skill2); skill2_ready = false; yrest(1000);
registerTimer("skill2_toggle", skill2_time, skill2_toggle);
end;
if( skill3_ready and skill3_time > 0) then
keyboardPress(key_skill3); skill3_ready = false; yrest(1000);
registerTimer("skill3_toggle", skill3_time, skill3_toggle);
end;
if( attack_ready ) then
keyboardPress(key_attack); attack_ready = false; yrest(1000); end;
if( (HP/MaxHP*100) < HP_potion_use and HP_potion_use > 0 ) then use_hp_potion(); end
if( (MP/MaxMP*100) < MP_potion_use and MP_potion_use > 0 ) then use_mp_potion(); end
if( (SP/MaxSP*100) < SP_potion_use and SP_potion_use > 0 ) then use_sp_potion(); end
if( buff1_ready and buff1_time > 0 ) then
keyboardPress(key_buff1); buff1_ready = false; yrest(2000); end;
if( buff2_ready and buff2_time > 0 ) then
keyboardPress(key_buff2); buff2_ready = false; yrest(2000); end;
if( buff3_ready and buff3_time > 0 ) then
keyboardPress(key_buff3); buff3_ready = false; yrest(2000); end;
yrest(100);
end
printf("Target lost.\n");
unregisterTimer("attack_timer");
pickup()
end
------------------------------------------------
-- MAIN
------------------------------------------------
function main()
proc = openProcess(findProcessByExe("game.exe"));
win = findWindow("Shaiya");
attach(win);
setPriority(PRIORITY_HIGH);
registerTimer("update_vars", 100, update_vars);
if( skill1_time ) then registerTimer("skill1_toggle", skill1_time, skill1_toggle); end
if( skill2_time ) then registerTimer("skill2_toggle", skill2_time, skill2_toggle); end
if( skill3_time ) then registerTimer("skill3_toggle", skill3_time, skill3_toggle); end
if( buff1_time ) then registerTimer("buff1_toggle", buff1_time, buff1_toggle); end;
if( buff2_time ) then registerTimer("buff2_toggle", buff2_time, buff2_toggle); end;
if( buff3_time ) then registerTimer("buff3_toggle", buff3_time, buff3_toggle); end;
while( true ) do
keyboardPress(key_attack);
yrest(200);
if( have_target() ) then
fight();
end
if( buff1_ready and buff1_time > 0 ) then
keyboardPress(key_buff1); buff1_ready = false; yrest(2000); end;
if( buff2_ready and buff2_time > 0 ) then
keyboardPress(key_buff2); buff2_ready = false; yrest(2000); end;
if( buff3_ready and buff3_time > 0 ) then
keyboardPress(key_buff3); buff3_ready = false; yrest(2000); end;
if( (HP/MaxHP*100) < HP_potion_use and HP_potion_use > 0 ) then use_hp_potion(); end
if( (MP/MaxMP*100) < MP_potion_use and MP_potion_use > 0 ) then use_mp_potion(); end
if( (SP/MaxSP*100) < SP_potion_use and SP_potion_use > 0 ) then use_sp_potion(); end
if( (HP/MaxHP*100) < HP_sit and (HP_sit > 0) ) then sit(); end
if( (MP/MaxMP*100) < MP_sit and (MP_sit > 0) ) then sit(); end
if( (SP/MaxSP*100) < SP_sit and (SP_sit > 0) ) then sit(); end
end
end
startMacro(main);
But this morning while changing the code a bit the bot stopped working and now i cant find why. I have input some 'printf' lines to see what parts of the code are accessed and everything seems to work as it should. But in-game the hotkeys wont press. For example the function 'find_target()'.
I first got this script from .
So could someone with some scripting knowledge help me out and show me where i have gone wrong.
Try removing the attach(win) code. Sometimes these scripts have a hard time successfully attaching to a window. The only thing that will happen is that when it sends the key presses that it will send it to the top most window which should be your game if your playing.