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,625
TBC - oGasai - Grinder, F...
Forum: Bot Base
Last Post: Logitech
04-04-2019, 05:54 PM
» Replies: 44
» Views: 2,385
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: 85
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

 
  single static mob avoidance
Posted by: zerger - 03-12-2019, 01:35 PM - Forum: Script development - Lua ressources - No Replies

(disclaimer: i am just a hobby programmer)

i started with a basic concept, if i can write a logic that can walk around a single mob i should be able to modify it 
and walk around multiple mobs. I want to the avoidance behavour look human like

live steering vs pre calculated  waypoints (wp)
since the environment and mobs are static  wp are a good solution
i can test the area for obstacles with raycasts and literally see if the way to the wp is good

my first approach was that i have a circle around a mob "aggro circle" and if i construct a tangent of that circle which
runs through my destination xy i should be able to calculate a wp (random spot in blue area)

if i take a An isosceles triangle in front of me, combine it with the tangent of the mob in my path i end up with an 
area in my isosceles triangle that is save to walk to.

[Image: tagent.png]
https://cdn.discordapp.com/attachments/3...tagent.png

if i have a second mob i just take its tangent into consideration 

[Image: tangent2.png]
https://cdn.discordapp.com/attachments/3...ngent2.png

BUT when i imagine more mobs that approach starts to look less appealing

[Image: tagent_3.png]
https://cdn.discordapp.com/attachments/3...gent_3.png

second approach: construct wp left and right of a mob with a triangle
[Image: triangle.png]
https://cdn.discordapp.com/attachments/5...iangle.png

i have two sides of a right triangle
a is the distance me <---> mob
b is the distance mob <---> wp (which should be greater than the aggro range)
c is root of (a*a+b*b)

to calculate both wp left and right of the mob i construct two circles and the wp are at the circle intersections
first circle has a the radius "b" and the other circle the radius "c" 

[Image: circles.png]
https://cdn.discordapp.com/attachments/5...ircles.png

where the two circles intersect i have my left and right waypoint
i ended up with a working solution 
https://www.youtube.com/watch?v=j6i76o6l...e=youtu.be

third approach: construct two wp left and right of the mob
although approach two works it is not good enough and i refine my wp selection logic
i construct two wp left and right of the mob and the distance between these wp is 1.5*radius of the aggrorcircle  

based on the point from approach two i construct the two new wp
i again have two sides of a right triangle
a is old wp <---> mob
b is 0.75* aggroradius
c is root of (a*a+b*b)



and again circle intersections are used to calculate both wp




[Image: 2wp.png]
https://cdn.discordapp.com/attachments/5...94/2wp.png

video of the code in action
https://www.youtube.com/watch?v=lElsPPEBsI4

so far so good but with obstacles it gets more complicated and should be somehow solved

first idea:
calculate more wp left right so if some of them are blocked the others can be used (again check with raycast)

[Image: 4.png]
https://cdn.discordapp.com/attachments/5...3028/4.png

[Image: 3.png]
https://cdn.discordapp.com/attachments/5...9396/3.png


  Bot functions support
Posted by: Thotitout - 03-06-2019, 08:53 AM - Forum: Support - Replies (2)

Greetings,

I've had great success with Logitech's scripts / grinder. Yay to Logi but that's a different post for a different thread. That being said I'm using his grinder and frost mage script as a base.

I've been doing some testing with a frost mage and noticed that it never takes advantage of the 10% or 20% range increase on frostbolt when spending points into the Arctic Reach talent. I scoured through all the various scripts he included but realized that the IsSpellInRange function is apart of the WoWUnits API. In his scripts he calls targetObj:IsSpellInRange('Frostbolt') but it only returns true when less than or equal to 30 yards which is the default range of frostbolt.

Arctic reach talent doesn't seem to modify the name of the spells it affects but only their spell range value. The only other thing I figured that I would ask is if the spell range is hard coded in the API?

I'm not certain if it is possible to have it conditionally flag 0 pts /30 yd, 1 pts /33 yd, and 2 pts /36 yd range based upon how many talents are spent in arctic reach. I looked through all of the other functions included with the API but didn't see anything that would check talent points in something that doesn't add a spell to the spellbook or modify a spells name.

Cheers


Heart Basic Warlock Script [TBC]
Posted by: SomebodyFound - 02-25-2019, 04:13 AM - Forum: Bot Base - No Replies

Hello everyone, i've used logitech's work as a base to make a basic warlock rotation ( Heart http://darkenedlinux.com/ogasai/showthread.php?tid=377 )

***You will need to download his files***

it will have some bugs, and i've made it to basically use spells rotation, summon and sacrifice voidwalker, create and use healthstones

it may not work properly if you don't have some of those skills, in any case i've made a setup of "useSkill"

feel free to change it, the rotation if all skills are set to true will be:

agony as opener, 

then 

Life Tap (if conditions met) -> drain soul (if out of stones and enemy dying) -> heal with stone (if conditions met) -> shadow bolt (if in Shadow Trance) -> siphon life -> corruption -> agony -> immolate -> drain life

each debuff will only be used if the enemy does not already have it

just download it and put the scripts in script folder and the menu on the main folder

The menu.lua is already updated to have warlock script

ps: the code has an option  doesTheServerYouPlayHealsPetWhenMounting because my server is currently bugged and if you mount, your pet is re-summoned when you get out of your horse, so it gets full life and mana, it's set to true as default, you'll need to change it by opening the file and manually changing the text from "true" to "false"

--[edit 27/feb/2019]--
> updated menu.lua
> added shaddow bolt as an option to replace drain life

--[edit 28/feb/2019]--
> added option to change hotfix drink if you're having trouble as well and want to use another drink just edit the name in the first few lines of the file
> added script_grind.lua file hotfix, i'm having some errors using current version, i commented the lines and the script is not working properly but at least is working for me now

--[edit 2/mar/2019]--
> removed edited script_grind.lua attachment as the current version provided by logitech is currently working for me
> updated the whole code to be compatible with new logitech's script
> added menu tab configuration, you can now config it by opening ogasai's menu in-game



Attached Files
.lua   menu.lua (Size: 1.22 KB / Downloads: 32)
.lua   script_warlock.lua (Size: 10.8 KB / Downloads: 31)

  TBC - oGasai - Grinder, Follower, Fishing & Combat Scripts Included
Posted by: Logitech - 02-16-2019, 02:41 PM - Forum: Bot Base - Replies (44)

oGasai & Grinder for TBC

New release: new .dll and reorganized script files
Download all files here, latest 2019-04-04:
https://cdn.discordapp.com/attachments/5..._04_04.rar

Requirements:
* NavMesh files (mmaps): https://mega.nz/#!g0U2xI4a!aoJICAY34DLvM...Xz4J3rg9dM
  (NavMesh only works in Vanilla Zones. In other zones you can use walk paths for now...)
* Wow has to be in window mode
* Enable auto loot corpse in WoW interface settings. Otherwise it will not loot.

How to install:
1. Extract the .rar archive
2. Extract the mmaps into the same dir
3. Start oGasaiLoader.exe
3. Select your WoW.exe

After injection:
1. Log into the server, choose char, enter world...
2. Choose a Mode and a combat script for your class...
3. Press Start, nav mesh files loads automaticly...

Hotspot Grinding
*There is a hotspot database that auto loads hotspots depending on your level and race. So far there are only some human and night elf locations in the DB.
*Press set current location as hotspot button to see what line you should add in the scripts//db//hotspotDB.lua
* Now you can select any hotspot from the DB in the Path options menu
   

Vendor
* You can add vendors to scripts//db//vendorDB.lua for automatic load on startup
* You can set vendors manually in the UI, this will print the addVendor code to put in the DB if you want
* You can set repair, sell, food, drink, arrow and bullet vendors at the same time
* You can set it to refill food/drinks when below a certain amount

Gather
* Skinning, Herbalism & Mining while grinding

Auto Spend Talents
* Change talents in script_talent.lua

Resting
* script_helper.lua includes food and drinks that the bot searches for you can add more ofc

Mounts
* If the bot doesn't mount, check in script_helper.lua if your mount name is added

Class combat scripts:
* Frost Mage
* Beastmaster Hunter (be sure to disable 'Auto Attack/Auto Shot' in Interface Options -> Combat
* Affliction/Demon Warlock (pet choice Fel Guard > Voidwalker > Imp)
* Retribution Paladin
* Shadow Priest
* Basic Fury Warrior
* Basic Feral Druid
* Basic Rogue Combat
* Basic Shaman Enhancement

Hunter default bag setup:
   

Follower
* Uses the same combat scripts used by the grinder
* A priest follower heals the whole party
* You can set a grinder bot to be group leader with free for all loot
* If a grinder bot is in group it will wait for the group to rest and catch up

Fishing
* Uses the same combat scripts used by the grinder
* Auto attaches lure
* Set a sell vendor and it will sell at full inventory, otherwise it stops then


If you setup it right should look like:
[Image: tbc.png]



Attached Files
.txt   changelog.txt (Size: 2.45 KB / Downloads: 30)

  Mob avoidance and pathing
Posted by: zerger - 02-12-2019, 10:56 PM - Forum: Script development - Lua ressources - No Replies

i am working on scripts that can avoid mobs.
i started to write a script for single static mob avoidance and i try to end up with a system that can avoid/path through groups of moving mobs.
https://www.youtube.com/watch?v=lElsPPEBsI4

here is some theory crafting:

1. we have general navigation through the world using a navmesh
2. we have "steering" which should avoid mobs locally

General assumption:
we want the bot to think/behave human like
we cant see more than 100 yards ahead

we have different character situations:

-"llnm" low level compared to the zone/area mobs without mount (level 5 character in wetlands)
-"slnm" same level compared to the zone/area mobs without mount
-"hlnm" same level compared to the zone/area mobs without mount (level 60 in STV)

-"llm" low level compared to the zone/area mobs with mount (level 40 character in winterspring)
-"slm" same level compared to the zone/area mobs with mount
-"hlsm" higher level compared to the zone/area mobs with 'super' mount

we have different travel situations:

"ldt" long distance travel (getting from menethil to dun modr or from eastern wetlands to a vendor)
"sdt" short different travel (getting to a ore node or avoiding an elite while moving to the next grind target)

in the case of wetlands
steering is useful when:
slnm/llnm sdt

steering is NOT useful when:
llnm ldt (running through the area of 1 will us either get stuck or takes us a long time to find a path)

steering might not be necessary
hlnm/hlsm doing ldt/sdt

[Image: wetlands_abc.png]
[Image: wetlands_numbered.png]


  Resurrection function that avoids mobs for Logitechs grinder
Posted by: zerger - 02-03-2019, 03:14 PM - Forum: Bot Base - No Replies

i wrote a function that tries to find a better spot for res 

logic:
go to corpse
create 1000 random spots and check their distance to surrounding mobs
if there is a spot that has enough distance to all mobs around go there and repop
if not stay at corpse and repop

Issues:
doesn't check when at "save res spot" if there are mobs that are closer now (because they patrol)
doesn't check if you can actually walk to res spot, so you might get stuck

is use fr0s4 improved version but it should also work for logitechs original grinder 

you can change and test 2 variable
1) v.r is aggro range of mobs, so here it would be aggrorange + 10 yards (increase if you want the safespot to be further away from mobs)

Code:
if GetDistance3D(v.x,v.y,v.z,self.move_res_x, self.move_res_y,self.move_res_z) < v.r+10 then

2) you can increase the area that is searched by raisng the ressdistance, on Lh its more like 30 or 35
Code:
ressDistance = 25,



if you want to use it you have to edit "script_grind_logitech.lua"

in the top part add these variables
Code:
    searched_save_repop_spot = false,
    move_res_x = 0,
    move_res_y = 0,
    move_res_z = 0,

somewhere above "function script_grind:run()" add
Code:
function script_grind:MobTable()
-- put enemies in a table    
    local me = GetLocalPlayer();
    objectTable = {};
    local obj_, type_ = GetFirstObject();
    while obj_ ~= 0 do
        if type_ == 3 or type_ == 4 then
            local objX, objY, objZ = obj_:GetPosition();
            -- objR is mob aggro ranged, i tested it  and it is at least 6 and maximum 46, on same lvl its 21
            local objR = obj_:GetLevel() - me:GetLevel() + 21
            if objR > 46 then objR = 46 end;
            if objR < 6 then objR = 6 end;
            local objGUID = obj_:GetGUID();
            local objName = obj_:GetUnitName();
            objectTable[obj_] = {x = objX, y = objY, z = objZ, type = type_, r = objR, GUID = objGUID, name = objName};
        end
        obj_, type_ = GetNextObject(obj_);
    end
end

and replace the  resurrect part in the code between "-- Corpse-walk if we are dead" and "-- Check: If in group wait for members to be within 60 yards and 75% mana" with :
Code:
        if(localObj:IsDead()) then
            self.message = "Walking to corpse...";
            -- Release body
            if(not IsGhost()) then RepopMe(); self.waitTimer = GetTimeEX() + 5000; return; end
            -- Ressurrect within the ress distance to our corpse
            local _lx, _ly, _lz = localObj:GetPosition();
            if(GetDistance3D(_lx, _ly, _lz, GetCorpsePosition()) > 2) and self.searched_save_repop_spot == false then -- if we are more than 2 yards away from corpse AND havent looked for a save resspot
                script_nav:moveToNav(localObj, GetCorpsePosition());
                return;
            else
                if self.searched_save_repop_spot == false then -- if we havent looked for a spot
                    local c_x,c_y,c_z = GetCorpsePosition();
                    script_grind:MobTable();
                
                    for i=1,1000 do  -- there might be no save xy then res at corpse_xy

                         r = self.ressDistance * sqrt(math.random())
                         theta = math.random() * 2 * math.pi
                        
                        save_res_x = c_x + r * math.cos(theta)
                         save_res_y = c_y + r * math.sin(theta)
                        
                        self.move_res_x = save_res_x
                        self.move_res_y = save_res_y
                    
                         isVis, _hx, _hy, _hz = Raycast(self.move_res_x, self.move_res_y, 10000, self.move_res_x, self.move_res_y, -10000);
                        self.move_res_z = _hz
                         self.Is_spot_save = true

                        for i,v in pairs(objectTable) do
                    
                            if v.type == 3     and i:CanAttack() == true  and i:IsCritter() == false then

                                if GetDistance3D(v.x,v.y,v.z,self.move_res_x, self.move_res_y,self.move_res_z) < v.r+10 then -- aggro radius PLUS a save distance
                                    self.Is_spot_save = false;
                                end

                            end
                        end

                        if self.Is_spot_save == true then
                            self.searched_save_repop_spot = true;
                            break; -- break for i do        
                        end
                        
                        if i == 1000 then -- if we dont find a savespot till the last i then there is no savespot
                            self.Is_spot_save = false;
                            self.searched_save_repop_spot = true;
                        end        
                    end -- for i do end

                    if self.Is_spot_save == false then -- if we didnt find a save spot to res, res at corpse xyz
                        self.move_res_x = c_x
                        self.move_res_y = c_y
                        self.move_res_z = c_z
                    end
                end -- if not searched_save_repop_spot end
                
                if self.searched_save_repop_spot == true and--if we looked for a save res position
                 GetDistance3D(_lx, _ly, _lz, self.move_res_x,self.move_res_y,self.move_res_z) < 2 then -- if a we are close to safe res spot
                    script_grind:savePos(); -- save pos so we don't log out (stuck feature)
                    RetrieveCorpse();
                else -- we looked for a save spot and are more than 2 yards away
                    Move(self.move_res_x,self.move_res_y,self.move_res_z);
                end
                
            end
            return;
        end


  Lua emulator
Posted by: zerger - 01-16-2019, 06:05 PM - Forum: Script development - Lua ressources - No Replies

https://repl.it/repls/InnocentCriticalHexadecimal

here you can test your scripts


Exclamation Guide / Tutorial for Wow TBC 2.4.3
Posted by: icencoffe - 01-16-2019, 03:37 AM - Forum: Support - Replies (3)

Hi ! 
first off, thank you so much for creating and sharing this bot, ive been trying to make this bot work on this private server : 
Warmane - OUtland 
wow Burning Crusade 2.4.3

So far, no luck  Sad 

i have tried to Follow all the Guides / Tutorial available, but i believe most of them are made for the Wow Vanilla ?

using : Windows 7 64bit

This is what ive done : 
1. Launch wow 2.4.3 windowed mode 
2. Inject oGasai.dll using Extreme Injector v3.6 from softpedia.com 
3. Login into game
4. Click UI > Menu 
5. Copy Paste Rotation into Rotation box > Click Use Script
[Image: LPLGnlh.png]


* I have tried various Rotation from this forum, mostly from Rotations Section 
* I also have tried to using Logitech's Rotation from This Post

6. Record my own small circular path OR trying out various Path from ppl posting in here
7. Hit RUN

so far, nothing is working, can anyone help shedding a light on this matter ? 
or maybe point me to the right direction for a guide ? 

Thank you  for anyone reading this and willing to help !


  Question about detection
Posted by: K4i - 01-12-2019, 10:24 PM - Forum: Support - Replies (3)

Sadly I have some issues with GM's on Pservers Big Grin
I would ask if the program detect also invisible players so the paranoia script could also detect these and maybe logout or just stay there like it does at these times?
The thought of mine is that when is no one in your area that could see you nothing will know you are botting and will ever report you that you get screwed or watched by gm's.


  My Waypoint on some Regions not reachable
Posted by: K4i - 01-12-2019, 10:21 PM - Forum: Support - Replies (3)

Hi,
first of all thank you, I love your work! The pathfinding algo and so on to program are awesome. Sadly I have some issues in Mulgore that when I start the bot from random location (especially the point where you come from the starting place) the char couldn't reach the created hotspot point. The same behaviour I have recognized at the hinterlands. Is that maybe a problem of the mmaps or could it be that the hotspot script has some issues?