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

13号避难所

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

sfall更新資訊與說明

[复制链接]
发表于 2013-7-28 19:21:37 | 显示全部楼层
sFall 3.1 編譯引擎改為 VC++ 2012 看來 Timeslip 也投入WIN8中
這次編譯不在需要
D3DX9_42.dll;
改為
D3DX9_43.dll;
 楼主| 发表于 2013-7-30 21:18:29 | 显示全部楼层
Win2k支援也被拿掉了,我寫了訊息問他現在的編輯環境與函式庫版本是怎樣的,有可能是整個砍掉重練了。

EDIT: 他還是用Win7,只是整個編譯環境重建了,現在是VS2012 + Windows SDK + 最後一版獨立的DX SDK(2010六月) + DX 9.0b SDK(為了使用舊的DX1-7 headers)

EDIT 2: 直接用手動修改的sln和vcxproj硬上,VS2012一樣可以呼叫2008 compiler來編譯Win2k版本,現在只剩下在Win2k環境下測試,也寄了PM和他談這件事。
 楼主| 发表于 2013-8-3 14:59:30 | 显示全部楼层
更新到r246,我另外加了一個舊版號的“243+”版,plus版的DX9 DLL相依性還是在D3DX9_42.dll上,新版本則是換到D3DX9_43.dll。
之後從3.2版開始Timeslip不會再編譯Win2K版sfall,因為她新電腦的SSD空間不夠,也不想只為了編個Win2K版去裝VS2008與VS2010兩者。看來Win2K沒啥人會特別想到,Mash沒在Win2K下測試過hi-res(我在VMWare Player用4.0.2跑不起來,3.0.6可以,至於在VirtualBox下則是全死,Mash自己是用VirtualBox測Win98/XP),他說接下來也會測Win2K。

唉,當年我也是Win2K撐了好一陣子才終於跳去XP SP1....所以多少有點額外感情在
 楼主| 发表于 2013-8-21 18:04:27 | 显示全部楼层
本帖最后由 novarain 于 2014-2-8 22:05 编辑

更新到r248,其實我上週剛搬完公司就編譯完了,只是由於在忙工作也還沒把目前可用的設定測試出結果,所以一直沒發。
Timeslip重新加回了很多人都想用的控制隊友戰鬥的設定,這功能本來是屬於多人連線部份內的,在3.0刪減多餘功能時就跟著多人連線一起被刪了,但他大概是忘了這件事,3.0之後的ini還是有ControlPartyMembers這項設定,讓一些人誤以為該功能還在。

現在來說ini的新增設定有3個:ControlCombatControlCombatPIDCountCombatControlPIDList,說明如下:
  • ControlCombat:最主要的設定,0為關閉控制隊友功能,1~3則是對應不同模式,目前只有模式1算可用。
    2和3的內容未完成,現在都是讓你可以控制戰鬥中所有人,不論敵我或種族,如果你隨便開道具欄的話很容易讓遊戲死機。源碼內默認值為3,我編譯時沒特別再改,所以除非你就是想控制所有人,不然這項設定請務必指定0或是1
  • ControlCombatPIDCount:目前只有在ControlCombat為1時才有用處,設定可控制的PID數量,要和下面的CombatControlPIDList一起配合運作。
  • CombatControlPIDList:目前只有在ControlCombat為1時才有用處,設定PID清單以決定在戰鬥中你能控制什麼NPC,隊友的PID可以用F2se確認(看隊友.pro的檔名數字),或是用FO1/2 Critter Proto Editor看其他你想控制的NPC,有一點要注意的是PID要用16進位數值,不是直接照數字填。各PID以逗號分開,前述的ControlCombatPIDCount設定多少就是取前面幾個PID當成可控制的角色。

隊友PID的16進位數值如下(其他非正式隊友NPC的請自己動手查,另外非RP 2.2的mod我也不管):
Sulik - 61
Vic - 3E
Davin - A3
Miria - A4
Cassidy - 59
Lenny - 6B
Marcus - A1
Myron - A0
Skynet(生化腦) - 4F
Skynet(人腦) - 17D
Skynet(猩猩腦) - 17B
Skynet(異常腦) - 17C
Cyberdog - 88
Goris - 98
K9 - 1D7
Dogmeat - 156
Kitsune - 1F6
Dex - 1F7
Cat Jules - 1F8

以我的ddraw.ini設定當例子:
  1. ControlCombat=1
  2. ControlCombatPIDCount=3
  3. CombatControlPIDList=61,3E,59,A1,1F6
复制代码


CombatControlPIDList列出我最後帶上鑽油平台的5個隊友,依順序是Sulik、Vic、Cassidy、Marcus、Kitsune,但由於ControlCombatPIDCount設定為3,所以我能控制的實際上只有前三人,也就是Sulik、Vic、Cassidy。

這功能目前只是半成品,有不少問題存在,例如控制其他人時會和你同用一部份的perk效果,像是Bonus Rate of Fire之類的。另外NPC裝備武器會放在第二格,所以你使用第一格的武器然後換到其他人時會發現怎麼變成空手了,那是很正常的。
 楼主| 发表于 2013-8-26 15:32:04 | 显示全部楼层
更新到r249,再次修正r247想修正的bug。目前正式版本內都沒有該bug,因為Timeslip是3.1之後才換VS2012。

bug是這樣:只要在ddraw.ini內把PerksFile項目啟動了(拿掉註解就好,就算沒有perks.ini也行),由VS2012編譯出來的sfall在r247之前會讓角色性別被所選的特徵數量鎖死,只選一個特徵就是女性,選兩個則是男性,什麼特徵都沒選就一切正常。不論是在角色創建畫面或是讀取既有存檔都會受影響,像是你舊存檔角色是男性有選一個特徵,讀檔之後你就會變成女性。r247之後變成影響角色的抗毒,只選一個特徵就鎖死在95%,選兩個就變成0%,不受角色耐力與額外能力干擾。
這個bug在源碼內其實已經存在很久了(在Perks.cpp從ddraw2.cpp分離出來之前就有),只是先前運\氣好在VS2010下編譯出來的sfall沒問題,在VS2012時就沒那麼好運\了,而Timeslip自己沒特別測試到該部份。

另外ControlCombat各模式在完成的情況下,模式1就是現在這樣用特定PID列表決定戰鬥中可操控的NPC,2是直接操控全部隊友,3則是戰鬥中所有人,目前只有1和3的運\作方式有效而已。
 楼主| 发表于 2013-8-27 18:39:45 | 显示全部楼层
更新到r250,和Timeslip聊了一下測試結果才發現戰鬥控制功能的模式設定其實有bug,不是因為半成品才只有1與3的運\作方式可用。

所以現在ControlCombat三種模式都可以照原先預定的方式運\作了,模式1一樣照上面所說的要搭配其他兩個設定,模式2是控制所有隊友(“隊友”只限那些你可以設定戰鬥偏好、武器、裝甲的人,不是所有綠色的友方都算),模式3是戰鬥中所有人,除非你想作弊(例如操控Horrigan然後把武器丟在地上),不然我個人不建議用模式3,人數一多你的戰鬥過程會變得很冗長。另外我在編譯時先把ControlCombat默認值改成0(Timeslip說之後默認值會改成0,現在的3只是測試用),以防一些不必要的意外。
 楼主| 发表于 2013-10-30 00:42:23 | 显示全部楼层
更新到r252,其實從一個多月前就該動手了,只是原本拿來編譯的工作PC陣亡,加上太忙沒時間讓我把備用的XP機器換下來,就拖到這兩天才有空閒重新把工作PC整理好上線運\作。
 楼主| 发表于 2013-11-11 14:12:15 | 显示全部楼层
為了接下來的RP 2.3(2.2玩到一半的別太擔心,沒加什麼新東西也沒大改啥),Timeslip前幾天把sfall正式版號更新到3.2,本質上就是r252。
由於Timeslip不會再編譯Win2k版本(理由見22樓),目前我丟了一份在NMA上給killap包在RP 2.3內。首篇的檔案也更新,因為普通版本去抓sfall官方的就好,我這回只包了Win2k與Trace版本。

Timeslip預計把NPC操控功能的選項簡化,省去ControlCombatPIDCount,因為沒什麼人會在PID列表放了五項,結果只會想用前三項這種無聊事,簡化之後會變成PID列表有幾項就全用上。
 楼主| 发表于 2013-11-25 12:04:21 | 显示全部楼层
更新到r254,修正一個從2.15加上自訂技能設定(skills.ini)開始就存在的bug,那是前兩天我測RP 2.3閒著沒事想調整技能點數花費時注意到的。

在ddraw.ini內啟用SkillsFile之後,sfall內建的默認技能等級計算公式(該和原本遊戲一樣)不會把力量列入計算,而技能中就只有近戰和徒手會用上力量。
所以如果你沒有在skills.ini內去特別調整近戰/徒手公式的話,它們會變成:
Melee = 20+[2*(AG+ST)] ------> Melee = 20+(2*AG)
Unarmed = 30+[2*(AG+ST)] --> Unarmed = 30+(2*AG)

在用舊版本sfall情況下,要是你沒打算特別調整近戰/徒手技能,你還是需要在skills.ini內加上這兩行以修正公式:
  1. Skill3=s2|a2 ;Unarmed formula fix
  2. Skill4=s2|a2 ;Melee formula fix
复制代码
发表于 2013-11-26 11:25:28 | 显示全部楼层
原来还有2.3,以为2.2已经是最终版了
 楼主| 发表于 2014-2-8 21:36:15 | 显示全部楼层
本帖最后由 novarain 于 2014-2-8 21:52 编辑

Timeslip在沉寂了兩個多月之後,於兩天前更新了sfall一口氣跳到r263,主要是新增一些其他人要求的功能。
新增兩個和戰鬥中開物品欄的AP花費有關的設定,一個是InventoryApCost,就是修改戰鬥中開物品欄的耗用AP,默認為4。另一個是QuickPocketsApCostReduction,顧名思義是調整Quick Pockets減少耗用AP的效果,默認為2。
當然你高興的話可以把開物品欄設成完全不花AP的作弊等級。

另外因為有新增一些腳本函式,Modder's Pack提前更新到3.3版,其實就是更新了編譯器和函式文件。
 楼主| 发表于 2014-6-23 11:04:14 | 显示全部楼层
本帖最后由 novarain 于 2014-7-7 14:09 编辑

正式版號更新至3.3,離上次隔了四個月。
因為Timeslip提到他暫時沒打算繼續開發sfall,所以我寫了短信問他能否至少把SVN上的源碼更新到最新版,於是他就順便修正了幾個之前有人回報的bug再一次更新。
首篇附檔也更新,只包含了一般版、win2k、win2k+debugging三個版本,給較新系統用的一般debugging版本去抓Timeslip的官方Modders Pack就好。

EDIT: 更新到r271,有更動的只有Credits,加上了幾個人與移除掉先前關於Interplay的部份,因為現在版權商已經換成Bethesda,而且他們也和Timeslip聯絡過了(還送了一組Steam舊三作序號給他)
 楼主| 发表于 2014-7-7 14:17:58 | 显示全部楼层
本帖最后由 novarain 于 2014-7-7 14:23 编辑

首篇附檔再次更新,但這回和sfall本體無關。
前兩天killap發現modders pack裡面的sslc腳本編譯器不能在WinXP SP3下運行,我翻了一下源碼發現Timeslip忘了把編譯sslc時呼叫的工具組換成支援WinXP SP3/Win2003 SP2的v110_xp,而是直接用v110(僅支援Vista以上),所以今天上班有環境可用之後就編譯了支援WinXP SP3的版本,同時在WinXP SP3舊機器上測試確定一切正常。另外也順手編譯了給Win2000與XP SP2以前用的版本,不過沒完整測試過。

照這樣下去我乾脆整套玩意兒一起發佈算了....幾乎什麼都編譯了XD
 楼主| 发表于 2014-8-28 11:22:24 | 显示全部楼层
Timeslip結婚了,以後大概很難看到他更新什麼,不過最近NMA上有一個俄國佬phobos2077也在反組譯看遊戲內部怎麼運作,同時也新增一些功能/函式給sfall,目前我和他兩人向Timeslip要到了提交源碼到sfall SVN的權限,所以接下來會和他合作居多。

目前最有意思的新功能是修改掃射時的子彈分組比例,原本遊戲內的運算邏輯是(所有除法碰到的小數皆捨去):
  • 中間群組 = 總彈數/3,如果是0就設為1。
  • 左邊群組 = 總彈數/3
  • 右邊群組 = 總彈數 - 中間群組 - 總彈數/3
  • 直接朝主要目標攻擊的子彈 = 中間群組/2,如果是0就設為1,然後中間群組減1。

所以右邊群組在一些情況下會多一兩發子彈,畢竟在前兩個除法小數都捨去了,它是撿剩的。

既然都知道邏輯怎麼跑和內存位址,當然就可以動手介入了,新功能是讓你能直接在ddraw.ini內設定中間群組占總彈數的比例,和其中分出多少比例是直接朝主要目標攻擊(剩下的看中間路徑上有沒有其他目標,沒有也一樣跑去找主目標),左右兩側是總彈數減掉中間群組之後平分(除不盡的情況下右側會多1)。所以可以做到就算你槍口前面就站了個路人,掃射時全部子彈也只向他身後主目標飛去的作弊攻擊,不過源碼還沒放上SVN,目前只在私底下測試而已。
 楼主| 发表于 2014-9-4 13:49:27 | 显示全部楼层
更新到r278,Timeslip給了我和phobos2077更新SVN源碼的權限,另外我也有sfall的發佈權限,之後正式版本發佈多半會由我進行(其實就是編譯檔案打包而已,最麻煩的是寫文件)
phobos2077住在西伯利亞地區的克拉斯諾亞爾斯克,時區正好也是UTC+8,所以和他在Skype上交換意見還挺方便的,至少沒什麼時差問題。

從r271到r278之中新增了一些設定,解說如下:

ObjCanSeeObj_ShootThru_Fix(r273)
Mash加上的設定,讓一些有“可射穿”旗標的物件也同時能讓人看穿進行視線判定。原本情況是你可射穿它們去打敵人,但敵人視線無法穿透物件看不到你,就沒辦法隔著同一物件直接回擊,而是會試著移動到能真正看到你的地方才攻擊。
默認是關閉,因為Mash自己也不確定這是否會對遊戲中某些場合造成負面影響。

ComputeSprayModComputeSpray_CenterMultComputeSpray_CenterDivComputeSpray_TargetMultComputeSpray_TargetDiv(r274)
phobos2077加上的mod,讓你可以修改掃射攻擊時的子彈分組比例,原本的分組計算方式請見上篇。

  • ComputeSprayMod:默認為0,設為1以上為啟用mod,同時接下來四個設定才有作用。
  • ComputeSpray_CenterMult(默認值1)/ComputeSpray_CenterDiv(默認值3):控制總彈數中有多少比例的子彈會去中間群組,左右群組則是平分剩下的子彈。
  • ComputeSpray_TargetMult(默認值1)/ComputeSpray_TargetDiv(默認值2):控制中間群組的子彈有多少比例是直接朝主目標攻擊,剩餘子彈則看中間路上是否有其他目標可以進行命中判定,都沒有或判定沒中的就一樣去找主目標。
  • 所有乘數(Mult)都無法超過除數(Div)。

例如:
ComputeSpray_CenterMult=1
ComputeSpray_CenterDiv=2
ComputeSpray_TargetMult=2
ComputeSpray_TargetDiv=3
這代表掃射時有50%(1/2)的子彈會走中間,25%各走左右兩邊。
走中間路徑的50%會再分成兩組,其中的2/3會直接對主目標進行命中判定,1/3則會去找路徑上其他目標。

當然如果你這樣設定:
ComputeSpray_CenterMult=1
ComputeSpray_CenterDiv=1
ComputeSpray_TargetMult=1
ComputeSpray_TargetDiv=1
就表示所有子彈都直接向主目標進行命中判定,就算你槍口正前方就站了個路人甲,他也挨不到任何一槍。

ExplosionsEmitLight(r274)
默認是關閉,讓炸藥爆炸與能量武器的射出物會發光照亮附近區域,當然前提是地圖環境要暗一些才看得到發光效果,大白天時看不到。
能量武器的射出物是沒啥問題,不過炸藥爆炸的發光效果在炸完之後不會恢復正常,不是留下殘光就是把附近區域本來自有的發光“吃掉”,要換地圖之後才會變回原貌。

Dynamite_DmgMaxDynamite_DmgMinPlasticExplosive_DmgMaxPlasticExplosive_DmgMin(r275)
要修改的話記得把各行前面的分號註解拿掉。設定炸藥與塑膠炸藥的傷害值,最大值(DmgMax)上限到9999,最小值(DmgMin)的上限是到和最大值相等。

MovieTimer_artimer1MovieTimer_artimer2MovieTimer_artimer3MovieTimer_artimer4(r277)
要修改的話記得把各行前面的分號註解拿掉。設定遊戲中過了幾天就會撥放Hakunin的夢境影片,一共有四段,默認是過90、180、270、360天各放一段。
要注意的是第四段播完就會強制進入村人被擄走的後段劇情(和你進入V13之後一樣)。
 楼主| 发表于 2014-9-16 16:49:48 | 显示全部楼层
正式版號更新至3.4(SVN r295),從r274開始全是phobos2077負責,很多部份是他在製作自己的Economy and Combat Rebalance mod時發現沒有或是本來的太難用而動手改進的。

從上一篇r278之後到r295(3.4)的變更:
  • 重寫了sfall的數組(array)運作方式,讓數組用起來更有彈性也比較安全(舊版本如果沒注意會讓存檔過大甚至毀損),他對sfall舊版數組的意見可以參考NMA這篇,另外他也寫了一篇sfall數組新版本教學的帖子。他應該是目前極少數在mod內用上(而且算是大量使用)sfall數組功能的modder。
  • 新增七個reg_anim_*腳本函式,其實是把遊戲引擎內本來就有但只在特定情況運作的功能拉出來可以直接在腳本使用。
  • 新增兩個hook script:hs_ammocost、hs_useobj
  • 新增CheckWeaponAmmoCost選項,讓遊戲檢查那些一次攻擊就耗費數發彈藥的武器到底還有沒有足夠彈藥執行攻擊,像超級拳套一次要耗兩發電池,但原本就算剩一發電池你還是可以攻擊,主要是為了上面hs_ammocost而加上的。
  • 增加critter_dmg函式的可控性。
  • 新增一個特別定義的metarule函式來控制戰鬥中爆炸的各種參數(原本引擎自己呼叫的功能太雜太難用)
  • 新增一個設定檔讓你可以新增技能書或是修改既有書本。
  • 修正Alt+Tab切換窗口再切回時,遊戲對按鍵判斷會出問題的情況(主要是Ctrl、Alt、Shift等控制鍵)
  • 現在全域腳本(global script)內的map_*_p_proc過程會被執行,另外先前是一定得把start過程放第一位,現在不需要了。
  • 修正引擎對帶負號的整數或浮點數進行乘除法後結果會完全亂掉的問題。原因是腳本內的數值是用4 bytes (32 bits)儲存,但遊戲引擎會把它們視為8 bytes (64 bits),帶負號進行乘除法就會出問題了。為什麼沒人注意到?因為原版遊戲和大多數mod的腳本不會有那種數值運算情況....
  • 修正sfall原本對於匯入/匯出過程的補丁,當初Timeslip把位址偏了一個位元。

3.4所有檔案請至SourceForge下載,如果SourceForge被牆了那我再把檔案用附件上傳。
 楼主| 发表于 2015-2-16 17:07:58 | 显示全部楼层
上個月正式版號更新至3.5(SVN r317),和先前一樣更新全是phobos2077負責。
不過現在3.6已經快接近完工了,應該在二月底會釋出。

因為他的更新幾乎著重在數組和腳本相關部份,我不打算把那些太技術性的內容詳細列出來,只提比較重要或明顯的項目:
  • 編譯環境降回VS2010,因為用VS2012/2013其實沒有意義,sfall沒有源碼需要它們才有的新功能或C++11語法。
  • 新增設定:CombatPanelAnimDelay、DialogPanelAnimDelay,讓你可以調整對話視窗與戰鬥面板(介面右下角那方塊區域)的動畫速度。
  • 再次修正sfall的匯出程序補丁。
  • 新增五個hook script:hs_keypress、hs_mouseclick、hs_useskill、hs_steal、hs_withinperception
  • 在hs_keypress與key_pressed函式內可以用虛擬鍵盤碼,不再限於舊的DirectX鍵盤碼。
  • 新增腳本函式:charcode、message_str_game、sneak_success、tile_light
  • 新增和數學運算有關的腳本函式:^運算子、log、exponent、round
  • hs_calcapcost現在對拿在手上的非武器物品也有作用。
  • hs_useobjon現在在玩家或AI使用藥物時也會呼叫執行。
  • 修正偷竊相關的sfall腳本函式在讀取遊戲後,最大值與加成值不會正確初始化或重置的問題。

新增設定的解說:
CombatPanelAnimDelay
控制戰鬥面板(介面右下角那方塊區域)的開啟/關閉動畫速度,默認值1000,數值愈低速度愈快,數值愈高則愈慢,可用數值範圍是0~65535。
如果設到65535的話,開啟與結束戰鬥會等上差不多快一分鐘....

DialogPanelAnimDelay
控制對話視窗面板切換(要切換到交易或戰鬥設定時的下降與升起)的動畫速度,默認值33,數值愈低速度愈快,數值愈高則愈慢,可用數值範圍是0~255。
設到255會等上個十幾秒才切換完。
 楼主| 发表于 2015-2-16 23:44:20 | 显示全部楼层
首篇檔案更新到r342,中間更新也幾乎都是新增腳本函式或擴充既有功能,不然就是腳本編輯器的介面強化(和舊版超陽春的樣子比起來挺像正式的IDE了)

值得一提的是phobos2077把NPC戰鬥控制整個重寫了,用較多的C++較少的ASM,至少源碼比較像是給人類讀的了,同時也修正許多原本的問題:
  • 在切換控制NPC時會正確選擇到拿在手上的武器,不會再發生角色外觀明明拿著步槍,但輪到他時使用物品格是空的(選到另一個沒有裝備武器的格子),另外默認會選擇第一個使用物品格(左邊)
  • 現在在NPC物品欄中可以安全更換他們的武器,如果你試著把NPC沒有對應畫格的武器拉到使用物品格(例如想裝備衝鋒槍給Cassidy),會無法放到格子內,另外會有訊息提示你NPC不能裝備該武器。原本設計是呼叫AI邏輯來決定能不能裝備,像是對應技能太低的武器AI不會去用,後來改成純粹只看有沒有對應畫格,畢竟都讓你操控他們就和操控自己角色一樣了,剩下的選擇該是你自己負責。
  • 現在在控制NPC的回合時讀檔不會再讓遊戲卡死。

另外INI內相關選項也調整了一下,phobos2077把Timeslip本來留下的待修改項目完成,現在只剩ControlCombat與ControlCombatPIDList,但功用有些變化:

ControlCombat(默認為0)
0 - 關閉戰鬥控制功能
1 - 控制所有角色(強烈建議要配合PIDList使用)
2 - 控制目前在隊伍中的隊友
模式1和2會受到下面PIDList的影響。

ControlCombatPIDList(默認空白)
現在功用變成模式1和2的額外限制清單,如果空白就代表控制所有角色(模式1)或全部隊友(模式2),要是有PID就只能控制PID對應的角色,配合模式1就是對方為敵人或不在隊伍中也都可以控制,配合模式2就是該角色必須同時也在隊伍中才能控制。
另外PID現在接受普通的ID數值,不再需要用前面舊文列的16進位值。例如Sulik的ID是97(從檔名可以看得出來,00000097.pro),當然你也可以用完整版的PID數值16777313(等於ID+16777216),你要用舊的16進位值的話,得在原本61(97的16進位)前面加上“0x”變成0x61。
我在之後INI內會給的默認清單是ControlCombatPIDList=62,89,97,107,160,161,也就是Vic、Sulik、Cassidy、Lenny、Myron、Marcus這六個人型隊友。
 楼主| 发表于 2015-3-3 21:36:03 | 显示全部楼层
今天正式版號更新至3.6(SVN r346),一些比較重要的變更項目:
  • 修正Books.ini內的書本項目不會全被載入的問題。
  • 新增腳本函式:obj_blocking_line、obj_blocking_tile、tile_get_objs、party_member_list、path_find_to、create_spatial、art_exists、obj_is_carrying_obj
  • 新增hook script:hs_inventorymove(在物品欄畫面移動物品時執行)
  • hs_withinperception現在可以覆蓋掉obj_can_see_obj腳本函式的阻擋檢查結果,例如你可以讓某個NPC看穿障礙物。
  • 擴充hs_combatdamage的參數與回傳值,現在你可以完全用一個腳本就編寫出自己的傷害公式,不再需要懂匯編語言才能寫新的公式。
  • NPC戰鬥控制功能整個重寫(細節見上篇)
  • CorpseLineOfFireFix(屍體阻擋掃射攻擊的子彈)設定整個重寫以修正和ToHit hook的位址衝突,還有和目標同一格內的屍體仍舊會吸收子彈的問題。
  • MultiHexPathingFix與OverrideCriticalTable(模式2,只有修正致命一擊表格的bug)兩個設定現在在源碼內是默認啟用的,因為實際上在killap非官方修正和RP附的ddraw.ini內都已經默認啟用好幾年了,測試也沒問題,既然是修正遊戲原本的bug那沒什麼道理不啟用。
  • 新增設定:ReloadWeaponKey,讓你可以設定一個按鍵來執行裝填手上現有武器,可以省去用鼠標點介面的功夫。
  • 新增設定:SkipSizeCheck,跳過對執行檔的大小檢查,只有在使用debug版sfall才有效。
  • 將FalloutClient.exe移至Modders pack,因為現在sfall一般版已經不會用到它了。

CorpseLineOfFireFix(默認值0)
現在只剩0(關閉)和1(開啟),運作邏輯也和我在版上原本寫的不一樣,現在開啟是直接在引擎呼叫obj_shoot_blocking_at函式來確認阻擋射擊線的物件時就檢查目標是否死亡,死的就直接視為像地上雜草那種不會阻擋攻擊的物件。

ReloadWeaponKey(默認值0)
接受的值是DirectInput鍵盤掃描碼,各鍵對應的值可以參考這網頁,設定值可以用10進位或16進位,例如你想用分號(;)鍵那就是39或0x27。
 楼主| 发表于 2015-7-21 00:11:07 | 显示全部楼层
最近sfall又開始更新,而且移到GitHub上。目前重點是回頭把引擎舊有bug一個一個抓出來修。一些比較有趣值得提的:
  • 如果使用好幾個超級治療針想暗殺NPC,但在藥效發作目標死亡之前就離開該地圖會造成當機 - 已修正。
  • 隊友還在在藥物效果影響期間內升級,會讓角色屬性數值錯亂 - 已修正。
  • 給隊友數個相同的空武器和一份彈藥,叫他裝備時會變成整疊武器都裝上彈藥,造成退彈之後多於本來該有的彈藥量,等於可以無限洗彈藥出來 - 已修正。
  • 給隊友數件相同的裝甲叫他穿上,在對話時會變成你能一直叫他脫下裝甲,造成隊友裝甲屬性會被多扣到負數,而升級時隊友身上有數件和裝備中相同的裝甲也會造成脫下裝甲時發生同樣問題 - 已修正,算是上面無限彈藥漏洞的相反狀況。
  • 如果技能值為負數(相關屬性太低之類),開啟技能介面(Skilldex)時會顯示成翻轉到一半的紅色數字 - 已修正,現在只會顯示為“000%”,本來為負數的技能值在角色畫面中仍是負數就是了。
  • 原本一種藥物最多只能使用兩次,但原地存/讀檔之後能再繼續使用兩次,可以一直重覆追加下去 - 已修正。
  • 隊友也會有藥物上癮的情況,其他藥物可以隨著時間經過而退癮,但Jet上癮的話就算對他們使用解毒劑也沒效果,造成他們完完全全的永久Jet上癮與減少相關屬性 - 已修正。
  • 一個顯示上的小bug:如果你物品欄最下面一項是多個一疊的物品,在“拿起”(手型鼠標按下去別放開)最上面只有單個的物品時,物品圖像還是會留一份在底層,而不是正常該變空位的情況 - 已修正。
  • 和上面的顯示bug有關,其實原本你應該可以用拖拉彈藥的方式來裝填在物品欄(不是拿在手上)的武器,但因為bug你可能會發現彈藥拖到其他物品上時反而可以裝填身上某樣武器,或是完全做不到那件事 - 已修正。
  • Sharpshooter補丁更新,這回是完全照著原本文字敘述的作用效果,和之前相比變得更加有用。

新增的小功能:
  • 對話選項在一代最多可以有九個(對應鍵盤上的1~9),在二代被縮減到八個,現在加了新設定能顯示最多九個。
  • 裝過不同種類彈藥的空武器在物品欄內不會疊在一起,因為各別記錄的彈藥種類不同(例如檢查會發現一把是0/12發10mm AP、另一把是0/12發10mm JHP),現在有新設定讓所有同樣的空武器不管先前裝的彈藥種類都能疊起來。
  • 多了個新設定讓你除了高亮地上物品之外,還能高亮所有“容器”,目前顏色是用淺灰,不過我提了建議應該要加上能自訂高亮顏色的選項。

目前都還在測試與繼續新增更多修正當中,我暫時不會放編譯檔案出來。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-7-14 15:03 , Processed in 0.094719 second(s), 11 queries .

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