PsyOps

testbot

Jun 4th, 2014
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package twcore.bots.testbot;
  2.  
  3. import twcore.core.BotAction;
  4. import twcore.core.BotSettings;
  5. import twcore.core.EventRequester;
  6. import twcore.core.SubspaceBot;
  7. import twcore.core.events.ArenaJoined;
  8. import twcore.core.events.LoggedOn;
  9. import twcore.core.events.Message;
  10.  
  11. /**
  12.  * This is a barebones template bot for use when creating a new bot.  With slight
  13.  * modification, it can suit just about any purpose.  Note that if you are
  14.  * thinking of creating a typical eventbot, you should strongly consider creating
  15.  * a MultiBot module instead, which is more simple; also, you might consider the
  16.  * UltraBot template, which includes a command interpreter for easy command setup.
  17.  *
  18.  * @author  Stefan / Mythrandir
  19.  */
  20. public class testbot extends SubspaceBot {
  21.  
  22.     private BotSettings m_botSettings;          // Stores settings for your bot as found in the .cfg file.
  23.                                                 // In this case, it would be settings from basicbot.cfg
  24.  
  25.     /**
  26.      * Creates a new instance of your bot.
  27.      */
  28.     public testbot(BotAction botAction) {
  29.         super(botAction);
  30.         requestEvents();
  31.  
  32.         // m_botSettings contains the data specified in file <botname>.cfg
  33.         m_botSettings = m_botAction.getBotSettings();
  34.     }
  35.  
  36.  
  37.     /**
  38.      * This method requests event information from any events your bot wishes
  39.      * to "know" about; if left commented your bot will simply ignore them.
  40.      */
  41.     public void requestEvents() {
  42.         EventRequester req = m_botAction.getEventRequester();
  43.         req.request(EventRequester.MESSAGE);
  44.         // req.request(EventRequester.ARENA_LIST);
  45.         req.request(EventRequester.ARENA_JOINED);
  46.         // req.request(EventRequester.PLAYER_ENTERED);
  47.         // req.request(EventRequester.PLAYER_POSITION);
  48.         // req.request(EventRequester.PLAYER_LEFT);
  49.         // req.request(EventRequester.PLAYER_DEATH);
  50.         // req.request(EventRequester.PRIZE);
  51.         // req.request(EventRequester.SCORE_UPDATE);
  52.         // req.request(EventRequester.WEAPON_FIRED);
  53.         // req.request(EventRequester.FREQUENCY_CHANGE);
  54.         // req.request(EventRequester.FREQUENCY_SHIP_CHANGE);
  55.         req.request(EventRequester.LOGGED_ON);
  56.         // req.request(EventRequester.FILE_ARRIVED);
  57.         // req.request(EventRequester.FLAG_VICTORY);
  58.         // req.request(EventRequester.FLAG_REWARD);
  59.         // req.request(EventRequester.SCORE_RESET);
  60.         // req.request(EventRequester.WATCH_DAMAGE);
  61.         // req.request(EventRequester.SOCCER_GOAL);
  62.         // req.request(EventRequester.BALL_POSITION);
  63.         // req.request(EventRequester.FLAG_POSITION);
  64.         // req.request(EventRequester.FLAG_DROPPED);
  65.         // req.request(EventRequester.FLAG_CLAIMED);
  66.     }
  67.  
  68.  
  69.     /**
  70.      * You must write an event handler for each requested event/packet.
  71.      * This is an example of how you can handle a message event.
  72.      */
  73.     public void handleEvent(Message event) {
  74.         // Retreive name. If the message is remote, then event.getMessager() returns null, and event.getPlayerID returns a value.
  75.         // If the message is from the same arena, event.getMessager() returns a string, and event.getPlayerID will return 0.
  76.         String name = event.getMessager() != null ? event.getMessager() : m_botAction.getPlayerName(event.getPlayerID());
  77.         if (name == null) name = "-anonymous-";
  78.  
  79.         /*
  80.         m_botAction.sendPublicMessage(  "I received a Message event type ("+ event.getMessageType()+") from " + name +
  81.                                         " containing the following text: " + event.getMessage());
  82.         */
  83.        
  84.         // Default implemented command: !die
  85.         if (event.getMessageType() == Message.PRIVATE_MESSAGE && event.getMessage().equalsIgnoreCase("!die")) {
  86.             //m_botAction.sendPublicMessage(name + " commanded me to die. Disconnecting...");
  87.             try { Thread.sleep(50); } catch (Exception e) {};
  88.             m_botAction.die();
  89.         }
  90.         // Default implemented command: !die
  91.         if (event.getMessageType() == Message.PRIVATE_MESSAGE && event.getMessage().equalsIgnoreCase("!YourCommand")) {
  92.             m_botAction.sendPublicMessage("Response to your command");
  93.         }
  94.  
  95.     }
  96.  
  97.  
  98.     /**
  99.      * The LoggedOn event is fired when the bot has logged on to the system, but
  100.      * has not yet entered an arena.  A normal SS client would automatically join
  101.      * a pub; since we do things manually we must tell the bot to join an arena
  102.      * after it has successfully logged in.  Usually the arena is stored in the
  103.      * settings file of the bot, which shares the name of the source and class
  104.      * files, but has a cfg extension.  
  105.      */
  106.     public void handleEvent(LoggedOn event) {
  107.         m_botAction.joinArena(m_botSettings.getString("arena"));
  108.     }
  109.  
  110.  
  111.     /**
  112.      * Set ReliableKills 1 (*relkills 1) to make sure your bot receives every packet.
  113.      * If you don't set reliable kills to 1 (which ensures that every death packet
  114.      * of players 1 bounty and higher [all] will be sent to you), your bot may not
  115.      * get a PlayerDeath event for every player that dies.
  116.      */
  117.     public void handleEvent(ArenaJoined event) {
  118.         m_botAction.setReliableKills(1);
  119.     }
  120.  
  121. }
Advertisement
Add Comment
Please, Sign In to add comment