OK論壇

 找回密碼
 註冊
查看: 1581|回復: 3

[疑問] 關於GVG類特定地圖限制攻速問題

[複製鏈接]
  • TA的每日心情
    奮斗
    2013-1-15 03:10 PM
  • 簽到天數: 263 天

    連續簽到: 1 天

    [LV.8]以壇為家I

    發表於 2012-6-14 21:24:08 | 顯示全部樓層 |閱讀模式
    在status.c中的
    1. void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
    複製代碼

    找到這段
    1.         if(flag&SCB_ASPD) {
    複製代碼

    然後把其中的這段
    1. status->amotion = cap_value(amotion,battle_config.max_aspd,2000);
    複製代碼

    替換成
    1.         if( map_flag_gvg(bl->m) )
    2.                 status->amotion = cap_value(amotion,battle_config.gvg_max_aspd,2000);
    3.         else if(map[sd->bl.m].flag.pvp)
    4.                 status->amotion = cap_value(amotion,battle_config.pvp_max_aspd,2000);
    5.         else if( map[bl->m].flag.battleground )
    6.                 status->amotion = cap_value(amotion,battle_config.bg_max_aspd,2000);
    7.         else
    8.                 status->amotion = cap_value(amotion,battle_config.max_aspd,2000);
    複製代碼

    改成這樣的話,去PVP地圖,必須把武器脫了,在穿上就有限制攻速的效果了,同樣從PVP出來,回到正常地圖也需要這樣才能變回到正確的攻速


    我想改成去了PVP就可以自動修改攻速的設定

    已經在battle.c里學battle_config.max_aspd里把其他max_aspd設定好了
    1.         battle_config.gvg_max_aspd = 2000 - battle_config.gvg_max_aspd*10;
    2.         battle_config.pvp_max_aspd = 2000 - battle_config.pvp_max_aspd*10;
    3.         battle_config.bg_max_aspd = 2000 - battle_config.bg_max_aspd*10;
    複製代碼



    不知道哪裡還需要設置的,我是根據battle_config.max_aspd和battle_config.gvg_flee_penalty來寫的
    求指點下,修改哪裡可以實現換地圖也可以變化攻速..
    回復

    使用道具 舉報

  • TA的每日心情
    開心
    3 天前
  • 簽到天數: 1323 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2012-6-14 23:42:40 | 顯示全部樓層
    本帖最後由 sinya 於 2012-6-14 11:44 PM 編輯

    1. BUILDIN_FUNC(CalcCharStat)
    2. {
    3.         TBL_PC *sd;

    4.         if( script_hasdata(st,2) )
    5.                 sd=map_id2sd(script_getnum(st,2)); // <Account ID>
    6.         else
    7.                 sd=script_rid2sd(st); // Attached player

    8.         if(sd==NULL){
    9.                 script_pushint(st,-1);
    10.                 return 0;
    11.         }

    12.         status_calc_pc(sd,0);
    13.         
    14.         return 0;
    15. }
    複製代碼

    1. BUILDIN_DEF(CalcCharStat,"?"),
    複製代碼


    試試這個 在OnPCLoadMapEvent  更新狀態


    1. OnPCLoadMapEvent:
    2.   if(getmapflg(mf_gvg)) CalcCharStat;
    3. end;
    複製代碼
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    奮斗
    2013-1-15 03:10 PM
  • 簽到天數: 263 天

    連續簽到: 1 天

    [LV.8]以壇為家I

     樓主| 發表於 2012-6-16 19:56:57 | 顯示全部樓層
    status_calc_pc

    在你這個裏面看到這個,突然想到

    之前改的時候也在這個裏面看到了判斷攻速限制的

    但因為少了struct block_list *bl;這部份定義

    map_flag_gvg(bl->m)不符合要求

    但自定義一下bl,又警告說沒設置初值

    隨便設置了個初值0,人物進遊戲,map_sql就當機重啟
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2020-10-27 09:10 PM
  • 簽到天數: 2555 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2012-8-16 19:51:13 | 顯示全部樓層
    不多說了,爬文吧

    http://okayro.com/thread-217882-1-4.html
    回復 支持 反對

    使用道具 舉報

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

    本版積分規則

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

    GMT+8, 2024-5-5 07:40 PM , Processed in 0.047098 second(s), 19 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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