OK論壇

 找回密碼
 註冊
查看: 1524|回復: 6

請問如何讓狂怒之槍狀態下解除治癒術無法使用?

[複製鏈接]
  • TA的每日心情
    慵懶
    2016-4-26 08:55 PM
  • 簽到天數: 40 天

    連續簽到: 1 天

    [LV.5]常住居民I

    發表於 2016-1-17 22:32:34 | 顯示全部樓層 |閱讀模式
    本帖最後由 matt070516 於 2016-1-19 11:32 PM 編輯

    如題,看源碼看到眼都花了,R前2轉服想解除死亡引導者可以吸血的狀態,我知道R版可以在狂怒的狀態下吸血,我去看R版的源碼在這邊Flag他是用Flag2,看說明也很像就是可以解除,可是我改了之後進遊戲開狂怒變成不會滿血,不知道是否有前輩知道是要修改哪邊,感恩!
    1. //Heals a character. If flag&1 this is forced healing (otherwise stuff like Berserk can block it)
    2. //If flag&2 when the player is healed, show the HP/SP heal effect.
    3. int status_heal(struct block_list *bl,int hp,int sp, int flag)
    4. {
    5.         struct status_data *status;
    6.         struct status_change *sc;

    7.         status = status_get_status_data(bl);

    8.         if (status == &dummy_status || !status->hp)
    9.                 return 0;

    10.         sc = status_get_sc(bl);
    11.         if (sc && !sc->count)
    12.                 sc = NULL;

    13.         if (hp < 0) {
    14.                 if (hp == INT_MIN) hp++; //-INT_MIN == INT_MIN in some architectures!
    15.                 status_damage(NULL, bl, -hp, 0, 0, 1);
    16.                 hp = 0;
    17.         }

    18.         if(hp) {
    19.                 if (flag&1) && sc && sc->data[SC_BERSERK])
    20.                         hp = 0;

    21.                 if((unsigned int)hp > status->max_hp - status->hp)
    22.                         hp = status->max_hp - status->hp;
    23.         }
    複製代碼

    評分

    參與人數 1積分 -30 現金 -30 積極性 -30 違規 +1 收起 理由
    goddameit -30 -30 -30 + 1 閒置超過三天

    查看全部評分

    回復

    使用道具 舉報

  • TA的每日心情
    開心
    2016-1-8 12:34 AM
  • 簽到天數: 1 天

    連續簽到: 1 天

    [LV.1]初來乍到

    發表於 2016-1-19 06:13:18 | 顯示全部樓層
    本帖最後由 unknowname 於 2016-1-19 06:17 AM 編輯

    24-25改
    1. if( sc && sc->data[SC_BERSERK] ) {
    2.    if( flag&1 )
    3.       flag &= ~2;
    4.    else
    5.       hp = 0;
    6. }
    複製代碼
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2016-4-26 08:55 PM
  • 簽到天數: 40 天

    連續簽到: 1 天

    [LV.5]常住居民I

     樓主| 發表於 2016-1-19 23:25:09 | 顯示全部樓層
    本帖最後由 matt070516 於 2016-1-21 09:12 PM 編輯
    unknowname 發表於 2016-1-19 06:13 AM
    24-25改
    感謝回答,我改好了,不過還是沒有回血效果....改好後和之前一樣狂怒狀態下不能吸血
    • if( sc && sc->data[SC_BERSERK] ) {
    •    if( flag&1 )
    •       flag &= ~2;
    •    else
    •       hp = 0;
    • }
    想知道改成這樣的數據代表的意義是什麼, flag &= ~2;

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2016-1-8 12:34 AM
  • 簽到天數: 1 天

    連續簽到: 1 天

    [LV.1]初來乍到

    發表於 2016-1-22 10:08:16 | 顯示全部樓層
    本帖最後由 unknowname 於 2016-1-22 11:21 AM 編輯
    matt070516 發表於 2016-1-19 11:25 PM
    感謝回答,我改好了,不過還是沒有回血效果....改好後和之前一樣狂怒狀態下不能吸血
    if( sc && sc->d ...
    你的內容好像有改過
    所以是要改成可以吸血?

    R前2轉服想解除死亡引導者可以吸血的狀態
    這段是說改成不能吸血?
    1. if ((flag&1) && sc && sc->data[SC_BERSERK])
    2.   hp = 0;
    複製代碼
    這樣改不會滿血
    開狂怒會有補滿血的動做
    當flag&1跟狂怒狀態時,hp=0不回血
    原始版是以下
    1. if (!(flag&1) && sc && sc->data[SC_BERSERK])
    2.   hp = 0;
    複製代碼
    flag&1 類似強制補血的功能
    flag&2 客戶端是否顯示恢復的數值

    原始功能是
    開狂怒時,會回滿血,但不顯示回血數值

    吸血要從battle_drain下手
    當然status_heal也要改,要不然不會吸血(hp=0)
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2018-1-18 03:10 PM
  • 簽到天數: 189 天

    連續簽到: 1 天

    [LV.7]常住居民III

    發表於 2016-1-26 23:10:14 | 顯示全部樓層
    直接把24,25行拿走就可以

    flag &= ~2 的意思是 flag = flag & ~2
    都是&和~都是bitwise operator. 分別代表bitwise AND 和 Not
    如果flag是3, 2進制表示是 101
    而Not 2 則是除了代表2的bit是0, 甚他的bit都是1. 101
    101&101 就是 101

    所以這實際用途是用來確保那個flag不是2, 如果不是2則不會改變那個值, 如果是2則會變0
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2016-4-26 08:55 PM
  • 簽到天數: 40 天

    連續簽到: 1 天

    [LV.5]常住居民I

     樓主| 發表於 2016-2-1 15:43:28 | 顯示全部樓層
    感謝你們的回答,最近快過年上班很忙,然後有時候論壇都進不來,我會再多試試看。
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2016-4-26 08:55 PM
  • 簽到天數: 40 天

    連續簽到: 1 天

    [LV.5]常住居民I

     樓主| 發表於 2016-2-1 15:43:46 | 顯示全部樓層
    本帖最後由 matt070516 於 2016-2-1 03:47 PM 編輯

    多點到一次回覆....不小心多回覆了一次...自己刪不掉
    回復 支持 反對

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 註冊

    本版積分規則

    Archiver|手機版|小黑屋|OK討論區

    GMT+8, 2024-4-26 12:37 AM , Processed in 0.083005 second(s), 22 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回復 返回頂部 返回列表