 | 請問各位大神
此源碼是製作武器 要加上甚麼才能讓他製作成功的時候會上公告
package com.lineage.data.npc;
import com.lineage.data.executor.NpcExecutor;
import com.lineage.server.datatables.ItemTable;
import com.lineage.server.model.Instance.L1ItemInstance;
import com.lineage.server.model.Instance.L1NpcInstance;
import com.lineage.server.model.Instance.L1PcInstance;
import com.lineage.server.serverpackets.S_CloseList;
import com.lineage.server.serverpackets.S_NPCTalkReturn;
import com.lineage.server.serverpackets.S_ServerMessage;
public class Npc_Rushi extends NpcExecutor {
public static NpcExecutor get() {
return new Npc_Rushi();
}
public int type() {
return 3;
}
/**
* 舊武器:<br>
* 武士刀<br>
* 大馬士革刀<br>
* 細劍<br>
* 雙手劍<br>
* 十字弓<br>
* 尤米弓<br>
* 力量魔法杖<br>
* 精靈匕首<br>
* 拉斯塔巴德短劍<br>
* 狂戰士斧<br>
* 巨斧<br>
* 巨劍<br>
* 巫術魔法杖<br>
* 美基魔法杖<br>
* 精靈之矛<br>
* 法丘<br>
* 侵略者之劍<br>
*/
private int[] oldweapon;
public void talk(L1PcInstance pc, L1NpcInstance npc) {
pc.sendPackets(new S_NPCTalkReturn(npc.getId(), "rushi05"));
}
// 修改淬鍊魔法武器 琮善
public void action(L1PcInstance pc, L1NpcInstance npc, String cmd, long amount) {
int newWeapon = 0;
int newLevel = 7;
int enchantLevel = 8;
long count = 1L;
boolean success = false;
if (cmd.equalsIgnoreCase("H") || cmd.equalsIgnoreCase("I") || cmd.equalsIgnoreCase("J")
|| cmd.equalsIgnoreCase("K") || cmd.equalsIgnoreCase("L") || cmd.equalsIgnoreCase("M")
|| cmd.equalsIgnoreCase("N")) {
enchantLevel = 9;
newLevel = 8;
oldweapon = new int[] { 41, 37, 42, 52, 180, 181, 131, 5, 6, 145, 148, 64, 125, 129, 99, 104, 32 };
} else if (cmd.equalsIgnoreCase("O") || cmd.equalsIgnoreCase("P") || cmd.equalsIgnoreCase("Q")
|| cmd.equalsIgnoreCase("R") || cmd.equalsIgnoreCase("S") || cmd.equalsIgnoreCase("T")
|| cmd.equalsIgnoreCase("AD")) {
enchantLevel = 9;
newLevel = 0;
count = 4L;
oldweapon = new int[] { 41, 37, 42, 52, 180, 181, 131, 5, 6, 145, 148, 64, 125, 129, 99, 104, 32 };
} else if (cmd.equalsIgnoreCase("U") || cmd.equalsIgnoreCase("V") || cmd.equalsIgnoreCase("W")
|| cmd.equalsIgnoreCase("X") || cmd.equalsIgnoreCase("Y") || cmd.equalsIgnoreCase("Z")
|| cmd.equalsIgnoreCase("AA") || cmd.equalsIgnoreCase("AB") || cmd.equalsIgnoreCase("AC")) {
oldweapon = new int[] { 67, 68, 84, 164, 182, 189, 127 };
enchantLevel = 9;
newLevel = 0;
count = 1L;
}
switch (cmd.toUpperCase()) {
case "A":
case "H":
case "U":
newWeapon = 259;
break;
case "B":
case "I":
case "V":
newWeapon = 410132;
break;
case "C":
case "J":
case "W":
newWeapon = 410157;
break;
case "D":
case "K":
case "X":
newWeapon = 410131;
break;
case "E":
case "L":
case "Y":
newWeapon = 410133;
break;
case "F":
case "M":
case "Z":
newWeapon = 410134;
break;
case "G":
case "N":
case "AC":
// newWeapon = 410135;
newWeapon = 205;
break;
case "AA":
newWeapon = 410162;
break;
case "AB":
newWeapon = 410161;
break;
case "AD":
newWeapon = 127;
break;
case "O":
newWeapon = 68;
break;
case "P":
newWeapon = 67;
break;
case "Q":
newWeapon = 182;
break;
case "R":
newWeapon = 84;
break;
case "S":
newWeapon = 164;
break;
case "T":
newWeapon = 189;
break;
default:
return;
}
for (int i = 0; i < oldweapon.length; i++) {
if (pc.getInventory().checkEnchantItem(oldweapon[i], enchantLevel, count)
&& pc.getInventory().checkItem(40308, getRequiredAmount(count))) {
pc.getInventory().consumeEnchantItem(oldweapon[i], enchantLevel, count);
pc.getInventory().consumeItem(40308, getRequiredAmount(count));
final L1ItemInstance item = ItemTable.get().createItem(newWeapon);
item.setEnchantLevel(newLevel);
item.setIdentified(true);
pc.getInventory().storeItem(item);
pc.sendPackets(new S_ServerMessage(143, npc.getNpcTemplate().get_name(), item.getLogName()));
pc.sendPackets(new S_CloseList(pc.getId()));
success = true;
break;
}
}
if (!success) {
pc.sendPackets(new S_NPCTalkReturn(npc.getId(), "rushi04"));
}
}
private long getRequiredAmount(long newLevel) {
return newLevel == 4 ? 5000000L : 10000000L;
}
}
| |