Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums



(Advanced Search)

Forum Statistics
» Members: 1,107
» Latest member: atwxhd
» Forum threads: 122
» Forum posts: 594

Full Statistics

Online Users
There are currently 21 online users.
» 0 Member(s) | 21 Guest(s)

Latest Threads
Classic - oGasai 2.1.23 -...
Forum: Bot Base
Last Post: Logitech
Yesterday, 07:45 AM
» Replies: 132
» Views: 44,624
TBC - oGasai - Grinder, F...
Forum: Bot Base
Last Post: Logitech
04-04-2019, 05:54 PM
» Replies: 44
» Views: 2,384
Bot functions support
Forum: Support
Last Post: Thotitout
03-22-2019, 12:58 AM
» Replies: 2
» Views: 221
single static mob avoidan...
Forum: Script development - Lua ressources
Last Post: zerger
03-12-2019, 01:35 PM
» Replies: 0
» Views: 84
Guide / Tutorial for Wow ...
Forum: Support
Last Post: icencoffe
03-10-2019, 03:50 AM
» Replies: 3
» Views: 413
Basic Warlock Script [TBC...
Forum: Bot Base
Last Post: SomebodyFound
02-25-2019, 04:13 AM
» Replies: 0
» Views: 172
Mob avoidance and pathing
Forum: Script development - Lua ressources
Last Post: zerger
02-12-2019, 10:56 PM
» Replies: 0
» Views: 115
Bot functions (for 2.1.7)
Forum: Script development - Lua ressources
Last Post: zerger
02-10-2019, 03:51 PM
» Replies: 6
» Views: 4,125
Resurrection function tha...
Forum: Bot Base
Last Post: zerger
02-03-2019, 03:14 PM
» Replies: 0
» Views: 153
Lua emulator
Forum: Script development - Lua ressources
Last Post: zerger
01-16-2019, 06:05 PM
» Replies: 0
» Views: 137

 
  Frostbite for oGasai 2.0.17 - Level Bot
Posted by: Logitech - 03-07-2017, 10:54 PM - Forum: Mage - Replies (23)

Frostbite - a level bot rotation for frost mages using oGasai 2.0.17

Since the scripts is very long you have to copy the whole "text" and crtl-v in the rotation oGasai UI.

It's recommended to choose talents such as Frostbite, Ice Shards, Imroved Frost Nova and Shatter for maximum potential.

Frostbite 1.7

  • Stuck timeout added, logs out after a set amount of time if we don't move longer than 20 yards.
  • Option to skip pulling certain type of creatures
  • Option to delete grey items for maximum experience gain before bags are full (less gold though)
  • Small change to the draw monster info on screen
  • My own function for fetching new targets
  • Fixed logic issues, now it runs a bit smoother and polymorph adds and switch target better
    I know people added stuff to my older versions, I havn't looked or added that, so you have to add it yourself if you want too. Have fun!

Frostbite 1.6
  • Added a stop timer, default is set to 120 minutes, can be turned off and/or changed
  • Now loots before we drink/eat if no enemies are within 30 yards
  • Fixed some formating in the code
Frostbite 1.5
  • New visuals text data of ourselves, targets and players (widescreen is not supported), see pic: https://s11.postimg.org/k8mbek0w3/frostbite.jpg
  • Fixed conjure logic for low level, no more pausing when spells not learned yet
  • Uses Cold Snap for another Ice Barrier if needed (Mana shield drains too much mana Smile)
  • Fixed bug: not using frost armor
  • Fixed bug: low level without frost nova spell yet stopped casting
  • Added vendoring, also auto repairs all items if possible
  • Added mana gem to the conjure and combat function, thanks to Whaaa (Though, I added a cool down timer for it aswell as some different logic.)
Frostbite 1.4
  • Fixed checks: when to use Ice Barrier
Frostbite 1.3
  • Added Ice Armor Buff
  • Added Mount support, see settings variables
  • Added Ice Block when low HP to regain CDs / mana
  • Now "Targets" the mob to be pulled as soon as it is in  pull range
Frostbite 1.2
  • Added pull range to the settings variables
  • Change some targeting logic (fixed target buff after buffing 2017-03-11)
  • Changed conditions for using Mana Shield
Frostbite 1.1
  • Updated some logic
  • Improved Polymorph add checks (when more than 2 adds pulled)
  • Now instantly attacks the polymorphed target if it's the only one left
  • Added wait timer to the Conjure function to avoid multiple casts

Frostbite 1.0
  • Utilizes Frost Nova and Frostbite debuffs (move's away from frozen targets)
  • Casts Polymorph on detected  adds
  • Use spells such as: Ice Barrier, Evocation, Mana Shield
  • Status text on screen, HP/Mana/Target Hp/Script Status (DrawText())
  • Paranoid option, pauses the script when we are out of combat if players are within a certain range (disabled by default, but very good for rogues if you stealth as well during the pause)
  • Some functionalities are reused from DarkLinux's Mage rotation, e.g. Conjuring drinks/food



Attached Files Thumbnail(s)
   

.lua   Frostbite 1.6 formated.lua (Size: 30.75 KB / Downloads: 739)
.lua   Frostbite 1.5 formated.lua (Size: 28.84 KB / Downloads: 254)
.lua   Frostbite 1.5.lua (Size: 26.61 KB / Downloads: 281)
.lua   Frostbite 1.7.lua (Size: 34.87 KB / Downloads: 532)

  Beest Vanilla Server atm?
Posted by: Bokutox - 03-02-2017, 08:58 AM - Forum: General - Replies (1)

I know a lot of new servers are out - I was curious which would be the Most popular - a Rising Sttar so to speak.

What servers has this ben tested on?

Do you have a preference? is Kronoss still Numb 1?


  Love the Bot! Working on Profile Packages
Posted by: Bokutox - 03-02-2017, 08:07 AM - Forum: General - Replies (2)

Im loving the fucking bot.

Wish zzukbot would hury up and get his shit going =x this has so much awesome feattures.

got a full 1-300 mining / herb

1-60 Profile pack (horde atm - like 20 alliance)

and a few rotation CC's


  Best bot in town
Posted by: wowbot - 03-01-2017, 06:15 AM - Forum: General - Replies (2)

Keep up the great work.


  In-Game Radar using Draw Text (now improved!)
Posted by: Logitech - 02-26-2017, 10:11 PM - Forum: Bot Base - Replies (3)

I accidentally removed the old thread, sorry about that.

Update: Improved outline and range indication. 

Two things still remains:
1. Correct the transformation from game coordinates to 2D pixel coordinates... Right now it works but its not optimal, see scaleX / scaleY.
2. Find a function/method of determine which direction we are facing

Other stuff is easy to add, such as displaying hostile players, friendly players etc. Or any object for that matter. You will get all objects within 100 yards of your character if you are alive. Right now I only display pull-able targets and players.

Code below:

function Radar()
        local radarOffsetX = 512; local radarOffsetY = 369; local radius = 200; local pi = 3.14;
       local numberOfValidTargets = 0; local numberOfPlayers = 0; local targets = {}; local players = {}; local localObj = GetLocalPlayer();
        local currentObj, typeObj = GetFirstObject();
        while currentObj ~= 0 do
        if typeObj == 3 then -- Save pull-able targets in an array
                   if CanAttack(currentObj) == 1 and IsDead(currentObj) == 0 and ((IsTapped(currentObj) == 0 or IsTappedByMe(currentObj) == 1)) then
                       numberOfValidTargets = numberOfValidTargets + 1;
                        targets[numberOfValidTargets] = currentObj;
                end
        elseif typeObj == 4 then -- Save players in an array
            numberOfPlayers = numberOfPlayers+1;
            players[numberOfPlayers]= currentObj;
        end
        currentObj, typeObj = GetNextObject(currentObj);
        end
    -- Draw the radar's outline        
        DrawText('*', radarOffsetX, radarOffsetY, 0, 255, 0);
        for i= 1, 360 do
            local cX = radarOffsetX + radius*math.cos(i/(2*pi)); local cY = radarOffsetY + radius*math.sin(i/(2*pi)); DrawLine(cX, cY, cX+1, cY+1, 0, 255, 0, 1);
        end
    -- Get the radar's center game coordinates
        local centerX, centerY, __ = GetPosition(localObj);
        -- Draw all the valid monster targets
        for i=1, numberOfValidTargets do
        -- Transform the game coordinates to 2D pixel coords.
        local cX, cY, __ = GetPosition(targets[i]);     
        -- X and Y coordinates are swapped dunno why
        local vectorLength = math.sqrt(cX^2 + cY^2);
        local scaleX = radius/85;
 local scaleY = radius/50;

        local distance = math.floor(GetDistance(targets[i]));
        local drawX = scaleX*(cY - centerY)*(centerY/vectorLength);
            
            local drawY = scaleY*(cX - centerX)*(centerX/vectorLength);
            if (GetTarget() == targets[i]) then
                DrawText('Target', radarOffsetX+drawX-10, radarOffsetY+drawY, 255, 0, 0);
        DrawText('(' .. distance .. ' yd)', radarOffsetX+drawX-9, radarOffsetY+drawY+10, 255, 0, 0);
            else
                DrawText('Monster', radarOffsetX+drawX-10, radarOffsetY+drawY, 0, 0, 255);
        DrawText('(' .. distance .. ' yd)', radarOffsetX+drawX-10, radarOffsetY+drawY+10, 0, 0, 255);
            end
        end

    -- Draw the players nearby
        for i=1, numberOfPlayers do
        -- Transform the game coordinates to 2D pixel coords.
        local cX, cY, __ = GetPosition(players[i]);     
        -- X and Y coordinates are swapped dunno why
        local vectorLength = math.sqrt(cX^2 + cY^2);
        local scaleX = radius/85;
 local scaleY = radius/50;

        local distance = math.floor(GetDistance(players[i]));
        local drawX = scaleX*(cY - centerY)*(centerY/vectorLength);
            
            local drawY = scaleY*(cX - centerX)*(centerX/vectorLength);
            if (GetTarget() == players[i] and players[i] ~= localObj) then
                DrawText('Target', radarOffsetX+drawX-10, radarOffsetY+drawY, 255, 0, 0);
        DrawText('(' .. distance .. ' yd)', radarOffsetX+drawX-9, radarOffsetY+drawY+10, 255, 0, 0);
            elseif (players[i] ~= localObj) then
                if (CanAttack(players[i]) == 1) then
                      DrawText('!PLAYER!', radarOffsetX+drawX-10, radarOffsetY+drawY, 255, 0, 0);
                      DrawText('(' .. distance .. ' yd)', radarOffsetX+drawX-10, radarOffsetY+drawY+10, 255, 0, 0);
                 else
                      DrawText('!PLAYER!', radarOffsetX+drawX-10, radarOffsetY+drawY, 0, 255, 0);
                      DrawText('(' .. distance .. ' yd)', radarOffsetX+drawX-10, radarOffsetY+drawY+10, 0, 255, 0);
                 end
           end
        end
 
end


Radar();



Attached Files Thumbnail(s)
   

  Beastmaster - Hunter Level Bot for oGasai 2.0.17
Posted by: Logitech - 02-23-2017, 04:10 PM - Forum: Hunter - Replies (17)

Beastmaster - Hunter Level Bot for oGasai 2.0.17

Since the script is very long you have to copy the text in e.g. notepad and paste it in the rotation ui of oGasai.

Beastmaster 1.5
- Update 2017-12-01:
       - Corrected a bug that prevented us from using special attacks in combat...
       - Now checks if we are able to auto attack before moving "in line of sight", really increased efficiency
       - Corrected the use of aspect of the cheetah instead of aspect of the pack
       - e.g. in Darkshore, instead of moving in line of sight for every tree, we shoot through them

- Fixed many bugs, e.g. before you get mend pet skill
- If too close to a target when pet got aggro, we try to run towards the last killed mob
- New function with lots of options for pulling mobs, also pull distance added
- Now pauses when feeding the pet for maximum happiness
- Stop if stuck feature added
- Uses scrolls if we have any
- Added timers when navigating / looting. PetAttack() and PetFollow() will disconnect you if you do it too fast.

See picture below if you dont know where to put your pet food etc.
You only have to babysist the pet food slot if your pet is new, or if it dies a lot. When all is normal you don't need much pet food. Higher level pets needs higher level meat...
   

   

Beastmaster 1.4
- Small fixes, regains Hp/Mana before looting now and turns around right after we walk out to shoot
- Added information on the screen of monster and players, you can disable it the settings (borrowed some for-statements from Beniamins rogue script for this)

Beastmaster 1.3

- Fixed the move back function
- Removed the timer after using Aspect of the Cheetah to not look so "botish"

Beastmaster 1.2

 - Fixed logical errors when the player is in level range 1-12
 - Added the move back function to run out and shoot if pet has aggro

Beastmaster 1.1
 - Fixed ChooseAspect function
 - Fixed check for Mend Pet (update 2017-03-10)
 - Updated the check for targeting enemy players/pets, see the enemyFaction setting

Beastmaster 1.0
Sharing my own hunter rotation for leveling. I've spent a lot of free time on this to get everything working good with a pet. It's scripted for Beast Mastery talents. If you are below level 10 and have no pet. Set hasPet to false, and you should probably change stopOnFull to false too when low level. I don't bother to setup vendor paths etc. I grind to full inventory then logout. But you don't have to enable that. Just change the parameters to false (see settings). Make sure you have your quiver in the 5th slot (the one to the left) and your pet food in the last slot of your 4th bag or change the parameters in settings. Enable Status and you will see a lot of messages of what the script is doing at the time.

Note: I don't follow code standard since I want the script to be able to load easily (minimal number of lines). Often you have to scroll down and remove random characters in the end of the rotation after the first load. Or you copy paste the full script at once.

Includes:
- Calls, Revives, Mends and Feeds your pet
- Keeps Serpent Sting DoT up if the target isn't an elemental
- Swaps Aspects depending on the situation
- Using Cooldowns such as: Intimidation, Bestial Wrath, Troll Racial
- Stops for 30s when targeting other players or pets
   (can bug on some monsters in Arathi Highland counted as players, please add: and UnitFactionGroup("target") == "Alliance" to the if statement if you play horde.
- Options for stopping on full inventory and using Hearthstone then logging out

Todo:
- Function for moving out to shoot if the mob is too close and the pet has aggro, right now we just go ham in meele instead. I can do this but its too buggy in small areas. One idea is to navigate to the last killed target until we get in auto shot range.
- Use feign death, is not really needed but if someone wants it.
- Report bugs in this thread, I can probably fix them



Attached Files
.lua   Beastmaster 1.1.lua (Size: 18.09 KB / Downloads: 275)
.lua   Beastmaster 1.2.lua (Size: 18.51 KB / Downloads: 244)
.lua   Beastmaster 1.3.lua (Size: 18.82 KB / Downloads: 258)
.lua   Beastmaster 1.4.lua (Size: 21.34 KB / Downloads: 471)
.lua   Beastmaster 1.5.lua (Size: 34.05 KB / Downloads: 388)

  Status
Posted by: Google - 02-17-2017, 08:15 PM - Forum: Support - No Replies

test thread for something im working on


  Useful Methods for your scripts
Posted by: Logitech - 02-13-2017, 10:33 PM - Forum: General - Replies (2)

Here you can post code segments of any implementation of racial skills or useful checks. I will start with some... (sorry for good/bad solutions... and not following code standards)
Some of my rotations gets very long that's why I have to skip using more lines then necessary. I've worked a lot on hunter methods... I've now shared my full hunter rotation on this forum.

In my scripts I use the timer functions for Global Cooldowns when using skills. Then add a return statement early so the scripts does nothing during that duration (to not spam abilities).

Undead  Racial Cannibalize:
function SetCannibalizeTarget(targetObj) SetVar('cannibTarget', targetObj); end -- Saves a target to Cannibalize later
function GetCannibalizeTarget() return GetVar('cannibTarget'); end -- Gets the target that should be Cannibalized

-- Set the current target as a "Cannibalize-target" if it's Humanoid or Undead
 if (GetCreatureType(targetObj) == 'Humanoid' or GetCreatureType(targetObj) == 'Undead') then SetCannibalizeTarget(targetObj); else SetCannibalizeTarget(0); end

-- Check: If we can use Cannibalize on a corpse
if (IsTimeGood() == 1 and IsInCombat() == 0 and localHealth < eatHealth and IsEating() == 0) then          
     if (IsMoving() == 1 and GetDistance(GetCannibalizeTarget()) < 3) then StopMoving(); return; end
      -- Cannibalize if possible
      if(HasSpell('Cannibalize') == 1 and IsSpellOnCD('Cannibalize') == 0 and GetCannibalizeTarget() ~= 0) then  
            SetSatusText('Cannibalize possible: ', 'Moving to corpse to feed...');
            if (GetDistance(GetCannibalizeTarget()) > 3) then
                  MoveToTarget(GetCannibalizeTarget());
                  return;
             else
                  StopMoving();
                  CastSpellByName('Cannibalize');
                  UpdateTimer();
                  return;
           end
     end
end

Customizable check if bags are full, e.g. with ignore hunter quiver (quiverBagNr = quiver bag index):
-- Check bags 1-5, except the quiver bag (quiverBagNr)
for i=1,5 do
     if (i ~= quiverBagNr) then
            for y=1,GetContainerNumSlots(i-1) do
                  texture, itemCount, locked, quality, readable = GetContainerItemInfo(i-1,y);
                  if (itemCount == 0 or itemCount == nil) then
                          inventoryFull = false;
                  end
            end
      end
end

if (inventoryFull) then
    -- do something, e.g. I use Hearthstone and stop the bot.
end

Use Hearthstone with check of CD, does HS if on CD then stops the bot:
hsBag = 1; -- local setting variable: bag 1 (index is 0 for bag 1!)
hsSlot = 1; -- local setting variable: slot 1 (index is 1 for slot 1)
hsWhenStop = true; -- local setting

SetSatusText('Inventory is full', 'Stopping the bot...');
StopMoving();
if (GetContainerItemCooldown(hsBag-1,hsSlot) == 0 and hsWhenStop and IsTimeGood() == 1) then
         UseItem('Hearthstone');
         UpdateTimer();
         return;
else
         StopBot();
         return;
end


First Aid, bandage:
bandageName = "Linen Bandage"; -- Name of the bandage to use

function UpdateBandageTimer() SetVar('bandageTimer', GetTimeX() + 62000); end -- Set the CD time for the bandage debuff (60s)
function CanBandage() if (GetVar('bandageTimer') < GetTimeX()) then return 1; end return 0; end -- Has the bandage debuff CD timer passed?

-- Check: Use Bandage if possible
if(HasItem(bandageName) == 1 and CanBandage() == 1 and IsInCombat() == 0 and localHealth < eatHealth and IsEating() == 0 and IsTimeGood() == 1) then
    SetSatusText('Bandage possible: ', 'Using bandage...');
    if (UseItem(bandageName) == 1)  then
           UpdateBandageTimer();
           UpdateTimer();
           return;
    end
    return; 
end

Display the player's HP, Mana, Energy, Rage, Pet's Hp and Target's HP on the screen

DrawText('HP:' .. GetHealth(localObj) .. ' (' .. round(GetHealthPercentage(localObj),2) .. '%)', 25, 150, 0, 255, 0);
DrawText('Mana:' .. GetMana(localObj) .. ' (' .. round(GetManaPercentage(localObj),2) .. '%)', 25,165, 0, 255, 255);
if (hasPet and UnitExists("pet")) then DrawText('PET HP:' .. UnitHealth("pet") .. ' (' .. round(UnitHealth("pet")*100/UnitHealthMax("pet"),2) .. '%)', 25, 180, 0, 255, 0); end

DrawText('Energy:' .. GetEnergy(localObj), 25,165, 255, 255, 0);
DrawText('Energy:' ..GetRage(localObj), 25,165, 255, 255, 0);

if (GetTarget() ~= 0) then DrawText('Target HP:' .. GetHealth(GetTarget()) .. ' (%)', 25, 180, 255, 0, 0); end


Hunter choose aspect function:
function chooseAspect()
    hasHawk, hasMonkey, hasCheetah  = HasSpell("Aspect of the Hawk"), HasSpell("Aspect of the Monkey"), HasSpell("Aspect of the Cheetah");
    if (hasMonkey and GetLevel(localObj) < 10) then if (HasBuff(localObj, 'Aspect of the Monkey') == 0) then SetSatusText('Choosing Aspect: ', 'Aspect of the Monkey...'); CastSpellByName('Aspect of the Monkey'); return; end    
    elseif (hasCheetah and IsInCombat() == 0 and GetNearestEnemy() == 0) then if (HasBuff(localObj, 'Aspect of the Cheetah') == 0) then SetSatusText('Choosing Aspect: ', 'Aspect of the Cheetah...'); CastSpellByName('Aspect of the Cheetah'); return; end
    elseif (hasHawk and IsInCombat() == 1) then if (HasBuff(localObj, 'Aspect of the Hawk') == 0) then SetSatusText('Choosing Aspect: ', 'Aspect of the Hawk...'); CastSpellByName('Aspect of the Hawk'); return; end end
end

Feed pet for hunters:
bagWithPetFood = 4; -- 4th bag slot has pet food in it (ALWAYS PUT PET FOOD IN THE LAST SLOT OF THE BAG!)

function SetFeedTimer() SetVar('feedTimer', GetTimeX() + 20000); end -- 20s duration on Feed Pet
function IsFeedPetDone() if (GetVar('feedTimer') < GetTimeX()) then return 1; end return 0; end

-- Check: If pet isn't happy, feed it (see the bagWithPetFood, pet food have to be in the last slot of the bag)
happiness, damagePercentage, loyaltyRate = GetPetHappiness();
if (UnitExists("Pet") and IsFeedPetDone() == 1 and IsInCombat() == 0 and hasPet and UnitHealth("pet") > 0) then
    if (happiness < 3 or loyaltyRate < 0) then
        SetSatusText('Pet is not happy!', 'Feeding the pet...');
        if (IsStanding() == 0) then SitOrStand(); return; end
        CastSpellByName("Feed Pet"); TargetUnit("Pet"); PickupContainerItem(bagWithPetFood-1, GetContainerNumSlots(bagWithPetFood-1));
        -- Set a 20 seconds timer for this check (Feed Pet duration)
        SetFeedTimer(); end
end

Check: If pet is dead/dismissed then Revive/Call pet:
if (UnitHealth("pet") == 0 and hasPet) then
    SetSatusText('Pet is missing', 'Calling/reviving pet...');
    if (not UnitExists("pet")) then CastSpellByName('Call Pet'); return; end
    if (IsMoving() == 1) then StopMoving(); return; else
        if (IsStanding() == 0) then SitOrStand(); return; end
        __, __, __, __, reviveCost = GetSpellInfoX('Revive Pet');
        if (GetMana(localObj) >= reviveCost) then CastSpellByName('Revive Pet'); else return; end end
end

Check: Dont pull if pet has lower than 70% HP and out of combat, use mend pet
if (hasPet and UnitHealth("pet")/UnitHealthMax("pet") < 0.70 and IsInCombat() == 0 and UnitHealth("pet") > 0) then
    __, __, __, __, mendCost = GetSpellInfoX('Mend Pet');
    SetSatusText('Pet has lower than 70 procent HP!', 'Mend pet if not in combat...');
    if (IsMoving(localObj)) then StopMoving(); end
    if (IsDrinking() == 0 and GetMana(localObj) >= mendCost) then CastSpellByName("Mend Pet"); return; end
end

Check: Mend the pet if it has less than 35% HP and we are in combat and pet isn't dead
if (hasPet and UnitHealth("pet")/UnitHealthMax("pet") < 0.35 and IsInCombat() == 1 and UnitHealth("pet") ~= nil) then
    SetSatusText('Pet has lower than 30 percent HP!', 'Mend pet...');
    __, __, __, __, mendCost = GetSpellInfoX('Mend Pet');
    -- Check: If in range to mend the pet
    if (GetDistance(targetObj) < 20 and GetMana(localObj) >= mendCost) then if (IsMoving(localObj) == 1 and GetDistance(targetObj) < 20) then StopMoving(); return; end CastSpellByName("Mend Pet"); return;
    elseif (GetMana(localObj) >= mendCost) then MoveToTarget(targetObj); return; end
end


  Official download link?
Posted by: derpus - 02-05-2017, 04:08 PM - Forum: General - No Replies

Hey sorry i was unable to find a "Official download link"
I am going back to ownedcore frequently to check if there has been an update however the newest version is not even on there it is only on discord from what i can see.


  34-38 Alterac Mountains
Posted by: Zeth'Kur - 01-28-2017, 04:17 AM - Forum: 30 to 39 - Replies (2)

This profile I ran with Priest Mage from 34-39, zero deaths.



Attached Files
.xml   Ogres Alterac Mountains 35+.xml (Size: 6.68 KB / Downloads: 244)