Jump to content

Recommended Posts

Posted (edited)

I decided to share some knowledge regarding AI system on L2J, since someone asked me.

 

Hello Tryskell , I would like to learn about AIs? Are they important in L2J? Can you give me some info about them(about what exactly they are) because I see them a lot And i can't understand a lot. And then if you could tell me some .java files to read (from eclipse , l2 acis) to understand them better how they work? (with the proper row if possible)
thank you a lot, i wait for your answer !

 

 

Hello, you got different types of AIs and aspects, they all are melted together to form something called "AI".

 

You have to understand AI works differently on L2OFF compared to L2J. On L2OFF, each NPC got its particular script, while on L2J all is mutualized, then few scripts bypass basic behavior.

 

AI TYPES

 

To begin with, you got AI types. L2 got few : DEFAULT, MAGE, HEALER, ARCHER. Default launch skills under a 10 or 15% chance, and melee attack. Mage only launch skills, 2 types (far or near skills) depending about player position. They attack when oom. Healer only heal and flee under attack. Archers attack and got a % to flee when a player is near them.

 

GENERIC AI BEHAVIOR

 

On L2J, as stated higher, the behavior of any mob is mutualized under a unique AI script system. This system is localized into gameserver.ai. Then few scripts, located under data/scripts (notably the ai folder) bypass the regular behavior to handle special cases.

 

Generic AI system is kinda simple : an AI Object is linked to a L2Character, via the getAI() method (which creates this object if missing). The base of all AI is named AbstractAI, the behavior is shared amongst all AI types, or eventually overidden if it doesn't fit. Different AIs are linked to different types of instance : for example, L2PcInstance would be linked to a L2PlayerAI (which inherits behavior from L2PlayableAI, L2CharacterAI and AbstractAI).

 

The generic system works under an Intention system (Desire on L2OFF), you can find all (documented) cases on CtrlIntention.java. L2 is supposed to store the current and future intentions. Another layer used by the AI system in order to send the correct intention is CtrlEvent.java ; it lists all possible scenarii. AbstractAI got a follow task, L2AttackableAI got a general task (which allows the mob to interact every second with his environnement depending about the intention and event), while L2SummonAI got a avoid task (used when you hit a summon, he flees).

 

SCRIPTED AI BEHAVIOR

 

Another layer of AI system is called by scripts. Scripts handle specific scenarii, which would requiere to create a specific AI for a specific npcId. This system is heavily supported by quest system, notably Quest.java. QuestEventType lists all possible events. Basically said, listeners are written on specific point of code (aggro, cast a spell, move, etc). Once a listener is triggered, the content of script is used, which allow to bypass generic AI behavior. An important script is named L2AttackableAIScript.java. Those scripts are stored under data/scripts folder.

Edited by Tryskell
  • Upvote 2
Posted

Because it is important, i'll find time to sit in the evening to i learn what you say, reading. It is very important ...

Thank you for this share mate!

I want to know more about java, and it helps to i know a part of what i want..

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...