Package games.stendhal.server.core.engine

Examples of games.stendhal.server.core.engine.StendhalRPRuleProcessor


   * destroys the group if there is only one player left
   */
  @SuppressWarnings("unchecked")
  public void clean() {
    Set<String> toRemove = new HashSet<String>();
    StendhalRPRuleProcessor ruleProcessor = SingletonRepository.getRuleProcessor();
    Long currentTime = Long.valueOf(System.currentTimeMillis());
    Long timeoutTime = Long.valueOf(System.currentTimeMillis() - TIMEOUT);

    // remove offline members and set keep alive timestamp
    for (Map.Entry<String, Long> entry : ((Map<String, Long>)membersAndLastSeen.clone()).entrySet()) {
      String playerName = entry.getKey();
      if (ruleProcessor.getPlayer(playerName) != null) {
        membersAndLastSeen.put(playerName, currentTime);
      } else {
        if (entry.getValue().compareTo(timeoutTime) < 0) {
          toRemove.add(playerName);
          new GameEvent(playerName, "group", playerName, "timeout").raise();
        }
      }
    }
    membersAndLastSeen.keySet().removeAll(toRemove);

    // expire open invites
    Iterator<Map.Entry<String, Long>> itr = openInvites.entrySet().iterator();
    while (itr.hasNext()) {
      Map.Entry<String, Long> entry = itr.next();
      if (entry.getValue().compareTo(timeoutTime) < 0) {
        // TODO: "leader" needs to be the leader at invite time
        // TODO: alternatively: cancel the old invite and create a new one on leader change
        //       but the new leader may not agree with the invite, so it may not be a good idea
        //       to fake it his name.
        Player invitedPlayer = ruleProcessor.getPlayer(entry.getKey());
        if (invitedPlayer != null) {
          invitedPlayer.addEvent(new GroupInviteEvent(leader, true));
        }

        itr.remove();
View Full Code Here


   *
   * @param name   name of sender
   * @param text message to send
   */
  public void sendGroupMessage(String name, String text) {
    StendhalRPRuleProcessor ruleProcessor = SingletonRepository.getRuleProcessor();
    for (String playerName : membersAndLastSeen.keySet()) {
      Player player = ruleProcessor.getPlayer(playerName);
      if (player != null) {
        player.sendPrivateText(NotificationType.GROUP, name + ": " + text);
      }
    }
  }
View Full Code Here

  /**
   * tell the clients about changes in the group
   */
  private void sendGroupChangeEvent() {
    StendhalRPRuleProcessor ruleProcessor = SingletonRepository.getRuleProcessor();
    List<String> members = new LinkedList<String>(membersAndLastSeen.keySet());
    RPEvent event = new GroupChangeEvent(leader, members, lootmode);
    for (String playerName : membersAndLastSeen.keySet()) {
      Player player = ruleProcessor.getPlayer(playerName);
      if (player != null) {
        player.addEvent(event);
      }
    }
  }
View Full Code Here

   * tell players about them being removed from the group
   *
   * @param toRemove players to remove.
   */
  private void sendLeftGroupEvent(Set<String> toRemove) {
    StendhalRPRuleProcessor ruleProcessor = SingletonRepository.getRuleProcessor();
    RPEvent event = new GroupChangeEvent();
    for (String playerName : toRemove) {
      Player player = ruleProcessor.getPlayer(playerName);
      if (player != null) {
        player.addEvent(event);
      }
    }
  }
View Full Code Here

    final WhoAction query = new WhoAction();
    CommandCenter.register(WHO, query);
  }

  public void onAction(final Player player, final RPAction action) {
    final StendhalRPRuleProcessor rules = SingletonRepository.getRuleProcessor();
    final Set<String> players = new TreeSet<String>();

    if (player.getAdminLevel() >= AdministrationAction.getLevelForCommand("ghostmode")) {
      rules.getOnlinePlayers().forAllPlayersExecute(new Task<Player>() {
        public void execute(final Player p) {
          final StringBuilder text = new StringBuilder(p.getTitle());

          if (p.isGhost()) {
            text.append("(!");
          } else {
            text.append("(");
          }
          text.append(p.getLevel());
          text.append(") ");

          players.add(text.toString());
        }
      });
    } else {
      rules.getOnlinePlayers().forFilteredPlayersExecute(new Task<Player>() {
        public void execute(final Player p) {
          final StringBuilder text = new StringBuilder(p.getTitle());
          text.append("(");
          text.append(p.getLevel());
          text.append(") ");
View Full Code Here

  @Override
  protected void perform(final Player player, final RPAction action) {
   

    // find player
    final StendhalRPRuleProcessor rules = SingletonRepository.getRuleProcessor();
    final Player target = rules.getPlayer(action.get("target"));
    if (target != null) {

      // old state
      final String questName = action.get("name");
      String oldQuestState = null;
View Full Code Here

 
  public void onAction(final Player player, final RPAction action) {
    if (action.has(TARGET)) {
      final String whoName = action.get(TARGET);

      final StendhalRPRuleProcessor rules = SingletonRepository.getRuleProcessor();
      String[] params = { whoName };

      new GameEvent(player.getName(), WHERE, params).raise();

      final Player who = rules.getPlayer(whoName);
      final DomesticAnimal animal = player.searchAnimal(whoName, false);

      if (who != null) {
        if (who.isGhost() && !who.equals(player)) {
          player.sendPrivateText("No player or pet named \"" + whoName + "\" is currently logged in.");
View Full Code Here

      admin.sendPrivateText("Usage /script AlterQuest.class <player> <questname> <state>. Ommit <state> to remove the quest.");
      return;
    }

    // find player
    final StendhalRPRuleProcessor rules = SingletonRepository.getRuleProcessor();
    final Player target = rules.getPlayer(args.get(0));
    if (target != null) {

      // old state
      final String questName = args.get(1);
      String oldQuestState = null;
View Full Code Here

      admin.sendPrivateText("Usage /script FixDM.class <player>. Check they have killed all the creatures!");
      return;
    }

    // find player
    final StendhalRPRuleProcessor rules = SingletonRepository.getRuleProcessor();
    final Player target = rules.getPlayer(args.get(0));
    if (target != null) {

      // old state
      if (!target.hasQuest(questName)) {
        admin.sendPrivateText(target.getTitle() + " has never done a deathmatch.");
View Full Code Here

TOP

Related Classes of games.stendhal.server.core.engine.StendhalRPRuleProcessor

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.