nostrademous / dota2-fulloverwrite Goto Github PK
View Code? Open in Web Editor NEWWork in progress for a full-overwrite Dota 2 bot framework
License: GNU General Public License v3.0
Work in progress for a full-overwrite Dota 2 bot framework
License: GNU General Public License v3.0
Implement buying items from side-shop if near one.
I read a few tutorials of how to do pull requests or stuff, but I don't get it.
I cloned it to my desktop. There is now a page "GitHub.com/ByBurton/Dota2-FullOverwrite".
But HOW can I put my changes I do in the desktop to yours, or to my browser thing?
The bots need to understand how to use the backpack feature - I see them running around with a complete Shadow blade, power treads etc. in their backpack.
The other issue is already mentioned (they do not sell items).
I understand that this is still heavily under development, but I think that should be easy to implement? Idk.
Also I want to mention it here and not open a new threat - as soon as someone makes a PA bot, I hope you gonna make her lasthit with daggers if she is outzoned, too much under harassment.
But holy shit, that bloodseeker bot and Lina are actually impressive already. Good job guys!
And holy shit you worked a lot on this today.
Write the logic for under what conditions we should go ward.
When any bot under our control goes into "ACTION_FIGHT" mode... we should search surrounding area (I'm thinking 2500 range) for Allied Bots and notify them to help out and join fight. This needs to be done cleanly through adding to their actionStack and not just setting their action so that after the fight is "done" they can return to what they were doing.
Write the logic under what conditions we should Roshan.
Is there a way of outsourcing the ItemPurchaseThink, SaveUpdates and LoadUpdates (Maybe others as well)?
Having these in each bots files seems a little redundant.
If not where should I put it, I need a function like that for considering offensive/defensive item purchases.
Currently in laning phase we don't care about height differences for purposes of positioning and last-hitting. Let's fix that.
Global: GetHeightLevel( locVector ) is available to us. We could check it for our location and target location and make positional adjustments as necessary to make our position >= target z-axis height
Currently even when pushing towers we back off as soon as we take any damage from creeps or tower as there are no rule exceptions written for this when pushing towers.
And I can't figure out why.. Is there a good way to debug that? A logfile that I can look into or something? It probably is just something little but my IDE doesn't show me those probably obvious mistakes, in fact it doesn't tell me anything :(
There should be separate files for the DetermineXYZ and DoXYZ functions, I think.
Currently the bots know when they should push a tower, but have no code for attacking a tower or using abilities on tower (think Jakiro's Liquid Fire).
I'm getting a lot of
[VScript] GetItemCost parameter 1: expected cstring but got hscript.
starting at about 3:30 into the game.
Is this a known issue?
Let's write some rules for using Eul's - especially for comboing on Lina
I fixed it. Just need to figure out how to push it.
The functions are kind of all over the place right now, I will attempt to sort them for readability.
I will add a few table functions like to check if a table contains a key and make some existing functions
available
Wiki says you will consider piece-wise purchasing and track what you already bought to help determine if you need to purchase an item you might already have. This is not the case.
I don't see self.BoughtItems being really used anywhere to check... just populated
Hey guys,
I'm new to Lua and I usually use Visual Studio for coding,
however the Lua support for it isn't exactly what I'd call great..
What IDE do you use, is there one that offers as many comfortable features
sort of like Visual Studio or is there an extension I don't know about yet?
Unfortunately currently courier controls don't exist to send courier anywhere... so we must implement direct pathing code to secret shop when we need items from there.
Title - should be easy as only two non-passive abilities
Trying this in my fork.
Just in case anyone is wondering.
Is there a way of getting all visible enemy heroes? GetNearbyHero doesn't work on big ranges. I can't gank with just 1500 EyeRange.
Currently BS will retreat if he falls below the maximum of (15% health, 100 hp). What sometimes happens is that he is 1 more hit away from killing a remaining neutral creep that would have healed him up, but he hits the threshold and start running away... this is dumb. We should add code to check if he can kill something and heal up before getting killed using GetEstimateDamage()
Need to implement some form of item recycling when they are no longer needed, like ironwood branches.....
If we are flanked by enemy heroes we should look to path away from all visible enemies, not just path straight back in our lane (potentially into the ganking hero).
I was stupid when I wrote the code for moving items and assumed the "empty holes" would only exist at the end of the inventory and not in the middle... must fix
This should be the actual fight mechanics as well as determining if it is safe to fight or continue an existing fight.
Is that possible? I would like to add how to implement a item_purchase_SomeNewBot since that works a little bit different now.
I'd like to build some basic roaming, to allow Bloodseeker to get more active during the laning phase.
What I want to do:
Are there any functions yet, to get data about lanes?:
This should yield good results and not be to hard to implement for now. Later on, this should be integrated with some overall tactic considerations and fighting logic.
Melee heroes need better approach code for last hitting and denying then the currently implemented code that favors ranged heroes.
I updated the code to use GetExtrapolatedLocation() with the LSA CastPoint as the argument. But I'm seeing strange behavior.
Sometimes the location is wildly off - perhaps the implementation of GetExtrapolatedLocation() is not so good.
When I use LSA in the Combo function it will print that it is using it but half the time it doesn't. It is like the bot doesn't realize it is using an ability and move-cancels it even though I have detection for Channeling and IsUsingAbility early on in the decision_tree Think()
I think all 3 of us are needing this information.
I want to make sure all 3 of us are not implementing different solutions (or even the same solution and wasting time).
Who is doing anything with this?
I assume we will be basically working using the enemy_data.lua but re-writing chunks of it using the new Valve provided APIs of:
Write the logic for checking if Allies are in trouble and need help.
Probably the easiest way to do this is to use a setHeroVar("NeedHelp", true) for all heroes that are close to dying, in ACTION_RETREAT state and being chased. Then we should check how close we can TP to them (if we have TP) to determine how soon we can get there.
Just noticed that my depth-first search algorithm doesn't seem to be behaving properly with the recent add of all the new heroes to the pool. It should work, but currently it's not selecting a mid hero, but rather sending Lina to the semi-support Role along with Bane leaving mid empty.
Should go into item_usage.lua under both: TeamItems and RegenItems
To start - let's just implement it when ACTION_RETREAT is happening.
Later we can use it when chasing down heroes or moving to locations.
Use a tango on a nearby tree when necessary. Check for shared tangos first.
Title says it all
That makes it unnecessary to list every single part of an item instead of the actual item.
Should return a table with the components.
So when I try to get values from global hero data that doesn't work,
it always returns a nil value. The first time an item purchase script is called it calls an init function,
that init functions needs to be able to access the role a hero has. However when I try to get the role
it doesn't do anything.. I still don't fully understand how data is stored in global hero data and who can access is, so that might be part of why it doesn't work.
I guess something is off with the calculation. Not sure though.
It's the line
(bot:GetHealth() < (bot:GetMaxHealth()*0.17*(nEn-nAl+1) + nTo*110))
And it happened at about 34% life.
it also returns 1 if we're already retreating to fountain, making it impossible to differentiate these cases.
Implement Use of Faerie Fire when hero is about to die and Was Recently Damaged by either tower or enemy heroes.
I recently checked in a functional implementation in decision_tree.lua for function X:DoGetRune(npcBot)
It will pick up any rune if we are close to it (within 450 units) - however no code is written to path to runes at appropriate timings (based on rune spawns).
Needs to go into decision_tree.lua "function X:Determine_ShouldGetRune(bot)". Keep in mind fall-through logic here with the "return"
Just make a starter Bane bot
Will need to determine when it is better to go there ourselves versus sending the courier.
We now have working code to pickup RUNES (bounty and power-up) if we HAPPEN to walk near their location (1000 units) and they happen to be there (RUNE_STATUS_AVAILABLE is true).
We DO NOT have any code to go towards their location based on hard-coded spawn times.
Only reason the bots still loose to default bots is b/c they never rotate out of their lane/jungle assignments. They own respectively in that category, but when bots 5-man push down mid... they don't respond in kind.
Need to implement the DefendAlly and DefendObjective functions.
Implement support pulling and stacking of Neutrals
I recently checked in a lot of code for Jungle Stacking - timings, vectors for approach and vectors to go to when pulling, etc.
need to complete work
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.