Fiesta bot

You may request or share scripts for MicroMacro in this forum.
Message
Author
User avatar
Administrator
Site Admin
Posts: 5307
Joined: Sat Jan 05, 2008 4:21 pm

Re: Fiesta bot

#21 Post by Administrator » Sat Feb 23, 2008 11:53 pm

I located your problem. I also put in some better error checking into the lib.lua to help debug these issues in the future.

Your problem was that you didn't properly close your if and if-else statements in move_forward(), which caused function main() to be inside of move_forward(). I'm guessing you then received an error about not having an end in there, and then threw an "end" in randomly near the end of the script, causing it to be legal Lua, but a sever logical error. Since main would have then been nil (as it hasn't been declared, as move_forward() wasn't called), it would, therefor, throw an error. I've fixed it for you.

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      = 10;       -- HP to rest at   (not used for cleric's)
HP_potion       = 500;      -- Use a HP potion (or HEAL SKILL FOR CLERIC)
HP_stone        = 350;      -- Use a HP stone
SP_restamt      = 10;       -- SP to rest home at this SP value
SP_potion       = 300;      -- Use a SP potion
SP_stone        = 400;      -- Usa a SP stone


key_attack     = key.VK_1;    -- melee attack
key_attack2    = key.vK_SHIFT -- trip attack  -- normal melee attack
key_pickup     = key.VK_2;    -- pickup items

key_skill1     = key.VK_5;    -- offensive and defensive spells...   This is my bash
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_skill5     = key.VK_RIGHT -- buff right now for time healign           -- for more skills?

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_scroll5    = key.VK_ALT;
key_scroll6    = key.VK_U;

key_hppotion   = key.VK_3;     -- CLERICS: this is  my heal skill
key_hpstone    = key.VK_Q;     -- this is my HP stone
key_sppotion   = key.VK_4;     -- this is my SP potion
key_spstone    = key.VK_E;     -- this is my SP stone

-- 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            = 1;
scroll4_duration    = 3500000;
scroll_4            = 1;
scroll5_duration    = 3500000;
scroll_5            = 1;
scroll6_duration    = 3500000;
scroll_6            = 1;

-------------------------


-- Buff settings (only for clerics)
-------------------------
buff1_duration       = 3500000;
buff_1               = 1;
buff2_duration       = 3500000;
buff_2               = 1;
buff3_duration       = 3500000;
buff_3               = 1;
buff4_duration       = 3500000;
buff_4               = 1;
buff5_duration       = 3500000;
buff_5               = 1;
-- 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;
buff5_needed      = true;

scroll1_needed    = true;
scroll2_needed    = true;
scroll3_needed    = true;
scroll4_needed    = true;
scroll5_needed    = true;
scroll6_needed    = true;

need_heal         = false;
can_rest          = true;
-----------------------------------------------------
-----------------------------------------------------

function fight_timer()
  keyboardHold(key_attack);
  yrest(100);
  keyboardRelease(key_attack);

  yrest(100);
 
  keyboardHold(key_attack2);
  yrest(100);
  keyboardRelease(ke_attack2);
end


-----------------------------------------------------
-- fighting functions
-----------------------------------------------------

-----------------------------------------------------
-- FIGHTING 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(50);
  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(100);
  keyboardRelease(key_attack);
 
  yrest(100);
   
  keyboardHold(key_attack2);
  yrest(100);
  keyboarRelease(key_attack2);

  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

--------------------------------------------------------
-- FIGTHING 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);

    keyboardHold(key_skill4);
    yrest(200);
    keyboardRelease(key_skill4);

    yrest(100);

    keyboardHold(key_skill5);
    yrest(200);
    keyboardRelease(key_skill5);

    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 buff5
----------------------------------------------------

function buff5_timer()
  buff5_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

----------------------------------------------------
-- toggle cast needed for scroll5
----------------------------------------------------

function scroll5_timer()
  scroll5_needed = true;
end

----------------------------------------------------
-- toggle cast needed for scroll6
----------------------------------------------------

function scroll6_timer()
  scroll6_needed = true;
end


-------------------------------------------------------------------------
-- you have died!? oh noOOOes!
-------------------------------------------------------------------------

function death_return()
  keyboardPress(key.VK_SNAPSHOT);
  print(os.date("Alguien te mato.   %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);
  keyboardRelease(key.VK_SPACE);
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


  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




------------------------------------------------------------------
-- the configuration of the window
------------------------------------------------------------------

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

-------------------------------------------------------------------
--CLeric logic only
-------------------------------------------------------------------

  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);
   registerTimer("buff5_timer", buff5_duration, buff5_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);
  registerTimer("scroll5_timer", scroll5_duration, scroll5_timer);
  registerTimer("scroll6_timer", scroll6_duration, scroll6_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

   if( buff_5 == 1 ) then
         if( buff5_needed ) then
                keyboardHold(key_skill5);
                yrest(100);
                keyboardRelease(key_skill5);
           print(os.date("buff 5 casted   %X"))
                buff5_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(4000);
          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(4000);
          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(4000);
          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(4000);
          end
   end
   
   if( scroll_5 == 1 ) then
        if( scroll5_needed ) then
           keyboardHold(key_scroll5);
           yrest(100);
                keyboardRelease(key_scroll5);
       print(os.date("scroll 5 used   %X"))
             scroll5_needed = false;
             yrest(4000);
          end
   end

   if( scroll_6 == 1 ) then
        if( scroll6_needed ) then
           keyboardHold(key_scroll6);
           yrest(100);
                keyboardRelease(key_scroll6);
       print(os.date("scroll 6 used   %X"))
             scroll5_needed = false;
             yrest(4000);
          end
   end


--------------------------------------------------------------------
-- Rotate the camera
--------------------------------------------------------------------

      rotate_cam();
      if( math.random(100) > 90 ) then
        move_forward(); end
    end

    pickup();
  end

  detach();
  closeProcess(proc);
end

startMacro(main);

charmingiv
Posts: 12
Joined: Mon Feb 18, 2008 4:52 pm

Re: Fiesta bot

#22 Post by charmingiv » Sun Feb 24, 2008 1:17 am

Sorry it me again!Thanks for the code amazing you are a genious!
I found this error
if( scroll_6 == 1 ) then
if( scroll6_needed ) then
keyboardHold(key_scroll6);
yrest(100);
keyboardRelease(key_scroll6);
print(os.date("scroll 6 used %X"))
scroll6_needed = false; -- i had scroll5_needed = false;
yrest(200);
end


also sometimes it starts but it will buff and scroll fine until it arrives to scroll6,then the camera moves and uses scroll6 many times until this error appears

micromacro\lib\lib.lua:105: Invalid data was supplied to keyboard()

then when it finds a target the lua stops!


thank you so much for help me !

charmingiv
Posts: 12
Joined: Mon Feb 18, 2008 4:52 pm

Re: Fiesta bot

#23 Post by charmingiv » Mon Feb 25, 2008 9:31 pm

Since Xtrap was added to the game many many ppl is having issues about it, I think soon they will take it off, I am lucky for having your code to get rid of Xtrap lol!

agente001
Posts: 2
Joined: Tue Feb 26, 2008 6:19 am

Re: Fiesta bot

#24 Post by agente001 » Tue Feb 26, 2008 7:14 am

First of all I want to say that the program is amazing, and very clever! Congratulations!

I have a problem when I set my fighter to spam skills at fight. In fact, my knight isn't spamming any skill. I already double checked if my skills are correctly assigne. It seems they are.

Code: Select all

-- EDIT THESE!
-------------------------
class           = CLASS_CLERIC; -- class determins the logic to take
HP_restamt 	= 300; 		-- HP to rest at   (not used for cleric's)
HP_potion	= 200; 		-- Use a HP potion (or heal skill for cleric)
HP_stone	= 299; 		-- Use a HP stone
SP_restamt 	= 50; 		-- SP to rest at
SP_potion	= 50;      	-- Use a SP potion
SP_stone	= 50;          -- 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
My skills are located in number 5 to 8...

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

Re: Fiesta bot

#25 Post by Administrator » Tue Feb 26, 2008 7:57 am

Sorry I didn't respond to this sooner, charming. Did you remember to set key_scroll6 = key.VK_6 (or whatever, just an example)?

agente001: What about "class = CLASS_CLERIC"? You're not a cleric.

agente001
Posts: 2
Joined: Tue Feb 26, 2008 6:19 am

Re: Fiesta bot

#26 Post by agente001 » Tue Feb 26, 2008 9:07 am

;/ What and where should I type to make it a knight script instead of cleric?

look what i just did:

Code: Select all

class           = CLASS_KNIGHT; -- class determins the logic to take
HP_restamt 	= 300; 		-- HP to rest at   (not used for cleric's)
HP_potion	= 200; 		-- Use a HP potion (or heal skill for cleric)
HP_stone	= 299; 		-- Use a HP stone
SP_restamt 	= 50; 		-- SP to rest at
SP_potion	= 50;      	-- Use a SP potion
SP_stone	= 50;          -- Usa a SP stone
I exchanged the CLASS_CLERIC fo CLASS_KNIGHT and now I rarely spam the 5key skill.

What should I do master?

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

Re: Fiesta bot

#27 Post by Administrator » Tue Feb 26, 2008 9:24 am

Within function knight_fight(), you'll see this:

Code: Select all

    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
By manipulating the math.random(number1) > number2, you can produce different results. If you just want to spam skill1, you can just use: keyboardPress(key_skill1) in place of that mess of code.

I know the script makes use of keyboardHold()/keyboardRelease() much more often than keyboardPress(), but the original script was made when there was still some minor glitches to keyboardPress(). Now that it's working properly, it is recommended to use keyboardPress().

charmingiv
Posts: 12
Joined: Mon Feb 18, 2008 4:52 pm

Re: Fiesta bot

#28 Post by charmingiv » Thu Feb 28, 2008 6:39 am

elverion wrote:Sorry I didn't respond to this sooner, charming. Did you remember to set key_scroll6 = key.VK_6 (or whatever, just an example)?

agente001: What about "class = CLASS_CLERIC"? You're not a cleric.
got it!!!! Thanks again!!! have you seen all th troubles in Fiesta lately first for Xtrap and the for the Burning Rock Quest GoSH!!!
I have a little questions is Xtrap the one that blocks the servers from other countries, cuz I am trying to play fiesta online from china, korea,japan and all say the same " you are out of our service area" well that was just on korea server the other I could not make an account, I cant read the web pages to make an account! LOL!

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

Re: Fiesta bot

#29 Post by Administrator » Thu Feb 28, 2008 10:48 am

No, XTrap is nothing more than a rootkit that limits what you can and cannot do on your computer. The makers (and distributors) will continuously tell you that it's safe, but we both know they are liars. There is absolutely nothing safe about installing destructive software on your computer that opens up security holes to your system core.

Anyways, no, XTrap does not block you from connecting. That would be IP range bans used on the servers themselves. You might be able to use a proxy to get through, but I can't help you with this.

User avatar
3cmSailorfuku
Posts: 354
Joined: Mon Jan 21, 2008 6:25 pm

Re: Fiesta bot

#30 Post by 3cmSailorfuku » Thu Feb 28, 2008 11:54 am

elverion wrote:No, XTrap is nothing more than a rootkit that limits what you can and cannot do on your computer. The makers (and distributors) will continuously tell you that it's safe, but we both know they are liars. There is absolutely nothing safe about installing destructive software on your computer that opens up security holes to your system core.
I'm not so sure about security holes (As it completly blocks off the DeviceIOControl and others) so it basically makes your pc just a slave. What I dont like about XTrap and other similiar "Anticheat" drivers is, that it will restart the pc upon detection of something "malicious". GameGuard killed once my old harddrive (It would erase all data on it after rebooting again).

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

Re: Fiesta bot

#31 Post by Administrator » Thu Feb 28, 2008 1:10 pm

As true as that may be, it still represents a security risk. No software is free of such a risk; but a software that easily grants an attacker easy root access under a "trusted" source is not OK by me. And yes, the rebooting upon malicious software being detected needs to go. Not only should they be held accountable for any data loss that happens as a result of their defective program (in this case, the defect is actually intentional), but it's just plain wrong and useless.

One of the most irritating things is how totally off their detection mechanisms are. Recently infected with a virus or rootkit? You're obviously cheating, you can't play! Using a non-standard Windows shell due to personal preference? You're obviously cheating, you can't play! Using some new keyboard or mouse? You're not cheating (yet), but you can't use them! Do you actually have anti-virus or firewalls? That's cheating, too! You should know better than to not buy your anti-virus and firewalls from nProtect, otherwise you can't play games. I could keep going on and on, but you get the point.

The final point I'd like to make here is that XTrap and GameGuard take up an absurd amount of CPU time and memory, which adversely effects your gaming ability. It also injects itself into another programs (and does not remove itself) you have running, further increasing it's CPU/RAM use. The makers claim it does not do this, and uses less than 1% of your CPU. Sure, it uses 1% of your CPU if you check it out in Task Manager...but why is the base rootkit covering up it's true usage? Oh that's right; because they are lairs, and it is actually using somewhere between 10 and 20%.

They (XTrap and GameGuard) are over-engineered, ineffective malware, and that's it. Look how many legit players are unable to play Fiesta right now solely due to XTrap. Now consider how many players are able to play, but lag to the point they are going to quit. Then think of how many hackers and botters you still see, which have completely eliminated XTrap. And they claim that this garbage "works"...

nonamevari
Posts: 2
Joined: Sat Mar 01, 2008 4:40 am

Re: Fiesta bot

#32 Post by nonamevari » Sat Mar 01, 2008 4:42 am

I have a problem here...
i cant use the bot because when i press F5 it trows an error. It says that it only works with 1024*768 resolution...but, i am using that resolution in game and in my computer :?

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

Re: Fiesta bot

#33 Post by Administrator » Sat Mar 01, 2008 1:06 pm

Post your log.txt. I guess I was wrong in thinking people would know that would be useful information.

http://solarimpact.servegame.com/phpBB3 ... p?f=2&t=38

nonamevari
Posts: 2
Joined: Sat Mar 01, 2008 4:40 am

Re: Fiesta bot

#34 Post by nonamevari » Sat Mar 01, 2008 3:35 pm

i read the previows post about the resolution, now it's working. Thx

P.S: theres is a way to make the bot get the target? or i have to select always the target?

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

Re: Fiesta bot

#35 Post by Administrator » Sat Mar 01, 2008 4:17 pm

What do you mean? Is it not targeting? Again, post your log.txt. Also, what type of keyboard do you have? If it is something non-standard, or non-US 102/103 key keyboard, you may need to remap the target key. Fiesta uses the TAB key to target next. Some other user stated that his keyboard used the ~ key instead, and had to remap it.


I have been made aware of AVG incorrectly labeling the No XTrap patch as a trojan. No, I have not infected you with a virus of any sort. I have, however, recompiled and repacked it to change it's signature, and now it will not appear to be a trojan and prevent you from playing. You can redownload the patch from the first post in this thread.

charms
Posts: 7
Joined: Wed Mar 12, 2008 1:05 pm

Re: Fiesta bot

#36 Post by charms » Wed Mar 12, 2008 1:10 pm

Hi Elverion I lost my pasword and user name thats why I created a new one! It's me chamingiv, WOW just today I download the new micromacro and let me tell you that it's so amazing, I mean the PAUSE F6 is just amazing, also I think I am not sure but this happened to me las time, I paused the bot and got kiled when I got back to the city I still had my buffs and scroll on me, something like freezing addresses in the new micromacro? Take care!

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

Re: Fiesta bot

#37 Post by Administrator » Wed Mar 12, 2008 3:42 pm

Well you could freeze addresses with it, I suppose, but that's not done in the Fiesta bot script. Actually, I'm not sure I understand what you mean. It might have just been a glitch in the game.

Isaac
Posts: 9
Joined: Sun Mar 16, 2008 11:08 pm

finding no static value

#38 Post by Isaac » Sun Mar 16, 2008 11:35 pm

Well here i am, i have been working with the micromacro and i must say it works pretty well, my question is, how do u know where is located the rest address, i saw u could find it in the first script you posted i don't ask you to tell me the address i'm asking for knowlege "humildemente" i do not know the word in english, any help you can give me will be great, thx =).

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

Re: Fiesta bot

#39 Post by Administrator » Mon Mar 17, 2008 12:20 am

I used an unknown value search (for all integer types). I then would toggle between sitting and standing, and filter for a changed value. This can be very time consuming, and will probably result in a lot of different addresses which could potentially be involved. It all depends on the game in question. I hope this answers your question.

Isaac
Posts: 9
Joined: Sun Mar 16, 2008 11:08 pm

Re: Fiesta bot

#40 Post by Isaac » Mon Mar 17, 2008 3:37 am

i'm in fiestaonline, what is the value of the resting and not resting... ?
that will help a lot thx =)

Post Reply

Who is online

Users browsing this forum: No registered users and 8 guests