Advertisement
xXolitudEe

WanderScript

Oct 24th, 2018
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.79 KB | None | 0 0
  1. package wow.server.net.game.system.ai;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.LinkedList;
  5. import java.util.Random;
  6.  
  7. import wow.net.packet.world.PacketGObject;
  8. import wow.server.net.WoWServer;
  9.  
  10. public class WanderScript extends Script {
  11.    
  12.     private float movementTime, idleTime, speed;
  13.    
  14.     private boolean isRunning = false;
  15.     private boolean shouldMove = false;
  16.     private boolean shouldIdle = true;
  17.    
  18.     private long lastTimer;
  19.    
  20.     private int i = 0;
  21.    
  22.     private Random rand;
  23.     private boolean isRandSet = false;
  24.     private int direction = -1;
  25.  
  26.     @Override
  27.     public void setScriptSettings(ArrayList<String> args) {
  28.         movementTime = Float.valueOf(args.get(0));
  29.         idleTime = Float.valueOf(args.get(1));
  30.         speed = Float.valueOf(args.get(2));
  31.     }
  32.  
  33.     @Override
  34.     public void start() {
  35.         if (isRunning)
  36.             return;
  37.         isRunning = true;
  38.         lastTimer = System.currentTimeMillis();
  39.         rand = new Random();
  40.     }
  41.  
  42.     @Override
  43.     public void stop() {
  44.         isRunning = false;
  45.     }
  46.  
  47.     @Override
  48.     public void run() {
  49.         if (isRunning) {
  50.             if (System.currentTimeMillis() - lastTimer >= 1000) {
  51.                 lastTimer += 1000;
  52.                 i += 1000;
  53.             }
  54.            
  55.             if (shouldIdle) {
  56.                 if (isRandSet) isRandSet = false;
  57.                 if (i >= idleTime * 1000) {
  58.                     i = 0;
  59.                     shouldIdle = false;
  60.                     shouldMove = true;
  61.                 }
  62.             }
  63.            
  64.             if (shouldMove) {
  65.                 if (!isRandSet)
  66.                     direction = getRandomDirection();
  67.                 moveEntity(); // TODO: implement bounds to stop them from moving all over the map. (using tiledmap)
  68.                 PacketGObject gObjectUpdate = new PacketGObject();
  69.                 gObjectUpdate.ID = super.entityInstance.getId();
  70.                 gObjectUpdate.InstanceID = super.entityInstance.getInstanceId();
  71.                 gObjectUpdate.X = super.entityInstance.getX();
  72.                 gObjectUpdate.Y = super.entityInstance.getY();
  73.                 gObjectUpdate.Direction = direction;
  74.                 gObjectUpdate.State = 1;
  75.                 WoWServer.getWorldServer().sendToAllUDP(gObjectUpdate);
  76.                 if (i >= movementTime * 1000) {
  77.                     i = 0;
  78.                     shouldIdle = true;
  79.                     shouldMove = false;
  80.                 }
  81.             }
  82.         }
  83.     }
  84.    
  85.     private void moveEntity() {
  86.         switch (direction) {
  87.         case 0:
  88.             super.entityInstance.setY(super.entityInstance.getY() - speed);
  89.             break;
  90.         case 1:
  91.             super.entityInstance.setY(super.entityInstance.getY() + speed);
  92.             break;
  93.         case 2:
  94.             super.entityInstance.setX(super.entityInstance.getX() + speed);
  95.             break;
  96.         case 3:
  97.             super.entityInstance.setX(super.entityInstance.getX() - speed);
  98.             break;
  99.         }
  100.     }
  101.    
  102.     private int getRandomDirection() {
  103.         isRandSet = true;
  104.         return rand.nextInt(4);
  105.     }
  106.  
  107.     @Override
  108.     public ArrayList<String> getScriptSettings() {
  109.         ArrayList<String> result = new ArrayList<String>();
  110.         result.add(String.valueOf(movementTime));
  111.         result.add(String.valueOf(idleTime));
  112.         result.add(String.valueOf(speed));
  113.         return result;
  114.     }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement