请选择 进入手机版 | 继续访问电脑版

13号避难所

 找回密码
 立即注册
搜索
楼主: novarain

[辐射2 MOD] 用sfall hook script修改攻擊消耗彈數

[复制链接]
发表于 2013-4-14 21:23:55 | 显示全部楼层 |阅读模式
前言與廢話:
絕大多數武器的“單發”攻擊只會花費一發彈藥,超級趕畜棒與超級動力拳套這兩個是例外,它們攻擊一次消耗兩發電池的設定是特別寫死在遊戲引擎內的,所以你用物品編輯器也找不到可以調整這部份的設定。我想讓其他武器也可以有這種特性,最好還可以擴充它的功能,sfall提供的函式正好有可以取得與設定彈藥數量的set/get_weapon_ammo_count,不過一開始我還想不到怎麼應用它們,NMA上的Ardent給我了個方向,因為減少彈藥是在攻擊之後,而hook script內只有hs_afterhitroll是不論命中或造成傷害與否都會執行,自然就從它來下手了。

以下是測試用的腳本源碼,修改對象是XL70E3 :
  1. procedure start;
  2. #include "sfall.h"
  3. #include "DEFINE.H"
  4. procedure start begin
  5.   variable hit, attacker, ammo;
  6.   if not init_hook then begin
  7.     hit:=get_sfall_arg;
  8.     attacker:=get_sfall_arg;
  9.     if (obj_pid(critter_inven_obj(attacker, INVEN_TYPE_RIGHT_HAND)) == PID_INDEPENDENT) then begin
  10.       ammo:=get_weapon_ammo_count(critter_inven_obj(attacker, INVEN_TYPE_RIGHT_HAND));
  11.       if (get_attack_type == ATKTYPE_RWEP1) then begin
  12.         set_weapon_ammo_count(critter_inven_obj(attacker, INVEN_TYPE_RIGHT_HAND), ammo-1);
  13.       end else if (get_attack_type == ATKTYPE_RWEP2) then begin
  14.         set_weapon_ammo_count(critter_inven_obj(attacker, INVEN_TYPE_RIGHT_HAND), ammo-5);
  15.       end
  16.     end else if (obj_pid(critter_inven_obj(attacker, INVEN_TYPE_LEFT_HAND)) == PID_INDEPENDENT) then begin
  17.       ammo:=get_weapon_ammo_count(critter_inven_obj(attacker, INVEN_TYPE_LEFT_HAND));
  18.       if (get_attack_type == ATKTYPE_LWEP1) then begin
  19.         set_weapon_ammo_count(critter_inven_obj(attacker, INVEN_TYPE_LEFT_HAND), ammo-1);
  20.       end else if (get_attack_type == ATKTYPE_LWEP2) then begin
  21.         set_weapon_ammo_count(critter_inven_obj(attacker, INVEN_TYPE_LEFT_HAND), ammo-5);
  22.       end
  23.     end
  24.   end
  25. end
复制代码
然後再配上修改XL70E3的proto:

腳本與修改proto搭配起來之後,XL70E3的單發攻擊會消耗兩發彈藥、連發則是五發的攻擊數量但消耗十發彈藥。當然你可以自由調整一次攻擊要花幾發,或是限定這種一次消耗多發彈藥的效果在武器其中一種攻擊上,像是單次攻擊一次耗兩發,但連發時耗掉幾發子彈就是造成多少次攻擊之類的。

這腳本的缺點是當武器內剩餘彈數為1時還是可以進行正常的單發攻擊,Timeslip給了很壞心眼的建議,說加上個檢查讓武器剩餘彈數為1時的攻擊直接變成致命失誤(做得到而且很簡單,因為hs_afterhitroll原本就是可以控制攻擊擲骰之後的結果),最好還把武器彈藥容量設成不能整除,這樣更容易整到人

不過實際上這問題也會發生在超級動力拳套上,因為它彈藥容量為25不是偶數,於是你揮了12拳之後只剩一發電池但還是能正常攻擊。我想當初開發者在特別修改這部份時沒想到那麼多....

使用說明:
附件內的hs_afterhitroll.ssl是源碼(就上面那些),hs_afterhitroll.int是編譯過的腳本,00000353.pro是照上面附圖修改後的XL70E3,要試用的話把hs_afterhitroll.int放到Data\Scripts文件夾內,00000353.pro放到Data\Proto\Items文件夾,再確認它有設定“只讀”,不然會在遊戲啟動時被刪除。然後確定你FO2有裝上sfall 2.x版,如果sfall是2.7版之前的,請順便檢查ddraw.ini內的ScriptExtender是否為1。

如果你想自己修改與編譯附件內的ssl源碼,有兩點要提醒的:
    [li]編譯器請用Timeslip改版過的sslc(compile.exe),沒有的話去下載sfall modders pack,裡面還有附個腳本編輯器,對不想敲指令列的人來說算很方便了。[/li][li]你還需要sfall.h,一樣在modders pack內有。另外是FO2腳本源碼(需要那些header),我自己是拿killap的非官方修正1.02.25版源碼來用。[/li]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2013-9-17 22:22:19 | 显示全部楼层
如果要改特殊效果
如擊退或昏迷
鎗隻有夜視補正等的
甚至讓敵人中毒
中幅射等的.....
也行嗎?
 楼主| 发表于 2013-9-17 22:30:37 | 显示全部楼层
擊退、擊昏、夜視等直接用物品編輯器就可以在武器上加perk了:http://www.bn13.com/bbs/read.php?tid=50568
NPC不受中毒與輻射影響,除非你要自己寫新的global script給它們加上額外傷害之類的效果。
发表于 2013-9-17 23:44:54 | 显示全部楼层
但我用FIC3.5
沒看到額外特技選項阿.................
還有能力能一次擁有多種嗎
如擊退兼擊暈之類...
 楼主| 发表于 2013-9-17 23:57:28 | 显示全部楼层
因為FIC也是過時的東西了。不能用F2wedit的話(例如中文版)就自己用16進位編輯器開.pro去找位址改,.pro的格式解說:http://falloutmods.wikia.com/wiki/PRO_File_Format#Weapons
能力在.pro檔內只能有一種,要有多種就得用sfall script進行額外判定與處理。
发表于 2013-9-18 12:35:41 | 显示全部楼层
本想把車用燃料電池改能彈藥去替代核能電池
替車子充電
因為個人不大會弄
打算先把屬性用gm8改成子彈
在拿fic去弄剩下的
但失敗了.......
发表于 2013-9-18 18:05:09 | 显示全部楼层
記得你以前發過左輪的研究
個人想
或許能把左輪設定成第2武器為6連發
但必須鎗械等級到達某一程度才能用
如150%之類.........
我腦中想像是類似西部鎗戰在腰部連射的一種技巧.........
发表于 2013-9-19 12:20:02 | 显示全部楼层

回 4楼(novarain) 的帖子

PERK的代號在那.......
发表于 2013-9-20 22:09:54 | 显示全部楼层

回 4楼(novarain) 的帖子

感覺它裝甲的pero位祇寫錯了
似乎是在男女裝備造型之後...............
 楼主| 发表于 2013-9-20 22:27:19 | 显示全部楼层

Re:回 4楼(novarain) 的帖子

引用第8楼gux于2013-09-20 22:09发表的 回 4楼(novarain) 的帖子 :
感覺它裝甲的pero位祇寫錯了
似乎是在男女裝備造型之後...............
我剛才試了位址沒有錯,除非你的“感覺”有明確事證。
发表于 2013-9-20 22:55:45 | 显示全部楼层

回 9楼(novarain) 的帖子

後來我終於搞懂了...........
是我弄錯了.....
話說有盔甲等的的額外能力.代碼嗎............
 楼主| 发表于 2013-9-20 23:31:00 | 显示全部楼层
網頁內有說了,perk.msg,另外每行開頭括號內的數字要減去101。
发表于 2013-9-20 23:42:28 | 显示全部楼层

回 11楼(novarain) 的帖子

但是我沒有看到表格之類的阿
用搜索都沒搜到類似的東西....
 楼主| 发表于 2013-9-20 23:45:35 | 显示全部楼层

Re:回 11楼(novarain) 的帖子

引用第12楼gux于2013-09-20 23:42发表的 回 11楼(novarain) 的帖子 :
但是我沒有看到表格之類的阿
用搜索都沒搜到類似的東西....
不是什麼東西都會有表格整理好,檔案沒有就自己從master.dat解出來,用文字編輯器打開。
发表于 2013-9-21 12:14:47 | 显示全部楼层
我只找到一個perk
但它是outlook項目的檔案............
是還要用其他程式轉換嗎?
发表于 2013-9-21 12:23:08 | 显示全部楼层
用筆記本開出來了
是額外能力的解釋......
不是武器的.........
 楼主| 发表于 2013-9-21 12:38:46 | 显示全部楼层
引用第15楼gux于2013-09-21 12:23发表的  :
用筆記本開出來了
是額外能力的解釋......
不是武器的.........
前面至少120行全是perk名稱與其代號,武器的perk也一併在內。
例如英文版第65行是這樣:{159}{}{Weapon Long Range}
代號就是159-101=58,再去轉16進位。

好用的工具只有支援英文版,你用中文版就只能土砲加上自己多摸多看,我沒打算從頭到尾都詳細說明。
发表于 2013-9-22 14:08:56 | 显示全部楼层
能給我一份英文版的master.dat嗎.....................
 楼主| 发表于 2013-9-22 14:10:19 | 显示全部楼层
引用第17楼gux于2013-09-22 14:08发表的  :
能給我一份英文版的master.dat嗎.....................   
那不如直接去找英文版遊戲,反正master.dat幾乎是遊戲本體了。
发表于 2013-9-22 15:04:30 | 显示全部楼层

回 18楼(novarain) 的帖子

錯了是perk.msg
我要拿來查額外能力的..............
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-3-28 16:57 , Processed in 0.070758 second(s), 14 queries .

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