瘋天堂私服發佈網站廣告欄位!
瘋天堂私服發佈網站您最佳的選擇!
免費曝光天堂私服的方式!
害怕天堂私服倒閉嗎?快使用天堂分析師!
天堂私服抽獎扭蛋物品及機率測試器
天堂私服稱號顏色製造器
瘋天堂私服發佈網站教您註冊推文收藏私服!
天堂私服血量魔力計算器
瘋天堂私服發布網站廣告贊助及爆料私服客服
教您如何不用註冊也可以推文天堂私服!
天堂私服270怪物查詢掉落資料庫
天堂私服盟徽製造器
test0428
2014-11-15 12:30

天堂怪物死亡變身加入機率設定的java教學寫法!

修改版本 Rev2021

修改以下原碼:
l1j\server\server\datatables\NpcTable.java
l1j\server\server\templates\L1Npc.java
l1j\server\server\model\Instance\L1MonsterInstance.java

步驟1:

L1Npc.java

找個地方加入這一段
//怪死變身機率
private int _TransChance;
public int getTransChance() {
return _TransChance;}
public void setTransChance(int TransChance) {
_TransChance = TransChance;}
//怪死變身機率

步驟2:

NpcTable.java

在這一段的迴圈中找個地方插入這一句:
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con.prepareStatement("SELECT * FROM npc");
rs = pstm.executeQuery();
while (rs.next()) {
//怪死變身機率
npc.setTransChance(rs.getInt("TransChance"));
//怪死變身機率

步驟3:
L1MonsterInstance.java

匯入宣告加入以下:
import java.util.Random;

接著在public class L1MonsterInstance extends L1NpcInstance {

的迴圈中找個地方加入以下:
private static Random _random = new Random();


找到這一段落:
int newHp = getCurrentHp() - damage;
if (newHp <= 0 && !isDead()) {
int transformId = getNpcTemplate().getTransformId();
// 變身
if (transformId == -1) {
setCurrentHpDirect(0);
setDead(true);
setStatus(ActionCodes.ACTION_Die);
openDoorWhenNpcDied(this);
Death death = new Death(attacker);
GeneralThreadPool.getInstance().execute(death);
// Death(attacker);
} else { // 變身
// distributeExpDropKarma(attacker);
transform(transformId);
}
}
if (newHp > 0) {
setCurrentHp(newHp);
hide();
}
} else if (!isDead()) { // 念
setDead(true);
setStatus(ActionCodes.ACTION_Die);
Death death = new Death(attacker);
GeneralThreadPool.getInstance().execute(death);
// Death(attacker);
}
}

將他修改為以下:
int newHp = getCurrentHp() - damage;
if (newHp <= 0 && !isDead()) {
int transformId = getNpcTemplate().getTransformId();
int chance = getNpcTemplate().getTransChance();
// 變身
if (transformId == -1) {
setCurrentHpDirect(0);
setDead(true);
setStatus(ActionCodes.ACTION_Die);
openDoorWhenNpcDied(this);
Death death = new Death(attacker);
GeneralThreadPool.getInstance().execute(death);
// Death(attacker);
/*刪除} else { // 變身
15.// distributeExpDropKarma(attacker);
transform(transformId);
}
}刪除*/
//怪死變身機率
}
if (transformId !=-1 && chance == 0) {
chance = 101;
}
if (chance >= 1) {
Random random = new Random();
int rnd = random.nextInt(100) + 1;
if (transformId !=-1 && rnd <= chance) {
transform(transformId);
} else {
setCurrentHpDirect(0);
setDead(true);
setStatus(ActionCodes.ACTION_Die);
openDoorWhenNpcDied(this);
Death death = new Death(attacker);
GeneralThreadPool.getInstance().execute(death);
}
}
}
//怪死變身機率


步驟4:

db的npc資料表新增以下欄位:

TransChance int 10 0 不允許空白

預設值為0

TranceChance(怪死變身機率)
輸入0的時候,以及transform_id有輸入編號的時候,那麼0等於100%變身。
如果輸入1以上的數字,那麼就會隨著機率變身。



上一篇文章:天堂魂體回魔量的java教學寫法!
下一篇文章:天堂新增武器稱號的java教學寫法!

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