Jump to content

Elfo

Legendary Member
  • Posts

    2,009
  • Credits

  • Joined

  • Last visited

  • Days Won

    54
  • Feedback

    0%

Everything posted by Elfo

  1. I will start working on a kinda important update today. The FakePlayerAI will be split two two AIs, one for combat and one for general functions. This makes the system more flexible. Here is a list of things that will be added. It also shows the hierarchy system im going for. FakePlayerAI CombatAI Class Ais Here SocialAI WalkerAI EnchanterAI MerchantAI PrivateStoreSellAI PrivateStoreBuyAI CrafterAI TraderAI setFakeAi drives the current AI onFakeAiSet event will be triggered which will give all the necessary items for this ai After the separation the methods will be split in the following way. FakePlayerAI methods public abstract void thinkAndAct(); protected void tryTargetRandomCreatureByTypeInRadius(Class<? extends Creature> creatureClass, int radius) protected void applyDefaultBuffs() protected abstract int[][] getBuffs(); public void castSpell(L2Skill skill) protected void castSelfSpell(L2Skill skill) protected void clientStopMoving(SpawnLocation loc) protected boolean checkTargetLost(WorldObject target) protected boolean maybeMoveToPosition(Location worldPosition, int offset) protected void moveToPawn(WorldObject pawn, int offset) public void moveTo(int x, int y, int z) protected boolean maybeMoveToPawn(WorldObject target, int offset) CombatAI methods protected volatile boolean _clientAutoAttacking; public boolean isPickingMageSpell() protected abstract List<OffensiveSpell> getOffensiveSpells(); protected abstract List<HealingSpell> getHealingSpells(); protected abstract List<SupportSpell> getSelfSupportSpells(); protected abstract ShotType getShotType(); protected void tryAttackingUsingMageOffensiveSkill() protected void handleShots() public HealingSpell getRandomAvaiableHealingSpellForTarget() protected BotSkill getRandomAvaiableMageSpellForTarget() private BotSkill waitAndPickAvailablePrioritisedSpell(List<? extends BotSkill> spellsOrdered, int skillListSize) protected L2Skill getRandomAvaiableFighterSpellForTarget() protected void selfSupportBuffs() protected int getArrowId() protected int getShotId()
  2. Well apparently (If you read the comments above) if you fix one change that acis did, it will work.
  3. No, players are barely buffed. Melee users and archers have autoattack so its more than once a second when possible. For mages yeah it is one per second but when i add the queuing system it will be more.
  4. Is that an actual question? it works everywhere but obviously you have to adapt the code.
  5. Comments that involve bugs will be ignored. Use github instead. This is not a troubleshooting thread
  6. it's already been answered. Search in the topic. Also use the code tag
  7. Well i definitely need to have 1 sec intervals for the players. The problem is that unless i optimize the code from the beginning, the one thread thing will cause performance issues in my case. I'm kinda overloading the methods with logic so he math just doesn't add up to calculate everything for everyone in a second. I wanna finish all the classes first, and then add some social interactions. After that i will look into optimizing it as much as possible. The monster system is getting away with it with the intention system. I wanna implement a similar decision queue system. Once that is done the task manager will be dropped. Something is null. Check those lines at com.elfocrash.roboto.FakePlayerManager.createRandomFakePlayer(FakePlayerManager.java:190) at com.elfocrash.roboto.FakePlayerManager.spawnPlayer(FakePlayerManager.java:81) at com.elfocrash.roboto.admincommands.AdminFakePlayers.useAdminCommand(AdminFakePlayers.java:57) Read the code. Also this is not a support thread. If you have any issues go to the github page https://github.com/Elfocrash/L2jRoboto
  8. I still think, especially from testing, that if people use this correctly they will be able to balance their servers better. This has a lot of testing potential. For example you know how many full geared full buffed players it takes to kill a specific boss in a certain amount of time. It also allows you to test 1v1 pvps. It comes down to how greedy admins will get.
  9. Update Added //deletefakes command Testing all the classes in raid bosses. It looks pretty smooth.
  10. Update Added the healing concept. Added Bishop AI. Changed some skill calculations.
  11. Update Removed probability and random attack skill picking. Added priority which drives skill picking. Changed a few things and performance is now better than before (was able to load up to 380 in antharas without issue) Stress tested in areas populated with mobs and even though CPU usage is clearly higher, it is not something to worry about.
  12. Well if you played in any high profile server for the past 2 years then you definitely played with bots. This is nothing new. It’s just the first time that it is publicly available. as I said before people should not use it, but I’m still gonna develop it till I’m bored.
  13. I think you are missing the point. i don’t encourage anyone to use it but it is insanely fun to develop so so why not share it as well. now if someone wants to use it that’s none of my business
  14. They spam what’s available based on probability which means that the cooldowns drive priority. The plan is ofc to do what I did with the support skills and also add priority and target criteria
  15. Sweets also deleted my stress testing post. Anyways the bottom line is, don’t spawn a shit ton of bots that are attacking because you will have some performance issues. Bots will less functionality should be fine though. there are ways to address them but it is not s priority for now
  16. Did some testing with many bots in one area and that's where shit hits the fan. Did some optimisations but threading was never my thing in java. I was able to load up to 280 bots that were fighting with Antharas at the same time. Could go higher but then i doubt i could move easily. There is definitely a lot of room for improvement but iterating over 50 players per task in 1 second comes with performance sacrifice. I will probably add a queue decision system where if the next decision is available at the time of the first iteration then i will queue it and exclude the bot from the next one. Also keep in mind that this is the case only for the combat bots. Idle bots, chat bots, movement/movement path bots and any other type of bot that won't require any intense calculation won't have any performance drawback.
  17. https://github.com/Elfocrash/L2jRoboto/archive/master.zip
  18. Im not talking about run away to hit. Im talking about the thing that players do when they move right and left for no real reason. Also the skill lists are only related to the active skills. The bots do learn all the skills including the passives for their levels. What he was talking about is the ones that the bots will actually use not the ones they learn.
×
×
  • Create New...