package 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(); 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