13号避难所

 找回密码
 立即注册
搜索
查看: 5588|回复: 0
打印 上一主题 下一主题

[辐射2 MOD] 用sfall腳本給武器加上AC修正值

[复制链接]
跳转到指定楼层
楼主
发表于 2015-11-18 22:45:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原本遊戲內只有子彈才有AC修正值(AC mod),武器本身最多就那幾個加命中率的perk而已。
前幾天有人在NMA問有沒有辦法做到給武器加上AC修正值,所以今晚沒打算玩FO4就試著寫腳本看看了,結果意外地簡單:
  1. // hs_tohit.ssl
  2. procedure start;
  3. #include ".\HEADERS\DEFINE.H"
  4. #include ".\HEADERS\sfall.h"

  5. #define usewpn(PID) (obj_pid(critter_inven_obj(attacker, INVEN_TYPE_RIGHT_HAND)) == PID) or (obj_pid(critter_inven_obj(attacker, INVEN_TYPE_LEFT_HAND)) == PID)

  6. procedure start begin
  7.     variable tohit;
  8.     variable attacker;
  9.     variable target;
  10.     if not init_hook then begin
  11.         tohit := get_sfall_arg;
  12.         attacker := get_sfall_arg;
  13.         target := get_sfall_arg;

  14.         if (usewpn(PID_10MM_PISTOL) or usewpn(PID_DESERT_EAGLE)) then begin
  15.             if (get_critter_stat(target, STAT_ac) < 5) then begin
  16.                 tohit := tohit + get_critter_stat(target, STAT_ac);
  17.             end else begin
  18.                 tohit := tohit + 5;
  19.             end
  20.         end

  21.         if (tohit > 95) then begin
  22.             set_sfall_return(95);
  23.         end else begin
  24.             set_sfall_return(tohit);
  25.         end
  26.     end
  27. end
复制代码

藉由hs_tohit這個hook script實現,範例內是給10mm手槍和沙漠之鷹等同AC mod -5的效果。

簡單解釋是先看攻擊者用的武器是不是10mm手槍或沙漠之鷹,是的話就再檢查目標AC值,如果目標AC值小於5,那命中率就增加目標AC值(當成目標AC值已經被扣到零),如果目標AC值在5以上,命中率就加5(等同對方AC值少了5)
另外加上一個判斷把命中率最大值限制在原本的95%,不然一些情況下攻擊者的命中率可以到100%,因為hs_tohit是在遊戲本身命中率計算完(包括鎖95%上限)才會執行,如果沒額外加限制判斷就會在原本95%上限之上再加5%。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Archiver|13号避难所

GMT+8, 2024-4-24 15:50 , Processed in 0.057350 second(s), 14 queries .

快速评论 返回顶部 返回列表