Shaiya bot

For any other game that doesn't have its own section.
Message
Author
Stevon
Posts: 2
Joined: Tue May 26, 2009 1:25 pm
Location: Wales, UK

Re: Shaiya bot

#401 Post by Stevon » Wed May 27, 2009 9:32 am

Code: Select all

for i = 0, 5 do
means that it will go through the following code, in this case it will press the key_pickup untill i = 5 so it would do it 5 times

Code: Select all

for i = 0, 5 do
    keyboardPress(key_pickup);
    yrest(500);
  end
so to make it pick up more simply change the 5 to what you wish
Good work, Steve. I have found that changing your sitcheck_addr to 0x6FDE80 also seems to work right without the need of changing any other code.
I tryed for a few hours to try and get the sitcheck offset.. searching the value byte instead of 4 bytes -_- lol... tryed searching 4 bytes and got the offset you posted :roll: lol i have still alot to learn :lol:

Steve

Green200
Posts: 23
Joined: Fri Feb 06, 2009 5:10 pm

Re: Shaiya bot

#402 Post by Green200 » Wed May 27, 2009 10:46 am

Stevon wrote:I tryed for a few hours to try and get the sitcheck offset.. searching the value byte instead of 4 bytes -_- lol... tryed searching 4 bytes and got the offset you posted :roll: lol i have still alot to learn :lol:

Steve
I'm still learning too... what size of byte did you use to find the sitcheck... in my fighter.lua bot I have a swimcheck also so that he doesn't try to sit while swimming. I need to re-find that addy for EP4

vvayinsane
Posts: 148
Joined: Fri Mar 21, 2008 9:10 pm

Re: Shaiya bot

#403 Post by vvayinsane » Wed May 27, 2009 11:22 am

Have you gottn fighter.lua to work? i was thinking of trying to get that to work..lol. The sitcheck has been found. have you tried 0x6FDE80?

Green200
Posts: 23
Joined: Fri Feb 06, 2009 5:10 pm

Re: Shaiya bot

#404 Post by Green200 » Wed May 27, 2009 4:26 pm

almost done with it vvayinsane... the changes to EP4 broke the target status functions and I've just finished rewritting them... hope to have them tested soon.

Still need the byte size to find the swimming addy. It's the same size as the sitcheck. Is it 1 byte?

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

Re: Shaiya bot

#405 Post by Administrator » Wed May 27, 2009 6:34 pm

Green200 wrote:almost done with it vvayinsane... the changes to EP4 broke the target status functions and I've just finished rewritting them... hope to have them tested soon.

Still need the byte size to find the swimming addy. It's the same size as the sitcheck. Is it 1 byte?
Assume 4 bytes.

chopstick19
Posts: 12
Joined: Wed Feb 04, 2009 6:32 am

Re: Shaiya bot

#406 Post by chopstick19 » Tue Jun 02, 2009 3:32 am

Code: Select all

MicroMacro v0.99
SolarImpact
http://solarimpact.servegame.com


Opening main.lua...

Starting script execution - Press CTRL+C to exit.
Press CTRL+L to cancel execution and load a new script.
-------------------------------------------------

Make sure you start the script when you have switched to the Game window!!
The macro is currently not running. Press the start key (Insert) to begin.
You may use () key to stop/pause the script.
Started.
macro_init()
interface=INTERFACE_1024X768
Shaiya Window process ID: 722398
win_width: 1024, win_height: 768

.//classes/hook.lua:126: bad argument #1 to 'memoryReadString' ((null))


Please enter the script name to run.
Type in 'exit' (without quotes) to exit.
Script>
It says that after i hit insert in game.

1z2x3c
Posts: 14
Joined: Tue Dec 30, 2008 8:26 pm

Re: Shaiya bot

#407 Post by 1z2x3c » Fri Jun 12, 2009 4:28 pm

my script seems to be haveing problems at this point:




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




im running an old version of the game, can anyone help?


my hole script is

Code: Select all

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_skill4 = key.VK_NUMPAD5;
key_skill5 = key.VK_NUMPAD6;
key_skill6 = key.VK_NUMPAD7;

key_buff1   = key.VK_6;
key_buff2   = key.VK_7;
key_buff3   = key.VK_NUMPAD8;
key_buff4   = key.VK_NUMPAD9;
key_buff5   = key.VK_NUMPAD0;

key_hp_potion = key.VK_8;
key_hp_potion1 = key.VK_NUMPAD1;
key_hp_potion2 = key.VK_NUMPAD2;
key_hp_potion3 = key.VK_NUMPAD3;
key_hp_potion4 = key.VK_NUMPAD4;
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 = 5;

--------------------------------------------------------
-- 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    = 15;


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


--------------------------------------------------------
-- 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= 5;
target_difficulty_color_max= 6;
--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(60);
skill2_time = secondsToTimer(20);
skill3_time = secondsToTimer(300);
skill4_time = secondsToTimer(300);
skill5_time = secondsToTimer(300);
skill6_time = secondsToTimer(600);


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

------------------------------------------------
-- POTIONS
------------------------------------------------
-- All potion use values are specified in %
-- Set the values to 0 to not use that potion
HP_potion_use = 70;
MP_potion_use = 30;
SP_potion_use = 30;


------------------------------------------------
-- 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 = 60;
MP_sit = 20;
SP_sit = 20;


--[[*********************************************************************
**************************************************************************
    DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING
**************************************************************************
************************************************************************]]

------------------------------------------------
-- Memory addresses
------------------------------------------------
playerptr_addr = 0x83DDF4;

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 = 0x6E8BE0; -- short, 65535 if none selected

sitcheck_addr = 0x83DDF4; -- 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(500);
  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[b]: %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;
skill4_ready = true;
skill5_ready = true;
skill6_ready = true;

buff1_ready = true;
buff2_ready = true;
buff3_ready = true;
buff4_ready = true;
buff5_ready = true;

------------------------------------------------
-- Functions
------------------------------------------------

skill1_toggle = function () skill1_ready = true; end;
skill2_toggle = function () skill2_ready = true; end;
skill3_toggle = function () skill3_ready = true; end;
skill4_toggle = function () skill4_ready = true; end;
skill5_toggle = function () skill5_ready = true; end;
skill6_toggle = function () skill6_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;
buff5_toggle = function () buff5_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);
  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(200);
  
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);
         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( skill4_time ) then registerTimer("skill4_toggle", skill4_time, skill4_toggle); end
  if( skill5_time ) then registerTimer("skill5_toggle", skill5_time, skill5_toggle); end
  if( skill6_time ) then registerTimer("skill6_toggle", skill6_time, skill6_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;
  if( buff5_time ) then registerTimer("buff5_toggle", buff5_time, buff5_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( buff4_ready  and buff4_time > 0 ) then
      keyboardPress(key_buff4); buff4_ready = false; yrest(2000); end;
    if( buff5_ready  and buff5_time > 0 ) then
      keyboardPress(key_buff5); buff5_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);
          keyboardHold(key_move_right);
          yrest(2000);
          keyboardRelease(key_move_right);
          keyboardHold(key_move_down);
          keyboardPress(key_jump);
          yrest(1000);
          keyboardPress(key_jump);
          yrest(1000);
          keyboardRelease(key_move_down);
          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);

ok, after some screwing around, i get it to semi work once, after that, i restarted micromarco and it keept stoping at getpixel function, this line:

sr,sg,sb = getPixel(l_hdc, pos_1["x"], pos_1["y"]);

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

Re: Shaiya bot

#408 Post by Administrator » Sat Jun 13, 2009 2:59 am

That script is not the same as this one. You are posting this in the wrong place. Also, it would help if you said what the error was rather than just say that you have one.

PrOsAnGeLz
Posts: 3
Joined: Mon Feb 09, 2009 10:05 am

Re: Shaiya bot

#409 Post by PrOsAnGeLz » Mon Jun 15, 2009 6:15 am

Hi,

Can i know what does this error means?
Error
Error

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

Re: Shaiya bot

#410 Post by Administrator » Mon Jun 15, 2009 7:08 am

It means that the process handle being passed to that function is invalid. This happens when it fails to open a proper process handle to read and write memory to/from the game. Post a copy of your log.txt for further examination.

PrOsAnGeLz
Posts: 3
Joined: Mon Feb 09, 2009 10:05 am

Re: Shaiya bot

#411 Post by PrOsAnGeLz » Mon Jun 15, 2009 1:02 pm

Here the log.txt
log.txt
(954 Bytes) Downloaded 329 times

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

Re: Shaiya bot

#412 Post by Administrator » Mon Jun 15, 2009 5:08 pm

It isn't finding the process. This could be due to a number of reasons. Most likely, you have not disabled GameGuard, so it is blocking the calls.

Swartor
Posts: 2
Joined: Thu Jul 09, 2009 1:31 am

Re: Shaiya bot

#413 Post by Swartor » Tue Jul 14, 2009 3:28 am

hi i do some litl changes of the script and get it to work with my pagan if eny one wont it

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_back  = key.VK_S;

key_attack  = key.VK_1;
key_pickup  = key.VK_2;

key_mainatk = key.VK_3;
key_skill1  = key.VK_4;
key_skill2  = key.VK_5;
key_skill3  = key.VK_6;
key_skill4  = key.VK_7;


key_buff1   = key.VK_8;
key_buff2   = key.VK_9;
key_buff3   = key.VK_0;

key_hp_potion1 = key.VK_NUMPAD1;
key_hp_potion2 = key.VK_NUMPAD2;
key_hp_potion3 = key.VK_NUMPAD3;
key_hp_potion4 = key.VK_NUMPAD4;
key_hp_potion5 = key.VK_NUMPAD5;
key_hp_potion6 = key.VK_NUMPAD6;
key_mp_potion1 = key.VK_NUMPAD7;
key_mp_potion2 = key.VK_NUMPAD8;
key_sp_potion1 = key.VK_NUMPAD9;
key_sp_potion2 = key.VK_NUMPAD0;

key_sit       = key.VK_C;


------------------------------------------------
-- SKILLS
------------------------------------------------
-- Set to 0 if you don't want to use a skill
skill1_time = secondsToTimer(30);
skill2_time = secondsToTimer(20);
skill3_time = secondsToTimer(0);
skill4_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 = 0;


------------------------------------------------
-- POTIONS
------------------------------------------------
-- All potion use values are specified in %
-- Set the values to 0 to not use that potion
HP_potion_use = 30;
MP_potion_use = 10;
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 = 50;
MP_sit = 20;
SP_sit = 0;


--[[*********************************************************************
**************************************************************************
    DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING
**************************************************************************
************************************************************************]]

------------------------------------------------
-- Memory addresses
------------------------------------------------
playerptr_addr = 0x00848E74;
party1_addr    = 0x1663e2a0;

HP_offset = 0x130; 
MaxHP_offset = 0x134; -- 304
MP_offset = 0x138; --308;
MaxMP_offset = 0x13c; --312;
SP_offset = 0x140; --316;
MaxSP_offset = 0x144; --320;

targetid_addr = 0x006f3be0; -- short, 65535 if none selected
rodzaj_addr = 0x006f3be3;
-- 006f3be0
sitcheck_addr = 0x708f00; -- 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;
skill4_ready = true;

buff1_ready = true;
buff2_ready = true;
buff3_ready = true;
buff4_ready = true;

sittingTempDisabled = false; -- don't change this. it's just temporary.

------------------------------------------------
-- Functions
------------------------------------------------

skill1_toggle = function () skill1_ready = true; end;
skill2_toggle = function () skill2_ready = true; end;
skill3_toggle = function () skill3_ready = true; end;
skill4_toggle = function () skill4_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_potion1()
  keyboardPress(key_hp_potion1);
  printf("Using HP potion 1\n");
end

function use_hp_potion2()
  keyboardPress(key_hp_potion2);
  printf("Using HP potion 2\n");
end

function use_hp_potion3()
  keyboardPress(key_hp_potion3);
  printf("Using HP potion 3\n");
end

function use_hp_potion4()
  keyboardPress(key_hp_potion4);
  printf("Using HP potion 4\n");
end

function use_hp_potion5()
  keyboardPress(key_hp_potion5);
  printf("Using HP potion 5\n");
end

function use_hp_potion6()
  keyboardPress(key_hp_potion6);
  printf("Using HP potion 6\n");
end

function use_mp_potion1()
  keyboardPress(key_mp_potion1);
  printf("Using MP potion 1\n");
end

function use_mp_potion2()
  keyboardPress(key_mp_potion2);
  printf("Using MP potion 2\n");
end

function use_sp_potion1()
  keyboardPress(key_sp_potion1);
  printf("Using SP potion 1\n");
end

function use_sp_potion2()
  keyboardPress(key_sp_potion2);
  printf("Using SP potion 2\n");
end

function tempDisableSitting()
  sittingTempDisabled = true;
	find_target();
	fight();
	keyboardPress(key_sit);
	sittingTempDisabled = false
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");
      tempDisableSitting(); -- so we don't end up sitting right away again
    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);
  yrest(300);
  keyboardPress(key_back);
	if (memoryReadByte(proc, rodzaj_addr) == 0) then find_target(); end
	if (memoryReadByte(proc, rodzaj_addr) == 255) then find_target(); end
	
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(1), 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) > 30 ) then -- more than 30 sec has passed
      keyboardPress(key_switchtarget);
      break; -- exit combat
    end

    if( skill1_ready  and skill1_time > 0 ) then
      keyboardPress(key_skill1); skill1_ready = false; yrest(100);
      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( skill4_ready and skill4_time > 0) then
      keyboardPress(key_skill4); skill4_ready = false; yrest(1000);
      registerTimer("skill4_toggle", skill4_time, skill4_toggle);
    end;

    if( attack_ready ) then
      keyboardPress(key_mainatk); attack_ready = false; yrest(300); end;

    if( (HP/MaxHP*100) < HP_potion_use and HP_potion_use > 0 ) then use_hp_potion1(); end
    if( (HP/MaxHP*100) < HP_potion_use and HP_potion_use > 0 ) then use_hp_potion2(); end
    if( (HP/MaxHP*100) < HP_potion_use and HP_potion_use > 0 ) then use_hp_potion3(); end
    if( (HP/MaxHP*100) < HP_potion_use and HP_potion_use > 0 ) then use_hp_potion4(); end
    if( (HP/MaxHP*100) < HP_potion_use and HP_potion_use > 0 ) then use_hp_potion5(); end
    if( (HP/MaxHP*100) < HP_potion_use and HP_potion_use > 0 ) then use_hp_potion6(); end
    if( (MP/MaxMP*100) < MP_potion_use and MP_potion_use > 0 ) then use_mp_potion1(); end
    if( (MP/MaxMP*100) < MP_potion_use and MP_potion_use > 0 ) then use_mp_potion2(); end
    if( (SP/MaxSP*100) < SP_potion_use and SP_potion_use > 0 ) then use_sp_potion1(); end
    if( (SP/MaxSP*100) < SP_potion_use and SP_potion_use > 0 ) then use_sp_potion2(); 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");
  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( skill4_time ) then registerTimer("skill4_toggle", skill4_time, skill4_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); buff1_ready = false; yrest(2000); end;

    if( (HP/MaxHP*100) < HP_potion_use and HP_potion_use > 50 ) then use_hp_potion1(); end
    if( (HP/MaxHP*100) < HP_potion_use and HP_potion_use > 50 ) then use_hp_potion2(); end
    if( (HP/MaxHP*100) < HP_potion_use and HP_potion_use > 50 ) then use_hp_potion3(); end
    if( (HP/MaxHP*100) < HP_potion_use and HP_potion_use > 50 ) then use_hp_potion4(); end
    if( (HP/MaxHP*100) < HP_potion_use and HP_potion_use > 50 ) then use_hp_potion5(); end
    if( (HP/MaxHP*100) < HP_potion_use and HP_potion_use > 50 ) then use_hp_potion6(); end
    if( (MP/MaxMP*100) < MP_potion_use and MP_potion_use > 50 ) then use_mp_potion1(); end
    if( (MP/MaxMP*100) < MP_potion_use and MP_potion_use > 50 ) then use_mp_potion2(); end
    if( (SP/MaxSP*100) < SP_potion_use and SP_potion_use > 50 ) then use_sp_potion1(); end
    if( (SP/MaxSP*100) < SP_potion_use and SP_potion_use > 50 ) then use_sp_potion2(); end

    if( not sittingTempDisabled ) then
      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
end

startMacro(main);

If you hav eny question shoot me

Sry for my english its not so good

coda
Posts: 2
Joined: Tue Jul 21, 2009 2:36 am

Re: Shaiya bot

#414 Post by coda » Tue Jul 21, 2009 2:40 am

hi
i wanna ask for the no gg patch
when i run the apply.gg.patch it failed
reason: CRC mismatch

User avatar
Rishijin
Posts: 49
Joined: Sat Jul 04, 2009 4:25 pm
Location: Kauai

Re: Shaiya bot

#415 Post by Rishijin » Mon Jul 27, 2009 10:18 pm

coda wrote:hi
i wanna ask for the no gg patch
when i run the apply.gg.patch it failed
reason: CRC mismatch

Wrong thread.

But anyway, it says that because there is no fix for your version present in the patcher.

Yorkshire
Posts: 21
Joined: Wed Mar 18, 2009 5:16 pm

Re: Shaiya bot

#416 Post by Yorkshire » Thu Jul 30, 2009 3:53 pm

Need a no gg patch pls admin i cant seem to do it :(

nknwn666
Posts: 30
Joined: Fri Feb 20, 2009 3:45 pm

Re: Shaiya bot

#417 Post by nknwn666 » Thu Jul 30, 2009 5:00 pm

Yorkshire wrote:Need a no gg patch pls admin i cant seem to do it :(
tryed this one ?

vvayinsane
Posts: 148
Joined: Fri Mar 21, 2008 9:10 pm

Re: Shaiya bot

#418 Post by vvayinsane » Thu Jul 30, 2009 6:46 pm

Updated version
Attachments
shaiya.lua
(13.54 KiB) Downloaded 342 times

Yorkshire
Posts: 21
Joined: Wed Mar 18, 2009 5:16 pm

Re: Shaiya bot

#419 Post by Yorkshire » Sat Aug 01, 2009 10:04 am

Thank you guys will try thease :)

vvayinsane
Posts: 148
Joined: Fri Mar 21, 2008 9:10 pm

Re: Shaiya bot

#420 Post by vvayinsane » Mon Aug 03, 2009 3:06 pm

If your haven problems targeting monsters..
targetid_addr = 0x6F2BE0;

Took me a while to figure out how to find it....

Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests