微信扫一扫 分享朋友圈

已有 2593 人浏览分享

[服務器教學] V62 增加 經驗值加倍buff

  [複製鏈接]

站長

Rank: 12Rank: 12Rank: 12

1782

威望

3033

金錢

111

A幣
主題
1321
帖子
2449
精華
3
綜合社群主題發文量
264
電玩社群主題發文量
1
娛樂社群主題發文量
4
技術社群主題發文量
29
閱讀權限
200
註冊時間
2013-1-28

我是傳奇贊助感謝勳章精華作者勳章

  • TA的每日心情
    無聊
    12 小時前
  • 簽到天數: 385 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    TWAICL 發表於  2017-1-18 20:08:49 | 顯示全部樓層 | 閱讀模式
    本帖最後由 呆呆傑 於 2016-10-10 05:47 編輯

    此方法從V117端原碼參考後,部分增加至V62原碼內。
    所以不確定有沒有什麼未知的錯誤,不過測試下來沒發現任何問題!
    不過比較高的版本有支援這個buff的話,就不用這麼麻煩囉~


    首先,先來看這個功能到底是在做什麼的!

    這個功能跟經驗值兩倍卡的相同,不過V62版本內並沒有這個buff,所以需要自己手動新增!




    跟V62的經驗值加倍券比起來,上圖這個可以自行設定時間、倍率還蠻實用的,
    ---------------------------------------------------------------------------------------------------------------------


    接下來,說明一下需要動到的東西:
    1. MapleBuffStat.java
    2. MapleCharacter.java
    3. MapleStatEffect.java
    4. MapleMonster.java
    5. Item.wz


    教學開始! [文中所有新增的東西,都需要自行去研究該放哪個位置]
    1. MapleBuffStat.java

    本帖隱藏的內容

    (1)

    搜尋:
    [Java] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    01
    public enum MapleBuffStat implements LongValueHolder, Serializable {

    在下方新增:
    [Java] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    01
    EXPRATE(0x400000),





    2. MapleCharacter.java

    本帖隱藏的內容

    (1)
    搜尋:
    [Java] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    01
    public class MapleCharacter extends AbstractAnimatedMapleMapObject implements InventoryContainer {

    在下方新增:
    [Java] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    01
    public transient double expBuff;


    (2)
    搜尋:
    [Java] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    01
    private void recalcLocalStats() {

    在下方新增:
    [Java] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    01
    expBuff = 100.0;


    並且再新增:
    [Java] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    01
    02
    03
    04
    Integer expbuff = getBuffedValue(MapleBuffStat.EXPRATE);
    if (expbuff != null) {
    expBuff *= expbuff.doubleValue() / 100.0;
    }





    3. MapleStatEffect.java

    本帖隱藏的內容

    (1)
    搜尋:
    [Java] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    01
    public class MapleStatEffect implements Serializable {


    在下方新增:
    [Java] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    01
    private int expBuff;


    (2)
    搜尋:
    [Java] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    01
    private static MapleStatEffect loadFromData(MapleData source, int sourceid, boolean skill, boolean overTime) {


    在下方新增:
    [Java] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    01
    ret.expBuff = (short) MapleDataTool.getInt("expBuff", source, 0);


    並且再新增:
    [Java] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    01
    addBuffStatPairToListIfNotZero(statups, MapleBuffStat.EXPRATE, Integer.valueOf(ret.expBuff));





    4. MapleMonster.java


    搜尋:
    [Java] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    01
    long totalBaseExpL =


    這個地方就需要靠自己去思考了,上面的1.2.3已經算是99.9%完成,只差這個獲取經驗值公式後面要怎麼去乘。
    可以去參考前面是怎麼寫的!

    ps. 你寫的那串值後面要再加上" / 100.0",不然你會發現你WZ輸入200,他不會變成2倍而是200倍!




    5. Item.wz


    (1)
    打開 Item.wz > Consume > 隨便找一個藥水 > 找到 spec > 1.增加 expBuff 2.增加 time

    expBuff 值 -> 輸入100=1倍;200=2倍....以此類推
    time 值 -> 輸入60000=1分鐘;120000=2分鐘...以此類推





    共收到 0 A幣
    打賞榜
    暫無
    暫無
    暫無
    暫無
    ----
    暫無
    ----
    暫無
    ----
    暫無
    ----

    集團新軍

    Rank: 1

    18

    威望

    56

    金錢

    0

    A幣
    主題
    8
    帖子
    35
    精華
    0
    綜合社群主題發文量
    0
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    10
    註冊時間
    2017-3-30
  • TA的每日心情

    2019-9-6 18:19
  • 簽到天數: 2 天

    連續簽到: 0 天

    [LV.1]初來乍到

    loveuvu84 發表於 2017-5-15 07:18:10 | 顯示全部樓層
    本帖最後由 loveuvu84 於 2017-5-15 07:22 編輯

    不好意思請教一下,long totalBaseExpL =後面的部分
    我這邊的是this.getExp() * ChannelServer.getInstance(killer.getClient().getChannel()).getExpRate() * killer.getClient().getPlayer().hasEXPCard()
                      (經驗值量)*(經驗值倍率)*(經驗加倍卡)
    可是後面要怎麼去乘expBuff(經驗值加倍BUFF)?
    我試過了各種組合 :  
    * killer.getClient().getPlayer().hasexpBuff(
    * killer.getClient().getPlayer().expBuff(
    * expBuff(
    等等
    也上網爬過相關文章可是他們的公式和運作方式也有所不同, 歷經1個多月一就是找不到合適且能夠成功編譯的公式,可以在稍稍提示一些嗎.. 不好意思個人學識淺薄較無法融會貫通..

    集團新軍

    Rank: 1

    6

    威望

    66

    金錢

    1

    A幣
    主題
    3
    帖子
    49
    精華
    0
    綜合社群主題發文量
    1
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    10
    註冊時間
    2017-1-12
  • TA的每日心情

    2019-10-16 19:10
  • 簽到天數: 3 天

    連續簽到: 0 天

    [LV.2]偶爾看看I

    ms0553922 發表於 2017-5-15 14:21:30 | 顯示全部樓層
    本帖最後由 ms0553922 於 2017-5-15 16:37 編輯

    long totalBaseExpL =(long) getExp() * ChannelServer.getInstance(killer.getClient().getChannel()).getExpRate() * killer.getClient().getPlayer().hasEXPCard()* killer.getClient().getPlayer().expBuff / 100.0);
    我看上面語法是這樣寫 推論出來的
    幫你遠端過後發現只是...你是用DOUBLE 所以要加一個LONG..
    也可以這樣寫吧
    long exp =killer.getClient().getPlayer().hasEXPCard()* killer.getClient().getPlayer().expBuff / 100.0;
    totalBaseExpL = getExp() * ChannelServer.getInstance(killer.getClient().getChannel()).getExpRate() * exp;
    你試試看吧 我手頭沒東西可以測試


    ;

    集團新軍

    Rank: 1

    18

    威望

    56

    金錢

    0

    A幣
    主題
    8
    帖子
    35
    精華
    0
    綜合社群主題發文量
    0
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    10
    註冊時間
    2017-3-30
  • TA的每日心情

    2019-9-6 18:19
  • 簽到天數: 2 天

    連續簽到: 0 天

    [LV.1]初來乍到

    loveuvu84 發表於 2017-5-15 14:41:21 | 顯示全部樓層
    回復 3# ms0553922


        方便請教一下
    long totalBaseExpL = getExp() * ChannelServer.getInstance(killer.getClient().getChannel()).getExpRate() * killer.getClient().getPlayer().hasEXPCard() * killer.getClient().getPlayer().recalcLocalStats().expBuff / 100.0)

    最後一個 ")"的功用是什麼呢,因為
    1 error
    建置失敗 (總時間:0 秒)
    我點擊他所提示的結果是導引到了那一個 ")"

    集團新軍

    Rank: 1

    6

    威望

    66

    金錢

    1

    A幣
    主題
    3
    帖子
    49
    精華
    0
    綜合社群主題發文量
    1
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    10
    註冊時間
    2017-1-12
  • TA的每日心情

    2019-10-16 19:10
  • 簽到天數: 3 天

    連續簽到: 0 天

    [LV.2]偶爾看看I

    ms0553922 發表於 2017-5-15 14:43:03 | 顯示全部樓層
    本帖最後由 ms0553922 於 2017-5-15 14:46 編輯

    我眼花了 ...我以為前面有一個( 所以加了~~刪除吧
    正常應該可以使用了

    集團新軍

    Rank: 1

    18

    威望

    56

    金錢

    0

    A幣
    主題
    8
    帖子
    35
    精華
    0
    綜合社群主題發文量
    0
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    10
    註冊時間
    2017-3-30
  • TA的每日心情

    2019-9-6 18:19
  • 簽到天數: 2 天

    連續簽到: 0 天

    [LV.1]初來乍到

    loveuvu84 發表於 2017-5-15 14:46:53 | 顯示全部樓層
    回復 5# ms0553922


        不好意思 我對JAVA的部分幾乎是沒有什麼觀念,所以問題有點多...

    刪除那個括號後,出現了
    3 errors
    建置失敗 (總時間:2 秒)

    他提示的部分是:
            long totalBaseExpL = getExp() * ChannelServer.getInstance(killer.getClient().getChannel()).getExpRate() * killer.getClient().getPlayer().hasEXPCard() * killer.getClient().getPlayer().recalcLocalStats().expBuff / 100.0;

    誠心想請教.. 想辦法去做修復和找出公式,歷經一個多月了毫無進展才在此發文求助..

    集團新軍

    Rank: 1

    6

    威望

    66

    金錢

    1

    A幣
    主題
    3
    帖子
    49
    精華
    0
    綜合社群主題發文量
    1
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    10
    註冊時間
    2017-1-12
  • TA的每日心情

    2019-10-16 19:10
  • 簽到天數: 3 天

    連續簽到: 0 天

    [LV.2]偶爾看看I

    ms0553922 發表於 2017-5-15 14:48:26 | 顯示全部樓層
    本帖最後由 ms0553922 於 2017-5-15 14:52 編輯

    你說紅色問題嗎 那有可能只是我符號打錯而已 全形或半形

    集團新軍

    Rank: 1

    6

    威望

    66

    金錢

    1

    A幣
    主題
    3
    帖子
    49
    精華
    0
    綜合社群主題發文量
    1
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    10
    註冊時間
    2017-1-12
  • TA的每日心情

    2019-10-16 19:10
  • 簽到天數: 3 天

    連續簽到: 0 天

    [LV.2]偶爾看看I

    ms0553922 發表於 2017-5-15 14:57:36 | 顯示全部樓層
    還是不太行嗎? 我手頭沒源瑪..

    集團新軍

    Rank: 1

    18

    威望

    56

    金錢

    0

    A幣
    主題
    8
    帖子
    35
    精華
    0
    綜合社群主題發文量
    0
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    10
    註冊時間
    2017-3-30
  • TA的每日心情

    2019-9-6 18:19
  • 簽到天數: 2 天

    連續簽到: 0 天

    [LV.1]初來乍到

    loveuvu84 發表於 2017-5-15 16:52:20 | 顯示全部樓層
    回復 8# ms0553922


        感謝前輩的幫忙!
    您需要登錄後才可以回帖 登錄 | 註冊會員

    本版積分規則

    2449

    發文

    3033

    金錢

    111

    A幣

    ----------榮譽勳章----------

    我是傳奇 贊助感謝勳章 精華作者勳章

    熱門推薦
    圖文推薦
    • 聯繫我們

    小黑屋|AICL社群娛樂集團

    GMT+8, 2024-5-13 22:01 , 網路刷新 0.145292 秒 .

    歡迎來到 AICL網路社群

    版權AICL社群所有 2011-2021.

    Total:123 Today:213 Online:322