yeah i realized that right after i made that post, and i even edited it.
but i downloaded the shaiya.lua from the first page and tried to get that to work, but it doesnt. i know its doing some things, like attempting to use skills and such, but it doesnt automatically attack mobs and if it does, i automatically sit after the first attack please help me!
blaah here is my log
Code: Select all
Please enter the script name to run.
Type in 'exit' (without quotes) to exit.
Script> gerirr1.lua
Opening gerirr1.lua...
Starting script execution - Press CTRL+C to exit.
Press CTRL+L to cancel execution and load a new script.
-------------------------------------------------
The macro is currently not running. Press the start key (Insert) to begin.
You may use (Delete) key to stop/pause the script.
Started.
TARGETID: -1
Target lost.
Pickup!
Sitting.
Standing... Resuming bot
TARGETID: -52
Target lost.
Pickup!
Sitting.
Stopping execution.
and here is my lua
Code: Select all
-------------------------------------------------------------------
-------------------------------------------------------------------
-- Title: Shaiya Bot --
-- Author: Elverion --
-- Date: May 29, 2008 --
-- Requirements: MicroMacro v0.97 --
-- License: Public Domain --
-------------------------------------------------------------------
-------------------------------------------------------------------
-- This script is public domain. You may use it in any way you --
-- find appropriate without restriction. This includes, but is --
-- not limited to, modification and distribution, whether it be --
-- commercial or not. --
-------------------------------------------------------------------
-------------------------------------------------------------------
------------------------------------------------
-- HOTKEYS
------------------------------------------------
startKey = key.VK_INSERT;
stopKey = key.VK_DELETE;
key_switchtarget = key.VK_TILDE;
key_attack = key.VK_1;
key_pickup = key.VK_2;
key_skill1 = key.VK_3;
key_skill2 = key.VK_4;
key_skill3 = key.VK_5;
key_buff1 = key.VK_6;
key_buff2 = key.VK_7;
key_hp_potion = key.VK_8;
key_mp_potion = key.VK_9;
key_sp_potion = key.VK_0;
key_sit = key.VK_C;
------------------------------------------------
-- SKILLS
------------------------------------------------
-- Set to 0 if you don't want to use a skill
skill1_time = secondsToTimer(50);
skill2_time = secondsToTimer(20);
skill3_time = 0;
------------------------------------------------
-- BUFFS
------------------------------------------------
-- Set a buff to 0 if you don't want to use it
buff1_time = 0;
buff2_time = 0;
------------------------------------------------
-- POTIONS
------------------------------------------------
-- All potion use values are specified in %
-- Set the values to 0 to not use that potion
HP_potion_use = 0;
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 = 150;
MP_sit = 0;
SP_sit = 0;
--[[*********************************************************************
**************************************************************************
DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING
**************************************************************************
************************************************************************]]
------------------------------------------------
-- Memory addresses
------------------------------------------------
playerptr_addr = 0x0081CBEC;
HP_offset = 0x12C;
MaxHP_offset = 0x130; -- 304
MP_offset = 0x134; --308;
MaxMP_offset = 0x138; --312;
SP_offset = 0x13C; --316;
MaxSP_offset = 0x140; --320;
targetid_addr = 0x006c7bc4; -- short, 65535 if none selected
sitcheck_addr = 0x006DCC80; -- byte, 0 = standing, 7 = sitting
------------------------------------------------
-- Variable setup
------------------------------------------------
HP = 10000;
MaxHP = HP;
MP = 10000;
MaxMP = MP;
SP = 10000;
MaxSP = SP;
skill1_ready = true;
skill2_ready = true;
skill3_ready = true;
buff1_ready = true;
buff2_ready = true;
------------------------------------------------
-- Functions
------------------------------------------------
skill1_toggle = function () skill1_ready = true; end;
skill2_toggle = function () skill2_ready = true; end;
skill3_toggle = function () skill3_ready = true; end;
buff1_toggle = function () buff1_ready = true; end;
buff2_toggle = function () buff2_ready = true; end;
function use_hp_potion()
keyboardPress(key_hp_potion);
printf("Using HP potion\n");
end
function use_mp_potion()
keyboardPress(key_mp_potion);
printf("Using MP potion\n");
end
function use_sp_potion()
keyboardPress(key_sp_potion);
printf("Using SP potion\n");
end
function sit()
if( HP_sit == 0 ) then
return; end
printf("Sitting.\n");
local sitting = false;
while( sitting == false ) do
keyboardPress(key_sit);
yrest(1000);
sitting = memoryReadByte(proc, sitcheck_addr) ~= 0;
end
local lasthp = HP;
while( true ) do
if( HP == MaxHP and MP == MaxMP and SP == MaxSP ) then
switch_target();
break;
end
if( HP < (lasthp - 10) ) then
printf("Exiting rest...under attack\n");
break;
else
lasthp = HP;
end
yrest(100);
end
sitting = true;
while( sitting ) do
keyboardPress(key_sit);
yrest(1000);
sitting = memoryReadByte(proc, sitcheck_addr) ~= 0;
end
printf("Standing... Resuming bot\n");
yrest(1000);
end
function pickup()
printf("Pickup!\n");
if( key_pickup == 0 ) then return; end
local i;
for i = 0, 5 do
keyboardPress(key_pickup);
yrest(500);
end
yrest(1000);
end
function update_vars()
HP = memoryReadIntPtr(proc, playerptr_addr, HP_offset);
MaxHP = memoryReadIntPtr(proc, playerptr_addr, MaxHP_offset);
MP = memoryReadIntPtr(proc, playerptr_addr, MP_offset);
MaxMP = memoryReadIntPtr(proc, playerptr_addr, MaxMP_offset);
SP = memoryReadIntPtr(proc, playerptr_addr, SP_offset);
MaxSP = memoryReadIntPtr(proc, playerptr_addr, MaxSP_offset);
end
function have_target()
local readid = memoryReadShort(proc, targetid_addr);
return ( readid ~= 0xFFFF );
end
function find_target()
keyboardPress(key_attack);
end
function switch_target()
keyboardPress(key_switchtarget);
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: %d\n", targetid);
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;
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;
while( true ) do
find_target();
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( (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);
PLEASE HELP