Shaiya bot

For any other game that doesn't have its own section.
Message
Author
User avatar
Administrator
Site Admin
Posts: 5307
Joined: Sat Jan 05, 2008 4:21 pm

Re: Shaiya bot

#301 Post by Administrator » Fri Aug 08, 2008 12:50 am

Indeed I would be. It appears that you did not follow the instructions, and did not install the no GameGuard patch, or did not use a loader.

viceangel5
Posts: 4
Joined: Wed Aug 06, 2008 11:33 am

Re: Shaiya bot

#302 Post by viceangel5 » Fri Aug 08, 2008 9:51 am

the patch i def installed however what do u mean a loader srry i am a bit o noob

User avatar
Administrator
Site Admin
Posts: 5307
Joined: Sat Jan 05, 2008 4:21 pm

Re: Shaiya bot

#303 Post by Administrator » Fri Aug 08, 2008 7:19 pm

Follow the instructions on page 1; word for word. You will now need to reinstall the patch because you let the loader replace it.

User avatar
Administrator
Site Admin
Posts: 5307
Joined: Sat Jan 05, 2008 4:21 pm

Re: Shaiya bot

#304 Post by Administrator » Wed Oct 01, 2008 12:14 pm

Shaiya no GG patch has been updated. See the first topic in this thread for the updated attachment.

SoS
Posts: 6
Joined: Wed Oct 01, 2008 11:42 pm

Re: Shaiya bot

#305 Post by SoS » Thu Oct 02, 2008 1:05 am

After installing the new no GG patch (since the new update), all the scripts I was using previously before doesnt seem to work anymore. (It still attacks but no longer heals itself.)

I kept getting this error message in micromacro.
WARNING: Failure reading memory from 0x9F2258 at 0x7835b4 in memoryReadIntPtr().
Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)
(repeated over and over again)

-Edit-
After reading around the forum, it seems like the problem is because it was patched and the addresses have changed...
Using Cheat Engine, I got this, 03B51E7C, for HP and this, 03B51E84, for MP . Not sure how you translate that into what is written in the Memory Address section of the script ><
And how you find all the other addresses...?

Thanks.

deaznracer
Posts: 59
Joined: Tue May 20, 2008 5:45 am

Re: Shaiya bot

#306 Post by deaznracer » Thu Oct 02, 2008 4:46 pm

you still need to use CE to find the static address and pointer for it. Pointer the same as before but the address is different.

SoS
Posts: 6
Joined: Wed Oct 01, 2008 11:42 pm

Re: Shaiya bot

#307 Post by SoS » Thu Oct 02, 2008 7:15 pm

Hi.
I have no problem so far searching for the pointers and offsets for MP, HP, SP, and its max; but how do you find the addresses for the ones below?

From the script:
"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"

How do you find things like targetid_addr? Since there is no value to enter like HP.. or is there? (sorry I'm new to this).

Thanks ^^

Btw, the offsets for HP = 300, HPmax = 304, MP = 308, MPmax = 312, SP = 316, SPmax = 320

metallicafan
Posts: 1
Joined: Fri Oct 03, 2008 8:00 am

Re: Shaiya bot

#308 Post by metallicafan » Fri Oct 03, 2008 8:19 am

hi..i'm new on this forum.....and i don't speak english very well..then sorry for the errors..

i have the same error of SoS:
I kept getting this error message in micromacro.
WARNING: Failure reading memory from 0x9F2258 at 0x7835b4 in memoryReadIntPtr().
Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)
(repeated over and over again)
but my pg also doesn't attack. i don't need autopot and to use skill, is enough that he auto-attack.

can someone help me please?
thx for the anwers..

User avatar
Administrator
Site Admin
Posts: 5307
Joined: Sat Jan 05, 2008 4:21 pm

Re: Shaiya bot

#309 Post by Administrator » Fri Oct 03, 2008 5:02 pm

The new address has been found thanks to a member on this forum (vvayinsane). You can find the details and thank him here: http://solarimpact.servegame.com/phpBB3 ... 1317#p1317

User avatar
Administrator
Site Admin
Posts: 5307
Joined: Sat Jan 05, 2008 4:21 pm

Re: Shaiya bot

#310 Post by Administrator » Mon Oct 06, 2008 5:27 pm

The Shaiya script has been updated to contain all new addresses. The final address was just found:

Code: Select all

targetid_addr = 0x006c7bc4;
[/quote]

Either patch your addresses, or download the new script.

Dreadful_Warrior
Posts: 8
Joined: Wed Oct 01, 2008 3:08 am

Re: Shaiya bot

#311 Post by Dreadful_Warrior » Tue Oct 07, 2008 2:36 am

I tried patching the new address but did'nt work same error, I also tried downloading the latest script still same error. :cry:

The bot still works except for the sit.

anyone has a solution?

User avatar
Administrator
Site Admin
Posts: 5307
Joined: Sat Jan 05, 2008 4:21 pm

Re: Shaiya bot

#312 Post by Administrator » Tue Oct 07, 2008 2:54 am

Would probably help if you posted a log.

ChaTWizzard
Posts: 18
Joined: Wed Jul 30, 2008 10:57 am

Re: Shaiya bot

#313 Post by ChaTWizzard » Wed Oct 08, 2008 3:22 am

Mine doesnt re-target onto a new mob...

Dreadful_Warrior
Posts: 8
Joined: Wed Oct 01, 2008 3:08 am

Re: Shaiya bot

#314 Post by Dreadful_Warrior » Wed Oct 08, 2008 4:07 am

Heres the log,

Wed Oct 08 02:03:29 2008 : MicroMacro v0.98
Wed Oct 08 02:03:29 2008 : Processor Type: 2X 586, OS: Windows XP Service Pack 3
Wed Oct 08 02:03:29 2008 : Lua initialized successfully.
Wed Oct 08 02:03:29 2008 : Lua libs opened successfully.
Wed Oct 08 02:03:29 2008 : LuaCoco is available.
Wed Oct 08 02:03:29 2008 : Lua glues exported.
Wed Oct 08 02:03:29 2008 : Keyboard layout: US English
Wed Oct 08 02:03:29 2008 : Configurations run.
Wed Oct 08 02:03:34 2008 : Executing script "fighter.lua".
==================================================

Wed Oct 08 02:03:42 2008 : target_status=0
Wed Oct 08 02:03:42 2008 : target_status=2
Wed Oct 08 02:03:42 2008 : pr: 0, pg: 0, pb: 0
Wed Oct 08 02:03:42 2008 : pr: 255, pg: 255, pb: 0
Wed Oct 08 02:04:01 2008 : target_status=0
Wed Oct 08 02:04:01 2008 : target_status=2
Wed Oct 08 02:04:01 2008 : pr: 0, pg: 0, pb: 0
Wed Oct 08 02:04:01 2008 : pr: 255, pg: 255, pb: 0
Wed Oct 08 02:04:27 2008 : target_status=2
Wed Oct 08 02:04:27 2008 : pr: 0, pg: 0, pb: 0
Wed Oct 08 02:04:27 2008 : pr: 255, pg: 255, pb: 0
Wed Oct 08 02:04:40 2008 : target_status=2
Wed Oct 08 02:04:40 2008 : pr: 0, pg: 0, pb: 0
Wed Oct 08 02:04:40 2008 : pr: 255, pg: 255, pb: 0
Wed Oct 08 02:04:59 2008 : target_status=2
Wed Oct 08 02:04:59 2008 : pr: 255, pg: 128, pb: 0
Wed Oct 08 02:05:30 2008 : WARNING: Failure reading memory from 0xA76468 at 0x1098ec5c in memoryReadByte(). Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)

Wed Oct 08 02:05:31 2008 : WARNING: Failure reading memory from 0xA76468 at 0x1098ec5c in memoryReadByte(). Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)

Wed Oct 08 02:05:32 2008 : WARNING: Failure reading memory from 0xA76468 at 0x1098ec5c in memoryReadByte(). Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)

Wed Oct 08 02:05:33 2008 : WARNING: Failure reading memory from 0xA76468 at 0x1098ec5c in memoryReadByte(). Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)

Wed Oct 08 02:05:34 2008 : WARNING: Failure reading memory from 0xA76468 at 0x1098ec5c in memoryReadByte(). Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)

Wed Oct 08 02:05:35 2008 : WARNING: Failure reading memory from 0xA76468 at 0x1098ec5c in memoryReadByte(). Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)

Wed Oct 08 02:05:36 2008 : WARNING: Failure reading memory from 0xA76468 at 0x1098ec5c in memoryReadByte(). Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)

Wed Oct 08 02:05:38 2008 : WARNING: Failure reading memory from 0xA76468 at 0x1098ec5c in memoryReadByte(). Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)

Wed Oct 08 02:05:39 2008 : WARNING: Failure reading memory from 0xA76468 at 0x1098ec5c in memoryReadByte(). Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)

Wed Oct 08 02:05:40 2008 : WARNING: Failure reading memory from 0xA76468 at 0x1098ec5c in memoryReadByte(). Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)

--------------- The bots works fine but when he sits thats when the problem starts.

User avatar
Administrator
Site Admin
Posts: 5307
Joined: Sat Jan 05, 2008 4:21 pm

Re: Shaiya bot

#315 Post by Administrator » Wed Oct 08, 2008 5:22 pm

Ok, I think I've fixed it. Try changing your sitcheck_addr.
Updated address:
sitcheck_addr = 0x006DCC80;

Dreadful_Warrior
Posts: 8
Joined: Wed Oct 01, 2008 3:08 am

Re: Shaiya bot

#316 Post by Dreadful_Warrior » Thu Oct 09, 2008 9:51 pm

Doesnt work again, Here's my log,
Thu Oct 09 19:45:25 2008 : MicroMacro v0.98
Thu Oct 09 19:45:25 2008 : Processor Type: 2X 586, OS: Windows XP Service Pack 3
Thu Oct 09 19:45:25 2008 : Lua initialized successfully.
Thu Oct 09 19:45:25 2008 : Lua libs opened successfully.
Thu Oct 09 19:45:25 2008 : LuaCoco is available.
Thu Oct 09 19:45:25 2008 : Lua glues exported.
Thu Oct 09 19:45:25 2008 : Keyboard layout: US English
Thu Oct 09 19:45:25 2008 : Configurations run.
Thu Oct 09 19:45:28 2008 : Executing script "fighter.lua".
==================================================

Thu Oct 09 19:45:29 2008 : WARNING: Failure reading memory from 0x9FFDC0 at 0x81cbec in memoryReadIntPtr(). Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)

Thu Oct 09 19:45:29 2008 : WARNING: Failure reading memory from 0x9FFDC0 at 0x81cbec in memoryReadIntPtr(). Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)

Thu Oct 09 19:45:29 2008 : WARNING: Failure reading memory from 0x9FFDC0 at 0x81cbec in memoryReadIntPtr(). Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)

i think the addresses changed coz shaiya had an emergency server maintenance a while ago.

btw im using this script

on = true;
off = false;
------------------------------------------------
-- HOTKEYS
------------------------------------------------
macro_running = on; -- leave this ON!

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_buff3 = key.VK_8;

key_hp_potion = key.VK_NUMPAD1;
key_hp_potion1 = key.VK_NUMPAD2;
key_hp_potion2 = key.VK_NUMPAD3;
key_hp_potion3 = key.VK_NUMPAD4;
key_hp_potion4 = key.VK_NUMPAD5;
key_hp_potion5 = key.VK_NUMPAD6;
key_hp_potion6 = key.VK_NUMPAD7;
key_hp_potion7 = key.VK_NUMPAD8;
key_hp_potion8 = key.VK_NUMPAD9;
key_hp_potion9 = key.VK_NUMPAD0;
key_mp_potion = key.VK_9;
key_sp_potion = key.VK_0;

key_sit = key.VK_C;
key_move_down = key.VK_S;
key_move_right= key.VK_E;
key_myself = key.VK_F1;
key_jump = key.VK_SPACE;
key_home = key.VK_HOME;
key_right = key.VK_RIGHT;
do_jump = 0;
--- Don't touch the code above or the program will act differently/not work unless you kknow how to-----------------------


--------------------------------------------------------
-- If the target's hp is not full how many time you want it to scan for targets with full hp.
-- Note: Lag issue will happen. if the target's Hp is still loading it will switch targets.
-- This code prevents it from ksing other people's damaged mobs
-- Default is 4 but adjust it to your mobs zone
--------------------------------------------------------

how_many_scanTarget = 4;

--------------------------------------------------------
-- How many seconds you want to keep locking on the target. If the target's Hp is full for more than 15
-- seconds then that means you are stuck behind a wall, So the macro will change target.
-- Default is 15, if the mob is more spread apart adjust it with a higher number.
--------------------------------------------------------

how_many_seconds = 25;


--------------------------------------------------------
--How many time you want to pick up items after mob is dead.
--Default is 3. In some cases 4 should pick up every drop.
--------------------------------------------------------


how_many_pickup = 3;


--------------------------------------------------------
-- Choose what range of Colored Mob you would want your Fighter
-- To kill. This way your fighter does not run all over the map.
-- Default is min 3 max 3. Which means the micro will only target blue mobs.
--------------------------------------------------------
target_difficulty_color_min= 3;
target_difficulty_color_max= 4;
--white = 1
--cyan = 2
--blue = 3
--green = 4
--yellow = 5
--orange = 6
--red = 7
--purple = 8
--grey = 9


------------------------------------------------
-- SKILLS secondsToTimer(x);
------------------------------------------------
-- Set to 0 if you don't want to use a skill
skill1_time = secondsToTimer(30);
skill2_time = secondsToTimer(35);
skill3_time = secondsToTimer(40);

------------------------------------------------
-- BUFFS
------------------------------------------------
-- Set a buff to 0 if you don't want to use it
buff1_time = minutesToTimer(6);
buff2_time = minutesToTimer(5);
buff3_time = minutesToTimer(9);

------------------------------------------------
-- POTIONS
------------------------------------------------
-- All potion use values are specified in %
-- Set the values to 0 to not use that potion
HP_potion_use = 25;
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 = 80;
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 = 300;
MaxHP_offset = 304;
MP_offset = 308;
MaxMP_offset = 312;
SP_offset = 316;
MaxSP_offset = 320;

targetid_addr = 0x0062FAD4; -- short, 65535 if none selected
-- REMOVED -- targettype_addr = 0x00619B1F; -- byte, 0 = player/NPC, 7 = monster

sitcheck_addr = 0x006DCC80; -- byte, 0 = standing, 7 = sitting

--------------------------------------------------------------------------
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;
function target()
keyboardPress(key_switchtarget);
yrest(200);
end

function moveBreak()
keyboardHold(key_move_down);
yrest(0);
keyboardRelease(key_move_down);
end

function pickup()
printf("Pickup!\n");
if( key_pickup == 0 ) then return; end
local i;
for i = 0, how_many_pickup do
keyboardPress(key_pickup);
yrest(500);
end
end

--------------------------------------------------------------------------------
-- Memory Addresses.
TARGET_POS_X_ADDRESS = 0x1FCFE80;
TARGET_POS_Y_ADDRESS = 0x1FCFE84;
TARGET_POS_Z_ADDRESS = 0x1FCFE88;
TARGET_TYPE_ADDR = 0x0619B1F;

-- Field Values.
TARGET_UNKNOWN = 0;
TARGET_DAMAGED = 1;
TARGET_FULL = 2;
TARGET_DEAD = 3;

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};

-- 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=253, b_max=255},
[target_name_color["green"]] = {r_min=0, r_max=0,
g_min=1, g_max=255,
b_min=0, b_max=0},
[target_name_color["yellow"]] = {r_min=253, r_max=255,
g_min=253, 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;

-- Status Info Bar, offset.
STATUSINFOBAR_POS = {x=0, y=0};


-- 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"])};
--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 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"]));
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"]);
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));
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
-- Gets the monster difficulty color, by reading each pixel in a small fixed
-- line in the middle through the top of the lower case letters,
-- in the monster name label.
-- @return The color index of the name text on success, 0 on failure.
function get_difficulty_color()
local pos_1 = {x=(STATUSINFOBAR_POS["x"] + TARGET_NAME_COLOR_SCAN_OFFSET_1["x"]),
y=(STATUSINFOBAR_POS["y"] + TARGET_NAME_COLOR_SCAN_OFFSET_1["y"])};
local pos_2 = {x=(STATUSINFOBAR_POS["x"] + TARGET_NAME_COLOR_SCAN_OFFSET_2["x"]),
y=(STATUSINFOBAR_POS["y"] + TARGET_NAME_COLOR_SCAN_OFFSET_2["y"])};

local pr, pg, pb;
--local l_color = TARGET_NAME_COLOR_UNKNOWN;
--local hdc = openDC(shaiya_win);
local l_hdc = get_hdc();
for i=pos_1["x"], pos_2["x"] do
for j=pos_1["y"], pos_2["y"] do
if (window_mode) then
local wx, wy = windowRect(get_win());
printf("win_x: %d, wim_y: %d\n", wx, wy);
pr, pg, pb = getPixel(l_hdc, wx + i, wy + j);
else
pr, pg, pb = getPixel(l_hdc, i, j);
end
debug_message(sprintf("pr: %d, pg: %d, pb: %d", pr, pg, pb));
for k,v in pairs(target_name_color_rgb) do
--printf("v[r]: %d, v[g]: %d, v: %d\n", v["r"], v["g"], v["b"]);
if(pr >= v["r_min"] and pr <= v["r_max"] and
pg >= v["g_min"] and pg <= v["g_max"] and
pb >= v["b_min"] and pb <= v["b_max"]) then
printf("target_difficulty_color: %s\n", k);
return k;
end
end
end
end
--closeDC(hdc);
return target_name_color["unknown"];
end

-------------------------------------------------------------------
-- Modification to see if Target is Dead or FULL HP

function targetstatus()
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"])};

--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;
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"]));

else
sr,sg,sb = getPixel(l_hdc, pos_1["x"], pos_1["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));
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

return TARGET_DEAD;
end
return TARGET_FULL;
end
------------------------------------------------------------------------


-----------------------------------------------------------------------------------
--*******Cycle Target to see if It matches your minimum and maximum color monster ********
function cycle_target()
--printf("self.switched_targets: %d\n", self.switched_targets);
--printf("self.max_switch_targets: %d\n", self.max_switch_targets);

--debug_message("new_target");
target();
local target_status = status();
--printf("target_color: %d\n", target_color);
--printf("target_status=%d\n", target_status);
logMessage(sprintf("target_status=%d", target_status));

if (target_status == TARGET_FULL) then
local l_color = get_difficulty_color();
local l_color_min = target_difficulty_color_min;
local l_color_max = target_difficulty_color_max;
--printf("target_color_min: %s\n", l_color_min);
-- printf("target_color_max: %s\n", l_color_max);
printf("getting difficulty Color \n");
--printf("l_color: %s\n", l_color);

if (l_color >= l_color_min and l_color <= l_color_max) then
return true;
end
end
return false;
end
-----------------------------------------------------------------------------------
function cycle_target2()
if (target_status == TARGET_FULL) then
local l_color = get_difficulty_color();
local l_color_min = target_difficulty_color_min;
local l_color_max = target_difficulty_color_max;
if (l_color >= l_color_min and l_color <= l_color_max) then
return true;
end
end
return false;
end
------------------------------------------------
-- 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;
------------------------------------------------
-- 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;

function use_hp_potion()
keyboardPress(key_hp_potion);
keyboardPress(key_hp_potion1);
keyboardPress(key_hp_potion2);
keyboardPress(key_hp_potion3);
keyboardPress(key_hp_potion4);
keyboardPress(key_hp_potion5);
keyboardPress(key_hp_potion6);
keyboardPress(key_hp_potion7);
keyboardPress(key_hp_potion8);
keyboardPress(key_hp_potion9);
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 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

------------------------------------------------
-- FIGHT2
------------------------------------------------
function fight2()
local beginTime = os.time();
local attackLoop = true;
local skillsonetime = 0;
keyboardPress(key_attack);
yrest(900);

printf("Attacking Target \n");

while (attackLoop) do
local targetStatus = targetstatus();
local Tstatus = status();
if(targetStatus == TARGET_DEAD) then
printf("Target Dead \n\n");
pickup();
attackLoop = false;
moveBreak();
else
local currentTime = os.time();
if( os.difftime(currentTime, beginTime) > how_many_seconds ) then
moveBreak();
beginTime = os.time();
if(Tstatus == TARGET_FULL) then
do_jump = do_jump+1;
printf("Changing Targets: Obsticle \n\n");
attackLoop = false;
end
else
if(skillsonetime == 0 and Tstatus == TARGET_DAMAGED) then
skillsonetime = 1+skillsonetime;
keyboardPress(key_skill1);
yrest(2000);
keyboardPress(key_skill2);
yrest(2000);
keyboardPress(key_skill3);
end;
keyboardPress(key_attack);
yrest(2000);
end
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
end
end




------------------------------------------------
-- MAIN
------------------------------------------------
function main()
proc = openProcess(findProcessByExe("game.exe"));
win = findWindow("Shaiya");
attach(win);
setPriority(PRIORITY_HIGH);
init_window();
init_process();
init_hdc();


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;

local reAttack = 0;

while( macro_running ) do
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(cycle_target()) then
fight2();
if(do_jump == 1) then
keyboardHold(key_move_down);
keyboardPress(key_jump);
yrest(1000);
keyboardPress(key_jump);
yrest(1000);
keyboardRelease(key_move_down);
keyboardHold(key_move_right);
yrest(2000);
keyboardRelease(key_move_right);
do_jump = 0;
end
reAttack = 0;
else
reAttack = 1 + reAttack;
end
--printf(reAttack);
if ( reAttack == how_many_scanTarget ) then
reAttack = 0;
keyboardPress(key_myself);
yrest(500);
keyboardHold(key_right);
yrest(500);
keyboardRelease(key_right);
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

if ((HP/MaxHP*100) <= 0) then
--user_alive = false;
printf("\n\nPlayer is DEAD");
keyboardPress(key.VK_DELETE);
--force_close();
end
end
end

startMacro(main);

ChaTWizzard
Posts: 18
Joined: Wed Jul 30, 2008 10:57 am

Re: Shaiya bot

#317 Post by ChaTWizzard » Thu Oct 09, 2008 11:07 pm

Could someone please help me get this working, my character just stands there targetting nothing with the screen going around....

User avatar
Administrator
Site Admin
Posts: 5307
Joined: Sat Jan 05, 2008 4:21 pm

Re: Shaiya bot

#318 Post by Administrator » Fri Oct 10, 2008 5:07 am

Are you guys certain that you have got the latest GameGuard patch (installed correctly), and that you are using the latest version of the script that I posted? I guess I'll probably have to look at it myself when I get some free time.

ChaTWizzard
Posts: 18
Joined: Wed Jul 30, 2008 10:57 am

Re: Shaiya bot

#319 Post by ChaTWizzard » Fri Oct 10, 2008 9:24 am

elverion wrote:Are you guys certain that you have got the latest GameGuard patch (installed correctly), and that you are using the latest version of the script that I posted? I guess I'll probably have to look at it myself when I get some free time.
Yeah, i installed it before you even posted it (Plox gave me a link)

I could do with a full set of instructions cos mine is not working at all..

neon_shadow
Posts: 7
Joined: Sun Oct 12, 2008 5:15 pm

Re: Shaiya bot

#320 Post by neon_shadow » Sun Oct 12, 2008 5:19 pm

i've been looking at several forums and in many places, people are getting the same thing as me
WARNING: FAILURE READING MEMORY FROM 0xA8FFD) at 0X7835b4 in memoryreadintptr(). Error code 299 (only part of a readprocessmemory or writeprocessmemory request was completed
WARNING: FAILURE READING MEMORY FROM 0xA8FFD) at 0X7835b4 in memoryreadintptr(). Error code 299 (only part of a readprocessmemory or writeprocessmemory request was completed
WARNING: FAILURE READING MEMORY FROM 0xA8FFD) at 0X7835b4 in memoryreadintptr(). Error code 299 (only part of a readprocessmemory or writeprocessmemory request was completed
WARNING: FAILURE READING MEMORY FROM 0xA8FFD) at 0X7835b4 in memoryreadintptr(). Error code 299 (only part of a readprocessmemory or writeprocessmemory request was completed
WARNING: FAILURE READING MEMORY FROM 0xA8FFD) at 0X7835b4 in memoryreadintptr(). Error code 299 (only part of a readprocessmemory or writeprocessmemory request was completed
and so on
and i get this right when i start the bot
i've tried lots of things, and nothing is working, so i was thinking
do i need to get an individual playerptr_addr = 0x00"XXXXXX" for me? i've seen many people with differant ones, so thats what got me thinking.
and if this is the case, then how would i go about doing that?

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest