⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loginfunction.java

📁 一套MMORPG手机网络游戏的服务端
💻 JAVA
字号:
package com.swing.game.crystal.function;

import org.dom4j.Element;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.net.MalformedURLException;
import java.util.*;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.Logger;

import com.swing.game.crystal.CrystalController;
import com.swing.game.crystal.CrystalPlayer;
import com.swing.game.crystal.utils.Person;
import com.swing.game.crystal.utils.StringComparator;
import com.swing.server.common.GameFunction;

public class LoginFunction
    extends GameFunction {

  public static Logger logger = Logger.getLogger(LoginFunction.class);
  static {
    PropertyConfigurator.configure("./cfg/Log4j.properties");
  }


  public List handleRequest(String player, String message) {
    String[] data = message.split(CrystalController.SPLITTER_2);
    List r = new ArrayList();
    if (data.length == 3) {
      StringBuffer sb = new StringBuffer();
      sb.append("L ");
      if (Integer.parseInt(data[2]) == CrystalController.VERSION)
      {
        try {
          SAXReader reader = new SAXReader();
          Document document = reader.read(new File("./xml/User.xml"));
          Element root = document.getRootElement();
          Element temp = (Element) root.selectSingleNode("./user[@id=\"" +
              player + "\"]");
          if (temp != null) {
            String id = temp.attributeValue("id");
            String password = temp.selectSingleNode("password").getText();
            if (password.equals(data[1])) {
              String mapCode = temp.selectSingleNode("mapCode").getText().
                  toString();
              String mapXPosition = temp.selectSingleNode("mapXPosition").
                  getText().toString();
              String mapYPosition = temp.selectSingleNode("mapYPosition").
                  getText().toString();
              // 玩家的种类
              // 1:智者
              // 2:战士
              // 3:雷神
              byte kind = Byte.parseByte(temp.selectSingleNode("kind").getText());

              // 玩家的级别
              byte level = Byte.parseByte(temp.selectSingleNode("level").
                                          getText());

              // 玩家当前的HP
              // 血的上限为 基础值 + (level - 1) * 7
              int hp = Integer.parseInt(temp.selectSingleNode("hp").getText());
              int hpLimit = ( (Person) CrystalController.PersonMapping.get(String.
                  valueOf(kind))).hp + (level - 1) * 7;

              // 玩家的当前能源
              // power上限为 基础值 + (level - 1) * 7
              int power = Integer.parseInt(temp.selectSingleNode("power").
                                           getText());
              int powerLimit = ( (Person) CrystalController.PersonMapping.get(String.
                  valueOf(kind))).power + (level - 1) * 7;

              // 智者和战士的特殊精神力
              int sp = Integer.parseInt(temp.selectSingleNode("sp").getText());

              // 玩家的基本攻击力AT
              int attack = Integer.parseInt(temp.selectSingleNode("attack").
                                            getText());

              // 玩家的基本防御力DF
              int defense = Integer.parseInt(temp.selectSingleNode("defense").
                                             getText());
              // 玩家的恢复力
              int resurrection = Integer.parseInt(temp.selectSingleNode(
                  "resurrection").getText());

              // 玩家的敏捷度
              int agility = Integer.parseInt(temp.selectSingleNode("agility").
                                             getText());

              // 玩家的金钱
              int money = Integer.parseInt(temp.selectSingleNode("money").
                                           getText());

              // 玩家当前经验
              // 升级经验计算公式(level + 2) * (level + 1)
              int exp = Integer.parseInt(temp.selectSingleNode("exp").getText());
              int boss = Integer.parseInt(temp.selectSingleNode("boss").getText());
              int expLimit = (level + 2) * (level + 1);

              // 玩家的职业
              int career = Integer.parseInt(temp.selectSingleNode("carreer").
                                            getText());

              //玩家背包的当前容量
              int capacity = Integer.parseInt(temp.selectSingleNode("capacity").
                                              getText());

              String curSuit = temp.selectSingleNode("curSuit").getText();
              String curShoe = temp.selectSingleNode("curShoe").getText();

              CrystalPlayer u = (CrystalPlayer) gc.playersByPlayerId.get(player);
              List weapon = temp.selectSingleNode("weapon").selectNodes(
                  "Element");
              String key = null;
              String number = null;
              Element sub = null;
              if (weapon != null) {
                for (Iterator iter = weapon.iterator(); iter.hasNext(); ) {
                  sub = (Element) iter.next();
                  key = sub.attributeValue("id");
                  number = sub.attributeValue("number");
                  u.equips.put(key, number);
                }
              }
              List friends = temp.selectSingleNode("friends").selectNodes(
                  "Element");
              if (friends != null) {

                for (Iterator iter = friends.iterator(); iter.hasNext(); ) {
                  key = ( (Element) iter.next()).attributeValue("id");
                  u.addFriend(key);
                }

              }
              u.id = id;
              u.mapCode = Integer.parseInt(mapCode);
              u.mapXPosition = Integer.parseInt(mapXPosition);
              u.mapYPosition = Integer.parseInt(mapYPosition);
              u.kind = kind;
              u.level = level;
              u.hp = hp;
              u.hpLimit = hpLimit;
              u.power = power;
              u.powerLimit = powerLimit;
              u.sp = sp;
              u.attack = attack;
              u.defense = defense;
              u.resurrection = resurrection;
              u.agility = agility;
              u.money = money;
              u.exp = exp;
              u.boss = boss;
              u.expLimit = expLimit;
              u.career = career;
              u.capacity = capacity;
              u.curShoe = curShoe;
              u.curSuit = curSuit;
              u.time = System.currentTimeMillis(); 
              
              sb.append(u.mapCode);
              sb.append(" ");
              sb.append(u.mapXPosition);
              sb.append(" ");
              sb.append(u.mapYPosition);
              sb.append(" ");
              sb.append(CrystalController.BASIC_URL);
              sb.append(" ");
              sb.append(u.kind);
              sb.append(" ");
              sb.append(u.level);
              sb.append(" ");
              sb.append(u.hp);
              sb.append(" ");
              sb.append(u.power);
              sb.append(" ");
              sb.append(u.sp);
              sb.append(" ");
              sb.append(u.attack);
              sb.append(" ");
              sb.append(u.defense);
              sb.append(" ");
              sb.append(u.resurrection);
              sb.append(" ");
              sb.append(u.agility);
              sb.append(" ");
              sb.append(u.money);
              sb.append(" ");
              sb.append(u.exp);
              sb.append(" ");
              sb.append(u.capacity);
              sb.append(" ");
              sb.append(u.curSuit);
              sb.append(" ");
              sb.append(u.curShoe);
              sb.append(" ");
              sb.append(u.boss);
              sb.append(" ");
              Object[] tt = u.getEquips().toArray();
              Arrays.sort(tt, new StringComparator());
              for (int ii = 0; ii < tt.length; ii++) {
                sb.append(tt[ii] + "|" + u.getCountOfEquip( (String) tt[ii]) +
                          "*");
              }
              sb.delete(sb.length() - 1, sb.length());

              if (u.friends != null) {
                sb.append(" ");
                for (Iterator iter = u.friends.iterator(); iter.hasNext(); ) {
                  sb.append( (String) iter.next() + "#");
                }
                sb.delete(sb.length() - 1, sb.length());
              }

            } // end if
            else {
              sb.append("W"); // w means wrong password
            } // end else
          } //end if
        } // end try

        catch (DocumentException e) {
          logger.error(e);
        }

        catch (MalformedURLException e1) {
          logger.error(e1);
        }
      }
      else
        sb.append("V");
      r.add(sb.toString());
      return r;
    }
    else
    {
        r.add("n");
      return r;
    }
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -