廣告載入中
月光論壇 跳至最下方
 XML   RSS 2.0   WAP 
您是第 96 個閱讀者


將本文加入網路書籤 | 可列印版本 | 加為IE收藏 | 上一主題 | 下一主題
devilsmile1214
默認頭像


8 該用戶目前不在線
級別: 路人甲
精華: 0
年齡: 30
發表文章: 3/4
回覆文章: 41/65


只看樓主 共2人推薦本主題推薦 x2

[教學] 【Java教學】跟隨祭司 自刪貼(設定30天,剩餘17天)

1.在SQL裡的NPC設定:複製貼上再自行修改200047 200048 200049是NPCID
200047     銀光祭司     【銀光祭司】     另類娃娃     L1Monster     3894     60     300     400     1     1     20     1     20     20     1     0     0     small     0     0     0     400     0     0     0     0     0     0     0     0     0     0           0     -1     -1     0     0     1     0     0     5000     10
200048     黃金祭司     【黃金祭司】     另類娃娃     L1Monster     3897     75     500     500     1     1     30     1     30     30     1     0     0     small     0     0     0     300     0     0     0     0     0     0     0     0     0     0           0     -1     -1     0     0     1     0     0     4000     20
200049     白金祭司     【白金祭司】     另類娃娃     L1Monster     3900     85     700     700     1     1     40     1     40     40     1     0     0     small     0     0     0     200     0     0     0     0     0     0     0     0     0     0           0     -1     -1     0     0     1     0     0     3000     30


2.在SQL裡的etcitem設定:複製貼上再自行修改60052 60053 60054是item_id
60052     \fD銀光祭司召喚卷軸     \fD銀光祭司召喚卷軸     \fD銀光祭司召喚卷軸     other     normal     paper     12000     3072     863     0     1
60053     \fO黃金祭司召喚卷軸     \fO黃金祭司召喚卷軸     \fO黃金祭司召喚卷軸     other     normal     paper     12000     3072     863     0     1
60054     \fW白金祭司召喚卷軸     \fW白金祭司召喚卷軸     \fW白金祭司召喚卷軸     other     normal     paper     12000     3072     863     0     1


3.L1DollInstance.java
一.在一開頭會看到0,1,2....的排序,在祭司娃娃寫上數字這裡9,10,11是舉例

    public static final int DOLLTYPE_BUGBEAR = 0;
    public static final int DOLLTYPE_SUCCUBUS = 1;
    public static final int DOLLTYPE_WAREWOLF = 2;
                  .
                  .
新增    

    public static final int DOLLTYPE_A = 9;// 祭司娃娃:白銀祭司
    public static final int DOLLTYPE_B = 10;// 祭司娃娃:黃金祭司
    public static final int DOLLTYPE_C = 11;// 祭司娃娃:白金祭司

二.先編譯L1DollInstance.java


4.C_ItemUSe.java
一.搜尋:

else if (itemId == 41248 || itemId == 41249
                                      || itemId == 41250 || itemId == 49037
                                      || itemId == 49038 || itemId == 49039
                                      || itemId == 60035 || itemId == 60036
                                      || itemId == 60037) { // 
                                useMagicDoll(pc, itemId, itemObjid);
                          }
//在下面新增:
              else if (itemId == 60052 || itemId == 60053 || itemId == 60054) //祭司娃娃
                          {
                          useMagicDoll(pc, itemId, itemObjid);
                          pc.getInventory().removeItem(l1iteminstance, 1);//這是使用卷軸方式扣一    
                        }
二.搜尋:

int dollType = 0;

//在下面新增:
                else if (itemId == 60052) {//祭司娃娃:白銀祭司卷軸
                    npcId = 200047;
                    dollType = L1DollInstance.DOLLTYPE_A;
                } else if (itemId == 60053) {//祭司娃娃:黃金祭司卷軸
                    npcId = 200048;
                    dollType = L1DollInstance.DOLLTYPE_B;
                } else if (itemId == 60054) {//祭司娃娃:白金祭司卷軸
                    npcId = 200049;
                    dollType = L1DollInstance.DOLLTYPE_C;
                }

三.編譯C_ItemUSe.java

5.L1Character.java
一.搜尋:

public void setOwnLightSize(int i) {
          _ownLightSize = i;
    }

在下面新增加入:


// 祭司娃娃
    private int _hierarch = 0;

  public int getHierarch() {
    return _hierarch;
  }

  public void setHierarch(int i) {
    _hierarch = i;
  }
  // 祭司娃娃 end


二.編譯L1Character.java



6.C_NPCAction.java
一.搜尋:

這是舉例看你想加在哪

else if (s.equalsIgnoreCase("enca")) { // 防具門家 / 防具強化魔法受
                L1ItemInstance item = pc.getInventory().getItemEquipped(2, 2);
                if (item != null) {
                    L1SkillUse l1skilluse = new L1SkillUse();
                    l1skilluse.handleCommands(pc, BLESSED_ARMOR, item
                                .getId(), 0, 0, null, 0, L1SkillUse.TYPE_SPELLSC);
                } else {
                    pc.sendPackets(new S_Message(79));
                }
             
                htmlid = ""; // 消
          }  
     
在下面加入:

// 祭司說話檔設定
      else if(((L1NpcInstance) obj).getNpcTemplate().get_npcId() == 200047
                    || ((L1NpcInstance) obj).getNpcTemplate().get_npcId() == 200048
                    || ((L1NpcInstance) obj).getNpcTemplate().get_npcId() == 200049 ){
                if (s.equalsIgnoreCase("Hierarch_1")&&((L1NpcInstance) obj).getHierarch() == 1) { // -1

                if (pc.getHierarch() > 0) {
                    pc.setHierarch(pc.getHierarch() - 1);
                }

                String msg0 = "";
                String msg1 = String.valueOf(pc.getHierarch() * 10);
                if (((L1NpcInstance) obj).getHierarch() == 1) {
                    msg0 = "輔助";
                } else {
                    msg0 = "跟隨";
                }
                htmldata = new String[] { ((L1NpcInstance) obj).getName(), String.valueOf(((L1NpcInstance) obj).getCurrentMp()), String.valueOf(((L1NpcInstance) obj).getMaxMp()), msg0, msg1 };
              htmlid = "Hierarch";
          } else if (s.equalsIgnoreCase("Hierarch_2")&&((L1NpcInstance) obj).getHierarch() == 1) { // +1

                if (pc.getHierarch() < 10) {
                    pc.setHierarch(pc.getHierarch() + 1);
                }

                String msg0 = "";
                String msg1 = String.valueOf(pc.getHierarch() * 10);
                if (((L1NpcInstance) obj).getHierarch() == 1) {
                    msg0 = "輔助";
                } else {
                    msg0 = "跟隨";
                }
                htmldata = new String[] { ((L1NpcInstance) obj).getName(), String.valueOf(((L1NpcInstance) obj).getCurrentMp()), String.valueOf(((L1NpcInstance) obj).getMaxMp()), msg0, msg1 };
              htmlid = "Hierarch";
          } else if (s.equalsIgnoreCase("Hierarch_3")) { // 切換狀態

                ((L1NpcInstance) obj).setHierarch(1);

                String msg0 = "";
                String msg1 = String.valueOf(pc.getHierarch() * 10);
                if (((L1NpcInstance) obj).getHierarch() == 1) {
                    msg0 = "輔助";
                } else {
                    msg0 = "跟隨";
                }
                htmldata = new String[] { ((L1NpcInstance) obj).getName(), String.valueOf(((L1NpcInstance) obj).getCurrentMp()), String.valueOf(((L1NpcInstance) obj).getMaxMp()), msg0, msg1 };
              htmlid = "Hierarch";
          } else if (s.equalsIgnoreCase("Hierarch_4")) { // 切換狀態

                ((L1NpcInstance) obj).setHierarch(0);

                String msg0 = "";
                String msg1 = String.valueOf(pc.getHierarch() * 10);
                if (((L1NpcInstance) obj).getHierarch() == 1) {
                    msg0 = "輔助";
                } else {
                    msg0 = "跟隨";
                }
                htmldata = new String[] { ((L1NpcInstance) obj).getName(), String.valueOf(((L1NpcInstance) obj).getCurrentMp()), String.valueOf(((L1NpcInstance) obj).getMaxMp()), msg0, msg1 };
              htmlid = "Hierarch";
          }
          }
          // 祭司說話檔設定 end


二.編譯C_NPCAction.java


7.L1DollInstance.java
一.加入:

import l1j...utils.Random;//祭司新增 有的版本沒有自行加上
import l1j...packets.S_AttackMissPacket;//祭司新增
import l1j...packets.S_Message;//祭司新增
import l1j...packets.S_SystemMessage;//祭司新增
import l1j...packets.S_HPUpdate;//祭司新增
import l1j...packets.S_MPUpdate;//祭司新增
import l1j...packets.S_Strup;//祭司新增
import l1j...packets.S_Dexup;//祭司新增
import l1j...packets.S_NPCTalkReturn;//祭司新增

二.搜尋:

  public boolean noTarget() {
          if (_master.isDead()) {
                deleteDoll();
                return true;
          }

  在下面新增加入:

  else if (_master != null
          && (_master.getCurrentHp() > 0)
          && (_master.getCurrentHp() <= ((_master.getMaxHp() * _master.getHierarch()) / 10))
          && (getCurrentMp() > 15)
          && (getLocation().getTileeDistance(_master.getLocation()) < 7)
          && (_master.glanceCheck(_master.getX(), _master.getY()) == true)
          && (getHierarch() == 1)&&
                    (getNpcTemplate().get_npcId()== 200047 )) { // 銀光祭司主動補血
                if (_master instanceof L1PcInstance) {
                    Random random = new Random();
                    L1PcInstance player = (L1PcInstance) _master;
                    broadcastPacket(new S_SkillSound(player.getId(), 830));
                    broadcastPacket(new S_AttackMissPacket(this, player.getId(), 19));
                    player.setCurrentHp(player.getCurrentHp() + (80 + random.nextInt(75)));
                    player.sendPackets(new S_Message(77, ""));//你覺得舒服多了。
                    player.sendPackets(new S_HPUpdate(player.getCurrentHp(), player.getMaxHp()));
                    setCurrentMp(getCurrentMp() - 20);

                    if (player.isInParty()) {
                          player.getParty().updateMiniHP(player);
                    }
                }
          }else if (_master != null
          && (_master.getCurrentHp() > 0)
          && (_master.getCurrentHp() <= ((_master.getMaxHp() * _master.getHierarch()) / 10))
          && (getCurrentMp() > 19)
          && (getLocation().getTileeDistance(_master.getLocation()) < 7)
          && (_master.glanceCheck(_master.getX(), _master.getY()) == true)
          && (getHierarch() == 1)&&
                    (getNpcTemplate().get_npcId()== 200048)) { // 黃金祭司主動補血
                if (_master instanceof L1PcInstance) {
                    Random random = new Random();
                    L1PcInstance player = (L1PcInstance) _master;
                    broadcastPacket(new S_SkillSound(player.getId(), 830));
                    broadcastPacket(new S_AttackMissPacket(this, player.getId(), 19));
                    player.setCurrentHp(player.getCurrentHp() + (105 + random.nextInt(75)));
                    player.sendPackets(new S_Message(77, ""));//你覺得舒服多了。
                    player.sendPackets(new S_HPUpdate(player.getCurrentHp(), player.getMaxHp()));
                    setCurrentMp(getCurrentMp() - 20);

                    if (player.isInParty()) {
                          player.getParty().updateMiniHP(player);
                    }
                }
          }
          else if (_master != null
          && (_master.getCurrentHp() > 0)
          && (_master.getCurrentHp() <= ((_master.getMaxHp() * _master.getHierarch()) / 10))
          && (getCurrentMp() > 19)
          && (getLocation().getTileeDistance(_master.getLocation()) < 7)
          && (_master.glanceCheck(_master.getX(), _master.getY()) == true)
          && (getHierarch() == 1)&&
                    (getNpcTemplate().get_npcId()== 200049)) { // 白金祭司主動補血
                if (_master instanceof L1PcInstance) {
                    Random random = new Random();
                    L1PcInstance player = (L1PcInstance) _master;
                    broadcastPacket(new S_SkillSound(player.getId(), 830));
                    broadcastPacket(new S_AttackMissPacket(this, player.getId(), 19));
                    player.setCurrentHp(player.getCurrentHp() + (125 + random.nextInt(75)));
                    player.sendPackets(new S_Message(77, ""));//你覺得舒服多了。
                    player.sendPackets(new S_HPUpdate(player.getCurrentHp(), player.getMaxHp()));
                    setCurrentMp(getCurrentMp() - 20);

                    if (player.isInParty()) {
                          player.getParty().updateMiniHP(player);
                    }
                }
          }
          else if (_master != null
                && ((!_master.hasSkillEffect(68)&& getNpcTemplate().get_npcId() !=200047 && getNpcTemplate().get_npcId() !=200048)
                || (!_master.hasSkillEffect(79) && getNpcTemplate().get_npcId() != 200047)
                || !_master.hasSkillEffect(48)
                || !_master.hasSkillEffect(26)    
                || !_master.hasSkillEffect(42))
                && (_master.getCurrentHp() > 0)
                && (getCurrentMp() > 9)
                && (getHierarch() == 1)) {// 加輔助效果
                    L1PcInstance player = (L1PcInstance) _master;
                if (!player.hasSkillEffect(26) &&
                    (getNpcTemplate().get_npcId()== 200047 ||
                          getNpcTemplate().get_npcId()== 200048 ||
                          getNpcTemplate().get_npcId()== 200049)) {//通暢
                    player.addDex((byte) 5);
                    player.sendPackets(new S_Dexup(player, 5, 1200));
                    player.setSkillEffect(26, 1200 * 1000);
                    player.broadcastPacket(new S_SkillSound(player.getId(), 750));
                    player.sendPackets(new S_SkillSound(player.getId(), 750));
                    player.sendPackets(new S_SystemMessage("你變得敏捷。"));
                    setCurrentMp(getCurrentMp() - 50);
                }

                if (!player.hasSkillEffect(42) &&
                    (getNpcTemplate().get_npcId()== 200047 ||
                          getNpcTemplate().get_npcId()== 200048 ||
                          getNpcTemplate().get_npcId()== 200049)) {//體魄強健術
                    player.addStr((byte) 5);
                    player.sendPackets(new S_Strup(player, 5, 1200));
                    player.setSkillEffect(42, 1200 * 1000);
                    player.broadcastPacket(new S_SkillSound(player.getId(), 751));
                    player.sendPackets(new S_SkillSound(player.getId(), 751));
                    player.sendPackets(new S_SystemMessage("你變得強壯。"));
                    setCurrentMp(getCurrentMp() - 50);
                }
                if (!player.hasSkillEffect(79) &&
                    (getNpcTemplate().get_npcId()== 200048 ||
                          getNpcTemplate().get_npcId()== 200049)) {//靈魂昇華
          player.setAdvenHp(player.getBaseMaxHp() / 5);
                    player.setAdvenMp(player.getBaseMaxMp() / 5);
                    player.addMaxHp(player.getAdvenHp());
                    player.addMaxMp(player.getAdvenMp());
                    player.sendPackets(new S_HPUpdate(player.getCurrentHp(), player
                                          .getMaxHp()));
                                player.setSkillEffect(79, 1200 * 1000);
                                player.sendPackets(new S_SkillSound(player.getId(), 3935));
                          player.broadcastPacket(new S_SkillSound(player.getId(), 3935));    
                          setCurrentMp(getCurrentMp() - 20);          
                                if (player.isInParty()) { //
                                    player.getParty().updateMiniHP(player);
                                }
                                player.sendPackets(new S_MPUpdate(player.getCurrentMp(), player
                                          .getMaxMp()));
                          }
                if (!player.hasSkillEffect(68) &&
                    getNpcTemplate().get_npcId()== 200049) {//聖結界
                    int dmg = 0;
                    dmg /=2;
          player.setSkillEffect(68, 32 * 1000);
                    player.broadcastPacket(new S_SkillSound(player.getId(), 228));
                    player.sendPackets(new S_SkillSound(player.getId(), 228));
                    player.sendPackets(new S_SystemMessage("你獲得神秘的力量。"));
                    setCurrentMp(getCurrentMp() - 30);
                          }          
                if (!player.hasSkillEffect(48)&&
                    (getNpcTemplate().get_npcId()== 200047 || getNpcTemplate().get_npcId()== 200048 || getNpcTemplate().get_npcId()== 200049)) {//祝福武器
                    player.addDmgup(2);
                    player.addHitup(2);
                    player.setSkillEffect(48, 1200 * 1000);
                    player.broadcastPacket(new S_SkillSound(player.getId(), 2176));
                    player.sendPackets(new S_SkillSound(player.getId(), 2176));    
                    setCurrentMp(getCurrentMp() - 20);                    
                }
           
                broadcastPacket(new S_AttackMissPacket(this, player.getId(), 19));

          }
          //祭司娃娃END


三.搜尋:

  public void setItemObjId(int i) {
          _itemObjId = i;
    }

  在下面新增1:

  //祭司娃娃
    public void onTalkAction(L1PcInstance player) {
          if (isDead()) {
                return;
          }
          if (_master.equals(player)&&
                (getNpcTemplate().get_npcId()== 200047 ||
                          getNpcTemplate().get_npcId()== 200048 ||
                          getNpcTemplate().get_npcId()== 200049)) {
                String[] htmldata = null;
                String msg0 = "";
                String msg1 = String.valueOf(player.getHierarch() * 10);
                if (getHierarch() == 1) {
                    msg0 = "輔助";
                } else {
                    msg0 = "跟隨";
                }
                htmldata = new String[] { getName(), String.valueOf(getCurrentMp()), String.valueOf(getMaxMp()), msg0, msg1 };
                player.sendPackets(new S_NPCTalkReturn(getId(), "Hierarch", htmldata));
          }
    }
  //祭司娃娃END

  在下面新增2:

    //新增祭司娃娃回魔相關
    public void onFinalAction(L1PcInstance player, String action) {
    }

    @Override
    public void setCurrentMp(int i) {
          int currentMp = i;
          if (currentMp >= getMaxMp()) {
                currentMp = getMaxMp();
          }
          setCurrentMpDirect(currentMp);
          if (getMaxMp() > getCurrentMp()) {
                startMpRegeneration();
          }
    }
    //祭司娃娃回魔相關end

四.編譯L1DollInstance.java




對話檔部分:
<html>
<body>
<font fg=ffffff><p align=left><var src="#0">:</p></font>
<br>
目前魔力: <var src="#1"> / <var src="#2">
<br>
目前狀態: <var src="#3">
<br>
切換狀態: <a action="Hierarch_3">輔助</a> / <a action="Hierarch_4">跟隨</a>
<br>
<br>
治療設定: <a action="Hierarch_1"> - </a> <var src="#4">% <a action="Hierarch_2"> + </a>
<br>
<br>
<br>
<br>
</body>
</html>

---------------------------------------------------
修改技能、新增..教學

if (!player.hasSkillEffect(168) && 168魔法編號
                (getNpcTemplate().get_npcId()== 200047 200047祭師編號
                )) {//鋼鐵防護 魔法名稱
                player.addAc((byte) -10); 魔法功能(目前是防+10)
                player.setSkillEffect(168, 960 * 1000); 168魔法編號 960魔法秒數 1000是?(代表1秒?)
                player.broadcastPacket(new S_SkillSound(player.getId(), 2252)); 魔法圖檔
                                  player.sendPackets(new S_SkillSound(player.getId(), 2252)); 魔法圖檔
                player.sendPackets(new S_SystemMessage("大地之氣圍繞你。")); 對話欄出現訊息
                setCurrentMp(getCurrentMp() - 30); 祭師耗魔量
              }

本文章使用了關鍵字:




[ 此貼被devilsmile1214在2017-1-11 00:15重新編輯 ]



將本文加入網路書籤:


※ ※ ※ 本文為 devilsmile1214 與 月光論壇 共同所有,未經同意,請勿轉載 ※ ※ ※

頂端 [樓 主] From:臺灣台固媒體股份有限公司 | Posted: 2017-1-11 00:01
ov3118
默認頭像


8 該用戶目前不在線
級別: 路人甲
精華: 0
年齡: 35
發表文章: 0/0
回覆文章: 14/15
只看該作者

第一次看到教學~剛入~感覺好厲害~可是我看不懂

本文章使用了關鍵字:

頂端 [1 樓] From:臺灣中華電信股份有限公司 | Posted: 2017-1-11 00:18 | 第 1 次回覆
小鬼


8 該用戶目前不在線
級別: 路人甲
精華: 0
年齡: 37
發表文章: 4/5
回覆文章: 90/101
只看該作者

不錯喔!感謝大大核心!

本文章使用了關鍵字:

頂端 [2 樓] From:臺灣凱擘股份有限公司 | Posted: 2017-1-11 08:49 | 第 1 次回覆
Ya20030705
默認頭像


8 該用戶目前不在線
級別: 路人甲
精華: 0
年齡: 28
發表文章: 0/0
回覆文章: 2/13
只看該作者

感覺有點難 還是感謝提供這樣的資訊

頂端 [3 樓] From:臺灣中華電信股份有限公司 | Posted: 2017-1-11 09:30 | 第 1 次回覆
a90712520
默認頭像


8 該用戶目前不在線
級別: 路人甲
精華: 0
年齡: 48
發表文章: 0/5
回覆文章: 67/91
只看該作者

= =??完全照著上面弄

祭司會卡圖

頂端 [4 樓] From:臺灣中華電信股份有限公司 | Posted: 2017-1-11 12:53 | 第 1 次回覆

月光論壇

月光論壇為自由討論論壇,所有個人言論不代表本站立場。文章內容如有涉及侵權請連絡我們,將立即刪除相關文章資料


Powered by PHPWind v5.0.1
Code © 2003-05 PHPWind
Find my site on DoubleClick Ad Planner Valid XHTML 1.0 Transitional Valid CSS!
Total 0.002403(s) query 7, Gzip enabled, Now Server Load 0.14 %, Max 181.97 %
著作權侵權 | 本網站已依台灣網站內容分級規定處理 | FaceBook粉絲專頁 | 聯絡我們