All pastes #25590 Raw Edit

Mine

public java v1 · immutable
#25590 ·published 2005-10-15 14:21 UTC
rendered paste body
class file1: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.L2JAIExtension;public class AIScript{    private static Logger _log = Logger.getLogger(AIScript.class.getName());    private static L2JAIExtension fs;    private static AIScript _instance;    private static final int AIVersion=100;    public boolean _debug;    public AIScript()    {        fs = new L2JAIExtension();        reload();    }        public static AIScript getInstance()    {        if(_instance == null)            _instance = new AIScript();        return _instance;    }        public void reload()    {        try        {            _log.info("AIScript: loading script...");            fs.reset();            fs.load( new FileReader(Config.DATAPACK_ROOT+"/data/ai.obj"));            _log.info("AIScript: executing...");            fs.run();            _debug = false;                        if((Integer)(fs.getScriptVar("L2JAIVersion")) != AIVersion)            {                _log.warning("Invalid ai.obj version!");            }                        if((Integer)(fs.getScriptVar("L2JAIDebug")) == 1)            {                _log.info("AIScript: debugging enabled");                _debug = true;            }        }        catch(Exception e)        {            _log.warning("Error loading ai.obj: "+e);            e.printStackTrace();        }    }        /**     * Handle interrupt issued by AbstractAI onEvent handler     * @param handler - handler name     * @param params - params array     * first param are always reference to 'self' - caller ObjectID     * @return - ai handler output value, <b>CAN BE NULL</b>     */    public Object handleInterrupt(String handler,ArrayList params)    {         Object result = null;                if(params == null)        {            params = new ArrayList<Integer>();        }                try        {            result = fs.callScriptFunction(handler,params);        }        catch(Exception e)        {            _log.warning("AIScript: ERROR WHILE HANDLING INTERRUPT! "+e);        }        return result;    }}class file2:package net.sf.l2j.fscript;import java.util.ArrayList;import net.sf.l2j.gameserver.AIScript;import net.sf.l2j.gameserver.model.L2Character;import net.sf.l2j.gameserver.model.L2NpcInstance;import net.sf.l2j.gameserver.model.L2PcInstance;import net.sf.l2j.gameserver.model.L2World;import net.sf.l2j.gameserver.serverpackets.CreatureSay;public class L2JAIExtension extends FScript{    private Object files[];        /**Constructor*/    public L2JAIExtension()    {        super();        files=new Object[25];    }        public Object callFunction(String name,ArrayList param) throws FSException    {        if (name.equals("dbgprint"))        {            if(AIScript.getInstance()._debug)            {                String s="";                for(int n=0;n<param.size();n++)                {                    s=s+param.get(n);                }                System.out.println(s);            }        }        else if(name.equals("GetPlayerName"))        {            Integer objectId = (Integer)param.get(0);            L2PcInstance player = (L2PcInstance)L2World.getInstance().findObject(objectId);            if(player != null)                return player.getName();        }        else if(name.equals("Say"))        {            Integer objectId = (Integer)param.get(0);            String s="";            for(int n=1;n<param.size();n++)            {                s=s+param.get(n);            }                        L2Character npc = (L2Character)L2World.getInstance().findObject(objectId);            if(npc != null)                npc.broadcastPacket(new CreatureSay(objectId,0,npc.getName(),s));        }        else if(name.equals("GetHP"))        {            Integer objectId = (Integer)param.get(0);            L2Character npc = (L2Character)L2World.getInstance().findObject(objectId);                if(npc != null)                    return npc.getCurrentHp();        }        else if(name.equals("GetMP"))        {            Integer objectId = (Integer)param.get(0);            L2Character npc = (L2Character)L2World.getInstance().findObject(objectId);            if(npc != null)                return npc.getCurrentMp();        }        else if(name.equals("GetNpcClass"))        {            Integer objectId = (Integer)param.get(0);            L2NpcInstance npc = (L2NpcInstance)L2World.getInstance().findObject(objectId);            if(npc != null)                return npc.getTemplate().type;        }        else if(name.equals("GetNpcFaction"))        {            Integer objectId = (Integer)param.get(0);            L2NpcInstance npc = (L2NpcInstance)L2World.getInstance().findObject(objectId);            if(npc != null)                return npc.getTemplate().factionId;        }        else        {            super.callFunction(name,param);        }        return new Integer(0);    }}patch:Index: C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/GameServer.java===================================================================--- C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/GameServer.java	(revision 1250)+++ C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/GameServer.java	(working copy)@@ -30,6 +30,7 @@ import net.sf.l2j.gameserver.handler.SkillHandler; import net.sf.l2j.gameserver.handler.UserCommandHandler; import net.sf.l2j.gameserver.handler.VoicedCommandHandler;+import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminAI; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminAdmin; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminAnnouncements; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminBan;@@ -409,6 +410,7 @@         _adminCommandHandler.registerAdminCommandHandler(new AdminMammon());         _adminCommandHandler.registerAdminCommandHandler(new AdminUnblockIp());         _adminCommandHandler.registerAdminCommandHandler(new AdminPledge());+        _adminCommandHandler.registerAdminCommandHandler(new AdminAI());          //_adminCommandHandler.registerAdminCommandHandler(new AdminRadar());         _log.config("AdminCommandHandler: Loaded " + _adminCommandHandler.size() + " handlers.");Index: C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/ai/L2AttackableAI.java===================================================================--- C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/ai/L2AttackableAI.java	(revision 1250)+++ C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/ai/L2AttackableAI.java	(working copy)@@ -22,11 +22,13 @@ import static net.sf.l2j.gameserver.ai.CtrlIntention.AI_INTENTION_ATTACK; import static net.sf.l2j.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE; +import java.util.ArrayList; import java.util.Random; import java.util.concurrent.Future; import java.util.logging.Logger;  import net.sf.l2j.Config;+import net.sf.l2j.gameserver.AIScript; import net.sf.l2j.gameserver.ClientScheduler; import net.sf.l2j.gameserver.GameTimeController; import net.sf.l2j.gameserver.Territory;@@ -94,7 +96,6 @@ 	{ 		// Launch actions corresponding to the Event Think 		onEvtThink();-		 	} 	 	/**@@ -676,6 +677,11 @@ 	 */ 	protected void onEvtAttacked(L2Character attacker) 	{+        ArrayList<Object> args = new ArrayList<Object>();+        args.add(_actor.getObjectId());+        args.add(attacker.getObjectId());+        AIScript.getInstance().handleInterrupt("onEventAttacked",args);+ 		// Calculate the attack timeout 		_attack_timeout = MAX_ATTACK_TIMEOUT + GameTimeController.getGameTicks(); 		admin handler:package net.sf.l2j.gameserver.handler.admincommandhandlers;import net.sf.l2j.gameserver.AIScript;import net.sf.l2j.gameserver.handler.IAdminCommandHandler;import net.sf.l2j.gameserver.model.L2PcInstance;public class AdminAI implements IAdminCommandHandler{    private static String[] _adminCommands = {"admin_ai_reload"};        public boolean useAdminCommand(String command, L2PcInstance activeChar)    {        if (command.equals("admin_ai_reload"))        {            AIScript.getInstance().reload();        }                return true;    }        public String[] getAdminCommandList()    {        return _adminCommands;    }}ai.obj:int L2JAIVersion=100int L2JAIDebug=1func onIdle(int objectId)  dbgprint("idle")endfunc###########################################       real events goes here##########################################func onEventThink(int self)    dbgprint("handling event: Think ")endfuncfunc onEventAttacked(int self, int attacker)    dbgprint("handling event: Attacked, by oid: "+attacker)    string playerName=getPlayerName(attacker)    #dbgprint(playerName)    double currentHp=GetHP(self)    Say(self,"OMFG! I'm attacked by "+playerName+"! My hp are: "+currentHp)    string class=GetNpcClass(self)    dbgprint("class: "+class)endfuncfunc onEventAggression(int self, int target, int value)    dbgprint("handling event: Aggression")endfuncfunc onEventReady(int self)    dbgprint("handling event: ready")endfuncfunc onEventArrived(int self)    dbgprint("handling event: Arrived")endfuncfunc onEventDead(int self)    dbgprint("handling event: Dead")endfunc