All pastes #40309 Raw Edit

Unnamed

public java v1 · immutable
#40309 ·published 2006-02-06 11:44 UTC
rendered paste body
Index: C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/actor/instance/L2MonsterInstance.java===================================================================--- C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/actor/instance/L2MonsterInstance.java	(revision 1363)+++ C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/actor/instance/L2MonsterInstance.java	(working copy)@@ -18,6 +18,7 @@  */ package net.sf.l2j.gameserver.model.actor.instance; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Random;@@ -28,6 +29,7 @@ import net.sf.l2j.gameserver.model.L2Attackable; import net.sf.l2j.gameserver.model.L2Character; import net.sf.l2j.gameserver.model.actor.monster.MonsterKnownList;+import net.sf.l2j.gameserver.script.fscript.AIScriptManager; import net.sf.l2j.gameserver.templates.L2NpcTemplate; import net.sf.l2j.gameserver.util.MinionList; @@ -100,6 +102,10 @@      	public void OnSpawn() 	{+		ArrayList<Object> args = new ArrayList<Object>();+		args.add(getObjectId()); // self+		AIScriptManager.getInstance().callFunc(getAiClass(),"onEventSpawned",args);+         super.OnSpawn(); 		try 		{@@ -199,11 +205,21 @@          public void notifyMinionDied(L2MinionInstance minion)     {+		ArrayList<Object> args = new ArrayList<Object>();+		args.add(getObjectId()); // self+		args.add(minion.getObjectId());+		AIScriptManager.getInstance().callFunc(getAiClass(),"onEventMinionDied",args);+         minionList.removeSpawnedMinion(minion);     }          public void notifyMinionSpawned(L2MinionInstance minion)     {+		ArrayList<Object> args = new ArrayList<Object>();+		args.add(getObjectId()); // self+		args.add(minion.getObjectId());+		AIScriptManager.getInstance().callFunc(getAiClass(),"onEventMinionSpawned",args);+         minionList.addSpawnedMinion(minion);     }     Index: C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java===================================================================--- C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java	(revision 1363)+++ C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java	(working copy)@@ -28,6 +28,8 @@ import net.sf.l2j.gameserver.model.L2Multisell; import net.sf.l2j.gameserver.model.L2World; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;+import net.sf.l2j.gameserver.model.geodata.GeoParser;+import net.sf.l2j.gameserver.script.fscript.AIScriptManager; import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage; import net.sf.l2j.gameserver.serverpackets.PlaySound; import net.sf.l2j.gameserver.serverpackets.ServerBasePacket;@@ -47,7 +49,7 @@  private static String[] _adminCommands = {"admin_admin","admin_play_sounds","admin_play_sound",                                            "admin_gmliston","admin_gmlistoff","admin_silence",                                            "admin_atmosphere","admin_diet","admin_tradeoff",-                                           "admin_reload"};+                                           "admin_reload","admin_geo"}; 	private static final int REQUIRED_LEVEL = Config.GM_MENU;  	public boolean useAdminCommand(String command, L2PcInstance activeChar) {@@ -176,6 +178,25 @@                     activeChar.sendMessage("tradeoff currently disabled");             }                     }+        else if(command.startsWith("admin_geo"))+        {+        	int cx = activeChar.getX();+        	int cy = activeChar.getY();+        	int cz = activeChar.getZ();+        	+        	int gZ = GeoParser.getInstance().getBlockHeight(cx,cy);+        	int gT = GeoParser.getInstance().getBlockType(cx,cy);+        	+        	activeChar.sendMessage("======= debug world =======");+        	activeChar.sendMessage("clientX: "+cx);+        	activeChar.sendMessage("clientY: "+cy);+        	activeChar.sendMessage("clientZ: "+cz);+        	activeChar.sendMessage("serverZ: "+gZ);+        	activeChar.sendMessage("blockType: "+gT);+        	activeChar.sendMessage("movement flag: "+0); //TODO+        	activeChar.sendMessage("floor flag: "+0); //TODO+        	activeChar.sendMessage("======= report end =======");+        }         else if(command.startsWith("admin_reload"))         {             StringTokenizer st = new StringTokenizer(command);@@ -200,10 +221,15 @@                     NpcTable.getInstance().reloadAllNpc();                     activeChar.sendMessage("npcs reloaded");                 }+                else if(type.equals("ai"))+                {+                	AIScriptManager.getInstance().init();+                	activeChar.sendMessage("AI reloaded");+                }             }             catch(Exception e)             {-                activeChar.sendMessage("Usage:  //reload <multisell|skill|npc>");+                activeChar.sendMessage("Usage:  //reload <multisell|skill|npc|ai>");             }         } Index: C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/GameServer.java===================================================================--- C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/GameServer.java	(revision 1363)+++ C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/GameServer.java	(working copy)@@ -34,6 +34,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;@@ -66,9 +67,9 @@ import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminRepairChar; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminRes; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminRideWyvern;-import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSiege; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminShop; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminShutdown;+import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSiege; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSkill; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSpawn; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminTarget;@@ -130,10 +131,11 @@ import net.sf.l2j.gameserver.model.AutoChatHandler; import net.sf.l2j.gameserver.model.AutoSpawnHandler; import net.sf.l2j.gameserver.model.L2World;+import net.sf.l2j.gameserver.model.geodata.GeoParser; import net.sf.l2j.gameserver.model.quest.Quest; import net.sf.l2j.gameserver.script.faenor.FaenorScriptEngine;+import net.sf.l2j.gameserver.taskmanager.TaskManager; import net.sf.l2j.status.Status;-import net.sf.l2j.gameserver.taskmanager.TaskManager;  /**  * This class ...@@ -376,6 +378,7 @@         _adminCommandHandler.registerAdminCommandHandler(new AdminLogin());         _adminCommandHandler.registerAdminCommandHandler(new AdminCache());         _adminCommandHandler.registerAdminCommandHandler(new AdminZone());+        _adminCommandHandler.registerAdminCommandHandler(new AdminAI());          //_adminCommandHandler.registerAdminCommandHandler(new AdminRadar());         _log.config("AdminCommandHandler: Loaded " + _adminCommandHandler.size() + " handlers.");@@ -426,6 +429,8 @@             e.printStackTrace();         }         +        GeoParser.getInstance();+                 _log.config("IdFactory: Free ObjectID's remaining: " + IdFactory.getInstance().size());  		System.gc();Index: C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/ai/L2AttackableAI.java===================================================================--- C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/ai/L2AttackableAI.java	(revision 1363)+++ C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/ai/L2AttackableAI.java	(working copy)@@ -22,6 +22,7 @@ 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.Collection; import java.util.Random; import java.util.concurrent.Future;@@ -44,6 +45,7 @@ import net.sf.l2j.gameserver.model.actor.instance.L2MonsterInstance; import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;+import net.sf.l2j.gameserver.script.fscript.AIScriptManager;   /**@@ -258,6 +260,11 @@ 	 */ 	protected void onIntentionAttack(L2Character target) 	{+		ArrayList<Object> args = new ArrayList<Object>();+		args.add(_accessor.getActor().getObjectId()); // self+		args.add(target.getObjectId()); // attack target+		AIScriptManager.getInstance().callFunc(_accessor.getActor().getAiClass(),"onIntentionAttack",args);+ 		// Calculate the attack timeout 		_attack_timeout = MAX_ATTACK_TIMEOUT + GameTimeController.getGameTicks(); 		@@ -376,7 +383,7 @@         if (_actor instanceof L2GuardInstance)         { 			// Order to the L2GuardInstance to return to its home location because there's no target to attack-			((L2GuardInstance)_actor).returnHome();+			//((L2GuardInstance)_actor).returnHome();         }                   // If this is a festival monster, then it remains in the same location.@@ -695,6 +702,11 @@ 	 */ 	protected void onEvtAttacked(L2Character attacker) 	{+		ArrayList<Object> args = new ArrayList<Object>();+		args.add(_accessor.getActor().getObjectId()); // self+		args.add(attacker.getObjectId()); // attacker+		AIScriptManager.getInstance().callFunc(_accessor.getActor().getAiClass(),"onEventAttacked",args);+ 		// Calculate the attack timeout 		_attack_timeout = MAX_ATTACK_TIMEOUT + GameTimeController.getGameTicks(); 		@@ -737,6 +749,13 @@ 		{ 			L2Attackable me = (L2Attackable)_actor;  			+			ArrayList<Object> args = new ArrayList<Object>();+			args.add(_accessor.getActor().getObjectId()); // self+			args.add(target.getObjectId()); // potential victim :)+			args.add(aggro); // aggression rate+			AIScriptManager.getInstance().callFunc(_accessor.getActor().getAiClass(),"onEventAggression",args);++			 			// Add the target to the actor _aggroList or update hate if already present 			me.addDamageHate(target, 0, aggro); 			Index: C:/eclipse/workspace/L2_GameServer_c4/build.xml===================================================================--- C:/eclipse/workspace/L2_GameServer_c4/build.xml	(revision 1363)+++ C:/eclipse/workspace/L2_GameServer_c4/build.xml	(working copy)@@ -41,6 +41,7 @@         	<include name="bsh-2.0.jar"/>         	<include name="jython.jar"/>         	<include name="javolution.jar"/>+        	<include name="FScript.jar"/>         </fileset>     </path>        Index: C:/eclipse/workspace/L2_GameServer_c4/.classpath===================================================================--- C:/eclipse/workspace/L2_GameServer_c4/.classpath	(revision 1363)+++ C:/eclipse/workspace/L2_GameServer_c4/.classpath	(working copy)@@ -11,5 +11,6 @@ 	<classpathentry kind="lib" path="lib/mysql-connector-java-3.1.10-bin.jar"/> 	<classpathentry kind="lib" path="lib/javolution.jar"/> 	<classpathentry kind="lib" path="lib/sqljdbc.jar"/>+	<classpathentry kind="lib" path="lib/FScript.jar"/> 	<classpathentry kind="output" path="bin"/> </classpath>called by gameserver(ai script should provide that functions):onEventMinionDied(self,minion)onEventMinionSpawned(self,minion)onIntentionAttack(self,target)onEventSpawned(self)onEventAggression(self,target,aggro)onEventAttacked(self,attacker)onEventSeeCreature(self,creature,dist) // dist are always < 1000onEventSeeSpell(/*notdone*/)exported by AI engine(can be called from ai script):getStat(actor,stat) // stat are 0,1,2,3,4,5(hp,mp,cp,lvl,name,race(0-4 - player, 5 - mob))sayMessage(actor,type,msg)useSkill(actor,skillid,skillLevel,hitTime,reuseTime)spawnCreature(npcid,count,x,y,z)moveToLocation(actor,x,y,z)teleToLocation(actor,x,y,z)setFlag(actor,flag_name,flag_value)getFlagString(actor,flag_name)getFlagInteger(actor,flag_name)calcRandom(range)setTimer(/*notdone*/)//reload ai//setai <ai>