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

天堂轉生系統的java教學!

Config.java

加入

public static int REVIVAL_POTION;//TODO 轉生血魔保留


// charsettings.properties
// charsettings.properties
try {
Properties charSettings = new Properties();
InputStream is = new FileInputStream(new File(
CHAR_SETTINGS_CONFIG_FILE));
charSettings.load(is);

is.close();

下面加入

// TODO 轉生血魔保留
REVIVAL_POTION = Integer.parseInt(charSettings.getProperty(
"Revival_Potion", "5"));
// TODO 轉生血魔保留


} else if (pName.equalsIgnoreCase("Lv99Exp")) {
LV99_EXP = Integer.parseInt(pValue);

下面加入

// TODO 轉生血魔保留
} else if (pName.equalsIgnoreCase("Revival_Potion")) {
REVIVAL_POTION = Integer.parseInt(pValue);
// TODO 轉生血魔保留


GameServer.java

if (Config.ALT_NONPVP) { // Non-PvP設定
System.out.println("└" + L1Message.nonpvpNo + "\n");
} else {
System.out.println("└" + L1Message.nonpvpYes + "\n");
}

下面加入

//TODO 轉生血魔保留
if (Config.REVIVAL_POTION == 1) {
System.out.println("轉生血魔保留:10%");
} else if (Config.REVIVAL_POTION == 2) {
System.out.println("轉生血魔保留:20%");
} else if (Config.REVIVAL_POTION == 3) {
System.out.println("轉生血魔保留:30%");
} else if (Config.REVIVAL_POTION == 4) {
System.out.println("轉生血魔保留:40%");
} else if (Config.REVIVAL_POTION == 5) {
System.out.println("轉生血魔保留:50%");
} else if (Config.REVIVAL_POTION == 6) {
System.out.println("轉生血魔保留:60%");
} else if (Config.REVIVAL_POTION == 7) {
System.out.println("轉生血魔保留:70%");
} else if (Config.REVIVAL_POTION == 8) {
System.out.println("轉生血魔保留:80%");
} else if (Config.REVIVAL_POTION == 9) {
System.out.println("轉生血魔保留:90%");
} else if (Config.REVIVAL_POTION == 10) {
System.out.println("轉生血魔保留:100%");
}
//TODO 轉生血魔保留


L1Character.java


public void setKarma(int karma) {
_karma = karma;
}

下面加入

//TODO 記錄轉生次數
public int _metempsychosis;
public int get_metempsychosis()
{
return _metempsychosis;
}

public void set_metempsychosis(int l)
{
_metempsychosis = (int)l;
}
//TODO 記錄轉生次數

C_ItemUSe.java

import java.util.Collection;//TODO 使用轉生藥水公告

返生藥水修改(43000)

修改成

} else if (itemId == 43000) { // 復活のポーション(Lv99キャラのみが使用可能/Lv1に戾る效果)
pc.getInventory().takeoffEquip(945);// TODO 用來脫掉全身裝備
if (pc.getLevel() == 99) {
pc.setExp(1);
pc.resetLevel();
pc.setLevelmet(pc.getLevelmet() + 1);//轉生紀錄
//TODO 血量調整
switch (Config.REVIVAL_POTION) {
case 1:
pc.addBaseMaxHp((short) (-1 * (int) ((double) pc.getBaseMaxHp() * 0.9D)));
pc.addBaseMaxMp((short) (-1 * (int) ((double) pc.getBaseMaxMp() * 0.9D)));
break;
case 2:
pc.addBaseMaxHp((short) (-1 * (int) ((double) pc.getBaseMaxHp() * 0.8D)));
pc.addBaseMaxMp((short) (-1 * (int) ((double) pc.getBaseMaxMp() * 0.8D)));
break;
case 3:
pc.addBaseMaxHp((short) (-1 * (int) ((double) pc.getBaseMaxHp() * 0.7D)));
pc.addBaseMaxMp((short) (-1 * (int) ((double) pc.getBaseMaxMp() * 0.7D)));
break;
case 4:
pc.addBaseMaxHp((short) (-1 * (int) ((double) pc.getBaseMaxHp() * 0.6D)));
pc.addBaseMaxMp((short) (-1 * (int) ((double) pc.getBaseMaxMp() * 0.6D)));
break;
case 5:
pc.addBaseMaxHp((short) (-1 * (int) ((double) pc.getBaseMaxHp() * 0.5D)));
pc.addBaseMaxMp((short) (-1 * (int) ((double) pc.getBaseMaxMp() * 0.5D)));
break;
case 6:
pc.addBaseMaxHp((short) (-1 * (int) ((double) pc.getBaseMaxHp() * 0.4D)));
pc.addBaseMaxMp((short) (-1 * (int) ((double) pc.getBaseMaxMp() * 0.4D)));
break;
case 7:
pc.addBaseMaxHp((short) (-1 * (int) ((double) pc.getBaseMaxHp() * 0.3D)));
pc.addBaseMaxMp((short) (-1 * (int) ((double) pc.getBaseMaxMp() * 0.3D)));
break;
case 8:
pc.addBaseMaxHp((short) (-1 * (int) ((double) pc.getBaseMaxHp() * 0.2D)));
pc.addBaseMaxMp((short) (-1 * (int) ((double) pc.getBaseMaxMp() * 0.2D)));
break;
case 9:
pc.addBaseMaxHp((short) (-1 * (int) ((double) pc.getBaseMaxHp() * 0.1D)));
pc.addBaseMaxMp((short) (-1 * (int) ((double) pc.getBaseMaxMp() * 0.1D)));
break;
}
//TODO 血量調整
//TODO 防禦、魔防、命中、攻擊重新計算
pc.resetBaseAc();
pc.resetBaseMr();
pc.resetBaseHitup();
pc.resetBaseDmgup();
//TODO 防禦、魔防、命中、攻擊重新計算
pc.setBonusStats(0);
pc.sendPackets(new S_SkillSound(pcObjid, 3393));
pc.broadcastPacket(new S_SkillSound(pcObjid, 3393));
pc.sendPackets(new S_OwnCharStatus(pc));
pc.getInventory().removeItem(l1iteminstance, 1);
pc.set_metempsychosis(pc.get_metempsychosis() + 1);//TODO 轉生次數+1
L1Teleport.teleport(pc, ((L1EtcItem) l1iteminstance.getItem()).get_locx(),
((L1EtcItem) l1iteminstance.getItem()).get_locy(),
((L1EtcItem) l1iteminstance.getItem()).get_mapid(), 5, true);
pc.sendPackets(new S_ServerMessage(822)); // 獨自アイテムですので、メッセージは適當です。。
BroadCastToAll("\\fV" + "恭喜玩家【" + pc.getName()+ "】爆肝修練第"+ pc.get_metempsychosis()+ "次轉生");
pc.save(); // DBにキャラクター情報を書き迂む
}


最下面加入


// TODO 使用轉生藥水公告
private void BroadCastToAll(final String string) {
final Collection<L1PcInstance> allpc = L1World.getInstance()
.getAllPlayers();
for (final L1PcInstance pc : allpc) {
pc.sendPackets(new S_SystemMessage(string));
}
}

最後在config資料夾

charsettings.properties

下面加入

這個是轉生保留的血摩設定5表示保留血摩50%以此類推
#轉生血魔保留(1-10、設定值10完整保留)
Revival_Potion = 7



上一篇文章:天堂修復DB、打不開、資料異常、突然錯誤..等等問題的教學!
下一篇文章:天堂等級傷害加成系統的java教學!

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