[模擬市民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
將屬性sim_info的內容改成限定青少年模擬市民,第11~13行改成只有11行的TEEN;並且加上註解以便自己以後可以找到修改的地方。
- <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>
- <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(過濾器)控制了服務生出現在工作場所的模擬市民類型因此找到這個filter腳本,並且修改功能2-2相似的內容,將屬性age和屬性_household_templates_override都改成適用青少年服務生。
- <T n="filter">130412<!--filter_Waiter_Restaurant--></T>
- <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出品模組