[Help] Fiesta Bot Resolution
Posted: Mon Feb 25, 2008 12:32 am
Whenever i run, i get the error: must be run in 1024*768!!! I have vista premium and has turned on compatibility mode and admin priv.
I've already disabled X-trap.
My code:
I've already disabled X-trap.
My code:
Code: Select all
-- Credits:
-- A. M. "MystikFox"
-- "Mangler"
version = getVersion();
if( version < 96 ) then
printf("ERROR! You are using an old version of MicroMacro that is not compatable with this script.\n");
printf("Please download a newer version from http://solarimpact.servegame.com\n");
return;
end;
-------------------------
-- do NOT edit these!!
CLASS_KNIGHT = 0;
CLASS_CLERIC = 1;
CLASS_MAGE = 2;
CLASS_ARCHER = 3;
-- EDIT THESE!
-------------------------
class = CLASS_CLERIC; -- class determins the logic to take
HP_restamt = 50; -- HP to rest at (not used for cleric's)
HP_potion = 190; -- Use a HP potion (or heal skill for cleric)
HP_stone = 40; -- Use a HP stone
SP_restamt = 100; -- SP to rest at
SP_potion = 50; -- Use a SP potion
SP_stone = 30; -- Usa a SP stone
key_attack = key.VK_1; -- normal melee attack
key_pickup = key.VK_2; -- pickup items
key_skill1 = key.VK_5; -- offensive and defensive spells...
key_skill2 = key.VK_6; -- check your class's fight function
key_skill3 = key.VK_7; -- for documentation on what each skill
key_skill4 = key.VK_8; -- will be used for
key_scroll1 = key.VK_9; -- offensive and defensive spells...
key_scroll2 = key.VK_0; -- check your class's fight function
key_scroll3 = key.VK_DASH; -- for documentation on what each skill
key_scroll4 = key.VK_EQUAL; -- will be used for
key_hppotion = key.VK_3; -- CLERICS: map this to your heal spell
key_hpstone = key.VK_Q;
key_sppotion = key.VK_4;
key_spstone = key.VK_E;
-- NOTE: if SP_potion is higher than SP_restatm, you will use SP potions
-- instead of resting, unless you do not have any left. same goes for HP potions.
-- you will always use potions while fighting if the values fall below
-- the emergency amount.
-------------------------
-- Scroll settings (read instructions below Buff settings first)
-------------------------
scroll1_duration = 3500000;
scroll_1 = 1;
scroll2_duration = 3500000;
scroll_2 = 1;
scroll3_duration = 3500000;
scroll_3 = 0;
scroll4_duration = 3500000;
scroll_4 = 0;
-------------------------
-- Buff settings (only for clerics)
-------------------------
buff1_duration = 3500000;
buff_1 = 1;
buff2_duration = 3500000;
buff_2 = 1;
buff3_duration = 3500000;
buff_3 = 0;
buff4_duration = 3500000;
buff_4 = 0;
-- NOTE: set on 59 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
-------------------------
-- should not need to be changed, except for HP_addr/SP_addr when
-- a patch makes them no longer work
proc = 0;
win = 0;
HP_addr = "00758FE7";
HPmax_addr = "007590B8";
SP_addr = "00758FEB";
SPmax_addr = "007590BC";
restcheck_addr = "01F66B04";
HP = 10000; -- default, this corrects itself (don't change it!)
HPmax = HP; -- default, this corrects itself (don't change it!)
SP = 10000; -- default, this corrects itself (don't change it!)
SPmax = SP; -- default, this corrects itself (don't change it!)
buff1_needed = true;
buff2_needed = true;
buff3_needed = true;
buff4_needed = true;
scroll1_needed = true;
scroll2_needed = true;
scroll3_needed = true;
scroll4_needed = true;
need_heal = false;
can_rest = true;
-------------------------
function fight_timer()
keyboardHold(key_attack);
yrest(50);
keyboardRelease(key_attack);
end
-- fighting functions
-----------------------------------------------------
-- fight as a knight
function knight_fight()
-- skill1 : offensive skill
-- skill2 : offensive skill
-- skill3 : offensive skill
-- skill4 : offensive skill
keyboardHold(key_attack);
yrest(50);
keyboardRelease(key_attack);
registerTimer("fight_timer", 3000, fight_timer);
while(have_target()) do
if( HP < HP_potion) then hp_potion(); end
if( HP < HP_stone) then hp_stone(); end
if( SP < SP_potion) then sp_potion(); end
if( SP < SP_stone) then hp_stone(); end
keyboardHold(key_attack);
yrest(50);
keyboardRelease(key_attack);
if( math.random(100) > 92 ) then
if( math.random(100) >= 50 ) then
keyboardHold(key_skill1);
yrest(50);
keyboardRelease(key_skill1);
else
keyboardHold(key_skill2);
yrest(50);
keyboardRelease(key_skill2);
end
end
yrest(200);
end
unregisterTimer("fight_timer");
for i = 0,8 do
pickup();
yrest(50);
end
can_rest = false;
registerTimer("can_rest_timer", 3000, can_rest_timer);
end
-- fight function for cleric
function cleric_fight()
-- skill1 : buff 1
-- skill2 : buff 2
-- skill3 : buff 3
-- skill4 : buff 4
keyboardHold(key_attack);
yrest(50);
keyboardRelease(key_attack);
registerTimer("fight_timer", 3000, fight_timer);
while(have_target()) do
if( HP < HP_potion) then hp_potion(); end
if( HP < HP_stone) then hp_stone(); end
if( SP < SP_potion) then sp_potion(); end
if( SP < SP_stone) then sp_stone(); end
yrest(100);
end
unregisterTimer("fight_timer");
for i = 0,8 do
pickup();
yrest(50);
end
can_rest = false;
registerTimer("can_rest_timer", 3000, can_rest_timer);
end
-- fight as a mage
function mage_fight()
-- skill1 : offensive spell
-- skill2 : offensive spell
-- skill3 : offensive spell
-- skill4 : offensive spell
while(have_target()) do
if( HP < HP_potion) then hp_potion(); end
if( HP < HP_stone) then hp_stone(); end
if( SP <SP_potion) then sp_potion(); end
if( SP < SP_stone) then hp_stone(); end
keyboardHold(key_skill1);
yrest(200);
keyboardRelease(key_skill1);
yrest(100);
keyboardHold(key_skill2);
yrest(200);
keyboardRelease(key_skill2);
yrest(100);
keyboardHold(key_skill3);
yrest(200);
keyboardRelease(key_skill3);
yrest(100);
end
for i = 0,8 do
pickup();
yrest(50);
end
can_rest = false;
registerTimer("can_rest_timer", 3000, can_rest_timer);
end
-- fight as an archer
function archer_fight()
-- skill1 : DOT / offensive skill (entry attack)
-- skill2 : DOT / offensive skill (entry attack)
-- skill3 : offensive skill
-- skill4 : offensive skill
-- entry skill
if( math.random(100) >= 50 ) then
keyboardHold(key_skill1);
yrest(50);
keyboardRelease(key_skill1);
else
keyboardHold(key_skill2);
yrest(50);
keyboardRelease(key_skill2);
end
yrest(500);
keyboardHold(key_attack);
yrest(50);
keyboardRelease(key_attack);
registerTimer("fight_timer", 3000, fight_timer);
while(have_target()) do
if( HP < HP_potion) then hp_potion(); end
if( HP < HP_stone) then hp_stone(); end
if( SP < SP_potion) then sp_potion(); end
if( SP < SP_stone) then hp_stone(); end
--keyboardHold(key_attack);
--yrest(50);
--keyboardRelease(key_attack);
if( math.random(100) > 80 ) then
if( math.random(100) >= 50 ) then
keyboardHold(key_skill2);
yrest(50);
keyboardRelease(key_skill2);
else
keyboardHold(key_skill3);
yrest(50);
keyboardRelease(key_skill3);
end
yrest(200);
end
yrest(200);
end
unregisterTimer("fight_timer");
for i = 0,8 do
pickup();
yrest(100);
end
can_rest = false;
registerTimer("can_rest_timer", 3000, can_rest_timer);
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
-- toggle cast needed for buff4
function buff4_timer()
buff4_needed = true;
end
-- toggle cast needed for scroll1
function scroll1_timer()
scroll1_needed = true;
end
-- toggle cast needed for scroll2
function scroll2_timer()
scroll2_needed = true;
end
-- toggle cast needed for scroll3
function scroll3_timer()
scroll3_needed = true;
end
-- toggle cast needed for scroll4
function scroll4_timer()
scroll4_needed = true;
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
-- moves forward a bit...makes you seem less bot-like.
-- allows you to cover more ground
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(2000) );
keyboardRelease(key.VK_W);
keyboardRelease(key.VK_A);
keyboardRelease(key.VK_D);
end
-- rotate camera
function rotate_cam()
wx,wy = windowRect(win);
mouseSet(wx+512, wy+384);
yrest(100);
mouseRHold();
yrest(100);
mouseSet(wx+514, wy+384);
yrest(100);
mouseRRelease();
yrest(100);
end
-- pickup nearby items
function pickup()
keyboardHold(key_pickup);
yrest(50);
keyboardRelease(key_pickup);
yrest(50);
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()
local r,g,b = getPixel(hdc, 540, 1);
-- check for the gray in the monster's HP window
if( r >= 229 and r <= 240 and g >= 245 and g <= 255 and b >= 250 ) then
return true;
else
return false;
end
end
-- updates variables from client
function update_vars()
HP = memoryReadInt(proc, HP_addr);
HPmax = memoryReadInt(proc, HPmax_addr);
SP = memoryReadInt(proc, SP_addr);
SPmax = memoryReadInt(proc, SPmax_addr);
end
-- toggle can_heal to true, disable timer
function can_rest_timer()
unregisterTimer("can_rest_timer");
can_rest = true;
end
-- rest untill healed
function rest_heal()
if( can_rest == false ) then return; end
printf("Entering rest state\t%s\n", os.date("%X"));
keyboardHold(key.VK_HOME);
yrest(500);
keyboardRelease(key.VK_HOME);
need_heal = true;
last_hp = HP;
while( need_heal ) do
yrest(100);
if( HP == HPmax and SP == SPmax ) then
need_heal = false;
end;
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
-- BROKEN!! IGNORE THIS!
--while( 1 ) do
-- keyboardHold(key.VK_HOME);
-- yrest(500);
-- keyboardRelease(key.VK_HOME);
--
-- yrest(500);
-- local val = memoryReadByte(proc, restcheck_addr);
-- printf("Rest check val: %d\n", val);
--
-- if( val ~= 1 ) then -- 1 = resting, 2 = standing
-- break; end; -- so if not resting, exit
--end
printf("Exiting rest state\t%s\n", os.date("%X"));
end
-- use a hp potion!
function hp_potion()
keyboardHold(key_hppotion);
yrest(100);
keyboardRelease(key_hppotion);
yrest(500);
end
-- use a hp stone!
function hp_stone()
keyboardHold(key_hpstone);
yrest(100);
keyboardRelease(key_hpstone);
print("HP stone used.")
yrest(500);
end
-- use a sp potion!
function sp_potion()
keyboardHold(key_sppotion);
yrest(100);
keyboardRelease(key_sppotion);
yrest(500);
end
-- use a sp stone!
function sp_stone()
keyboardHold(key_spstone);
yrest(100);
keyboardRelease(key_spstone);
print("SP stone used.")
yrest(500);
end
function main()
win = findWindow("FiestaOnline");
local wx,wy,ww,wh = windowRect(win);
if( ww ~= 1024 or wh ~= 768 ) then
printf("Error! You must run Fiesta in 1024*768 resolution.\n");
return;
end;
if( win == 0 ) then printf("Error! Could not locate Fiesta window!\n"); return; end;
hdc = openDC(win);
proc = openProcess( findProcess("FiestaOnline") );
attach(win);
registerTimer("update_vars", 100, update_vars);
if( class == CLASS_CLERIC ) then
registerTimer("buff1_timer", buff1_duration, buff1_timer);
registerTimer("buff2_timer", buff2_duration, buff2_timer);
registerTimer("buff3_timer", buff3_duration, buff3_timer);
registerTimer("buff4_timer", buff4_duration, buff4_timer);
end
registerTimer("scroll1_timer", scroll1_duration, scroll1_timer);
registerTimer("scroll2_timer", scroll2_duration, scroll2_timer);
registerTimer("scroll3_timer", scroll3_duration, scroll3_timer);
registerTimer("scroll4_timer", scroll4_duration, scroll4_timer);
while( 1 ) do
if( HP == 0 ) then death_return(); end
if( HP < HP_potion ) then hp_potion(); end
if( HP < HP_stone ) then hp_stone(); end
if( SP < SP_potion ) then sp_potion(); end
if( SP < SP_stone ) then sp_stone(); end
if( HP < HP_restamt and can_rest == true ) then rest_heal(); end
if( SP < SP_restamt and can_rest == true ) then rest_heal(); end
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_KNIGHT ) then knight_fight(); end
if( class == CLASS_CLERIC ) then cleric_fight(); end
if( class == CLASS_MAGE ) then mage_fight(); end
if( class == CLASS_ARCHER ) then archer_fight(); end
can_rest = true;
else
-- cleric only logic
if( class == CLASS_CLERIC ) then
if( buff_1 == 1 ) then
if( buff1_needed ) then
keyboardHold(key_skill1);
yrest(100);
keyboardRelease(key_skill1);
print(os.date("buff 1 casted %X"))
buff1_needed = false;
yrest(2000);
end
end
if( buff_2 == 1 ) then
if( buff2_needed ) then
keyboardHold(key_skill2);
yrest(100);
keyboardRelease(key_skill2);
print(os.date("buff 2 casted %X"))
buff2_needed = false;
yrest(2000);
end
end
if( buff_3 == 1 ) then
if( buff3_needed ) then
keyboardHold(key_skill3);
yrest(100);
keyboardRelease(key_skill3);
print(os.date("buff 3 casted %X"))
buff3_needed = false;
yrest(2000);
end
end
if( buff_4 == 1 ) then
if( buff4_needed ) then
keyboardHold(key_skill4);
yrest(100);
keyboardRelease(key_skill4);
print(os.date("buff 4 casted %X"))
buff4_needed = false;
yrest(2000);
end
end
end
if( scroll_1 == 1 ) then
if( scroll1_needed ) then
keyboardHold(key_scroll1);
yrest(100);
keyboardRelease(key_scroll1);
print(os.date("scroll 1 used %X"))
scroll1_needed = false;
yrest(3200);
end
end
if( scroll_2 == 1 ) then
if( scroll2_needed ) then
keyboardHold(key_scroll2);
yrest(100);
keyboardRelease(key_scroll2);
print(os.date("scroll 2 used %X"))
scroll2_needed = false;
yrest(3200);
end
end
if( scroll_3 == 1 ) then
if( scroll3_needed ) then
keyboardHold(key_scroll3);
yrest(100);
keyboardRelease(key_scroll3);
print(os.date("scroll 3 used %X"))
scroll3_needed = false;
yrest(3200);
end
end
if( scroll_4 == 1 ) then
if( scroll4_needed ) then
keyboardHold(key_scroll4);
yrest(100);
keyboardRelease(key_scroll4);
print(os.date("scroll 4 used %X"))
scroll4_needed = false;
yrest(3200);
end
end
rotate_cam();
if( math.random(100) > 90 ) then
move_forward(); end
end
pickup();
end
detach();
closeProcess(proc);
end
startMacro(main);