Board logo

標題: 從源碼C底層中,增加特殊抗性裝備 [打印本頁]

作者: 寇丁gm    時間: 2026-5-26 20:57     標題: 從源碼C底層中,增加特殊抗性裝備

眾所皆知,石器的道具參數中,只有毒、麻、眠、石、醉、混 這六種抗性
如果是追獵的天羅地網、甚至是火雞系列的落馬術,都是沒有抗性的
於是,針對這些部分,就來示範如何土炮的模式來寫出抗性

1.宣告 WORK變數 (char_base.h)
在 typedef enum
{
中 增加以下
CHAR_WORK_FALLRIDE_RESIST,
}CHAR_WORKDATAINT;

2.將抗性實作到抗性判斷中 (item_event.c)
void ITEM_MagicResist 函式裡面增加


else if (strstr(itemarg, "落馬抗"))
        {
                p = itemarg;
                int ReQuit = CHAR_getWorkInt(charaindex, CHAR_WORK_FALLRIDE_RESIST); //這邊的 WorkInt 要對應上面宣告的變數
                CHAR_setWorkInt(charaindex, CHAR_WORK_FALLRIDE_RESIST, ReQuit + atoi(p + 6)); // 注意這裡是 "+" 3個中文字總共 6 bytes,+6
        }

還有減少也不能忘記

else if (strstr(itemarg, "落馬"))
        {
                p = itemarg;
                int ReQuit = CHAR_getWorkInt(charaindex, CHAR_WORK_FALLRIDE_RESIST);
                CHAR_setWorkInt(charaindex, CHAR_WORK_FALLRIDE_RESIST, ReQuit - atoi(p + 6));  //這邊是減少 "-"
        }

3.最後到落馬術實作裡面加入機率 (battle_event.c )
int BATTLE_S_FallGround 函式,在 if (skill_type == BATTLE_COM_S_FALLRIDE  這裡的判斷以下加入

fall_resist += CHAR_getWorkInt(defindex, CHAR_WORK_FALLRIDE_RESIST);

4.若想拓展到 LUA 使用 (const.c)
增加
{"對像_落馬抗%", sizeof("對像_落馬抗%"), LUA_DATALINE2 + CHAR_WORK_FALLRIDE_RESIST}, // 注意 CHAR_getWorkInt 要使用 LUA_DATALINE2


以上分享給大家

[ 本帖最後由 寇丁gm 於 2026-5-26 20:59 編輯 ]




歡迎光臨 We Love SA 石器時代研討中心 (http://lab.welovesa.com/) Powered by Discuz! 6.0.0