View Full Version : Introducing Holic Online (bot)
hackbar
17th January 2008, 21:19
New game from netgame here open beta started today i think...
http://holic.netgame.com/
Heres the bot for it....
Same rules as the kungfu and fiesta bots 1024x768 only...
Post yer log and such if you get an error.
Lisa
18th January 2008, 00:11
micromacro.rar (245.1 KB) approved.
Juge
19th January 2008, 00:54
I'm not sure what to edit. When I start the bot it doesn't do anything. Do I have to select a monster or something for it to begin?
hackbar
19th January 2008, 22:01
run out into the field then press f5
Juge
19th January 2008, 22:06
I don't have to edit anything? Just press F5? Because when I do that it doesn't do anything.
I really want to figure out how to use this. It could be very helpful.
hackbar
19th January 2008, 22:15
I think there was a patch and all the pointers changed :/
In any case you do have to change things but f5 should at least start the bot you are opening micromacro.exe right?
Juge
19th January 2008, 22:17
Yes everything is opened and I see the counter in the top left corner (its red). It just doesnt target anything.
hackbar
19th January 2008, 22:36
are you running it in the correct resolution?
Juge
19th January 2008, 22:47
1024x768 is what it says...
hackbar
19th January 2008, 23:16
did you move the monsters health bar thing at the top middle of screen cause if you do it breaks the bot. The hp/mp address bars arent working but you should at least be getting errors.
Juge
19th January 2008, 23:46
When I press F5 I don't press a thing. I just let it sit for a minute or two and nothing happens. All the bot says is that I've been killed or something and takes a screenshot. <_<
Is it working for you?
hackbar
20th January 2008, 01:04
replace your holic.lua with this.
-------------------------------------------------
--Holic Online Bot
--Mystikfox
--Hackbar
--Mangler
-------------------------------------------------
-- Variable declaration -- do not edit
-------------------------------------------------
CLASS_WARRIOR = 0;
CLASS_MAGE = 1;
HP = 10000;
MP = 10000;
SP = 10000;
HP_ptr = "009127F8";
HP_offset = 556;
MP_ptr = "009127F8";
MP_offset = 552;
-------------------------------------------------
-------------------------------------------------
-- character configuration YOU HAVE TO CHANGE THIS STUFF FOR THE BOT TO WORK RIGHT
-------------------------------------------------
class = CLASS_WARRIOR;
key_attack = key.VK_1;
key_pickup = key.VK_TILDE;
key_sit = key.VK_F2;
key_skill1 = key.VK_2;
key_skill2 = key.VK_3;
key_skill3 = key.VK_4;
key_hppotion = key.VK_7;
key_mppotion = key.VK_F4;
key_sppotion = key.VK_F3;
-- rest or use potions when low on HP/MP/SP
HP_potion = 600;
MP_potion = 40;
SP_potion = 0;
HP_sit = 40;
MP_sit = 0;
SP_sit = 0;
-- chance to cast
skill1_chance = 80;
skill2_chance = 80;
skill3_chance = 0;
-- MP cost
skill1_cost = 15;
skill2_cost = 20;
skill3_cost = 25;
have_pig = 0; -- set to 1 if you have a fortune pig and want to
-- skip the manual pickup function
-- buff stuff
-- NOTE: set on 10 minutes
-- buff / scroll durations in msec time = minutes x 60000
-- to de- activate non used buffs / scrolls replace "1" with "0"
-- to activate buff / scroll replace "0" with "1"
-- scrolls can be used too as buff
-------------------------
buff1_duration = 1800000;
buff_1 = 1;
buff_key1 = key.VK_8;
buff2_duration = 1800000;
buff_2 = 1;
buff_key2 = key.VK_9;
buff3_duration = 1800000;
buff_3 = 1;
buff_key3 = key.VK_0;
--dont change these
buff1_needed = true;
buff2_needed = true;
buff3_needed = true;
-- cast times in milliseconds
skill1_casttime = 2000;
skill2_casttime = 1000;
skill3_casttime = 3000;
-- skill cool downs in milliseconds (not working)
skill1_cooldown = 3000;
skill2_cooldown = 8000;
skill3_cooldown = 9000;
-------------------------------------------------
function hp_potion()
keyboardPress(key_hppotion);
end
function mp_potion()
keyboardPress(key_mppotion);
end
function sp_potion()
keyboardPress(key_sppotion);
end
-- so we aren't spamming the attack key...
-- we will use a timer to press it once
-- every 3 seconds.
function attack_timer()
keyboardPress(key_attack);
end
function fight_warrior()
registerTimer("attack_timer", 3000, attack_timer);
while( have_target() ) do
if( HP < HP_potion ) then
hp_potion(); end
if( MP < MP_potion ) then
mp_potion(); end
if( SP < SP_potion ) then
sp_potion(); end
local roll = math.random(100);
if( roll <= skill1_chance and SP >= skill1_cost ) then
keyboardPress(key_skill1);
yrest(120);
elseif( roll <= skill2_chance and SP >= skill2_cost ) then
keyboardPress(key_skill2);
yrest(120);
elseif( roll <= skill3_chance and SP >= skill3_cost ) then
keyboardPress(key_skill3);
yrest(120);
else
keyboardPress(key_attack);
yrest(500);
end
yrest(250);
coroutine.yield();
end
unregisterTimer("attack_timer");
yrest(1000);
end
function fight_mage()
while( have_target() ) do
if( HP < HP_potion ) then
hp_potion(); end
if( MP < MP_potion ) then
mp_potion(); end
local roll = math.random(100);
if( roll <= skill1_chance and MP >= skill1_cost ) then
-- cast skill 1
keyboardPress(key_skill1);
yrest(skill1_casttime);
else
keyboardPress(key_attack);
end
if( roll <= skill2_chance and MP >= skill2_cost ) then
-- cast skill 1
keyboardPress(key_skill2);
yrest(skill2_casttime);
else
keyboardPress(key_attack);
end
yrest(100);
coroutine.yield();
end
yrest(1000);
end
-- heal until full HP & MP
function rest_heal()
if( can_rest == false ) then return; end
keyboardHold(key_sit);
yrest(50);
keyboardRelease(key_sit);
-- set a timer to toggle healing in 30 seconds
registerTimer("heal_rest_timer", 30000, heal_rest_timer);
need_heal = true;
last_hp = HP;
while( need_heal ) do
yrest(100);
if (HP < last_hp) then
print("Under attack! Exiting rest.");
can_rest = false;
registerTimer("can_rest_timer", 3000, can_rest_timer);
break;
else
last_hp = HP;
end
end
keyboardHold(key_sit);
yrest(50);
keyboardRelease(key_sit);
yrest(200);
end
-- toggle can_heal to true, disable timer
function can_rest_timer()
unregisterTimer("can_rest_timer");
can_rest = true;
print("Can rest again.");
end
-- tell heal_rest we no longer need rest
function heal_rest_timer()
need_heal = false;
end
-- toggle cast needed for buff1
function buff1_timer()
buff1_needed = true;
end
-- toggle cast needed for buff2
function buff2_timer()
buff2_needed = true;
end
-- pickup nearby items
function pickup()
keyboardHold(key_pickup);
yrest(50);
keyboardRelease(key_pickup);
yrest(775)
keyboardHold(key_pickup);
yrest(50);
keyboardRelease(key_pickup);
end
-- you have died! oh noes!
function death_return()
keyboardPress(key.VK_SNAPSHOT);
print(os.date("Looks like somebody got you killed. %X"))
print("A screen capture has been taken. Open MS Paint and paste it.");
stopPE(); -- this turns the macro off!
coroutine.yield(); -- yield to make sure the protected environment stops
end
function move_forward()
keyboardHold(key.VK_W);
if( math.random(100) >= 80 )
then keyboardHold(key.VK_A);
else if( math.random(100) >= 80 )
then keyboardHold(key.VK_D); end
end
yrest( math.random(200) );
keyboardRelease(key.VK_W);
keyboardRelease(key.VK_A);
keyboardRelease(key.VK_D);
end
-- update client variables by reading from it's memory
function update_vars()
HP = memoryReadIntPtr(proc, HP_ptr, HP_offset);
MP = memoryReadIntPtr(proc, MP_ptr, MP_offset);
-- SP = memoryReadIntPtr(proc, SP_ptr, SP_offset);
-- X_coord = memoryReadIntPtr(proc, X_ptr, X_offset);
-- Y_coord = memoryReadIntPtr(proc, Y_ptr, Y_offset);
end
-- rotate camera
function rotate_cam()
wx,wy = windowRect(win);
mouseSet(wx+512, wy+412);
yrest(100);
mouseRHold();
yrest(200);
mouseSet(wx+526, wy+412);
yrest(100);
mouseRRelease();
yrest(100);
end
-- selects a nearby monster
function target_monster()
keyboardHold(key.VK_TAB);
yrest(50);
keyboardRelease(key.VK_TAB);
end
-- checks if you have a target
function have_target()
r,g,b = getPixel(hdc, 579, 79);
print(r,g,b);
-- check for the blueish color in the monster's HP window
if( r >= 18 and r <= 36 and g >= 34 and g <= 49 and b >= 93 and b<= 109 ) then
return true;
else
return false;
end
end
--function used to test the position and colour of the current pixel under the mouse
function pixeltest()
x,y = mouseGetPos();
print("mouse_x: ", x, "; mouse_y: ", y); -- display the coordinates of the mouse
r,g,b = getPixel(hdc, x, y);
print("R : ", r, "; G : ", g, "; B : ", b);
end
-------------------------------------------------
-- FUNCTION MAIN
-------------------------------------------------
function main()
win = findWindow("HoLic Online");
hdc = openDC(win);
proc = openProcess( findProcessByExe("HolicUSA.exe") );
attach(win);
registerTimer("update_vars", 100, update_vars);
registerTimer("buff1_timer", buff1_duration, buff1_timer);
registerTimer("buff2_timer", buff2_duration, buff2_timer);
--pixeltest();
while( 1 ) do
--pixeltest();
if( HP == 0 ) then death_return(); end
if( HP < HP_potion ) then hp_potion(); end
if( MP < MP_potion ) then mp_potion(); end
if( SP < SP_potion ) then sp_potion(); end
if( HP < HP_sit and can_rest == true ) then rest_heal(); end
if( MP < MP_sit and can_rest == true ) then rest_heal(); end
print(X_coord, Y_coord);
yrest(100);
target_monster();
yrest(200);
if( have_target() ) then
can_rest = false; -- prevent resting during battle
-- for the few that have this bug
if( class == CLASS_WARRIOR) then fight_warrior(); end
if( class == CLASS_MAGE) then fight_mage(); end
can_rest = true;
else
rotate_cam();
if( math.random(100) > 90 ) then
move_forward(); end
end
if(have_pig == 0) then
pickup();
end
-------- if you want more than 2 buffs you gotta duplicate and change one of these if statements
if( buff_1 == 1 ) then
if( buff1_needed ) then
keyboardPress(buff_key1);
print(os.date("buff 1 casted %X"))
buff1_needed = false;
yrest(1000);
end
end
if( buff_2 == 1 ) then
if( buff2_needed ) then
keyboardPress(buff_key2);
print(os.date("buff 2 casted %X"))
buff2_needed = false;
yrest(1000);
end
end
if( buff_3 == 1 ) then
if( buff3_needed ) then
keyboardPress(buff_key3);
print(os.date("buff 3 casted %X"))
buff3_needed = false;
yrest(1000);
end
end
end
detach();
closeProcess(proc);
end
startMacro(main);
-------------------------------------------------
hardcore808
20th January 2008, 05:28
seems to work ok with the new .lua script. I noticed it tries to pick up drops while fighting though. It also targets other monsters before it kills the current monster.
does this bot have a resting/healing function? If so how to configure? thanks
nice work so far. :D
edit:
class = CLASS_WARRIOR;
key_attack = key.VK_1;
key_pickup = key.VK_TILDE;
key_sit = key.VK_F2;
key_skill1 = key.VK_2;
key_skill2 = key.VK_3;
key_skill3 = key.VK_4;
key_hppotion = key.VK_7;
key_mppotion = key.VK_F4;
key_sppotion = key.VK_F3;
-- rest or use potions when low on HP/MP/SP
HP_potion = 600;
MP_potion = 40;
SP_potion = 0;
HP_sit = 40;
MP_sit = 0;
SP_sit = 0;
how do I get it to just sit instead of potting for heal. The sitting key is F2 I believe.
hackbar
20th January 2008, 05:47
make HP_sit higher than HP_potion
amirariely
20th January 2008, 19:48
can u pleas give a basic guide how to use this bot.
and when i say basic i mean it i didnt understand abit of what i supuse to do.... i know how u call it "newbi"?
i hope u will help me :)
wrecko
20th January 2008, 21:27
well i tried using it... when i on the bot it buffed n everythin.. but somehow it doesn attack anythin it jus jus stands there n targets diff mobs.. any suggestions?
hackbar
20th January 2008, 21:40
sometimes it does that. try dbl clicking the first mob to get it started. Also make sure you attack keys are set properly
amirariely
20th January 2008, 22:14
ok i understand how to use it but i have somr probs.
1.it doesnt use the hp pots
2.it use only 1 skils
pleas tell me how i can do that the bot will use all the skils and will take the hp and mp pots
hackbar
20th January 2008, 22:28
it only uses 1 skill right now because of an error. to get mp/hp pots to work correctly youre gonna have to set the script to use the hotkeys that are set to hp and mp in the game
if you have your hp potion in slot 7 then your code should look like
key_hppotion = key.VK_7;
amirariely
20th January 2008, 22:38
ok ty
it works good :)
hackbar
21st January 2008, 09:25
small update to fix a bug...
replace your holic.lua with this
-------------------------------------------------
--Holic Online Bot
--Mystikfox
--Hackbar
--Mangler
-------------------------------------------------
-- Variable declaration -- do not edit
-------------------------------------------------
CLASS_WARRIOR = 0;
CLASS_MAGE = 1;
HP = 10000;
MP = 10000;
SP = 10000;
HP_ptr = "009127F8";
HP_offset = 556;
MP_ptr = "009127F8";
MP_offset = 552;
-------------------------------------------------
-------------------------------------------------
-- character configuration YOU HAVE TO CHANGE THIS STUFF FOR THE BOT TO WORK RIGHT
-------------------------------------------------
class = CLASS_WARRIOR;
key_attack = key.VK_1;
key_pickup = key.VK_TILDE;
key_sit = key.VK_F2;
key_skill1 = key.VK_2;
key_skill2 = key.VK_3;
key_skill3 = key.VK_4;
key_hppotion = key.VK_7;
key_mppotion = key.VK_6;
key_sppotion = key.VK_F3;
-- rest or use potions when low on HP/MP/SP
HP_potion = 1000;
MP_potion = 80;
SP_potion = 0;
HP_sit = 40;
MP_sit = 0;
SP_sit = 0;
-- chance to cast
skill1_chance = 80;
skill2_chance = 80;
skill3_chance = 0;
-- MP cost
skill1_cost = 15;
skill2_cost = 20;
skill3_cost = 25;
have_pig = 0; -- set to 1 if you have a fortune pig and want to
-- skip the manual pickup function
-- buff stuff
-- NOTE: set on 10 minutes
-- buff / scroll durations in msec time = minutes x 60000
-- to de- activate non used buffs / scrolls replace "1" with "0"
-- to activate buff / scroll replace "0" with "1"
-- scrolls can be used too as buff
-------------------------
buff1_duration = 1800000;
buff_1 = 1;
buff_key1 = key.VK_8;
buff2_duration = 1800000;
buff_2 = 1;
buff_key2 = key.VK_9;
buff3_duration = 1800000;
buff_3 = 1;
buff_key3 = key.VK_0;
--dont change these
buff1_needed = true;
buff2_needed = true;
buff3_needed = true;
-- cast times in milliseconds
skill1_casttime = 2000;
skill2_casttime = 1000;
skill3_casttime = 3000;
-- skill cool downs in milliseconds (not working)
skill1_cooldown = 3000;
skill2_cooldown = 8000;
skill3_cooldown = 9000;
-------------------------------------------------
function hp_potion()
keyboardPress(key_hppotion);
end
function mp_potion()
keyboardPress(key_mppotion);
end
function sp_potion()
keyboardPress(key_sppotion);
end
-- so we aren't spamming the attack key...
-- we will use a timer to press it once
-- every 3 seconds.
function attack_timer()
keyboardPress(key_attack);
end
function fight_warrior()
registerTimer("attack_timer", 3000, attack_timer);
while( have_target() ) do
if( HP < HP_potion ) then
hp_potion(); end
if( MP < MP_potion ) then
mp_potion(); end
if( SP < SP_potion ) then
sp_potion(); end
local roll = math.random(100);
if( roll <= skill1_chance and MP >= skill1_cost ) then
keyboardPress(key_skill1);
yrest(120);
elseif( roll <= skill2_chance and MP >= skill2_cost ) then
keyboardPress(key_skill2);
yrest(120);
elseif( roll <= skill3_chance and MP >= skill3_cost ) then
keyboardPress(key_skill3);
yrest(120);
else
keyboardPress(key_attack);
yrest(500);
end
yrest(250);
coroutine.yield();
end
unregisterTimer("attack_timer");
yrest(1000);
end
function fight_mage()
while( have_target() ) do
if( HP < HP_potion ) then
hp_potion(); end
if( MP < MP_potion ) then
mp_potion(); end
local roll = math.random(100);
if( roll <= skill1_chance and MP >= skill1_cost ) then
-- cast skill 1
keyboardPress(key_skill1);
yrest(skill1_casttime);
else
keyboardPress(key_attack);
end
if( roll <= skill2_chance and MP >= skill2_cost ) then
-- cast skill 1
keyboardPress(key_skill2);
yrest(skill2_casttime);
else
keyboardPress(key_attack);
end
yrest(100);
coroutine.yield();
end
yrest(1000);
end
-- heal until full HP & MP
function rest_heal()
if( can_rest == false ) then return; end
keyboardHold(key_sit);
yrest(50);
keyboardRelease(key_sit);
-- set a timer to toggle healing in 30 seconds
registerTimer("heal_rest_timer", 30000, heal_rest_timer);
need_heal = true;
last_hp = HP;
while( need_heal ) do
yrest(100);
if (HP < last_hp) then
print("Under attack! Exiting rest.");
can_rest = false;
registerTimer("can_rest_timer", 3000, can_rest_timer);
break;
else
last_hp = HP;
end
end
keyboardHold(key_sit);
yrest(50);
keyboardRelease(key_sit);
yrest(200);
end
-- toggle can_heal to true, disable timer
function can_rest_timer()
unregisterTimer("can_rest_timer");
can_rest = true;
print("Can rest again.");
end
-- tell heal_rest we no longer need rest
function heal_rest_timer()
need_heal = false;
end
-- toggle cast needed for buff1
function buff1_timer()
buff1_needed = true;
end
-- toggle cast needed for buff2
function buff2_timer()
buff2_needed = true;
end
-- toggle cast needed for buff3
function buff3_timer()
buff3_needed = true;
end
-- pickup nearby items
function pickup()
keyboardHold(key_pickup);
yrest(50);
keyboardRelease(key_pickup);
yrest(775)
keyboardHold(key_pickup);
yrest(50);
keyboardRelease(key_pickup);
end
-- you have died! oh noes!
function death_return()
keyboardPress(key.VK_SNAPSHOT);
print(os.date("Looks like somebody got you killed. %X"))
print("A screen capture has been taken. Open MS Paint and paste it.");
stopPE(); -- this turns the macro off!
coroutine.yield(); -- yield to make sure the protected environment stops
end
function move_forward()
keyboardHold(key.VK_W);
if( math.random(100) >= 80 )
then keyboardHold(key.VK_A);
else if( math.random(100) >= 80 )
then keyboardHold(key.VK_D); end
end
yrest( math.random(200) );
keyboardRelease(key.VK_W);
keyboardRelease(key.VK_A);
keyboardRelease(key.VK_D);
end
-- update client variables by reading from it's memory
function update_vars()
HP = memoryReadIntPtr(proc, HP_ptr, HP_offset);
MP = memoryReadIntPtr(proc, MP_ptr, MP_offset);
-- SP = memoryReadIntPtr(proc, SP_ptr, SP_offset);
-- X_coord = memoryReadIntPtr(proc, X_ptr, X_offset);
-- Y_coord = memoryReadIntPtr(proc, Y_ptr, Y_offset);
end
-- rotate camera
function rotate_cam()
wx,wy = windowRect(win);
mouseSet(wx+512, wy+412);
yrest(100);
mouseRHold();
yrest(200);
mouseSet(wx+576, wy+412);
yrest(100);
mouseRRelease();
yrest(100);
end
-- selects a nearby monster
function target_monster()
keyboardHold(key.VK_TAB);
yrest(50);
keyboardRelease(key.VK_TAB);
end
-- checks if you have a target
function have_target()
r,g,b = getPixel(hdc, 579, 79);
print(r,g,b);
-- check for the blueish color in the monster's HP window
if( r >= 18 and r <= 36 and g >= 34 and g <= 49 and b >= 93 and b<= 110 ) then
return true;
else
return false;
end
end
--function used to test the position and colour of the current pixel under the mouse
function pixeltest()
x,y = mouseGetPos();
print("mouse_x: ", x, "; mouse_y: ", y); -- display the coordinates of the mouse
r,g,b = getPixel(hdc, x, y);
print("R : ", r, "; G : ", g, "; B : ", b);
end
-------------------------------------------------
-- FUNCTION MAIN
-------------------------------------------------
function main()
win = findWindow("HoLic Online");
hdc = openDC(win);
proc = openProcess( findProcessByExe("HolicUSA.exe") );
attach(win);
registerTimer("update_vars", 100, update_vars);
registerTimer("buff1_timer", buff1_duration, buff1_timer);
registerTimer("buff2_timer", buff2_duration, buff2_timer);
registerTimer("buff3_timer", buff3_duration, buff3_timer);
--pixeltest();
while( 1 ) do
--pixeltest();
if( HP == 0 ) then death_return(); end
if( HP < HP_potion ) then hp_potion(); end
if( MP < MP_potion ) then mp_potion(); end
if( SP < SP_potion ) then sp_potion(); end
if( HP < HP_sit and can_rest == true ) then rest_heal(); end
if( MP < MP_sit and can_rest == true ) then rest_heal(); end
print(X_coord, Y_coord);
yrest(100);
target_monster();
yrest(200);
if( have_target() ) then
can_rest = false; -- prevent resting during battle
-- for the few that have this bug
if( class == CLASS_WARRIOR) then fight_warrior(); end
if( class == CLASS_MAGE) then fight_mage(); end
can_rest = true;
else
rotate_cam();
if( math.random(100) > 90 ) then
move_forward(); end
end
if(have_pig == 0) then
pickup();
end
-------- if you want more than 2 buffs you gotta duplicate and change one of these if statements
if( buff_1 == 1 ) then
if( buff1_needed ) then
keyboardPress(buff_key1);
print(os.date("buff 1 casted %X"))
buff1_needed = false;
yrest(1500);
end
end
if( buff_2 == 1 ) then
if( buff2_needed ) then
keyboardPress(buff_key2);
print(os.date("buff 2 casted %X"))
buff2_needed = false;
yrest(1500);
end
end
if( buff_3 == 1 ) then
if( buff3_needed ) then
keyboardPress(buff_key3);
print(os.date("buff 3 casted %X"))
buff3_needed = false;
yrest(1500);
end
end
end
detach();
closeProcess(proc);
end
startMacro(main);
-------------------------------------------------
amirariely
21st January 2008, 13:40
will u be able to do that the bot will not attack monsters that are higer level then u cause when i went to sleep ibought alot of pots and stuff and started the bot and when i came to see what happend i saw that i was killed by some strong monster(a big white rubit...)
so if it posible to do that he will not attack huger level mosters then him or will not move from a sarten point(if he start in 990,110 he will not get far from that point)
sorry for the long comment
hackbar
21st January 2008, 18:44
There is currently no practical way of differentiating between monster types. You could prolly do it with network code but im unfamiliar with such things and its not currently implemented in the tool i use.
Way points and map areas may be implemented in future versions if I don't get bored with the game.
amirariely
21st January 2008, 20:29
ok
i will need to get to level 15 or some think like that so the monsters will not kil lme all the taime...
FlyingPigs
21st January 2008, 22:27
Is there a way to make it only attack 100% hp, cause I keep ksing people @_@ Other then that, it works great ;D
And also, if I want to make my buff to rebuff every 2 min, what number do I put in?
danielxdp
21st January 2008, 22:40
how do you start the bot? like for fiesta dont you type fiestabot.lua what is the cmd for this one?
hackbar
22nd January 2008, 00:02
I dont understand how you possibly couldn't figure this out for yourself but its holic.lua
420twisted1
23rd January 2008, 01:01
So if I want this to work right Id have to change class to monk right?
hackbar
23rd January 2008, 01:12
So if I want this to work right Id have to change class to monk right?
It should more or less work with any class... Magic classes change the code to
class = CLASS_MAGE;
cikuno87
23rd January 2008, 03:05
im testing the new script n it works great..but got some problem here with the attack..sometimes it keep choosing the monster to attack though you already said double klik the monster to attack at start and i did that..but still after sometimes it start again choosing the monster doing nuthin..
and i have to double klik again..hope you can explain it how to fix it...
btw do i need to change the address for HP/MP like other bot.lua??
hackbar
23rd January 2008, 04:19
im testing the new script n it works great..but got some problem here with the attack..sometimes it keep choosing the monster to attack though you already said double klik the monster to attack at start and i did that..but still after sometimes it start again choosing the monster doing nuthin..
and i have to double klik again..hope you can explain it how to fix it...
btw do i need to change the address for HP/MP like other bot.lua??
Im working on a new combat algorithm that should fix the skill spamming and slight delays on combat... If you are tabbing to new monsters really often make sure youre using the latest version of the bot. It still happens in the latest version but not as much.
glukeoh
23rd January 2008, 12:04
just wondering how do i make the bot sit instead of potting cause, i do not want to spend money on pots.
i tried using:
-- rest or use potions when low on HP/MP/SP
HP_potion = 200;
MP_potion = 80;
SP_potion = 0;
HP_sit = 300;
MP_sit = 40;
SP_sit = 0;
i assume the HP_sit is in 300 hp instead of percentage.
I was hoping i could make it sit when hp < 300.
AnimePwns
23rd January 2008, 17:01
can anyone post a done lua for rogue?
i edit mine like it said yet my character wont start attacking on his own..he buffs then just targets the one near over and over again...
so once i press attack e goes attack 1 then the next then the next..so im most likely to die
so please can someone post one for rogue :D
Zenaro
24th January 2008, 03:25
Yo, i don't know about lua but can you make it like, it target a certain monster by color?Also can you make it like stop targetting monster when hp is not moving. Because sometimes my char get stuck by a tree or rock. So like If target hp = full for 5min then tab. something like that
hackbar
24th January 2008, 04:21
just wondering how do i make the bot sit instead of potting cause, i do not want to spend money on pots.
i tried using:
-- rest or use potions when low on HP/MP/SP
HP_potion = 200;
MP_potion = 80;
SP_potion = 0;
HP_sit = 300;
MP_sit = 40;
SP_sit = 0;
i assume the HP_sit is in 300 hp instead of percentage.
I was hoping i could make it sit when hp < 300.
That should be working... if your hp is going from 301+ all the way down to 200 or less in one hit that could be the reason youre not sitting. I dont use the sitting feature as i find potions to be well worth it... Might look into this later...
Yo, i don't know about lua but can you make it like, it target a certain monster by color?Also can you make it like stop targetting monster when hp is not moving. Because sometimes my char get stuck by a tree or rock. So like If target hp = full for 5min then tab. something like that
You could do that but i won't be as its just so much easier to find a place free of rocks or trees.
chinche22
24th January 2008, 13:41
The bot is working very well but it just doesnt work the loot, could u guys tell me how to make the loot work?
cikuno87
24th January 2008, 13:46
just wonder do i hv to change the address to for HP/MP??
well i just try it on low lvl mobs??
one more question about buff duration..in the script said it said set for 10 minutes but the time is set 1800000 = 30 minutes am i rite?
n can i change the time..becoz monk Hp regen is only active for 2 minutes..
thanks :)
hackbar
24th January 2008, 19:02
just wonder do i hv to change the address to for HP/MP??
well i just try it on low lvl mobs??
one more question about buff duration..in the script said it said set for 10 minutes but the time is set 1800000 = 30 minutes am i rite?
n can i change the time..becoz monk Hp regen is only active for 2 minutes..
thanks :)
No you dont need to change the hp/mp addresses as they are currently correct.
The buff timings are meant to be changed to whatever you need for the buff youre going to use. 120000 = 2 minutes.
The bot is working very well but it just doesnt work the loot, could u guys tell me how to make the loot work?
Have you somehow changed your key settings? The looting works fine for me the default loot key is the tilde key.
AnimePwns
24th January 2008, 19:14
darn all of you for saying that it works T.T
please make one for rogue since i cant get it to work...he just targets over and over but doesnt attack...and it also buffs but nothing more...please if anyone has a rogue please post your configurations =)
hackbar
24th January 2008, 19:30
darn all of you for saying that it works T.T
please make one for rogue since i cant get it to work...he just targets over and over but doesnt attack...and it also buffs but nothing more...please if anyone has a rogue please post your configurations =)
Are you running it in the right resolution? It only works in 1024 x 768... Also your colour depth might mess it up too... It also hinges on the monsters health bar target thingy at the top of the screen not being moved(not sure if you can actually move it). I think i already told you this but just double checking.
AnimePwns
24th January 2008, 20:20
i havent moved it and i have the resolution but i just rememberd im running it in window mode...that might be a problem?
since the camera is way to close in fullscreen i always run it in window mode T.T
anyways can anyone make one for me? i might be doing some settings wrong also
cikuno87
24th January 2008, 20:47
just realize new thing..
it happened like this..when there are 3 mobs in my bot range tht it can see/able to detect, it will attack all the 3 and after that killed only 2 of it n after that ignore the third mobs and i hv to hit it for him so he can killed it..
hope you can fix the alogrithm ASAP :)
tobiaspt
24th January 2008, 23:51
all seems to work fine , except the pickup,
in the config the pickup key is defined by
key_pickup = key.VK_TILDE;
the problem is that my laptop doesnt use that key to pickup
instead it uses the key left of 1 and above tab... "\"
what should i change in the holic.lua, or/and keymap.lua ?
hackbar
25th January 2008, 00:19
i havent moved it and i have the resolution but i just rememberd im running it in window mode...that might be a problem?
since the camera is way to close in fullscreen i always run it in window mode T.T
anyways can anyone make one for me? i might be doing some settings wrong also
window mode is ok.
mystikfox
25th January 2008, 00:32
tobiaspt: You are correct. I believe that, if you are using a US keyboard mapping, the correct code for that key will be 220. It is safe to add VK_BACKSLASH to your keymap like so:
key.VK_BACKSLASH = 220;
And set key_pickup = key.VK_BACKSLASH. Or you can just use key_pickup = 220.
Please confirm if this works. I will be adding it to the latest version of MicroMacro.
hackbar
25th January 2008, 00:33
ignore that nonsense i posted...
mystik where are you getting those key numbers?
mystikfox
25th January 2008, 00:45
They are scancodes. It's pretty standard. A-Z typically follow their ASCII sequence, however, you might also use MapVirtualKey() to retrieve information for all keys. There are also lists all over the internet.
Here's an example of a good source:
http://www.patentstorm.us/patents/6847310-description.html
hackbar
25th January 2008, 00:48
They are scancodes. It's pretty standard. A-Z typically follow their ASCII sequence, however, you might also use MapVirtualKey() to retrieve information for all keys. There are also lists all over the internet.
Here's an example of a good source:
http://www.patentstorm.us/patents/6847310-description.html
thanks....
kept googling crap all i could find the ascii which i just realized was wrong...
next post new version of bot..
just realize new thing..
it happened like this..when there are 3 mobs in my bot range tht it can see/able to detect, it will attack all the 3 and after that killed only 2 of it n after that ignore the third mobs and i hv to hit it for him so he can killed it..
hope you can fix the alogrithm ASAP :)
Well i figured out why the monster targetting screws up sometimes... Whenever you miss and such the little pop ups that say miss and stuff fly up on top of the pixel im grabbing to find target which screws it up... Its not that big of a bug.... looking for a solution though.
new version.... doesnt do much but straighten out the combat routines a bit nicer for the warriors so theres less skill spamming on the screen.... be aware you have to set cast times and cool downs and currently only 3 skills are working...
-------------------------------------------------
--Holic Online Bot
--Mystikfox
--Hackbar
--Mangler
-------------------------------------------------
-- Variable declaration -- do not edit
-------------------------------------------------
CLASS_WARRIOR = 0;
CLASS_MAGE = 1;
HP = 10000;
MP = 10000;
SP = 10000;
HP_ptr = "009127F8";
HP_offset = 556;
MP_ptr = "009127F8";
MP_offset = 552;
-------------------------------------------------
-------------------------------------------------
-- character configuration YOU HAVE TO CHANGE THIS STUFF FOR THE BOT TO WORK RIGHT
-------------------------------------------------
class = CLASS_WARRIOR;
key_attack = key.VK_1;
key_pickup = key.VK_TILDE;
key_sit = key.VK_F2;
key_hppotion = key.VK_7;
key_mppotion = key.VK_6;
key_sppotion = key.VK_F3;
-- rest or use potions when low on HP/MP/SP
HP_potion = 2500;
MP_potion = 80;
SP_potion = 0;
HP_sit = 40;
MP_sit = 0;
SP_sit = 0;
--SKILLS SECTION
------------------------------
--use this skill or not use this skill
skill1_on = 1;
skill2_on = 1;
skill3_on = 1;
skill4_on = 0; --dont exist yet
skill5_on = 0; --dont exist yet
-- dont change these
skill1_needed = true;
skill2_needed = true;
skill3_needed = true;
skill4_needed = true;
skill5_needed = true;
-- cast times in milliseconds
skill1_casttime = 1000;
skill2_casttime = 2300;
skill3_casttime = 1000;
skill4_casttime = 0;
skill5_casttime = 0;
-- skill cool downs in milliseconds
skill1_cooldown = 10450;
skill2_cooldown = 60000;
skill3_cooldown = 20000;
skill4_cooldown = 1000;
skill5_cooldown = 5000;
-- timer for skill1 cool down
function skill1_timer()
skill1_needed = true;
end
-- timer for skill2 cool down
function skill2_timer()
skill2_needed = true;
end
-- timer for skill3 cool down
function skill3_timer()
skill3_needed = true;
end
-- timer for skill4 cool down
function skill4_timer()
skill4_needed = true;
end
-- timer for skill5 cool down
function skill5_timer()
skill5_needed = true;
end
-- chance to cast
skill1_chance = 50;
skill2_chance = 50;
skill3_chance = 0;
skill4_chance = 0;
skill5_chance = 0;
-- MP cost
skill1_cost = 15;
skill2_cost = 20;
skill3_cost = 25;
skill4_cost = 0;
skill5_cost = 0;
key_skill1 = key.VK_2;
key_skill2 = key.VK_3;
key_skill3 = key.VK_4;
key_skill4 = key.VK_5;
key_skill5 = key.VK_6;
have_pig = 0; -- set to 1 if you have a fortune pig and want to
-- skip the manual pickup function
-- buff stuff
-- NOTE: set on 10 minutes
-- buff / scroll durations in msec time = minutes x 60000
-- to de- activate non used buffs / scrolls replace "1" with "0"
-- to activate buff / scroll replace "0" with "1"
-- scrolls can be used too as buff
-------------------------
buff1_duration = 1800000;
buff_1 = 1;
buff_key1 = key.VK_8;
buff2_duration = 1800000;
buff_2 = 1;
buff_key2 = key.VK_9;
buff3_duration = 1800000;
buff_3 = 1;
buff_key3 = key.VK_0;
--dont change these
buff1_needed = true;
buff2_needed = true;
buff3_needed = true;
unreg1 = 0;
unreg2 = 0;
unreg3 = 0;
-------------------------------------------------
function hp_potion()
keyboardPress(key_hppotion);
end
function mp_potion()
keyboardPress(key_mppotion);
end
function sp_potion()
keyboardPress(key_sppotion);
end
-- so we aren't spamming the attack key...
-- we will use a timer to press it once
-- every 3 seconds.
function attack_timer()
keyboardPress(key_attack);
end
function fight_warrior()
registerTimer("attack_timer", 3000, attack_timer);
while( have_target() ) do
if( HP < HP_potion ) then
hp_potion(); end
if( MP < MP_potion ) then
mp_potion(); end
if( SP < SP_potion ) then
sp_potion(); end
local roll = math.random(100);
if(skill1_on == 1 and MP >= skill1_cost and skill1_needed) then
if(unreg1 == 1) then
unregisterTimer("skill1_timer");
end
keyboardPress(key_skill1);
registerTimer("skill1_timer", skill1_cooldown, skill1_timer);
unreg1 = 1;
skill1_needed = false;
yrest(skill1_casttime);
elseif(skill2_on == 1 and MP >= skill2_cost and skill2_needed) then
if(unreg2 == 1) then
unregisterTimer("skill2_timer");
end
keyboardPress(key_skill2);
registerTimer("skill2_timer", skill2_cooldown, skill2_timer);
skill2_needed = false;
yrest(skill2_casttime);
elseif(skill3_on == 1 and MP >= skill3_cost and skill3_needed) then
if(unreg3 == 1) then
unregisterTimer("skill3_timer");
end
keyboardPress(key_skill3);
registerTimer("skill3_timer", skill3_cooldown, skill3_timer);
unreg3 = 1;
skill3_needed = false;
yrest(skill3_casttime);
else
keyboardPress(key_attack);
yrest(300);
end
yrest(250);
coroutine.yield();
end
unregisterTimer("attack_timer");
yrest(1000);
end
function fight_mage()
while( have_target() ) do
if( HP < HP_potion ) then
hp_potion(); end
if( MP < MP_potion ) then
mp_potion(); end
local roll = math.random(100);
if( roll <= skill1_chance and MP >= skill1_cost ) then
-- cast skill 1
keyboardPress(key_skill1);
yrest(skill1_casttime);
else
keyboardPress(key_attack);
end
if( roll <= skill2_chance and MP >= skill2_cost ) then
-- cast skill 1
keyboardPress(key_skill2);
yrest(skill2_casttime);
else
keyboardPress(key_attack);
end
yrest(100);
coroutine.yield();
end
yrest(1000);
end
-- heal until full HP & MP
function rest_heal()
if( can_rest == false ) then return; end
keyboardHold(key_sit);
yrest(50);
keyboardRelease(key_sit);
-- set a timer to toggle healing in 30 seconds
registerTimer("heal_rest_timer", 30000, heal_rest_timer);
need_heal = true;
last_hp = HP;
while( need_heal ) do
yrest(100);
if (HP < last_hp) then
print("Under attack! Exiting rest.");
can_rest = false;
registerTimer("can_rest_timer", 3000, can_rest_timer);
break;
else
last_hp = HP;
end
end
keyboardHold(key_sit);
yrest(50);
keyboardRelease(key_sit);
yrest(200);
end
-- toggle can_heal to true, disable timer
function can_rest_timer()
unregisterTimer("can_rest_timer");
can_rest = true;
print("Can rest again.");
end
-- tell heal_rest we no longer need rest
function heal_rest_timer()
need_heal = false;
end
-- toggle cast needed for buff1
function buff1_timer()
buff1_needed = true;
end
-- toggle cast needed for buff2
function buff2_timer()
buff2_needed = true;
end
-- toggle cast needed for buff3
function buff3_timer()
buff3_needed = true;
end
-- pickup nearby items
function pickup()
keyboardHold(key_pickup);
yrest(50);
keyboardRelease(key_pickup);
yrest(775)
keyboardHold(key_pickup);
yrest(50);
keyboardRelease(key_pickup);
end
-- you have died! oh noes!
function death_return()
keyboardPress(key.VK_SNAPSHOT);
print(os.date("Looks like somebody got you killed. %X"))
print("A screen capture has been taken. Open MS Paint and paste it.");
stopPE(); -- this turns the macro off!
coroutine.yield(); -- yield to make sure the protected environment stops
end
function move_forward()
keyboardHold(key.VK_W);
if( math.random(100) >= 80 )
then keyboardHold(key.VK_A);
else if( math.random(100) >= 80 )
then keyboardHold(key.VK_D); end
end
yrest( math.random(200) );
keyboardRelease(key.VK_W);
keyboardRelease(key.VK_A);
keyboardRelease(key.VK_D);
end
-- update client variables by reading from it's memory
function update_vars()
HP = memoryReadIntPtr(proc, HP_ptr, HP_offset);
MP = memoryReadIntPtr(proc, MP_ptr, MP_offset);
-- SP = memoryReadIntPtr(proc, SP_ptr, SP_offset);
-- X_coord = memoryReadIntPtr(proc, X_ptr, X_offset);
-- Y_coord = memoryReadIntPtr(proc, Y_ptr, Y_offset);
end
-- rotate camera
function rotate_cam()
wx,wy = windowRect(win);
mouseSet(wx+512, wy+412);
yrest(100);
mouseRHold();
yrest(200);
mouseSet(wx+586, wy+412);
yrest(100);
mouseRRelease();
yrest(100);
end
-- selects a nearby monster
function target_monster()
keyboardHold(key.VK_TAB);
yrest(50);
keyboardRelease(key.VK_TAB);
end
-- checks if you have a target
function have_target()
r,g,b = getPixel(hdc, 579, 79);
print(r,g,b);
-- check for the blueish color in the monster's HP window
if( r >= 18 and r <= 36 and g >= 34 and g <= 49 and b >= 93 and b<= 110 ) then
return true;
else
return false;
end
end
--function used to test the position and colour of the current pixel under the mouse
function pixeltest()
x,y = mouseGetPos();
print("mouse_x: ", x, "; mouse_y: ", y); -- display the coordinates of the mouse
r,g,b = getPixel(hdc, x, y);
print("R : ", r, "; G : ", g, "; B : ", b);
end
-------------------------------------------------
-- FUNCTION MAIN
-------------------------------------------------
function main()
win = findWindow("HoLic Online");
hdc = openDC(win);
proc = openProcess( findProcessByExe("HolicUSA.exe") );
attach(win);
registerTimer("update_vars", 100, update_vars);
registerTimer("buff1_timer", buff1_duration, buff1_timer);
registerTimer("buff2_timer", buff2_duration, buff2_timer);
registerTimer("buff3_timer", buff3_duration, buff3_timer);
--pixeltest();
while( 1 ) do
--pixeltest();
if( HP == 0 ) then death_return(); end
if( HP < HP_potion ) then hp_potion(); end
if( MP < MP_potion ) then mp_potion(); end
if( SP < SP_potion ) then sp_potion(); end
if( HP < HP_sit and can_rest == true ) then rest_heal(); end
if( MP < MP_sit and can_rest == true ) then rest_heal(); end
print(X_coord, Y_coord);
yrest(100);
target_monster();
yrest(200);
if( have_target() ) then
can_rest = false; -- prevent resting during battle
-- for the few that have this bug
if( class == CLASS_WARRIOR) then fight_warrior(); end
if( class == CLASS_MAGE) then fight_mage(); end
can_rest = true;
else
rotate_cam();
if( math.random(100) > 90 ) then
move_forward(); end
end
if(have_pig == 0) then
pickup();
end
-------- if you want more than 2 buffs you gotta duplicate and change one of these if statements
if( buff_1 == 1 ) then
if( buff1_needed ) then
keyboardPress(buff_key1);
print(os.date("buff 1 casted %X"))
buff1_needed = false;
yrest(1500);
end
end
if( buff_2 == 1 ) then
if( buff2_needed ) then
keyboardPress(buff_key2);
print(os.date("buff 2 casted %X"))
buff2_needed = false;
yrest(1500);
end
end
if( buff_3 == 1 ) then
if( buff3_needed ) then
keyboardPress(buff_key3);
print(os.date("buff 3 casted %X"))
buff3_needed = false;
yrest(1500);
end
end
end
detach();
closeProcess(proc);
end
startMacro(main);
-------------------------------------------------
goddamn **** snack stop merging my posts.
tobiaspt
25th January 2008, 01:00
yep it works now :) thx ^^
...
key.VK_RCONTROL = 163;
key.VK_BACKLASH = 220; <----- added and changed the holic.lua
key.VK_TILDE = 192;
....
Sorukai
25th January 2008, 05:44
So when I open micromacro.exe all I get is a msdos screen. Is that normal?
I've set it to run as admin and set it to service pack 2. Copied all the new holic.lua's and edited them to work with Holic.
How can I get it started in game?
Randomhobo
25th January 2008, 14:08
This bot absolutely sucks for a mage -.-
To start with it wouldn't cast spells at all (I know the settings were all right, because the very first time I turned it on it casted 1 spell, then none since), and so all it would use was my staff....doing hardly any damage. Then when it had a few hits into a mob it would run over and attack another one, at one point I had about 4 mobs on me each with about 60% health left.
I really don't see the point of this bot for me, but what I want to know is....what do I need to edit so that all the script does is watch my health and mana and pop a potion when it gets past the set point. I tried editing it myself, but I've never edited lua code in my life, so I was just picking out what I didn't think I needed, and of course it didn't work. It'd be great if you could edit the code for me.
THanks
Sorukai
25th January 2008, 17:16
When I push f5, it gives me an error on the dos prompt. Something about memoryReadIntPtr. Any ideas?
kill0
25th January 2008, 20:02
Whenever I attack one monster; it goes to another monster and attack it, while the first attacked monster is not dead yet. How do i fix this?
Edit: It looks like clicks the monster and doesn't attack it.
hackbar
25th January 2008, 21:14
When I push f5, it gives me an error on the dos prompt. Something about memoryReadIntPtr. Any ideas?
start by posting a log of the actual error.
This bot absolutely sucks for a mage -.-
To start with it wouldn't cast spells at all (I know the settings were all right, because the very first time I turned it on it casted 1 spell, then none since), and so all it would use was my staff....doing hardly any damage. Then when it had a few hits into a mob it would run over and attack another one, at one point I had about 4 mobs on me each with about 60% health left.
I really don't see the point of this bot for me, but what I want to know is....what do I need to edit so that all the script does is watch my health and mana and pop a potion when it gets past the set point. I tried editing it myself, but I've never edited lua code in my life, so I was just picking out what I didn't think I needed, and of course it didn't work. It'd be great if you could edit the code for me.
THanks
have you set your class to warrior or mage? try keeping it on warrior. make sure you set your coodowns casttimes and costs of spells correctly and the warrior script should work for all classes.
The targetting issue has already been discussed and at the moment theres not much to be done but im working on it. Stay in areas of lower mob density.
Whenever I attack one monster; it goes to another monster and attack it, while the first attacked monster is not dead yet. How do i fix this?
Edit: It looks like clicks the monster and doesn't attack it.
Its a bug caused by the loss little combat popups miss critical etc etc scrolling up over the pixel im grabbing that is the whole part of the routine that determines whether you have a target or not.
Sorukai
26th January 2008, 04:34
Fri Jan 25 08:30:17 2008 : findProcessByExe() returned 0. Process not found or other error occured.
Fri Jan 25 08:30:17 2008 : Error attempting to open process 0x0. Error code: 87
Fri Jan 25 08:30:17 2008 : attach() failed to attach to window 0x1C0554. Error code: 5
Fri Jan 25 08:30:17 2008 : Invalid data was supplied to memoryReadIntPtr().
xiantian
26th January 2008, 05:32
erm... I nid a script For Warrior... anyoNe go
i nid suitable script for lvl 10-30
mystikfox
26th January 2008, 06:30
So in other words, your problem is that it isn't finding the process. Make sure the process's .exe matches that of the script. It should not be case sensitive, but it must match letter (or number, or symbol) for letter.
You can even just change findProcessByExe to just findProcess, and replace the text with what is in findWindow.
xiantian: Try that again. In English this time.
Lafa
26th January 2008, 13:04
hmm...
how does the HP potions works?
do i have to place it in a quickslot? or what?
cuz it doesnt take the potion when i have low HP at all...
(im warrior)
1) does any of you know how can i disable this baloon?
http://img166.imageshack.us/img166/3171/picty2.jpg
when i appears the mouse cant move and search for mobs...
2) are you going to add the rest? i really need it.. those pots cost me alot \=
3) do you have better suggestion where to place my skills? (i mean the way that suits the best to the bot...)
kahjun
26th January 2008, 19:52
how does one for monk works...it just cast the buff...and don't attack..when i double clicked one..it attack it and switches target before it dies..
~hydeist
27th January 2008, 02:08
my rogue cant function properly... he jus run around and random wack mob, without killing the mob he run to hit another aggro a few mobs..
Taevon
27th January 2008, 05:15
I was wondering if theres anyway to set the alt or ctrl hotkeys
to work for pots or buffs. Instead of just Key 7 maybe alt 7 or
ctrl 7. I was also wondering if we could use the hotkeys - and =. Every time I try to replace a number with one keys i get an error and the bot won't run.
andrwkyo
27th January 2008, 19:48
i cant open holic.lua file XD can everyone help me
can everyone help me it doesn't do anything in game did i do something wrong ?
diegoheras
27th January 2008, 21:55
how can i pick the objects ???
what key ?
rostok
27th January 2008, 22:14
i've a problem on pickup because in my keybord ~ is: ²
so what number have i to put in the keymap ?
help me please
and thanks for the work !! :)
mystikfox
27th January 2008, 23:43
It's...what? What keyboard layout are you using?
rostok
28th January 2008, 00:05
it's an azerty keyboard
vvayinsane
28th January 2008, 04:27
this game has pets. Is there a way to tell the bot to summon the pet if it dies? I have my pet on the = key. Has anyone tried maken a way if so can you help me out. Thanks..chris
mystikfox
28th January 2008, 05:19
i cant open holic.lua file XD can everyone help me
Yes you can. You're just being an idiot.
it's an azerty keyboard
And what keyboard layout is that? I've never heard of such a thing. Your best bet is to lookup your keyboard layout on Google and see if you can find the scancode.
rostok
28th January 2008, 10:41
i search it on google and find :
http://upload.wikimedia.org/wikipedia/en/thumb/c/c4/French_pc_keyboard.svg/540px-French_pc_keyboard.svg.png
the french keyboard layout ?
djviet
28th January 2008, 12:41
Their latest update was at 2:20 pacific time.... was tabbing out to execute the macro but then saw the little gay "X" icon on the bottom of my screen : /
dreamkid
28th January 2008, 13:41
i wonder if anyone can bypass that xtrap lol
parasitehill
28th January 2008, 13:45
Hey There,
I'm a little new to this - used a bot once for RO which I had the assistance of a friend to set up.
It runs up fine and I can see the coords in the upper left corner of my holic screen, but when I try to initiate it by pressing f5, I get the following error.
nil nil
Invalid data was supplied to memoryReadIntPtr<>.
I searched for the info in the lua.. and found this - but I'm not sure if I'm supposed to edit this or not
-- update client variables by reading from it's memory
function update_vars()
HP = memoryReadIntPtr(proc, HP_ptr, HP_offset);
MP = memoryReadIntPtr(proc, MP_ptr, MP_offset);
-- SP = memoryReadIntPtr(proc, SP_ptr, SP_offset);
-- X_coord = memoryReadIntPtr(proc, X_ptr, X_offset);
-- Y_coord = memoryReadIntPtr(proc, Y_ptr, Y_offset);
Would you mind helping me with this? Thanks
paga89
28th January 2008, 13:47
The ptr and offset has changed:
Can someone check the new ones?
hp 00912888 + 560
mp 00912888 + 564
In use with micromacro it says: Invalid data supplied to memoryreadintptr().
lunarhart
28th January 2008, 14:28
Ah... i need some help.. im totally lost.
Not sure how to start the bot , kept getting the same error as parasitehill. Can some kind soul here help me this newbie? btw my class is monk..Thanks!
cikuno87
28th January 2008, 16:43
for newbies who just start using this type of Bot.lua
here how to start the program..
ok for holic after execute the program micromacro.exe
type holic.lua n press enter..
make sure you already login to the game to start..
then press F5 to start it & pause it F6
hope this give you all an idea how it works..
anyway hackbars n mystik thanks for the guide & fixed the bugs.. :)
owh btw how to bypass the X-trap bcoz they just implement the X-trap in this game..hope you could teach/do something bout this anti-bot system..
extrajesus
28th January 2008, 17:05
They have ada security patch last night, it makes the bot not work anymore for me :\
hackbar
28th January 2008, 19:55
Yeah x-trap implemented funs over... for now...
If you go whine on their forums about it crashing your computer maybe theyll remove it. I got bored of this game so i prolly wont bother trying to work around it.
parasitehill
29th January 2008, 05:52
Since hack has expressed his lack of interest in the game now, I'm wondering if anyone else is going to take up the task of working around xtrap? I'd still really like to bot this game as the grinding is getting old.
diegoheras
29th January 2008, 11:45
HEY
If i start the program I have a2 problems ...
1.My char go to kill more easy and He isnt in the same place all time ¿ how can i do my char is in a place all time ?
2.With the attack ... He only attack with skills ¿ How can i do he fights with normal attack ?
THANKS ...:(
Please respond
paga89
31st January 2008, 19:25
learn scripting
wein214
3rd February 2008, 03:46
got an error i havent edited the script. help plz
Sun Feb 03 09:37:38 2008 : findProcessByExe() returned 0. Process not found or other error occured.
Sun Feb 03 09:37:38 2008 : Error attempting to open process 0x0. Error code: 87
Sun Feb 03 09:37:38 2008 : Invalid data was supplied to memoryReadIntPtr().
zenaku81
3rd February 2008, 08:52
Sun Feb 03 09:37:38 2008 : Invalid data was supplied to memoryReadIntPtr(). same to mee too
piranya111
6th February 2008, 12:27
Hi,I have some problem.I can't install the bot so how can i do?.Also if install is already how can i know?.I hope you will advice me.Thanks
WolvesLoyalty
6th February 2008, 14:27
ok..bot dont work no more ==
when i press f5 i get all this numbers running in red and it doesnt do anything so
i am assuming that it doesnt work no more.. =/
or maybe i dont kno how to fix it
raiku21
10th February 2008, 07:05
wat is the bot name? micro watever?
nino613
11th February 2008, 04:36
@raiku21
micromacro.
@mystikfox
are you going to continue the Holic MicroMacro?
mystikfox
11th February 2008, 04:42
@mystikfox
are you going to continue the Holic MicroMacro?
Nope. I've never even played Holic. I've heard it is very boring, though. Also, it needs a bypass for XTrap.
nino613
12th February 2008, 20:54
oh well... hmmm micromacro's very good. i just wish that xtrap couldn't detect it... oh well, time to learn some programming and try ko make a bypass for xtrap...
ermanno
13th February 2008, 00:33
there are many other programs that can be useful but the problem is in the xtrap thing.
nino613
13th February 2008, 06:39
yeah. but it would be cool if there was an OG type of bot for Holic... is there anyone trying to make a bypass for xtrap? i usually see gameguard bypasses
Zalt
10th March 2008, 20:50
Is there any other bot for Holic out there? Been searching alot, but seems there isent any =(
xepheriidx
16th March 2008, 11:22
Are there anymore bots? Don't think this worked. They had a lot of patches. Besides bots are there anything which are speedhacks so on?
itsfun2brich
24th March 2008, 07:26
Thank you man this rocks <3
quinton1000
19th May 2008, 22:29
where do i put the file? i kow that s kind of a noob question but im pretty new to this stuff....and im using vista if that makes a difference.
hackbar
20th May 2008, 01:55
As far as I know this game uses x-trap and the bot no longer works.
onlinekingisme
30th May 2008, 05:24
well i know one~ automouse2
you have to pay its not free but its the only one that works because its made from Korea itself
kallezez
1st June 2008, 13:54
when open the bot program it says: Please enter the script name to run.
can some1 pzl tell me what to do. i would be very greatfull if soem1 could post a step by step guide on how to use this bot..:nervous:
azazan
14th June 2008, 00:40
for me, this bot attacks ONe mob and then stops..
Duckroll
15th June 2008, 22:08
This doesnt work anymore because of the x-trap.
azazan
16th June 2008, 20:11
ohh, isn't there any way to bypass it?
no5xmega
22nd June 2008, 10:40
yea a newbie basic guide please... i still dont understand whats with that script name run :(( anyways does it work or its end with this bot because of the xtrap?:paranoid:
theXviet
7th July 2008, 04:10
it still works but we need an update of the script
and no5xmega the steps are:
1)open the micromacro
2)once it asks for the script name you put holic.lua
3)run into the field and press f5
and your done
Wasabi
8th September 2008, 11:44
If you really need a bot, go to botsmall and ask for it. Make them believe that you're willing to buy a bot.
Besides, if they make one. It should be free til its 100% working....eventhough it isn't free anymore. There should be free trial somehow.
About this Bot, its fully working but you need to change everytime the address and offset of the HP/MP.
Annoying bout this bot
- Don't bot in aggro mobs. You'll be swarmed. Esp. if there's a boss in the area.
- If the loot have more than 1 item it can't loot all.... (Trying to fix it...)
- Kill anything
- go anywhere
I'll post my updated script in solarimpact.servergame.com.
Don't forget, Make Botsmall believe that you're willing to buy a bot. :bunny:
desalib
23rd September 2008, 03:10
It's working when I'm removing all hp/mp feature (just put -- in front of HP = memoryReadIntPtr(proc, HP_ptr, HP_offset); and MP = memoryReadIntPtr(proc, MP_ptr, MP_offset);)
But the looting system doesn't work : / on my keyboard I need to press the key "#" for auto-loot but even if I change it ... nothing is happening.
The advantage is that i can let it level up on monster who die in 1 hit then just loot higher drop later neway thanks to share this bot ^^ (why delphi isn't working -.- ... too easy?)
charlesong
4th November 2008, 11:59
plss send it on my email .. charles3332004@yahoo.com please send the holic.lua and everything i need so i can use it when i put the bot on my pc.. tnx everyone.. :):laugh:
tgbhgf
7th November 2008, 14:15
use this
http://www.mpcforum.com/showthread.php?p=2133472
nightwolf92
15th November 2008, 17:54
i dont understand... it kills one thing and then it stops... it keeps using my Rogue skills over and over :/ i cant get it to just keep attacking..
help?
richie01
30th November 2008, 08:48
Yeah it does the same thing for my rogue
hurukawa
25th March 2009, 13:03
New game from netgame here open beta started today i think...
http://holic.netgame.com/
Heres the bot for it....
Same rules as the kungfu and fiesta bots 1024x768 only...
Post yer log and such if you get an error.
very goood
vBulletin® v3.8.4, Copyright ©2000-2009, Jelsoft Enterprises Ltd.