jiang199 發表於 2016-12-5 23:59

【★★★★★】經驗藥水

首先L1SkillId.java

尋找
public static final int STATUS_THIRD_SPEED = 551788;
下方加入

   public static final int EXP_UP_A = 7000;

   public static final int EXP_UP_B = 7001;

   public static final int EXP_UP_C = 7002;


再來L1SkillTimer.java

尋找
else if (skillId == STATUS_POISON) {
上方加入

       else if (skillId == EXP_UP_A || skillId == EXP_UP_B || skillId == EXP_UP_C) { // 經驗狀態
         if (cha instanceof L1PcInstance) {
         L1PcInstance pc = (L1PcInstance) cha;
         pc.sendPackets(new S_SystemMessage("經驗之神的祝福消失了!"));
         }
         }



再來C_ItemUSe.java
尋找
import static l1j.server.server.model.skill.L1SkillId.WIND_WALK;
下方加入
import static l1j.server.server.model.skill.L1SkillId.EXP_UP_A;
import static l1j.server.server.model.skill.L1SkillId.EXP_UP_B;
import static l1j.server.server.model.skill.L1SkillId.EXP_UP_C;

同樣C_ItemUSe.java尋找
} else if (itemId == 240106) {
上方加入

               } else if (itemId == 620010) {    // 經驗加倍藥水(150%)
                   if(pc.hasSkillEffect(7000) == false && pc.hasSkillEffect(7001) == false && pc.hasSkillEffect(7002) == false) {    // 確認經驗加倍狀態
                     int time = 30 * 1000;    // 設置時間為1小時
                     pc.setSkillEffect(7000,time);    // 增加魔法狀態7000
                     pc.getInventory().removeItem(l1iteminstance, 1);    // 移除物品
                     pc.sendPackets(new S_SystemMessage("受到經驗之神的祝福,狩獵後經驗提升1.5倍!"));
                   }else{
                  int time = pc.getSkillEffectTimeSec(7000)+
                  pc.getSkillEffectTimeSec(7001)+
                  pc.getSkillEffectTimeSec(7002);
                  pc.sendPackets(new S_SystemMessage("經驗加倍藥水時間剩餘 "+time+" 秒"));
                  }


               } else if (itemId == 620011) {    // 經驗加倍藥水(200%)
                   if(pc.hasSkillEffect(7000) == false && pc.hasSkillEffect(7001) == false && pc.hasSkillEffect(7002) == false) {    // 確認經驗加倍狀態
                     int time = 30 * 1000;    // 設置時間為1小時
                     pc.setSkillEffect(7001,time);    // 增加魔法狀態7001
                     pc.getInventory().removeItem(l1iteminstance, 1);    // 移除物品
                     pc.sendPackets(new S_SystemMessage("受到經驗之神的祝福,狩獵後經驗提升2.0倍!"));
                   }else{
                  int time = pc.getSkillEffectTimeSec(7000)+
                  pc.getSkillEffectTimeSec(7001)+
                  pc.getSkillEffectTimeSec(7002);
                  pc.sendPackets(new S_SystemMessage("經驗加倍藥水時間剩餘 "+time+" 秒"));
                  }


               } else if (itemId == 620012) {    // 經驗加倍藥水(250%)
                   if(pc.hasSkillEffect(7000) == false && pc.hasSkillEffect(7001) == false && pc.hasSkillEffect(7002) == false) {    // 確認經驗加倍狀態
                     int time = 30 * 1000;    // 設置時間為1小時
                     pc.setSkillEffect(7002,time);    // 增加魔法狀態7002
                     pc.getInventory().removeItem(l1iteminstance, 1);    // 移除物品
                     pc.sendPackets(new S_SystemMessage("受到經驗之神的祝福,狩獵後經驗提升2.5倍!"));
                   }else{
                  int time = pc.getSkillEffectTimeSec(7000)+
                  pc.getSkillEffectTimeSec(7001)+
                  pc.getSkillEffectTimeSec(7002);
                  pc.sendPackets(new S_SystemMessage("經驗加倍藥水時間剩餘 "+time+" 秒"));
                  }


再來CalcExp.java
尋找
import static l1j.server.server.model.skill.L1SkillId.COOKING_3_7_S;
下方加入

import static l1j.server.server.model.skill.L1SkillId.EXP_UP_A;
import static l1j.server.server.model.skill.L1SkillId.EXP_UP_B;
import static l1j.server.server.model.skill.L1SkillId.EXP_UP_C;

同樣CalcExp.java尋找
if (pc.hasSkillEffect(COOKING_3_7_N)
上方加入

       double DEXP = 1.0;
       if (pc.hasSkillEffect(L1SkillId.EXP_UP_A)) {
       DEXP = 1.5;
       }
       double DEXP1 = 1.0;
       if (pc.hasSkillEffect(L1SkillId.EXP_UP_B)) {
       DEXP1 = 2.0;
       }

       double DEXP2 = 1.0;
       if (pc.hasSkillEffect(L1SkillId.EXP_UP_C)) {
       DEXP2 = 2.5;
       }

同樣CalcExp.java尋找
int add_exp = (int) (exp * exppenalty * liferound * ed1 * ed2 * Config.RATE_XP * foodBonus * L1MagicDoll.getDoubleExpByDoll(pc));
注意 此段非所有核心都相同 基本上都有此段 但是有缺少一些部分

把剛剛搜尋到的取代或是自行加入 DEXP * DEXP1 * DEXP2 *
       int add_exp = (int) (exp * exppenalty * Config.RATE_XP * foodBonus * DEXP * DEXP1 * DEXP2 * L1MagicDoll.getDoubleExpByDoll(pc));

再來...CharBuffTable.java

查看以下
private static final int[] buffSkill = {
         2,
         67, // ライト、シェイプチェンジ
         3,
         99,
         151,
         159,
         168, // シールド、シャドウアーマー、アーススキン、アースブレス、アイアンスキン
         43,
         54,
         1000,
         1001,
         STATUS_ELFBRAVE, // ヘイスト、グレーターヘイスト、ブレイブポーション、グリーンポーション、エルヴンワッフル
         52,
         101,
         150, // ホーリーウォーク、ムービングアクセレーション、ウィンドウォーク
         26,
         42,
         109,
         110, // PEEX、PE:STR、ドレスマイティー、ドレスデクスタリティー
         114,
         115,
         117, // グローウィングオーラ、シャイニングオーラ、ブレイブオーラ
         148,
         155,
         163, // ファイアーウェポン、ファイアーブレス、バーニングウェポン
         149,
         156,
         166, // ウィンドショット、ストームアイ、ストームショット
         1002,
         1005, // ブルーポーション、チャット禁止

之後再166, // ウィンドショット、ストームアイ、ストームショット下方加入
      7000,// 經驗加倍藥水
      7001,
      7002,// end

整合後便成

   private static final int[] buffSkill = {
         2,
         67, // ライト、シェイプチェンジ
         3,
         99,
         151,
         159,
         168, // シールド、シャドウアーマー、アーススキン、アースブレス、アイアンスキン
         43,
         54,
         1000,
         1001,
         STATUS_ELFBRAVE, // ヘイスト、グレーターヘイスト、ブレイブポーション、グリーンポーション、エルヴンワッフル
         52,
         101,
         150, // ホーリーウォーク、ムービングアクセレーション、ウィンドウォーク
         26,
         42,
         109,
         110, // PEEX、PE:STR、ドレスマイティー、ドレスデクスタリティー
         114,
         115,
         117, // グローウィングオーラ、シャイニングオーラ、ブレイブオーラ
         148,
         155,
         163, // ファイアーウェポン、ファイアーブレス、バーニングウェポン
         149,
         156,
         166, // ウィンドショット、ストームアイ、ストームショット
         7000,// 經驗加倍藥水
         7001,
         7002,// end
         1002,
         1005, // ブルーポーション、チャット禁止
再來...C_LoginToServer.java

搜尋pc.setSkillEffect(skillid, remaining_time * 1000);

下方加入
      } else if (skillid == L1SkillId.STATUS_CHAT_PROHIBITED) { // 禁止
      pc.sendPackets(new S_SkillIconGFX(36, remaining_time));
      pc.setSkillEffect(skillid, remaining_time * 1000);
      // 經驗加倍藥水
      } else if (skillid == L1SkillId.EXP_UP_A || skillid == L1SkillId.EXP_UP_B || skillid == L1SkillId.EXP_UP_C) { // 經驗加倍狀態
      pc.setSkillEffect(skillid, remaining_time * 1000);

這樣就完成了!! :)

野性覺醒 發表於 2020-12-20 12:20

謝謝大大分享

jiang199 發表於 2016-12-7 00:02

printlnsert 發表於 2016-12-6 22:22
請問這裡面有包含顯示在右上方的動態圖示嗎?

是有的,經驗藥水, 都是含再里面, 但是它沒有寫幾%的藥水狀態... :)

這個教學 都是沒有增加新圖檔....

printlnsert 發表於 2016-12-6 22:22

請問這裡面有包含顯示在右上方的動態圖示嗎?

vn523205 發表於 2016-12-7 16:06

感謝您的分享!!!:lol:lol

etit00001 發表於 2016-12-7 19:03

已看過,純推薦,需要的人確實可以看看。

野性覺醒 發表於 2020-12-5 19:25

感謝大大無私的分享

linphsin 發表於 2020-12-6 11:47

寫的非常詳盡~感謝分享囉:)

ccpow 發表於 2020-12-20 08:00

感謝分享:)

19870922 發表於 2020-12-21 18:50

感謝分享

19870922 發表於 2021-1-26 19:29

感謝分享

Nafu30210 發表於 2021-1-27 01:08

這是不錯的新手教學

kaicecarol 發表於 2021-2-2 21:36

感謝大大分享教學

bennyst 發表於 2021-7-19 14:40

treezxc 發表於 2021-9-4 11:55

感謝大大教學

dingbo110 發表於 2021-9-5 02:21

感謝樓主分享

野性覺醒 發表於 2021-9-5 04:13

感謝分享

test1234 發表於 2021-9-5 10:29

感謝版大的教學

jackyispik 發表於 2021-9-5 11:17

感謝版大的教學

19870922 發表於 2021-9-5 13:51

感謝分享
頁: [1] 2
查看完整版本: 【★★★★★】經驗藥水