package l1j.server.server.clientpackets;import java.util.Collection;
import java.util.Iterator;
import java.util.logging.Logger;
import l1j.server.Config;
import l1j.server.server.ClientThread;
import l1j.server.server.model.Instance.L1PcInstance;
import l1j.server.server.model.L1World;
import l1j.server.server.serverpackets.S_SystemMessage;
import l1j.server.server.serverpackets.S_WhoAmount;
import l1j.server.server.serverpackets.S_WhoCharinfo;
import l1j.server.server.serverpackets.ServerBasePacket;public class C_RequestWho extends ClientBasePacket
{
  private static final String C_REQUEST_WHO = "[C] C_RequestWho";
  private static Logger _log = Logger.getLogger(C_RequestWho.class.getName());  public C_RequestWho(byte[] paramArrayOfByte, ClientThread paramClientThread)
  {
    Object localObject;
    super(paramArrayOfByte);
    String str = readS();
    L1PcInstance localL1PcInstance1 = L1World.getInstance().getPlayer(str);
    L1PcInstance localL1PcInstance2 = paramClientThread.getActiveChar();
    if (localL1PcInstance1 != null)
    {
      localObject = new S_WhoCharinfo(localL1PcInstance1);
      localL1PcInstance2.sendPackets((ServerBasePacket)localObject);
    }
    else
    {
      Iterator localIterator;
      L1PcInstance localL1PcInstance3;
      if (Config.ALT_WHO_COMMAND)
      {
        localObject = String.valueOf(L1World.getInstance().getAllPlayers().size());
        S_WhoAmount localS_WhoAmount = new S_WhoAmount((String)localObject);
        localL1PcInstance2.sendPackets(localS_WhoAmount);
      }
      double d1 = Config.RATE_XP;
      double d2 = Config.RATE_LA;
      double d3 = Config.RATE_DROP_ITEMS;
      double d4 = Config.RATE_DROP_ADENA;
      int i = Config.ENCHANT_CHANCE_WEAPON;
      int j = Config.ENCHANT_CHANCE_ARMOR;
      byte b = 1;
      if (localL1PcInstance1.getAccessLevel() == 200)
      {
        localL1PcInstance2.sendPackets(new S_SystemMessage("经验值: " + d1 + " 倍"));
        localL1PcInstance2.sendPackets(new S_SystemMessage("取得金币: " + d4 + " 倍"));
        localL1PcInstance2.sendPackets(new S_SystemMessage("掉宝率: " + d3 + " 倍"));
        localL1PcInstance2.sendPackets(new S_SystemMessage("冲装率: 武器" + i + "%  /  防具:" + j + "%"));
        localL1PcInstance2.sendPackets(new S_SystemMessage("[在线人物数据]"));
        localL1PcInstance2.sendPackets(new S_SystemMessage("----------------------------"));
        localIterator = L1World.getInstance().getAllPlayers().iterator();
        while (true)
        {
          if (localIterator.hasNext())
            break;
          localL1PcInstance3 = (L1PcInstance)localIterator.next();
          if (localL1PcInstance3.getClanid() != 0)
            localL1PcInstance2.sendPackets(new S_SystemMessage("[ " + b + " ] " + localL1PcInstance3.getName() + " ( Lv " + localL1PcInstance3.getLevel() + " )" + " [ " + localL1PcInstance3.getClanname() + " ]"));
          else
            localL1PcInstance2.sendPackets(new S_SystemMessage("[ " + b + " ] " + localL1PcInstance3.getName() + " ( Lv " + localL1PcInstance3.getLevel() + " )"));
          ++b;
        }
        localL1PcInstance2.sendPackets(new S_SystemMessage("----------------------------"));
      }
      else
      {
        localL1PcInstance2.sendPackets(new S_SystemMessage("經驗值: " + d1 + " 倍"));
        localL1PcInstance2.sendPackets(new S_SystemMessage("取得金幣: " + d4 + " 倍"));
        localL1PcInstance2.sendPackets(new S_SystemMessage("掉寶率: " + d3 + " 倍"));
        localL1PcInstance2.sendPackets(new S_SystemMessage("衝裝率: 武器" + i + "%  /  防具:" + j + "%"));
        localL1PcInstance2.sendPackets(new S_SystemMessage("[線上人物資料]"));
        localL1PcInstance2.sendPackets(new S_SystemMessage("----------------------------"));
        localIterator = L1World.getInstance().getAllPlayers().iterator();
        while (true)
        {
          if (localIterator.hasNext())
            break;
          localL1PcInstance3 = (L1PcInstance)localIterator.next();
          if (localL1PcInstance3.getClanid() != 0)
            localL1PcInstance2.sendPackets(new S_SystemMessage("[ " + b + " ] " + localL1PcInstance3.getName() + " ( Lv " + localL1PcInstance3.getLevel() + " )" + " [ " + localL1PcInstance3.getClanname() + " ]"));
          else
            localL1PcInstance2.sendPackets(new S_SystemMessage("[ " + b + " ] " + localL1PcInstance3.getName() + " ( Lv " + localL1PcInstance3.getLevel() + " )"));
          ++b;
        }
        localL1PcInstance2.sendPackets(new S_SystemMessage("----------------------------"));
      }
    }
  }  public String getType()
  {
    return "[C] C_RequestWho";
  }
}
--------------------配置:            <--------------------
D:\mir\lin\C_RequestWho.java:21: 找不到符号
符号: 构造函数 ClientBasePacket()
位置: 类 l1j.server.server.clientpackets.ClientBasePacket
  {
  ^
D:\mir\lin\C_RequestWho.java:23: 对 super 的调用必须是构造函数中的第一个语句
        super(paramArrayOfByte);
             ^
2 错误处理已完成。
            

解决方案 »

  1.   

    super类需要先被初始化,或者说构造出来,
      

  2.   

    super(paramArrayOfByte)必须放在构造器的第一行
    public Xxx()
    {
       super();     //构造器首行
    }
      

  3.   

        所谓的构造方法,就是为了保证对象的完整实例化.在构造方法内部不恰当的代码(比如开启一个线程)都有可能造成溢出. 
      实例化一个对象,同时会加载它所有的父类. 
      super()放在第一行的目的是为了完全初始化父类构造方法后再初始化子类构造方法,这样做是有原因的,假如子方法里用到了父类的一个成员变量,这就保证了子类用到的是经过父类完全初始化后的变量! 
        this()也是同样的原因,只不过是发生在同一个类中而已!