2013年5月17日 星期五

【Java教學】究極起死回生術


究極起死回生術






















這個是我的伺服器內的宣傳圖,僅供參考。

前言:
對天堂私服接觸比較久的人應該都知道這個魔法,
此為咖啡版的究極起死回生術,
因為看到目前大多數的整合版幾乎是以仿正為主流,
或者是自創內容,但是有自創技能的版本似乎屈指可數...
也有可能是小弟的見識太淺薄....QQ
不過鑒於這個出發點,小弟現在分享這個方法,
將咖啡版的究極起死回生術在新的版本中呈現出來。


使用軟體:JCDJ
參考了日版的起死回生術原碼。
使用MCA大發佈的Rev1118版製成,特此感謝。
使用了傑大1098版的william_item_magic功能來施放魔法,特此感謝。

現在開始修改....
l1j\server\server\model\skill\L1SkillId.java
找到這一段

public static final int ADDITIONAL_FIRE = 176;

public static final int SKILLS_END = 176;

改成這樣

public static final int ADDITIONAL_FIRE = 176;

public static final int SUPER_TURN_UNDEAD = 177;//集體起死回生術

public static final int SKILLS_END = 177;
完畢,記得先將此原碼轉檔,壓入核心才能繼續以下的動作。

接著修改
l1j\server\server\model\skill\L1SkillUse.java

找到這一段
case TURN_UNDEAD: { // 起死回生術
if (undeadType == 1 || undeadType == 3) {
dmg = cha.getCurrentHp();
}else {
dmg = 0;
}
}
break;
往下插入這一段,先設定這個魔法的效果

case SUPER_TURN_UNDEAD: { // 集體起死回生術
     if (undeadType == 1 || undeadType == 3) {     
       dmg = cha.getCurrentHp();
      _player.sendPackets(new S_SkillSound(cha.getId(), 754));
      _player.broadcastPacket(new S_SkillSound(cha.getId(), 754)); // 魔法效果送出
      } else {
       dmg = 0;
      }
     }
     break;
再往下找到這一段

if ((_skillId == TURN_UNDEAD && (undeadType == 0 || undeadType == 2))
    || (_skillId == TURN_UNDEAD && isTU == false)
    || ((_skillId == ERASE_MAGIC || _skillId == SLOW || _skillId == MANA_DRAIN || _skillId == MASS_SLOW || _skillId == ENTANGLE
    || _skillId == CURSE_PARALYZE || _skillId == SILENCE || _skillId == CURSE_BLIND || _skillId == DARKNESS
                                 || _skillId == DARK_BLIND || _skillId == FOG_OF_SLEEPING || _skillId == SHOCK_STUN) && isErase == false) // 新增木乃伊 CURSE_PARALYZE、魔封無效 SILENCE
    || (_skillId == MANA_DRAIN && isManaDrain == false)) { //新增闇盲咒術 CURSE_BLIND
                                // 黑暗之影 DARKNESS、暗黑盲咒(黑妖的) DARK_BLIND、沉睡之霧無效 FOG_OF_SLEEPING by 9001183ex  增加衝暈 SHOCK_STUN by mca 20081223
   return true;
  }
  return false;
}
}
改成這樣

if ((_skillId == TURN_UNDEAD && (undeadType == 0 || undeadType == 2))
    || (_skillId == TURN_UNDEAD && isTU == false)
    || (_skillId == SUPER_TURN_UNDEAD && (undeadType == 0 || undeadType == 2)) //增加集體起死回生術
    || (_skillId == SUPER_TURN_UNDEAD && isTU == false)  //增加集體起死回生術
    || ((_skillId == ERASE_MAGIC || _skillId == SLOW || _skillId == MANA_DRAIN || _skillId == MASS_SLOW || _skillId == ENTANGLE
    || _skillId == CURSE_PARALYZE || _skillId == SILENCE || _skillId == CURSE_BLIND || _skillId == DARKNESS
                                 || _skillId == DARK_BLIND || _skillId == FOG_OF_SLEEPING || _skillId == SHOCK_STUN) && isErase == false) // 新增木乃伊 CURSE_PARALYZE、魔封無效 SILENCE
    || (_skillId == MANA_DRAIN && isManaDrain == false)) { //新增闇盲咒術 CURSE_BLIND
                                // 黑暗之影 DARKNESS、暗黑盲咒(黑妖的) DARK_BLIND、沉睡之霧無效 FOG_OF_SLEEPING by 9001183ex  增加衝暈 SHOCK_STUN by mca 20081223
   return true;
  }
  return false;
}
}
完畢

接著再修改
l1j\server\server\model\L1Magic.java

設定這個魔法的成功率限制,

找到這一段

// 起死回生機率限制
   if (skillId == TURN_UNDEAD && _calcType == PC_NPC) {
    if (_pc.isWizard() && probability > 70) { // 法師
     probability = 70;
    } else if (_pc.isElf()) { // 妖精
     if (probability > 70) {
      probability = 55;
     } else {
      probability /= 2;
     }
    }
   }
   // 起死回生機率限制  end
改成這樣

// 起死回生機率限制
   if ((skillId == TURN_UNDEAD || skillId == SUPER_TURN_UNDEAD) && _calcType == PC_NPC) {
    if (_pc.isWizard() && probability > 70) { // 法師
     probability = 70;
    } else if (_pc.isElf()) { // 妖精
     if (probability > 70) {
      probability = 55;
     } else {
      probability /= 2;
     }
    }
   }
   // 起死回生機率限制  end
核心修改完畢,
接著開始修改DB的部份。

skills
新增一筆資料:

177 集體起死回生術 0 0 45 20 40318 1 3000 0 none 2 0 0 0 0 7 1 19 4 0 0 5 0 0  761 0 0 280 0  0 0
etcitem
新增一筆資料:
9000 究極起死回生術 究極起死回生術 other normal none 0 3095 776 0 0 0 0 0 0 0 0 0 0 1 1 5 5000 0 0 1
william_item_magic
新增一筆資料:
9000 0 0 177 0
完畢,這樣就能使用9000這個道具來施展究極起死回生術了,儘管寫法可能和咖啡版的有出入,
但至少效果是一樣的,幾乎是90%重現咖啡版的究極起死回生術了。
應該是90% ="= 畢竟我咖啡版沒玩過很久

沒有留言:

張貼留言