[模擬市民4自製模組]第1篇基礎教學說明如何使用S4S,這篇將會以製作「餐廳服務生限定雇用青少年(需Dine Out)」為MOD範例進行教學。
如果具備XML、HTML或難度更深的程式設計基礎,可以略過這篇基礎教學。
#more#
構思功能模組並搜尋相關的Tuning腳本
得知模組的需求之後,首先設計功能模組的基本功能,對於「餐廳服務生限定雇用青少年(需Dine Out)」的功能:
- 功能1. 可以雇用青少年為服務生
- 功能2. 服務生可以挑選青少年
- 功能3. 青少年服務生正常來上班
由於「餐廳服務生限定雇用青少年(需Dine Out)」必須修改既有的設定,所以透過S4S搜尋相關Tuning腳本,找到與餐廳服務生最有關係的腳本。
功能1. 可以雇用青少年為服務生
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>將屬性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出品模組
請問 Extract Tunning 之後拉出來的全部都是原版內容嗎?
回覆刪除我想製作一個,在WW的按下嘿嘿 -> 選擇動作 -> 選擇對象 -> 選擇動畫後、播放動畫前,加入對話氣球,這種加強沉浸的mod,那麼該怎麼做呢?感覺在茫茫大海中找不到一個可以立足的基礎,麻煩大神給一個提示~ QQ
Extract Tunning解析出的只有原版遊戲檔案,是不會包含模組的檔案,如果是以別人的模組為基礎去做調整的話,反而是需要修改他的模組檔案(包含tuning和python檔案)。
回覆刪除那是直接修改他的xml,還是跟中文化一樣另外做一個.package呢?感覺後者維護上會方便很多,那麼應該如何開始下手呢?謝謝!
刪除新增對話氣泡、修改行為進程的模組比較建議從python著手會比較好開發及維護;修改tuning適合的模組通常屬於單純調整參數、修改顯示文字、修改物件模型這類的。
刪除我用 Sims 4 Python Script Workspace 解出EA資料夾了,然後我解壓縮 TURBODRIVER_WickedWhims_Scripts.ts4script 發現裡面都是 .pyc,目前不知道用哪個 function 可以把它們轉回來,因為我想做的是修改這個mod的流程,在中間插入對話,所以直覺的想法就是直接修改原mod的 .py,除此之外還有別的做法嗎?不會要從EA資料夾裡面去找原game script重寫一個吧@@"
刪除