Pages

Subscribe:

Labels

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出品模組

5 則留言:

  1. 請問 Extract Tunning 之後拉出來的全部都是原版內容嗎?
    我想製作一個,在WW的按下嘿嘿 -> 選擇動作 -> 選擇對象 -> 選擇動畫後、播放動畫前,加入對話氣球,這種加強沉浸的mod,那麼該怎麼做呢?感覺在茫茫大海中找不到一個可以立足的基礎,麻煩大神給一個提示~ QQ

    回覆刪除
  2. Extract Tunning解析出的只有原版遊戲檔案,是不會包含模組的檔案,如果是以別人的模組為基礎去做調整的話,反而是需要修改他的模組檔案(包含tuning和python檔案)。

    回覆刪除
    回覆
    1. 那是直接修改他的xml,還是跟中文化一樣另外做一個.package呢?感覺後者維護上會方便很多,那麼應該如何開始下手呢?謝謝!

      刪除
    2. 新增對話氣泡、修改行為進程的模組比較建議從python著手會比較好開發及維護;修改tuning適合的模組通常屬於單純調整參數、修改顯示文字、修改物件模型這類的。

      刪除
    3. 我用 Sims 4 Python Script Workspace 解出EA資料夾了,然後我解壓縮 TURBODRIVER_WickedWhims_Scripts.ts4script 發現裡面都是 .pyc,目前不知道用哪個 function 可以把它們轉回來,因為我想做的是修改這個mod的流程,在中間插入對話,所以直覺的想法就是直接修改原mod的 .py,除此之外還有別的做法嗎?不會要從EA資料夾裡面去找原game script重寫一個吧@@"

      刪除