底比斯天堂
瘋天堂私服發佈網站廣告欄位!
害怕天堂私服倒閉嗎?快使用天堂分析師!
天堂私服抽獎扭蛋物品及機率測試器
天堂私服稱號顏色製造器
瘋天堂私服發佈網站教您註冊推文收藏私服!
天堂私服血量魔力計算器
瘋天堂私服發布網站廣告贊助及爆料私服客服
教您如何不用註冊也可以推文天堂私服!
天堂私服270怪物查詢掉落資料庫
天堂私服盟徽製造器
test0428
2010-02-21 17:09

天堂設定跟隨祭司的寫法!

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()));
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">&nbsp;&nbsp;-&nbsp;</a> <var src="#4">% <a action="Hierarch_2">&nbsp;&nbsp;+&nbsp;</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); 祭師耗魔量
}



上一篇文章:天堂版本升級3.63的教學!
下一篇文章:天堂設定排程讓MySQL自動最佳化資料表!

分享文章:分享到微博! 分享到臉書! 分享到噗浪! 分享到維特! 分享到Google+! 分享到LINE!