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_ServerMessage(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.server.server.utils.Random;//祭司新增 有的版本沒有自行加上
import l1j.server.server.serverpackets.S_AttackMissPacket;//祭司新增
import l1j.server.server.serverpackets.S_ServerMessage;//祭司新增
import l1j.server.server.serverpackets.S_SystemMessage;//祭司新增
import l1j.server.server.serverpackets.S_HPUpdate;//祭司新增
import l1j.server.server.serverpackets.S_MPUpdate;//祭司新增
import l1j.server.server.serverpackets.S_Strup;//祭司新增
import l1j.server.server.serverpackets.S_Dexup;//祭司新增
import l1j.server.server.serverpackets.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().getTileLineDistance(_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_ServerMessage(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().getTileLineDistance(_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_ServerMessage(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().getTileLineDistance(_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_ServerMessage(77, ""));//你覺得舒服多了。
player.sendPackets(new S_HPUpdate(player.getCurrentHp(), player.getMaxHp()));
&am
上一篇文章:天堂版本升級3.63的教學!
下一篇文章:天堂設定排程讓MySQL自動最佳化資料表!
分享文章:
![]()