Pages

Subscribe:

Labels

顯示具有 自製MOD 標籤的文章。 顯示所有文章
顯示具有 自製MOD 標籤的文章。 顯示所有文章

2022年8月20日 星期六

[模擬市民4]c821118出品模組 (緩慢更新1.90.358.1030)

這篇收錄由我製作的模組/補丁,英語發佈論壇是Mod The Sims、中文發佈論壇則是模擬市民大會廳三宮六院,額外的分流是Sim File Share,所有站點同步更新。

製作的模組清單如下:
延伸閱讀:[模擬市民4]Game Mods 模組/補丁
#more#




海菜Seaweed

[MTS]Edible Seaweed(1.90): Fishing reward and Cooking ingredients
[SFS]c82_Seaweed
[更新]v1.2(20220820) 修復更新1.90.358.1030
v1.1(20210730) 修復更新1.77.131.1030

釣魚取得海菜的機率:
  • 釣到垃圾有100%機率獲得海菜。
  • 釣到寶藏有25%機率獲得海菜。
  • 什麼都沒釣到有50%機率獲得海菜。
  • 釣魚也有5%機率獲得海菜。
吃了海菜之後:
  • 如果同時擁有人魚和素食者的特徵(需要島嶼生活、都會生活) ,或是同時擁有人魚和海洋之子的特徵(需要島嶼生活),就會獲得快樂+2的情緒。
  • 除以上之外的模擬市民,吃了海菜的反應與吃蔬果的反應一樣。
海菜作為食材:
  • (需要鄉間生活和雪國勝地) 海菜可以做為飯糰和海菜拉麵的食材。



吃生魚Eat Raw Fish

[MTS]Eat Raw Fish - an CC trait Raw Food Lover
[SFS]c82_EatRawFish
[更新]v1.3(20210730) 適用1.90.358.1030須更新XML Injector

這個模組需要XML Injector才能運作,下載XML Injector by scumbumbo,解壓縮後將XmlInjector_Script_v4.ts4script放在Mods資料夾第二層。

吃了生魚之後:
  • 如果模擬市民既不是吸血鬼也不是人魚,會獲得不舒服情緒「噁心的口感」。
  • (需要吸血鬼) 吸血鬼市民會獲得無聊情緒「只是塊生食」。
  • (需要島嶼生活) 擁有海洋之子特徵的模擬市民,會獲得不舒服情緒「腸胃號哭」。
  • (需要島嶼生活) 人魚市民會獲得情緒「新鮮漁獲」。
  • (需要島嶼生活、都會生活) 吃了河豚的人魚市民會獲得情緒「嚴重刺麻感」。 

根據魚的肥料強度,每隻魚可以補充的飢餓數值有所不同,高等級補充90點、中等及補充60點、低等級補充30點、糟糕等級只補充15點。

這個模組新增一個特徵「生食愛好者」:
  • 在獎勵商店購買,花費200點數。
  • 擁有生食愛好者的模擬市民,不會獲得不舒服情緒「噁心的口感」。
  • 生食愛好者吃了生魚之後,會獲得快樂情緒「生食愛好者」。


賣給當地商店Sell to Local Market

[MTS]Sell To Local Market (require GoToWork)
[三宮六院]賣給當地商店 - 賣食物賺錢賺名聲
[SFS]c82_SellToLocalMarket
[更新]v1.2(20220820) 修復更新1.90.358.1030
v1.2(20190608) 適用1.77.131.1030
這個模組需要XML Injector才能運作,下載XML Injector by scumbumbo,解壓縮後將XmlInjector_Script_v4.ts4script放在Mods資料夾第二層。

模組兩種版本,擇一使用。
c82_SellFoodToLocalMarket : 食物必須是絕佳、8份。
c82_SellFoodToLocalMarket_anyQuality-onePlate : 食物可以是任何品質,可以只賣1盤。
c82_SellFlowerArrangementGainFame : (需要春夏秋冬) 售出花藝作品可以獲得名聲。


方便作飲料Better Making Drinks

[MTS]Better Making Drinks - refill, no auto, single cup
[三宮六院]方便作飲料 - 裝滿飲料、只泡一杯咖啡、煮完咖啡不會喝
[SFS]c82_BetterMakingDrinks
[更新]v1.2(20220820) 修復SingleCupCoffee更新1.90.358.1030
v1.1(20220820) 修復NoAutoDrinkAfterBrew更新1.90.358.1030
SinbleCupCoffee 20210730修復更新1.77.131.1030

這是一個模組組合,共有三種小模組,全部可以同時使用。
c82_RefillDrink : 如果你覺得剛煮完的咖啡卻不是全滿也無法待售;這個模組可以讓你把任何飲料「充填(裝滿)」,方便玩家能將飲料「設為待售」。
c82_noAutoDrinkAfterBrew : 這個模組讓小人煮完咖啡或茶,不會直接喝,改成放下咖啡或是離開茶壺機器。
c82_SingleCupCoffee : 咖啡機可以只泡一杯咖啡,選擇「沏一杯...」。



美味血肉Tasty Flesh

[MTS]Tasty Flesh
[三宮六院]美味血肉
[SFS]c82_TastyFlesh
[更新]v1.3(20220820) 修復更新1.90.358.1030
v1.1(20210730) 適用1.77.131.1030 (需要吸血鬼)

兩種功能,擇一下載。
c82_AlwaysDivineDrink : 吸血鬼飲用任何模擬市民的血漿都是「非凡飲料」。
c82_TastyFlesh : 新增獎勵特徵「美味血肉」,並有相關效果如下:

Tasty Flesh新增功能:
1. 獎勵特徵「美味血肉」在獎勵商店以200點購買。
2. 擁有「美味血肉」的模擬市民,可以讓吸血鬼飲用後獲得情緒「非凡飲料」。
3. 擁有「美味血肉」的模擬市民,被吸血鬼飲用後,會獲得情緒「血漿捐贈人」。
4. 擁有「美味血肉」的模擬市民,被吸血鬼飲用後,不會產生負面情緒「最近被咬」。



睡眠艙可以冬眠Hibernate for Sleeping Pod

[MTS]Hibernate for Sleeping Pod
[三宮六院]睡眠艙可以冬眠
[SFS]c82_HibernateForSleepingPod
[更新]v1.3(20220820) 修復更新1.90.358.1030
v1.2_20210730更新葡萄牙語,適用1.77.131.1030 (需要星夢起飛)

適用家具:夢之森睡眠艙、數羊舒適睡眠艙。
互動選項:點擊睡眠艙選擇「冬眠」。
冬眠功能:
1. 冬眠期間滿足所有需求。
2. 冬眠期間不會變老、不會長大。
3. 模擬市民會冬眠,除非失火、停電、睡眠艙損壞或青少年進入階段。
4. 睡眠艙損壞率調到0。

新增情緒和特徵:
1. 冬眠的期間會獲得特徵「冬眠而永生」。
2. 冬眠結束時,獲得維持4小時的自信情緒「冬眠甦醒!」。
3. 冬眠結束時,模擬市民會覺得寒冷。(需要春夏秋冬)


餐廳雇用青少年Hire Teen for Restaurant

[MTS]Hire Teen for Restaurant
[三宮六院]餐廳雇用青少年(需要Dine Out)
[SFS]c82_RestaurantHireTeen
[更新]v1.3(20220820) 修復更新1.90.358.1030
v1.2(20210729)更新1.77.131.1030 (需要外出用餐)

需要外出用餐(Dine Out),讓餐廳能雇用青少年作為服務生、接待員和廚師,共有4種版本,擇一安裝。
c82_RestaurantHireOnlyTeen = 餐廳只能雇用青少年。
c82_RestaurantHireTYAE = 加入青少年的選擇,餐廳可以雇用青少年、青年、成年和老人。

由於這個模組衝突PolarBearSims的Restaurant~Hire Who Ever!,所以另外延伸兩個套用Hire Who Ever功能的模組。
(停止更新)c82_RestaurantHireWhoEverOnlyTeen = 餐廳只能雇用青少年,加入Hire Who Ever功能。
(停止更新)c82_RestaurantHireWhoEverTYAE = 餐廳可以雇用青少年、青年、成年和老人,加入Hire Who Ever功能。



寫作速度加快Faster Writing

[MTS]Faster Writing: faster4x, 2x or instant completed
[三宮六院]寫作速度加快: 2倍、4倍或立即完成
[SFS]c82_ComputerWritingFaster
[更新]20210728更新1.90.358.1030
共有3種速率,立即完成、2倍速或4倍速,擇一安裝。


防火壁爐Fireplace - No fire

[MTS]Fireplace - No Fire, less fire or more fire
[三宮六院]防火壁爐:不再著火或20%著火
[SFS]c82_FireplaceNoFire
[更新]v1.0(20181219) 適用1.90.358.1030
共有3種防火機率,0%、20%或80%,遊戲預設值為50%,擇一安裝。


花藝製作加快Faster Flower Arranging

[MTS]Faster Flower Arranging(1.48): faster 2x, 4x or instant complete
[三宮六院]花藝製作加快:2倍、4倍或立即完成
[SFS]c82_ArrangingFlower
[更新]v1.0(20190119) 適用1.90.358.1030 (需要春夏秋冬)
共有3種速率,立即完成、2倍速或4倍速,擇一安裝。



更多餐廳員工Restaurant Additional Staff

[MTS]Restaurant Additional Staff - +1 Chef, +2 Host and +3 Waiter
[三宮六院]更多餐廳員工(1.51):廚師+1、接待員+2、服務生+3
[SFS]c82_RestaurantAdditionalStaff
[更新]v1.2(20220824) 更新1.90.358.1030,但仍有員工翹班的問題,最多允許總計7位。
v1.1(20190525) 適用1.52.100.1020 (需要外出用餐)

進遊戲之後,先去餐廳用地津貼點數→買下額外廚師額外接待員額外服務生,之後就能在管理員工雇用新增的員工。
c82_RestaurantAdditionalChef.package = 新增1個廚師。
c82_RestaurantAdditionalHost.package = 新增2個接待員。
c82_RestaurantAdditionalWaiter.package = 新增3個服務生。
c82_RestaurantAdditionalStaff_MAIN.package = 必要檔案。
c82_remove_restaurantstaff.ts4script = 移除MOD時要使用的作弊碼。

如何安全移除模組
將package檔從文件夾移除之前,必須做以下的步驟:
1. 在遊戲中開啟作弊碼視窗,按下Ctrl+Shift+C
2. 輸入remove_restaurantstaff
3. 然後存檔並離開遊戲,就能安全移除檔案。

如何重置模組獎勵
只重置模組的獎勵
輸入reset_restaurantreward 7878995 10704069 10704070 299927 299920 299921
或者重置餐廳全部的獎勵
輸入reset_allrestaurantreward

2021年8月12日 星期四

[模擬市民4自製模組]教學討論文整理

在MTS和S4S的討論版有很多教學文和解決問題文,在自製模組的過程中可以參考,這篇是我自己遇到有查過解決方法的教學文整理。
##more##

Tuning Mod

Index of Sims 4 Custom Content Tutorials for Build/Buy Mode
Sims4Studio論壇的教學文目錄

Objects - Custom Harvestables: An overview
製作可採集的植物

Video Tutorial: How to Resize Objects (S4S & Blender)
改變物件大小

How to make an object go into the Sim's inventory
修改物件可以被收進背包

SOLVED Live drag an object from and into sim inventory. Help
修改物件可以被拖拉

Step by Step Tutorial on Adding Effects to Objects
給物件加上特效

特效生成器 by Andrew

Script Call Fail (due to custom object state)
使用自定義的ObjectState不會出現錯誤

[SOLVED] Object Custom Catalog Tag Help - "EV" ENUM VALUES
讓物件的類別(Catalog)使用自訂義的tag

How to make surface items into floor items (and vice versa)
變更物件的判定大小

How to Merge Packages Using Sims 4 Studio
將多個package合併成一個檔案



How to make objects allow place in the ocean?
我自問自答...;變更物件允許放置在海面上

How I can do include my animation in an object ?
設定動畫的asm key

自訂食物/食譜




Adding Custom Recipes to the Restaurant menu
將自訂義食譜加入餐廳菜單



Python

Injecting Satisfaction Store Rewards
Creating New Reward Traits without overriding?
使用Python載入自訂義的獎勵到獎勵商店中

Blender
How to delete (hide) a mesh group or remove a mesh part
如何移除不需要的模型,因為如果直接刪除還是存在,所以必須面數縮小藏起來就好

2021年8月1日 星期日

[模擬市民4自製模組]模組作者如何更新模組?

當你製作的模組多到滿天星,尤其製作的模組都是功能模組,每當模擬市民4更新的時候,肯定都會相當頭疼...

2021/8/1新增方法2:逐一檢查
##more##

方法1:批次檢查

為了解決這個問題,MTS的模組作者scumbumbo開發了兩項工具,能夠減輕更新模組的負擔。
XML Extractor for The Sims 4是用作於輸出模擬市民4的所有XML,相當於Sims4Studio的XML搜尋器,但是S4S並不具備批次輸出的功能。TS4 XML Compare顧名思義就是這篇文章的重點,XML校對工具能夠校對不同版本的模擬市民4以及你製作的模組XML檔的差異,具備自動檢查和標示的功能。

簡單說明這些工具的使用方法:

  1. 每次模擬市民4更新後,使用XML輸出工具,輸出所有XML,並且根據版本編號儲存,例如我已經保存了1.52和1.53。
  2. 將你製作的模組有使用到的XML輸出並且保存再另一個資料夾,如果使用S4S輸出XML,請切記命名的格式要改成:
    S4_00000000_00000000_0000000000000000_name_name.xml
    名稱開頭加上S4_、將.(點)和!(驚嘆號)全部改成_(底線),並且刪除最後尾的XML類型(例: ActionTuning)
  3. 準備好XML重新命名和新舊版的全部XML,就可以使用TS4 XML Compare,還必須額外安裝WinMerge才能使用。
  4. 啟動TS4 XML Compare,分別選取要校對的資料夾和你的XML,然後點擊Launch WinMerge開始校對。
  5. 如果檔案內容不一致,會跳出該檔案的視窗;如果檔案一致沒有改變,視窗全部載入並關閉之後,就表示校對完成
然而完成這些XML校對不代表你的模組可以完美執行,仍可能會出錯,但是能夠節省許多時間,接下來只需要進入遊戲,順利執行模組就完成模組的檢查更新囉!

方法2:逐一檢查

  1. 跟方法1一樣,使用XML Extractor for The Sims 4輸出新版本模擬市民4的所有XML,XML File Naming:選擇TGI+Name
  2. 逐一檢查可以開啟兩個Sims 4 Studio,一個S4S開啟需要更新的XML,另一個S4S開啟新版本的XML,逐行對照,找出需要更新的段落,但是因為很考驗眼力。

  3. 因此推薦使用Notepad++擴充的Compare功能,用來自動對照XML。
  4. 開啟已經安裝Compare的Notepad++,新增兩個空檔案,Language記得選擇XML
    從S4S將新版本的XML和需要更新的XML,分別貼入兩個空檔案,接著選擇Plugins選擇Compare再選擇Compare,開始比對的畫面會以紅色標註表示完全不同的程式碼,黃色標註表示稍微不同的程式碼。

    如果其中一個檔案的整個段落無法找到對照,會以灰色標註顯示缺空處。
  5. 完成對照之後,可以選擇Plugins選擇Compare再選擇Clear All Compares
    修改完檔案之後,可以將程式碼貼回Sims 4 Studio繼續編輯,或是直接儲存為*.xml。

2019年5月28日 星期二

[模擬市民4自製模組]進階教學 - Python製作腳本模組

如果已經讀過[模擬市民4自製模組]教學列表的基礎教學,並了解模擬市民4基本運作方式,甚至具備Python或其他編程基礎,那麼可以開始學習如何使用Python製作腳本模組(Script Mod)。這篇教學將會說明如何建立編程模擬市民4模組的Python環境,但不會教學如何撰寫Python。

#more#

腳本模組是什麼?

模擬市民4製作團隊使用Python製作模擬市民4,同時也在模擬市民4官方論壇提供Pythont重新編譯腳本,自2018年10月開始的版本號1.46,Python全面更新為3.7版

相對於*.package屬於取代類型的模組,亦有透過修改遊戲內部程式的腳本模組,而過去腳本模組是.*py和.*pyc格式,然而模擬市民4相較於前作幾代在自定義物件和MOD這方面相當通融,後續版本更新推出*.ts4script格式,方便玩家和模組製作者管理。

下載安裝Python和PyCharm

Python
[版本]3.7.0
[官網]下載版本「Windows x86-64 executable installer」

PyCharm
[官網]下載版本「Community」

PyCharm是由jetbrains開發的Python第三方編程軟體,也可以直接使用官方Python去撰寫,仍然建議使用PyCharm,因為介面跟功能比較容易使用。

設定模擬市民4腳本模組專案

使用反編譯腳本將遊戲程式反編譯出來,透過反編譯出的Python程式作為基礎去了解模擬市民4整個遊戲的運作,反編譯的程式可以在S4S下載。
建立製作模組環境必須具備下列:
進行基本的專案設定:
  1. 開啟(File→Open)下載並解壓縮的專案,Sims 4 Python Script Workspace (3.7).zip
  2. 接著進入設定(Settings)→Project InterpreterAddSystem Interpreter→選擇Python 3.7的安裝位置
  3. 按下OK設定完成


反編譯模擬市民4的Python程式

一樣使用先前下載的專案Sims 4 Python Script Workspace (3.7).zip
  1. 開啟settings.py,並修改內容。
    creator_name = 改成模組製作者名字
    mods_folder = 改成Mods資料夾的位置
    game_folder = 改成模擬市民4遊戲的位置
  2. 執行(Run)decompile_all.py,然後等待執行視窗出現「process finished with exit code 0」表示反編譯完成。


編寫Python腳本:作弊碼sims4.commands

S4S提供的專案Sims 4 Python Script Workspace (3.7)也包含了一個範例的Python腳本,第一次撰寫腳本的話,可以藉由這個範例,測試環境有沒有建立完成以及試著打包一個*.ts4script。
「My Script Mods→Example Mod」的example_mod.py,腳本的內容如下:
import sims4.commands

@sims4.commands.Command('myfirstscript', command_type=sims4.commands.CommandType.Live)
def myfirstscript(_connection=None):
    output = sims4.commands.CheatOutput(_connection)
    output("This is my first script mod")

由於這個腳本要寫出可以使用的作弊碼,所以第一行import sims4.commands,必須先載入模擬市民4相關的作弊碼腳本,而這個Python檔案是「EA/core/sims4/commands.py」,接著在第三行和第四行定義函式以及玩家要輸入的作弊碼:
@sims4.commands.Command('作弊碼', command_type=sims4.commands.CommandType.Live)
def 函式名稱(_connection=None):

由於只是測試腳本,所以第五行和第六行,寫成「如果玩家輸入作弊碼之後,就跳出一行文字」,首先在第五行把output的程式從sims4.commands調出來用,然後第六行撰寫要跳出的內容:
output = sims4.commands.CheatOutput(_connection)
output("跳出的文字內容")
撰寫完成後儲存檔案,準備打包成*.ts4script。

打包成*.ts4script

腳本模組的格式實際上是壓縮檔,只是將格式後綴改為模擬市民4可以解析的格式,依照以下部分就能製成*.ts4script:
  1. 使用7z的壓縮檔製作軟體把編寫完成的*.py和*.pyc,製作成壓縮檔*.zip。
  2. 將檔名的.zip改成.ts4script
或是直接使用Sims 4 Python Script Workspace (3.7).zip附帶的compile.py執行打包:
  1. 撰寫完成的*.py檔案放在「My Script Mods→Example Mod→Script」資料夾底下
  2. 執行(Run)compile.py,進行打包
  3. 之後得到*.ts4script檔案


延伸閱讀

[模擬市民4自製模組]教學列表
Getting Started with Python Scripting
General Modding - For absolute beginners with no clue: Making a simple script that gets the town's population.
List of TS4 Tools / Documentation

2019年5月24日 星期五

[模擬市民4自製模組]進階教學 - XML Injector新增互動選項

進階教學的第1篇,將說明如何新增互動選項到物件或人物上,本篇教學以我自製的模組「賣給當地商店Sell to Local Market」作為範例。
MOD除了改改字、啟用/停用功能或是啟用EA隱藏的功能之外,也能夠為物件或人物新增互動選項,然而置入互動選項並不能僅透過修改XML,必須編寫Python腳本。
除了白手起家自己寫Python之後,推薦使用scumbumbo製作的XML Injector,scumbumbo製作許多模組製作工具並發佈在MTS,使用他製作的工具能夠減輕許多製作負擔與難處。
#more#

1. 下載並安裝XML Injector

[版本]2.0 (20190326)
[下載]http://modthesims.info/d/622928/xml-injector-version-2.html
XmlInjector_v2.zip 必要的檔案
XmlInjector_Modders_Documentation_v2.zip scumbumbo編寫的教學文件

玩家須知
如果你使用的模組需要XML Injector才能運行,下載XmlInjector_v2.zip,解壓縮後將XmlInjector_Script_v2.ts4script放在模組資料夾「Mods」的第二層。
Mods (資料夾)
↳XmlInjector (資料夾)
   ↳XmlInjector_Script_v2.ts4script

模組製作須知
如果你是模組製作者,除了下載XmlInjector_v2.zip,也建議下載教學文件XmlInjector_Modders_Documentation_v2.zip,scumbumbo撰寫了如何使用XML Injector以及範例,接下來將會根據教學文件來解釋。

2. 找出互動選項的XML,以及要被置入互動的物件

賣給當地商店Sell to Local Market模組的功能是「『賣給當地麵包店』的互動選項加到所有食物上,並且能收到模擬幣和名氣。」,因此透過Sims4Studio找出影響這項功能的XML:
Tuning Name: CupcakeMachine_SellObject
Tuning ID: 97128

食物物件太多了,也為了方便更新,scumbumbo考慮到這點,因此可以用XML Injector去篩選擁有特定互動選項的所有物件,所以接下來就要找出所有食物物件的共通點是「吃的互動選項」:
Tuning Name: eat_to_clean_from_sit
Tuning Id: 75242
記下這兩個物件名稱和Id,接下來會使用到。

3. 新增一個XML去呼叫XML Injector


使用Sims4Studio加入新的XML,並利用雜湊值產生器(Hash)生成一支新的雜湊值,將雜湊值輸入Instance,XML頁面也加入標籤和屬性,n="名稱"、s="生成的Id":
<i c="XmlInjector" i="snippet" m="xml_injector.snippet"
n="c82_XmlInjector_AddInteractionToFood" s="13197251937291617975"></i>

4. 撰寫Injector的內容

Injector顧名思義是置入器,XML Injector主要功能是「將需要的功能置入到遊戲中」,因此要寫下「想放入的互動功能(affordance)」和「被放入的人或物件」。

「想放入的互動功能」是步驟2找到的互動功能是CupcakeMachine_SellObject
「被放入的人或物件」因為食物是物件,所以使用語法add_interactions_to_objects(將互動置入物件)。
因此步驟3的XML頁面繼續撰寫,<I>和</I>之間再放入下列的語法:
<L n="add_interactions_to_objects">
    <U>
      <V n="object_selection" t="objects_with_affordance">
        <U n="objects_with_affordance">
          <T n="affordance">75242<!--eat_to_clean_from_sit--></T>
        </U>
      </V>
      <L n="_super_affordances">
        <T>97128<!--SuperInteraction: CupcakeMachine_SellObject--></T>
      </L>
    </U>
  </L>
接下來說明這段語法的意思:
「被放入的人或物件」因為需要指定的食物物件有非常多,為了方便以後更新模組,食物物件的語法不使用object_list(物件清單)去一一列出來,而是使用objects_with_affordance這項語法的意思是「篩選出所有具有這個互動選項(affordance)的物件(objects)」,所以第7行輸入剛剛記下來的吃的互動選項。
<U n="objects_with_affordance">
  <T n="affordance">75242<!--eat_to_clean_from_sit--></T>
</U>

接下來在第11行輸入「想放入的互動功能」,<L></L>是清單所以可以同時放入很多個互動選項。
<L n="_super_affordances">
  <T>97128<!--SuperInteraction: CupcakeMachine_SellObject--></T>
  <T>第二個想放入的互動選項</T>
</L>
完成之後,儲存package,並放入Mods資料夾和XmlInjector_Script_v2.ts4script一起測試效果,測試成功就完成模組「賣給當地商店Sell to Local Market」。


接下來介紹XML Injector的其他功能,這些在教學文件中都有說明。

XML Injector其他功能:新增互動選項

參考scumbumbo提供的檔案XmlInjector_Test_v2.package有其他功能範例,接下來說明。
如果要一一列出物件,使用物件清單object_list
<V n="object_selection" t="object_list">
  <U n="object_list">
    <L n="object_list">
      <T>物件Id</T>
      <T>物件Id</T>
    </L>
  </U>
</V>

如果要將互動加到模擬市民身上使用,使用add_interactions_to_sims
<L n="add_interactions_to_sims">
  <T>互動Id</T>
</L>
加到電話上使用則換成add_interactions_to_phones
加到關係介面換成add_interactions_to_relationship_panel

如果是限定情況的互動選項,例如使用到Mixer的時候,使用add_mixer_interactions
<L n="add_mixer_interactions">
  <U>
    <L n="mixer_snippets">
      <T>Mixer清單</T>
      <T>Mixer清單</T>
    </L>
    <L n="affordances">
      <T>互動選項</T>
      <T>互動選項</T>
    </L>
  </U>
</L>

新增Buff到Trait(特徵)或loot_action

如果要將Buff加到某個特徵,使用add_buffs_to_trait
<L n="add_buffs_to_trait">
  <U>
    <T n="trait">特徵編號</T>
    <L n="buffs">
      <U>
        <V n="buff_reason" t="enabled">
        <T n="enabled">0x00000000字串編號</T>
        </V>
        <T n="buff_type">Buff編號</T>
      </U>
    </L>
  </U>
</L>


如果要將Buff加到某個loot_action,使用add_to_loot_actions,可以加入出現機率、篩選白名單或黑名單的特徵:
<L n="add_to_loot_actions">
  <U>
    <T n="loot_actions_ref">LootActions編號</T>
  <L n="loot_actions_to_add">
  <V t="buff">
  <U n="buff">
  <U n="buff">
    <V n="buff_reason" t="enabled">
      <T n="enabled">0x00000000 Buff的字串</T>
    </V>
    <T n="buff_type">Buff編號</T>
  </U>
  <U n="chance">
    <T n="base_chance">出現Buff的機率</T>
  </U>
  <L n="tests">
  <L>
  <V t="trait">
      <U n="trait">
      <L n="whitelist_traits">
        <T>白名單的特徵編號</T>
      </L>
    </U>
  </V>
  </L>
  </L>
  </U>
  </V>
  </L>
  </U>
</L>


以上是比較常使用的語法,還有更多在教學文件XmlInjector_Modders_Documentation_v2.zip

2019年5月5日 星期日

[模擬市民4自製模組]基礎教學 - TDESC說明文件

在之前的[模擬市民4自製模組]第2篇基礎教學,說明如何修改Tuning腳本的XML,並以範本做簡單教學。
然而當製作Tuning Mod逐漸增加難度,閱讀Tuning腳本中的XML標籤和屬性變得越來越困惑,實際上模擬市民4的EA官方有釋出Tuning腳本的說明文件供模組製作者閱讀。

延伸閱讀
三宫六院:[功能MOD必备]调整档说明书浏览器 (TDesc Browser) 
#more#

什麼是Tuning Description(TDESC)

[論壇位置]Mods and CC Technical Discussions
EA遊戲官方在官方論壇會定期發佈供模組製作者閱讀的Tuning腳本說明文件,文件格式*.tdesc,可以透過文字編輯器閱讀,例如記事本或Notepad++。
例如Buff.tdesc的內容如下:
<Instance instance_type="buff" class="Buff" 
module="buffs.buff" muid="428AC54D9C8BCD1A" description="Main container 
class that holds all data for a buff and contains all the&#xA;accessors for the buff_tracker.
" instance_needs_reference="True" instance_subclasses_only="False" 
path="Buffs\Descriptions" use_guid_for_reference="True">

閱讀TDESC的工具

[下載位置]scumbumboTS4 Tuning Description Browser
[全文翻譯][模擬市民4]TS4 Tuning Description Browser
我推薦scumbumbo的工具,把TDESC以樹狀分類,並加入Search(搜尋)功能,閱讀介面也很清楚明瞭;搜尋功能可以同時搜尋多個單字,大小寫也不區分。
第一次啟動需要選擇TDESC資料夾的位置,如果之後要變更,在Settings的Tdesc Root Folder做更改。

TDESC的標籤


每一項Tuning名稱都會註明它的標籤,例如:buff_reason的(TunableVariant),接下來會說明標籤在XML如何使用。

Instance: 物件名稱,XML屬性是I。
<I n="名稱"></I>

Tunable: 表示可以調整,XML屬性是T。
<T n="名稱">調整內容</T>

TunableEnum: 列舉值,使用方法類似Tunable,XML屬性是E。
<E n="名稱">調整內容</E>

TunableTunableEnum通常使用在整個樹狀標籤的末端,內容取決於標籤的規則,例如:interaction_action的NO_ACTION。
當標籤的說明提到type是bool(布林值),標籤的規則就是True(啟用)和False(停用)。
allow_autonomous (Tunable): <T n="allow_autonomous">True</T>
interaction_action (TunableEnum): <E n="interaction_action">NO_ACTION</E>

TunableVariant: 可以從它的子項目中多選一,只能使用一項,超過一項以上會被無視,XML屬性是V,必須寫出t=表示他的子項目名稱。
<V n="名稱" t="子項目名稱">
  <T n="子項目名稱"></T>
</V>
有個特例,是當TunableVariant的名稱是None,表示這個Variant沒有名稱,則可以忽視n,直接寫t。
<V t="子項目名稱">
  <T n="子項目名稱"></T>
</V>

TunableTuple: 它的巢狀子項目有許多串列,這些串列都可以使用,XML屬性是U。
<U n="名稱">
  <T></T>
  <V n="子項目名稱"></V>
</U>

TunableList: 它是清單,表示可以它可以有很多統一屬性的子項目,XML屬性是L。
<L n="名稱">
  <T>項目名稱</T>
  <T>項目名稱</T>
</L>


當這些標籤在TDESC以樹狀結構表示的時候,必須在XML以巢狀撰寫,假設是以下情況的時候:
name_a (TunableVariant)
  ↳name_b (TunableVariant)
    ↳name_c (TunableTuple)
      ↳name_d (Tunable)

在XML撰寫的時候如下:
<V n="name_a" t="name_b">
  <V n="name_b" t="name_c">
    <U n="name_c">
      <T n="name_d"></T">
    </U>
  </V>
</V>

如何在XML文件中加上註解

註解的用途在於備註、整理、讓其他人讀懂,請養成習慣加上註解;註解也可以用於讓這行程式不被執行
如果你想加上EDITED,來表示你有修改過這行。
<!--EDITED-->

2019年4月29日 星期一

[模擬市民4自製模組]基礎教學 - 修改Tuning腳本

[模擬市民4自製模組]第1篇基礎教學說明如何使用S4S,這篇將會以製作「餐廳服務生限定雇用青少年(需Dine Out)」為MOD範例進行教學。
如果具備XML、HTML或難度更深的程式設計基礎,可以略過這篇基礎教學。

延伸閱讀:
#more#

構思功能模組並搜尋相關的Tuning腳本

得知模組的需求之後,首先設計功能模組的基本功能,對於「餐廳服務生限定雇用青少年(需Dine Out)」的功能:
  • 功能1. 可以雇用青少年為服務生
  • 功能2. 服務生可以挑選青少年
  • 功能3. 青少年服務生正常來上班

由於「餐廳服務生限定雇用青少年(需Dine Out)」必須修改既有的設定,所以透過S4S搜尋相關Tuning腳本,找到與餐廳服務生最有關係的腳本。

功能1. 可以雇用青少年為服務生

首先搜尋waiter(服務生),然後找到腳本類型是career(職涯),OwnableRestaurant就是玩家自營的餐廳,Waiter是服務生,以此類推Host是接待員、Chef是廚師。
Name: career_Adult_NPC_OwnableRestaurant_Waiter
Tuning ID: 136210
<v t="sim_info">
<u n="sim_info">
<v n="ages" t="specified">
<l n="specified">
<e>YOUNGADULT</e>
<e>ADULT</e>
<e>ELDER</e&gt
將屬性sim_info的內容改成限定青少年模擬市民,第11~13行改成只有11行的TEEN;並且加上註解以便自己以後可以找到修改的地方。
<v t="sim_info">
<u n="sim_info">
<v n="ages" t="specified">
<l n="specified">
<E>TEEN</E><!--EDITED default:YOUNGADULT ADULT ELDER-->

功能2-1. 服務生可以挑選青少年


與「挑選」有關的Tuning功能稱作filter(過濾器),因此搜尋腳本類型是sim_filter,找到負責過濾服務生的2個腳本,基本的Filter和Repurpose(重新規劃)的filter。
Name:filter_OwnableRestaurants_PotentialEmployees_Waiter
Tuning Id: 139135

Name:filter_OwnableRestaurants_PotentialEmployees_Waiter_Repurpose
Tuning Id: 139136
都將這兩個腳本的第59行屬性age改成限定只出現青少年,ideal_value是理想值、max_value是最大值、min_value是最小值。
    <V t="age">
      <U n="age">
        <E n="ideal_value">TEEN</E><!--EDITED default:YOUNGADULT-->
        <E n="max_value">TEEN</E>
        <E n="min_value">TEEN</E>
      </U>
    </V>

功能2-2. 取代掉原本的模板和挑選器

腳本最底下屬性_household_templates_override(模板)和_template_chooser(挑選器),代表這個服務生filter在蒐集數值的時候所參考的模板。因為「餐廳服務生限定雇用青少年(需Dine Out)」需要的是青少年,所以必須把模板和挑選器改為介在Child(小孩)~Elder(老人)之間。
Export Tuning搜尋適合的HH_template(模板)和template_chooser_(挑選器)
Name:HH_template_NPC_CTYAE_single
Tuning Id:179110
(C小孩、T青少年、Y青年、A成年和E老人)

Name:template_chooser_teen_through_adult
Tuning Id:74755
把找到的Tuning Id記下來,然後取代腳本最底下屬性_household_templates_override(模板)和_template_chooser(挑選器)原本的數值。
  <V n="_household_templates_override" t="enabled">
    <L n="enabled">
      <T>179110</T><!--EDITED, HH_template_NPC_CTYAE_single-->
    </L>
  </V>
  <T n="_template_chooser">74755<!--EDITED, template_chooser_teen_through_adult--></T>

功能3. 青少年服務生正常來上班

完成功能1+2之後,進入模擬市民4測試Package,會發現雖然可以雇用青少年,青少年卻不會來上班,透過搜尋Export Tuning有關Waiter的腳本之後,找到編號130418的jobs_Venue_Waiter(服務生工作場所),第64行有filter(過濾器)控制了服務生出現在工作場所的模擬市民類型
<T n="filter">130412<!--filter_Waiter_Restaurant--></T>
因此找到這個filter腳本,並且修改功能2-2相似的內容,將屬性age和屬性_household_templates_override都改成適用青少年服務生。
    <V t="age">
      <U n="age">
        <E n="ideal_value">TEEN</E><!--EDITED, default:YOUNGADULT-->
        <E n="max_value">TEEN</E>
        <E n="min_value">TEEN</E>
      </U>
    </V>
  <V n="_household_templates_override" t="enabled">
    <L n="enabled">
      <T>179110</T><!--EDITED, HH_template_NPC_CTYAE_single-->
    </L>
  </V>

反覆測試Package

總結功能1~3,「餐廳服務生限定雇用青少年(需Dine Out)」需要修改4個XML,刪除不需要的XML和String,進行Save存檔。
Key:73996BEB-0000000A-0000000000021412
Name:career_Adult_NPC_OwnableRestaurant_Waiter

Key:6E0DDA9F-0000000A-0000000000021F7F
Name:filter_OwnableRestaurants_PotentialEmployees_Waiter

Key:6E0DDA9F-0000000A-0000000000021F80
Name:filter_OwnableRestaurants_PotentialEmployees_Waiter_Repurpose

Key:6E0DDA9F-0000000A-000000000001FD6C
Name:filter_Waiter_Restaurant
完成後進入遊戲確認可以雇用青少年,並且青少年服務生能夠正常運作,如果要分享Package,切記要告知修改過的XML編號,避免玩家安裝的模組互相衝突。


完成的模組已經發佈在:[模擬市民4]c821118出品模組

[模擬市民4自製模組]基礎教學 - Sims 4 Studio

本篇將會介紹簡潔好用的Sims 4 Studio,初步說明如何修改XML、使用Hash生成、何謂Tuning ID,最後完成一個適用於模擬市民4的Package檔案。

延伸閱讀
#more#

1. 安裝Sims 4 Studio


[Sims 4 Studio官方載點]Downloading Sims 4 Studio
Sims 4 Studio(簡稱S4S)是一套由第三方開發,管理模擬市民4自訂模組的工具,通常使用在翻譯模組、整合3D物件,以及本篇將會介紹如何用於製作功能模組。

2. 設定S4S

透過S4S,使用者能夠查看和複製模擬市民4程式碼,因此首先在Setting功能,設定模擬市民4遊戲的檔案位置,如果你有使用Blender製作模組,同樣也在這一步設定Blender檔案的位置。
Creator Name: (製作者的名字)
Sims 4 Path  (安裝模擬市民4的資料夾位置)
Sims 4 Documents (模擬市民4文件夾位置)  

3. 如何叫出模擬市民4的Tuning腳本

Tools使用Extract Tuning,等待S4S處理完成後,在搜尋欄位輸入想要查詢的腳本英文單字,選取要查看的腳本並按下Add to current package,可以選擇已存在的package或新建一個package。
一個package檔案,可以同時包含很多個Tuning腳本,在XML編輯器的左方欄位右鍵可以Add(新增腳本)、Duplicate(複製腳本)、Delete(刪除)、Import(載入)或Export(輸出)。
如果想把腳本給其他人閱讀,選擇Export(輸出),能夠另外儲存為方便閱讀的*.xml格式。

4. 編輯XML

S4S內建XML基本編輯器,上一步叫出Tuning腳本之後就能開始進行修改,如果有一些程式設計的基礎,修改XML可說是相當簡單,修改完成按下Save完成儲存。

每一份XML都說明它的資料類型、名稱和Tuning編號;XML的標籤是巢狀結構,假設以開頭,一定會以結束,存檔的時候也不要遺漏結束標籤。

Data頁面可以變更XML腳本的Name(名稱)Tuning ID(編號)
  • 如果要覆蓋原先模擬市民4的設定,不要修改Tuning ID的編號,模組範例:自主行為或是發生機率的模組。
  • 如果要建立新的設定,就得將Tuning ID和名稱(Name)重新編號,模組範例:自創技能或自創職業。

5. 使用Hash Generator


前一步提及「將Tuning ID重新編號」,將會使用到Hash Generator,從Tools選擇Hash Generator;Hash稱為雜湊值,運作方式參考wiki的說明,S4S內建簡易的雜湊值產生器,因此不需要另外找其他工具,對於修改模擬市民4的XML綽綽有餘。

S4S內建的Hash產生器採用FNV算法,在Text欄位輸入想要轉換的字串,轉換出24bit、32bit和64bit的編號,通常使用32bit的編號就足夠了

轉換出的編號也可以複製到Export Tuning的搜尋欄位,搜尋編號是否被使用過,如果能夠搜尋出其他腳本,就回到Hash Generator修改Text欄位的內容再生成一支不一樣的編號。

6. 查詢字串文本String Table 如果要修改遊戲介面出現的文字,就必須修改String Table(字串文本),經常使用於新建功能模組或是翻譯模組,從Tools選擇String Table Lookup(查看字串文本)。
如果只是單純的翻譯需求,我建議使用由c_major開發的STBL Editor,或是deaderpool開發的DP STBL Editor

7. 直接使用的package檔

 
透過S4S編輯的XML檔,完成後儲存為*.package格式,就能放入Mods資料夾直接使用,在製作模組的過程中需要不斷開啟模擬市民4進行測試package,這個過程稱為debug(除錯),是程式設計中相當重要的一環。

模組製作討論區

參考教學

2019年4月25日 星期四

[模擬市民4自製模組]教學列表

自製一些MOD之後,稍微有些心得,希望藉由模組自製教學讓更多人接觸模組製作。
自製模組的基本要求需要英文的讀寫技能、一點點的程式邏輯、不斷嘗試的耐心,以及發現玩家需求的洞察力。
如果沒有任何模組製作基礎,建議從基礎教學開始閱讀,如果稍微有些經驗,可以選擇想閱讀的篇章,基礎教學將會說明模組製作的觀念與基本工具。
第一次製作模組,可以從修改基本設定開始著手,在Mod The Sims搜尋相似的模組藉此學習程式設計的經驗,例如自主模組(Autonomous)、調整速率(Faster, Slower ...)或免費功能(... for Free)都是很好起步的範例。
當你熟悉了Sims4Studio,習慣編輯XML,能夠開始嘗試建立新的功能,例如新增心情狀態(Buff)、修正模組(fix)或強化模組(Improve, Better)。
然而S4S只是製作功能模組的其中一種功能,當簡單的修改設定已經無法滿足你的需求,開始閱讀進階教學,進階教學說明腳本模組ts4script,以及程式語言Python的基本。
#more#

基礎教學

  1. [模擬市民4自製模組]基礎教學 - Sims 4 Studio
  2. [模擬市民4自製模組]基礎教學 - 修改Tuning腳本
  3. [模擬市民4自製模組]基礎教學 - TDESC說明文件

進階教學

  1. [模擬市民4自製模組]進階教學 - XML Injector新增互動選項
  2. [模擬市民4自製模組]進階教學 - Python製作腳本模組

2018年10月18日 星期四

[Pillars of Eternity 2]c821118出品模組

最近玩Pillars of Eternity 2,自己做了幾個mod,每一個mod都發布在3DM論壇、NexusMods和Steam工作坊。
mod顯示的語言有英文和中文,會根據玩家選擇的遊戲語言調整。
#more#
Skills Pet
進遊戲後自動給主角,三隻賦予所有技能+20的寵物
[3DM]http://bbs.3dmgame.com/thread-5794129-1-1.html
[Nexus Mods]https://www.nexusmods.com/pillarsofeternity2/mods/236
[Steam]https://steamcommunity.com/sharedfiles/filedetails/?id=1527656828

Magical Ring
進遊戲後自動給主角特殊的戒指,全素質和技能+20跟其他一些特殊能力,因為也加上了Immunity,所以可能真的有點太OP了,當時製作沒想太多。
[3DM]http://bbs.3dmgame.com/thread-5794129-1-1.html
[Nexus Mods]https://www.nexusmods.com/pillarsofeternity2/mods/238
[Steam]https://steamcommunity.com/sharedfiles/filedetails/?id=1528384935

Beginner Ring
另外還有一個是應工作坊玩家要求製作的"沒那麼強大"的戒指,簡單來說,也比較符合遊戲平衡。
[Steam]https://steamcommunity.com/sharedfiles/filedetails/?id=1530157194

Background 20 Skill Points
所有文化背景賦予的各技能+20
[3DM]http://bbs.3dmgame.com/thread-5794129-1-1.html
[Nexus Mods]https://www.nexusmods.com/pillarsofeternity2/mods/239
[Steam]https://steamcommunity.com/sharedfiles/filedetails/?id=1528379592