2013年6月11日 星期二

【Java教學】【★★★★★】經驗藥水

首先
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);

這樣就完成了!!

沒有留言:

張貼留言