
so I need copy and paste on my LUA the strings you post here? or I just can use target.lua of ZS and say on my LUA the directory?
Code: Select all
Thu Jun 12 00:18:33 2008 : MicroMacro v0.97
Thu Jun 12 00:18:33 2008 : Processor Type: 586, OS: Windows XP Service Pack 2
Thu Jun 12 00:18:33 2008 : Lua initialized successfully.
Thu Jun 12 00:18:33 2008 : Lua libs opened successfully.
Thu Jun 12 00:18:33 2008 : Lua glues exported.
Thu Jun 12 00:18:33 2008 : Keyboard layout: US English
Thu Jun 12 00:18:33 2008 : Configurations run.
Thu Jun 12 00:18:38 2008 : Executing script "test.lua".
==================================================
Thu Jun 12 00:18:38 2008 : scripts/target.lua:110: attempt to call global 'class' (a nil value)
Thu Jun 12 00:18:38 2008 : Execution of test.lua complete.
Thu Jun 12 00:18:38 2008 : Execution error: Runtime error
Thu Jun 12 00:18:38 2008 : Collecting garbage...
Thu Jun 12 00:18:38 2008 : 21KB freed.
Code: Select all
------------------------------------------------
-- MAIN
------------------------------------------------
function init_window()
win = findWindow("Shaiya");
if(win == nil) then
printf(error_init);
macro_running = false;
end
end
function init_process()
proc = openProcess( findProcessByExe("game.exe") );
if(proc == 0) then
printf("error opening process.\n");
macro_running = false;
end
end
function init_hdc()
hdc = openDC(get_win());
local wx, wy, ww, wh = windowRect(get_win());
end
function get_hdc()
return hdc;
end
function get_win()
return win;
end
function debug_message(msg)
if (g_debug) then
print(msg);
logMessage(msg);
end
end
window_mode = false;
g_debug = true;
dofile("scripts/target.lua");
function main()
proc = openProcess(findProcessByExe("game.exe"));
win = findWindow("Shaiya");
attach(win);
setPriority(PRIORITY_HIGH);
registerTimer("update_vars", 100, update_vars);
Code: Select all
------------------------------------------------
-- HOTKEYS
------------------------------------------------
startKey = key.VK_F5;
stopKey = key.VK_F6;
key_switchtarget = key.VK_TILDE;
key_attack = key.VK_1;
key_pickup = key.VK_9;
key_skill1 = key.VK_2;
key_skill2 = key.VK_3;
key_skill3 = key.VK_4;
key_buff1 = key.VK_NUMPAD1;
key_buff2 = key.VK_NUMPAD2;
key_buff3 = key.VK_NUMPAD3;
key_buff4 = key.VK_NUMPAD4;
key_hp_potion = key.VK_NUMPAD8;
key_mp_potion = key.VK_NUMPAD9;
key_sp_potion = key.VK_NUMPAD0;
key_sit = key.VK_C;
------------------------------------------------
-- SKILLS
------------------------------------------------
-- Set to 0 if you don't want to use a skill
skill1_time = secondsToTimer(15);
skill2_time = 0;
skill3_time = 0;
------------------------------------------------
-- BUFFS
------------------------------------------------
-- Set a buff to 0 if you don't want to use it
buff1_time = minutesToTimer(2);
buff2_time = minutesToTimer(3);
buff3_time = minutesToTimer(4);
buff4_time = minutesToTimer(8);
------------------------------------------------
-- POTIONS
------------------------------------------------
-- All potion use values are specified in %
-- Set the values to 0 to not use that potion
HP_potion_use = 60;
MP_potion_use = 40;
SP_potion_use = 35;
------------------------------------------------
-- 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
**************************************************************************
************************************************************************]]
------------------------------------------------
-- Memory addresses
------------------------------------------------
playerptr_addr = 0x007835B4;
HP_offset = 296;
MaxHP_offset = 300;
MP_offset = 304;
MaxMP_offset = 308;
SP_offset = 312;
MaxSP_offset = 316;
targetid_addr = 0x0062FAD4; -- short, 65535 if none selected
-- REMOVED -- targettype_addr = 0x00619B1F; -- byte, 0 = player/NPC, 7 = monster
sitcheck_addr = 0x00643648; -- 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;
buff3_ready = true;
buff4_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;
buff3_toggle = function () buff3_ready = true; end;
buff4_toggle = function () buff4_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(45), 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) > 5 ) then -- more than 5 seconds 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(45000); 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;
if( buff4_ready and buff4_time > 0 ) then
keyboardPress(key_buff4); buff4_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;
if( buff4_time ) then registerTimer("buff4_toggle", buff4_time, buff4_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( buff3_ready and buff3_time > 0 ) then
keyboardPress(key_buff3); buff3_ready = false; yrest(2000); end;
if( buff4_ready and buff4_time > 0 ) then
keyboardPress(key_buff4); buff4_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);
Code: Select all
-- Field Values.
TARGET_UNKNOWN = 0;
TARGET_DAMAGED = 1;
TARGET_FULL = 2;
TARGET_BAR_COLOR = {
r_min=150, r_max=180,
g_min=10, g_max=40,
b_min=50, b_max=80
};
TARGET_HEALTH_BAR_PIXEL_OFFSET_1 = {x=36, y=36};
TARGET_HEALTH_BAR_PIXEL_OFFSET_2 = {x=165, y=36};
TARGET_HEALTH_BAR_PIXEL_OFFSET_3 = {x=100, y=36};
cant = {x=0, y=0};
-- Target Name Color
TARGET_NAME_COLOR_SCAN_OFFSET_1 = {x=98, y=15};
TARGET_NAME_COLOR_SCAN_OFFSET_2 = {x=110, y=15};
target_name_color = {
unknown=0,
white=1,
cyan=2,
blue=3,
green=4,
yellow=5,
orange=6,
red=7,
purple=8,
grey=9,
}
--[[TARGET_NAME_COLOR_WHITE = 1;
TARGET_NAME_COLOR_CYAN = 2;
TARGET_NAME_COLOR_BLUE = 3;
TARGET_NAME_COLOR_GREEN = 4;
TARGET_NAME_COLOR_YELLOW = 5;
TARGET_NAME_COLOR_ORANGE = 6;
TARGET_NAME_COLOR_RED = 7;
TARGET_NAME_COLOR_PURPLE = 8;
TARGET_NAME_COLOR_GREY = 9;]]
-- In order of difficulty, from easiest to hardest.
target_name_color_rgb = {
[target_name_color["white"]] = {r_min=255, r_max=255,
g_min=255, g_max=255,
b_min=255, b_max=255},
[target_name_color["cyan"]] = {r_min=120, r_max=140,
g_min=255, g_max=255,
b_min=255, b_max=255},
[target_name_color["blue"]] = {r_min=0, r_max=0,
g_min=0, g_max=0,
b_min=255, b_max=255},
[target_name_color["green"]] = {r_min=0, r_max=0,
g_min=255, g_max=255,
b_min=0, b_max=0},
[target_name_color["yellow"]] = {r_min=255, r_max=255,
g_min=255, g_max=255,
b_min=0, b_max=0},
[target_name_color["orange"]] = {r_min=255, r_max=255,
g_min=128, g_max=128,
b_min=0, b_max=0},
[target_name_color["red"]] = {r_min=255, r_max=255,
g_min=0, g_max=0,
b_min=0, b_max=0},
[target_name_color["purple"]] = {r_min=255, r_max=255,
g_min=0, g_max=0,
b_min=255, b_max=255},
--[target_name_color["grey"]] = {r_min=255, r_max=255,
-- g_min=255, g_max=255,
-- b_min=255, b_max=255},
}
TARGET_TYPE_FRIENDLY = 0;
TARGET_TYPE_NOTHING = -1;
-- Delays.
MONSTER_DIE_DELAY = 500;
-- Status Info Bar, offset.
STATUSINFOBAR_POS = {x=0, y=0};
-- Target constructor.
-- Refreshes the variables of the target from memory.
-- @return nothing.
-- Looks at pixels in the status info bar in the h/w device context,
-- to determine the status of the monster.
-- note - this has known errors, changing the colour bit value, or restarting PC
-- seems to fix it.
-- @return TARGET_UNKNOWN does not have any detectable red bar.
-- TARGET_DAMAGED if some red bar exists.
-- TARGET_FULL full red bar.
function status()
local pos_1 = {x=(STATUSINFOBAR_POS["x"] + TARGET_HEALTH_BAR_PIXEL_OFFSET_1["x"]),
y=(STATUSINFOBAR_POS["y"] + TARGET_HEALTH_BAR_PIXEL_OFFSET_1["y"])};
local pos_2 = {x=(STATUSINFOBAR_POS["x"] + TARGET_HEALTH_BAR_PIXEL_OFFSET_2["x"]),
y=(STATUSINFOBAR_POS["y"] + TARGET_HEALTH_BAR_PIXEL_OFFSET_2["y"])};
local pos_3 = {x=(STATUSINFOBAR_POS["x"] + TARGET_HEALTH_BAR_PIXEL_OFFSET_3["x"]),
y=(STATUSINFOBAR_POS["y"] + TARGET_HEALTH_BAR_PIXEL_OFFSET_3["y"])};
local pos_4 = {x=(STATUSINFOBAR_POS["x"] + cant["x"]),
y=(STATUSINFOBAR_POS["y"] + cant["y"])};
--printf("x1:%d y1:%d x2:%d y2:%d\n", pos_1["x"], pos_1["y"], pos_2["x"], pos_2["y"]);
local l_hdc = get_hdc();
-- s(RGB) begining E(RGB) end M(RGB) middle;
local sr,sg,sb;
local er,eg,eb;
local cr,cg,cb;
local mr,mg,mb;
if (window_mode) then
local wx, wy = windowRect(get_win());
--debug_message(sprintf("win_x: %d, wim_y: %d\n", wx, wy));
sr,sg,sb = getPixel(l_hdc, (wx + pos_1["x"]), (wy + pos_1["y"]));
er,eg,eb = getPixel(l_hdc, (wx + pos_2["x"]), (wy + pos_2["y"]));
mr,mg,mb = getPixel(l_hdc, (wx + pos_3["x"]), (wy + pos_3["y"]));
cr,cg,cb = getPixel(l_hdc, (wx + pos_4["x"]), (wy + pos_4["y"]));
else
sr,sg,sb = getPixel(l_hdc, pos_1["x"], pos_1["y"]);
er,eg,eb = getPixel(l_hdc, pos_2["x"], pos_2["y"]);
mr,mg,mb = getPixel(l_hdc, pos_3["x"], pos_3["y"]);
cr,cg,cb = getPixel(l_hdc, pos_4["x"], pos_4["y"]);
end
--closeDC(hdc);
--debug_message(sprintf("sr: %d, sg: %d, sb: %d", sr, sg, sb));
--debug_message(sprintf("er: %d, eg: %d, eb: %d", er, eg, eb));
--debug_message(sprintf("mr: %d, mg: %d, mb: %d", mr, mg, mb));
debug_message(sprintf("cr: %d, cg: %d, cb: %d", cr, cg, cb));
if ((sr >= TARGET_BAR_COLOR["r_min"] and
sr <= TARGET_BAR_COLOR["r_max"]) and
(sg >= TARGET_BAR_COLOR["g_min"] and
sg <= TARGET_BAR_COLOR["g_max"]) and
(sb >= TARGET_BAR_COLOR["b_min"] and
sb <= TARGET_BAR_COLOR["b_max"]))
then
if((er <= TARGET_BAR_COLOR["r_min"] and
er <= TARGET_BAR_COLOR["r_max"]) and
(eg <= TARGET_BAR_COLOR["g_min"] and
eg <= TARGET_BAR_COLOR["g_max"]) and
(eb <= TARGET_BAR_COLOR["b_min"] and
eb <= TARGET_BAR_COLOR["b_max"]))
then
if((mr <= TARGET_BAR_COLOR["r_min"] and
mr <= TARGET_BAR_COLOR["r_max"]) and
(mg <= TARGET_BAR_COLOR["g_min"] and
mg <= TARGET_BAR_COLOR["g_max"]) and
(mb <= TARGET_BAR_COLOR["b_min"] and
mb <= TARGET_BAR_COLOR["b_max"]))
then
emergencyHeal=1;
end
return TARGET_DAMAGED;
end
return TARGET_FULL;
end
return TARGET_UNKNOWN;
end
Code: Select all
*the 1st code of functions I gave you *
*the paste the 2nd function that i just posted *
*elv's shaiya bot code.*
function main()
proc = openProcess(findProcessByExe("game.exe"));
win = findWindow("Shaiya");
attach(win);
setPriority(PRIORITY_HIGH);
init_window();
init_process();
init_hdc();
*IMPORTANT* do your code here example: If target is dmg then don't attack*
startMacro(main);
caccolone wrote:I ask you a big favor because im gona be crazy with it, and cant use bot for ks damnnnnn
can you change my lua and add the no ks feature? is a big help for me
my original lua :
thanks in advance I hope for you is not problem
Code: Select all
Thu Jun 12 13:34:22 2008 : MicroMacro v0.97
Thu Jun 12 13:34:22 2008 : Processor Type: 586, OS: Windows XP Service Pack 2
Thu Jun 12 13:34:22 2008 : Lua initialized successfully.
Thu Jun 12 13:34:22 2008 : Lua libs opened successfully.
Thu Jun 12 13:34:22 2008 : Lua glues exported.
Thu Jun 12 13:34:22 2008 : Keyboard layout: US English
Thu Jun 12 13:34:22 2008 : Configurations run.
Thu Jun 12 13:34:27 2008 : Executing script "test.lua".
==================================================
Thu Jun 12 13:34:27 2008 : scripts/target.lua:110: attempt to call global 'class' (a nil value)
Thu Jun 12 13:34:27 2008 : Execution of test.lua complete.
Thu Jun 12 13:34:27 2008 : Execution error: Runtime error
Thu Jun 12 13:34:27 2008 : Collecting garbage...
Thu Jun 12 13:34:27 2008 : 27KB freed.
Code: Select all
Sat Aug 23 09:46:07 2008 : Executing script "zs_shaiya/main.lua".
==================================================
Sat Aug 23 09:46:07 2008 : macro_init()
Sat Aug 23 09:46:07 2008 : win_width: 160, win_height: 120
Sat Aug 23 09:46:07 2008 : WARNING: Failure reading memory from 0x28AD300 at 0x2110ac8 in memoryReadIntPtr(). Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)
Sat Aug 23 09:46:07 2008 : Execution of zs_shaiya/main.lua complete.
Sat Aug 23 09:46:07 2008 : Execution success.
Sat Aug 23 09:46:07 2008 : Collecting garbage...
Sat Aug 23 09:46:07 2008 : 13KB freed.
Users browsing this forum: No registered users and 1 guest