コード例 #1
0
  @Override
  protected void handleDialogStart(Player player) {
    if (player.getKisk() == getOwner()) {
      PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_BINDSTONE_ALREADY_REGISTERED);
      return;
    }

    if (getOwner().canBind(player)) {
      AI2Actions.addRequest(
          this,
          player,
          SM_QUESTION_WINDOW.STR_ASK_REGISTER_BINDSTONE,
          getOwner().getObjectId(),
          CANCEL_DIALOG_METERS,
          new AI2Request() {
            private boolean decisionTaken = false;

            @Override
            public void acceptRequest(Creature requester, Player responder) {
              if (!decisionTaken) {
                // Check again if it's full (If they waited to press OK)
                if (!getOwner().canBind(responder)) {
                  PacketSendUtility.sendPacket(
                      responder, SM_SYSTEM_MESSAGE.STR_CANNOT_REGISTER_BINDSTONE_HAVE_NO_AUTHORITY);
                  return;
                }
                KiskService.getInstance().onBind(getOwner(), responder);
              }
            }

            @Override
            public void denyRequest(Creature requester, Player responder) {
              decisionTaken = true;
            }
          });

    } else if (getOwner().getCurrentMemberCount() >= getOwner().getMaxMembers()) {
      PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_CANNOT_REGISTER_BINDSTONE_FULL);
    } else {
      PacketSendUtility.sendPacket(
          player, SM_SYSTEM_MESSAGE.STR_CANNOT_REGISTER_BINDSTONE_HAVE_NO_AUTHORITY);
    }
  }