顯示具有 等級 標籤的文章。 顯示所有文章
顯示具有 等級 標籤的文章。 顯示所有文章

2014年5月20日 星期二

【Java教學】新增新手保護系統

修改L1Attack.java 

收尋

dmg = calcBuffDamage(dmg); 

上面新增

// 新手保護系統
// 玩家等級低於幾級 其他玩家無法攻擊
      if (_targetPc.getLevel() <= Config.New_Player) {
        dmg = 0;
        _pc.sendPackets(new S_SystemMessage("不能攻擊等級低於【 " + (Config.New_Player + 1) + " 】級的玩家。"));
        _targetPc.sendPackets(new S_SystemMessage("等級未滿【 " + (Config.New_Player + 1) + " 】級,其他玩家無法攻擊您。"));
      }
// 玩家等級低於幾級 不能攻擊其他玩家
      if (_pc.getLevel() <= Config.New_Player && _targetPc.getLevel() >= 1) {
        dmg = 0;
        _pc.sendPackets(new S_SystemMessage("等級未滿【 " + (Config.New_Player + 1) + " 】級,無法攻擊其他玩家。"));
        _targetPc.sendPackets(new S_SystemMessage("對方等級未滿【 " + (Config.New_Player + 1) + " 】級,所以無法攻擊您。"));
      }
// 新手保護系統 end




修改L1Magic.java 

搜尋

damage = calcMrDefense(damage); 


下面新增

// 新手保護系統
      if (_calcType == PC_PC) {
// 玩家等級低於幾級 其他玩家無法攻擊
        if (_targetPc.getLevel() <= Config.New_Player) {
            damage = 0;
            _pc.sendPackets(new S_ServerMessage(166, "不能攻擊等級低於【 " + (Config.New_Player + 1) + " 】級的玩家"));
            _targetPc.sendPackets(new S_ServerMessage(166, "等級未滿【 " + (Config.New_Player + 1) + " 】級,其他玩家無法攻擊您"));
        }
// 玩家等級低於幾級 不能攻擊其他玩家
        if (_pc.getLevel() <= Config.New_Player && _targetPc.getLevel() >= 1) {
            damage = 0;
            _pc.sendPackets(new S_ServerMessage(166, "等級未滿【 " + (Config.New_Player + 1) + " 】級,無法攻擊其他玩家"));
            _targetPc.sendPackets(new S_ServerMessage(166, "對方等級未滿【 " + (Config.New_Player + 1) + " 】級,所以無法攻擊您"));
        }
      }
// 新手保護系統 end





修改Config.java 

搜尋

public static int DEFAULT_CHARACTER_SLOT; 


下面新增

// 新手保護系統
  public static int New_Player;
// 新手保護系統 end


搜尋

        DEFAULT_CHARACTER_SLOT = Integer.parseInt(altSettings.getProperty( 
              "DefaultCharacterSlot", "6")); 


下面新增

// 新手保護系統
        New_Player = Integer.parseInt(altSettings.getProperty(
              "NewPlayer", "10"));
// 新手保護系統 end


搜尋

      } else if (pName.equalsIgnoreCase("DefaultCharacterSlot")) { 
        DEFAULT_CHARACTER_SLOT = Integer.valueOf(pValue); 


下面新增

// 新手保護系統
      } else if (pName.equalsIgnoreCase("NewPlayer")) {
        New_Player = Integer.parseInt(pValue);
// 新手保護系統 end




修改altsettings.properties 

最下面新增

#-------------------------------------------------------------
#玩家等級等於或低於幾級時 受保護狀態
NewPlayer = 10
#-------------------------------------------------------------

2013年6月8日 星期六

【Java教學】【★★★★★】GM指令調整玩家等級

新增一組程式碼檔案

新增l1j\server\server\command\executor\L1Levelid.java
新增以下程式碼



QUOTE:
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* http://www.gnu.org/copyleft/gpl.html
*/
package l1j.server.server.command.executor;

import java.util.StringTokenizer;
import java.util.logging.Logger;

import l1j.server.server.datatables.ExpTable;
import l1j.server.server.model.L1World;
import l1j.server.server.model.Instance.L1PcInstance;
import l1j.server.server.serverpackets.S_ServerMessage;
import l1j.server.server.serverpackets.S_SystemMessage;
import l1j.server.server.utils.IntRange;

public class L1Levelid implements L1CommandExecutor {
private static Logger _log = Logger.getLogger(L1Levelid.class.getName());

private L1Levelid() {
}

public static L1CommandExecutor getInstance() {
return new L1Levelid();
}

public void execute(L1PcInstance pc, String cmdName, String arg) {
try {
StringTokenizer tok = new StringTokenizer(arg);
String char_name = tok.nextToken();
int level = Integer.parseInt(tok.nextToken());

L1PcInstance target = L1World.getInstance().getPlayer(char_name);
if (target == null) {
pc.sendPackets(new S_ServerMessage(73, char_name));
}
else {
if (level == target.getLevel()) {
return;
}
if (!IntRange.includes(level, 1, 99)) {
pc.sendPackets(new S_SystemMessage("請在1-99範圍內指定"));
return;
}
target.setExp(ExpTable.getExpByLevel(level));
}
}
catch (Exception e) {
pc.sendPackets(new S_SystemMessage(cmdName + " 玩家名稱 請輸入。"));
}
}
}



更動commands資料庫
新增以下指令


QUOTE:

玩家等級100L1Levelid