wxadsqwe9948 發表於 2024-3-1 00:24

此源碼是製作武器 要加上甚麼才能讓他成功的時候會公告....

請問各位大神
此源碼是製作武器 要加上甚麼才能讓他製作成功的時候會上公告


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, enchantLevel, count)
                                                          && pc.getInventory().checkItem(40308, getRequiredAmount(count))) {
                                                pc.getInventory().consumeEnchantItem(oldweapon, 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;
          }
}

Java大神 發表於 2024-3-1 01:03

forloop 裡面加

yasioukon 發表於 2024-3-1 09:32

pc.sendPackets(new S_ServerMessage(143, npc.getNpcTemplate().get_name(), item.getLogName()));

這一行 就是顯示 npc 給你 item 的

在他上方或下方 加入一行公告即可

wxadsqwe9948 發表於 2024-3-1 12:28

請問是在
       
pc.sendPackets(new S_ServerMessage(143, npc.getNpcTemplate().get_name(), item.getLogName()));
下放要加入甚麼呢 能複製給我嗎 謝謝 因為我對這個不懂

CClineage45 發表於 2024-3-2 07:24

謝謝分享~

qwe148 發表於 2024-3-4 05:22

wxadsqwe9948 發表於 2024-3-1 12:28
請問是在
       
pc.sendPackets(new S_ServerMessage(143, npc.getNpcTemplate().get_name(), item.getLogName( ...

World.get().broadcastPacketToAll(new S_SystemMessage(143, npc.getNpcTemplate().get_name(), item.getLogName()));

wxadsqwe9948 發表於 2024-3-10 17:04

我照你的源碼加入為什麼它顯示叉叉

samol 發表於 2024-3-10 17:21

pc.sendPackets(new S_ServerMessage(143, npc.getNpcTemplate().get_name(), item.getLogName()));

這一行 就是顯示 npc 給你 item 的

在他上方或下方 加入一行公告即可
頁: [1]
查看完整版本: 此源碼是製作武器 要加上甚麼才能讓他成功的時候會公告....