rendered paste bodypackage net.sf.l2j.gameserver;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.logging.Logger;
import net.sf.l2j.Config;
import net.sf.l2j.fscript.BasicIO;
public class AIScript
{
private static Logger _log = Logger.getLogger(AIScript.class.getName());
private static BasicIO fs;
private static AIScript _instance;
public AIScript()
{
fs = new BasicIO();
try
{
_log.info("AIScript: loading script...");
fs.load( new FileReader(Config.DATAPACK_ROOT+"/ai.obj"));
_log.info("AIScript: executing...");
fs.run();
}
catch(Exception e)
{
_log.warning("Error loading ai.obj: "+e);
e.printStackTrace();
}
}
public static AIScript getInstance()
{
if(_instance == null)
_instance = new AIScript();
return _instance;
}
public Object handleInterrupt(String handler,ArrayList params)
{
Object result = null;
if(params == null)
{
params = new ArrayList<Integer>();
params.add(new Integer(0));
}
try
{
result = fs.callScriptFunction(handler,params);
}
catch(Exception e)
{
_log.warning("AIScript: ERROR WHILE HANDLING INTERRUPT! "+e);
}
return result;
}
}
call from CharacterAI:
protected void onIntentionActive()
{
AIScript.getInstance().handleInterrupt("onIdle",null);
.....
.....
script:
func onIdle(int Objectid)
println("idle")
endfunc
then server shows:
AIScript: loading script...
AIScript: executing...
idle
idle