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
0 意見:
張貼留言