進階教學的第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