紫色部分為 0327 新增加 開啟 & 關閉 顯示
麻煩請稍做更新,以免出現一些小問題
(目前已知問題:古白消耗完畢,自動關閉皆正常;但天照不會自動更新為\"關閉\",應該是要加入類PINKNAME判斷)
會有一支青龍一直跑出來的大大們,請把下面這句 註解掉
//_pc.sendPackets(new
S_SkillSound(_pc.getId(), 6588));
如果有多餘寫法 or 更好的建議,歡迎分享,小弟願意精進
小弟想新增祭司系統,不知道有無大大可以教學或是有收藏文資料能分享,感謝萬分
在祭司系統沒搞出來,先暫時用這個頂頂吧!!
簡易的自動補血道具
參考修改 alen6700 && eason817 兩位大大,提出測試意見與修改方法
eason817 大有提出依照PINKNAME判斷法修改 isAutoHp()
有興趣玩家可試著測試看看,小弟並無加入判斷
【修改開始】
首先請先裝好 missu0524 大 的持續魔法特效
開啟 L1PcInstance 這一段有做修改,請核對作更正
找到 private
MpReductionByAwake _mpReductionByAwake;
在下方新增
private SkillSound
_SkillSoundAutoHp;//add 修改持續出現魔法特效 by missu0524
找到 private
boolean _mpReductionActiveByAwake;
在下方新增
private boolean
_SkillSoundActiveAutoHp;//add 修改持續出現魔法特效 by missu0524
找到public
void setGres(boolean flag) {
_isGres = flag;
}
_isGres = flag;
}
在下方新增
//0327 新增 自動補血判斷
public boolean isAutoHp() {
return _isAutoHp;
}
public void setAutoHp(boolean flag) {
_isAutoHp = flag;
}
//0327 新增 自動補血判斷
找到 private
boolean _isPinkName = false;
在下方新增
private boolean _isAutoHp = false;//ADD
0327 自動補血參數
找到 missu0524 大所寫的這段
public void
startSkillSound() {
final int INTERVAL = 4000; // 間隔時間
SkillSound SkillSound;
SkillSound = new SkillSound(this);
_regenTimer.scheduleAtFixedRate(SkillSound,
INTERVAL, INTERVAL);
}
final int INTERVAL = 4000; // 間隔時間
SkillSound SkillSound;
SkillSound = new SkillSound(this);
_regenTimer.scheduleAtFixedRate(SkillSound,
INTERVAL, INTERVAL);
}
在下方新增 這一段有做修改,請核對作更正
public void startSkillSound_autoHP() {
final int INTERVAL = 600; // 間隔時間
if (!_SkillSoundActiveAutoHp) {
_SkillSoundAutoHp = new
SkillSound(this);
_regenTimer.scheduleAtFixedRate(_SkillSoundAutoHp,
INTERVAL, INTERVAL);
_SkillSoundActiveAutoHp = true;
setAutoHp(true);//自動補血判定 開 0327新增
}
}
public void stopSkillSound_autoHP() {
if (_SkillSoundActiveAutoHp) {
_SkillSoundAutoHp.cancel();
_SkillSoundAutoHp = null;
_SkillSoundActiveAutoHp = false;
setAutoHp(false);//自動補血判定 關 0327新增
}
}
final int INTERVAL =
600; // 間隔時間
這段為補血的間隔時間,依個人需求設定即可。
L1PcInstance 這邊就完成了
再來請開啟 missu0524 大 所新增的 SkillSound
這是原檔,因為有人反應無法下載,故放上
如M大有反應,小弟會撤掉這段。
如M大有反應,小弟會撤掉這段。
複製後,貼上文件夾,改副檔名為JAVA
SkillSound .java
package Threading;
import java.util.TimerTask;
import java.util.logging.Level;
import java.util.logging.Logger;
import
l1j.server.server.model.Instance.L1PcInstance;
import
l1j.server.server.serverpackets.S_SkillSound;
public class SkillSound extends
TimerTask {
private static Logger _log =
Logger.getLogger(SkillSound.class
.getName());
private final L1PcInstance _pc;
public SkillSound(L1PcInstance pc) { //建構
_pc = pc;
}
@Override
public void run() {
try {
if (_pc.isDead()) {
return;
}
_pc.sendPackets(new
S_SkillSound(_pc.getId(), 6588));
} catch (Throwable e) {
_log.log(Level.WARNING,
e.getLocalizedMessage(), e);
}
}
}
會有一支青龍一直跑出來的大大們,請把下面這句 註解掉
//_pc.sendPackets(new
S_SkillSound(_pc.getId(), 6588));
找到 import
l1j.server.server.model.Instance.L1PcInstance;
在下方新增
import
l1j.server.server.model.Instance.L1ItemInstance;
import
l1j.server.server.serverpackets.S_SystemMessage;
再來依照下方修改即可 黑色為原本語法、紫色為新增語法
public void run() {
try {
if (_pc.isDead()) {
return;
}
try {
if (_pc.isDead()) {
return;
}
// 封鎖 LinHelp無條件喝水功能 //木乃伊,衝暈,大地屏障
if (_pc.isParalyzed() ||
_pc.hasSkillEffect(33) || _pc.hasSkillEffect(71) || _pc.hasSkillEffect(87) ||
_pc.hasSkillEffect(157)) {
return;
}
/** 無法使用道具地圖 */
if (!_pc.getMap().isUsableItem()) {
_pc.stopSkillSound_autoHP(); //自動停止
_pc.sendPackets(new
S_SystemMessage(\"這個地圖無法使用自動補血,關閉 天照。\"));
return;
}
//天照<自動補血>
int pcLV =
_pc.getLevel(); //玩家等級
int pcHP =
_pc.getCurrentHp(); //玩家目前HP
int autoHP =
((short)(_pc.getMaxHp()*0.5));
//設定 低於最大HP的多少值,補血(目前設定 為最大HP的一半)
int autoHP2
=((short)(_pc.getCurrentHp()* 0.05));
// 設定 <補血量的條件之一> 0.05是我隨便亂設定的,自行修改判斷
int auto_HP = autoHP2
+ pcLV; //補血總量
if
(_pc.getInventory().checkItem(40024)){ //檢查身上有無 古代白水40024
if
(_pc.getInventory().checkItem(700115)&& (pcHP < autoHP)) {
//檢查身上有無 天照700117&& 判斷玩家目前HP是否小於最大HP的一半
_pc.setCurrentHp(pcHP
+ (autoHP2 + pcLV));
//補血總量 = (目前HP*0.05 + 等級值)
_pc.sendPackets(new
S_SkillSound(_pc.getId(), 832)); //832 魔法圖示
_pc.broadcastPacket(new
S_SkillSound(_pc.getId(), 832));
if(auto_HP > 150){
//補血量 高於150 古白消耗 2瓶;低於則 1瓶
_pc.getInventory().consumeItem(40024,
2); // 扣除消耗 古白 2
}else {
_pc.getInventory().consumeItem(40024, 1); // 扣除消耗 古白1
}
}
} //下面是增設白水喝完,自動停止
else
{_pc.stopSkillSound_autoHP(); //自動停止,擺在這裡
_pc.sendPackets(new
S_SystemMessage(\"\\\\fW\"+\"天照,所需藥水不足。\"));
_pc.sendPackets(new
S_SystemMessage(\"\\\\fW\"+\"關閉自動補血,天照。\"));
}
_pc.sendPackets(new
S_SkillSound(_pc.getId(), 6588)); //←會一直出現青龍,註解掉這段
} catch (Throwable e)
{
_log.log(Level.WARNING,
e.getLocalizedMessage(), e);
}
}
}
SkillSound 這邊就完成了
再來請開啟 C_ItemUSe
此段 標註0327為新增部分
隨便個找個位子,加入
} else if (itemId == 700115){ //天照 <自動補血道具>
if(pc.getInventory().checkItem(700115)&&
pc.getInventory().checkItem(40024)){
if (!pc.isAutoHp()) {// 0327新增沒有開啟 自動補血判斷,則執行以下
//檢查身上有無 天照 700115 && 古代白水 40024
pc.startSkillSound_autoHP();
pc.sendPackets(new
S_SystemMessage(\"\\\\fW\"+\"開啟自動補血,天照。\"));
l1iteminstance.setNowAutoHp(true);
//0327新增
}else{pc.stopSkillSound_autoHP(); //0327新增
pc.sendPackets(new
S_SystemMessage(\"\\\\fW\"+\"關閉自動補血,天照。\")); //0327新增
l1iteminstance.setNowAutoHp(false);
//0327新增
} //0327新增
}else{pc.stopSkillSound_autoHP();
pc.sendPackets(new
S_SystemMessage(\"\\\\fW\"+\"天照,所需藥水不足。\"));
l1iteminstance.setNowAutoHp(false);
//0327新增
}
//End
再來請開啟 L1ItemInstance
找到 public void stopEquipmentTimer(L1PcInstance pc) {
if
(getRemainingTime() > 0) {
_equipmentTimer.cancel();
_equipmentTimer =
null;
}
}
在下方新增
//ADD 0327 自動補血開關 參數
private boolean _isNowAutoHp = false;
public boolean isNowAutoHp() {
return _isNowAutoHp;
}
public void setNowAutoHp(boolean flag) {
_isNowAutoHp = flag;
}
//END
找到if (itemId == 40001 || itemId == 40002) { // 40001 燈 or
if (getRemainingTime() <= 0) {
name.append(\" ($11)\");
}
}
}
if (getRemainingTime() <= 0) {
name.append(\" ($11)\");
}
}
}
在下方新增
if (itemId == 700115) { //0327 新增 自動補血 天照 開關
if (!isNowAutoHp()) { // 開啟參數,讓核心判定物品是否開啟
name.append(\"(關閉)\");
} else {
name.append(\"(開啟)\");
}
}
DB內 道具
700115天照天照materialnormalgemstone0313829830100000000100000010
以下追加 防止LH2、木乃伊、大地屏障、衝擊之暈、特定地圖無法使用的寫法
SkillSound.java
在
if (_pc.isDead()) {
return;
}
下方加入:
// 封鎖 LinHelp無條件喝水功能 //木乃伊,衝暈,大地屏障
if (_pc.isParalyzed() ||
_pc.hasSkillEffect(33) || _pc.hasSkillEffect(71) || _pc.hasSkillEffect(87) ||
_pc.hasSkillEffect(157)) {
return;
}
/** 下面這個就看個人要不要加上 */
if (!_pc.getMap().isUsableItem()) {
_pc.sendPackets(new
S_SystemMessage("這個地圖無法使用自動喝水,關閉自動喝水功能。"));
_pc.stopSkillSound_autoHP(); //自動停止,擺在這裡 (此處修正部分為順序)
}
|
沒有留言:
張貼留言