Pages

Subscribe:

Labels

2019年5月28日 星期二

[模擬市民4自製模組]進階教學 - Python製作腳本模組

如果已經讀過[模擬市民4自製模組]教學列表的基礎教學,並了解模擬市民4基本運作方式,甚至具備Python或其他編程基礎,那麼可以開始學習如何使用Python製作腳本模組(Script Mod)。這篇教學將會說明如何建立編程模擬市民4模組的Python環境,但不會教學如何撰寫Python。

#more#

腳本模組是什麼?

模擬市民4製作團隊使用Python製作模擬市民4,同時也在模擬市民4官方論壇提供Pythont重新編譯腳本,自2018年10月開始的版本號1.46,Python全面更新為3.7版

相對於*.package屬於取代類型的模組,亦有透過修改遊戲內部程式的腳本模組,而過去腳本模組是.*py和.*pyc格式,然而模擬市民4相較於前作幾代在自定義物件和MOD這方面相當通融,後續版本更新推出*.ts4script格式,方便玩家和模組製作者管理。

下載安裝Python和PyCharm

Python
[版本]3.7.0
[官網]下載版本「Windows x86-64 executable installer」

PyCharm
[官網]下載版本「Community」

PyCharm是由jetbrains開發的Python第三方編程軟體,也可以直接使用官方Python去撰寫,仍然建議使用PyCharm,因為介面跟功能比較容易使用。

設定模擬市民4腳本模組專案

使用反編譯腳本將遊戲程式反編譯出來,透過反編譯出的Python程式作為基礎去了解模擬市民4整個遊戲的運作,反編譯的程式可以在S4S下載。
建立製作模組環境必須具備下列:
進行基本的專案設定:
  1. 開啟(File→Open)下載並解壓縮的專案,Sims 4 Python Script Workspace (3.7).zip
  2. 接著進入設定(Settings)→Project InterpreterAddSystem Interpreter→選擇Python 3.7的安裝位置
  3. 按下OK設定完成


反編譯模擬市民4的Python程式

一樣使用先前下載的專案Sims 4 Python Script Workspace (3.7).zip
  1. 開啟settings.py,並修改內容。
    creator_name = 改成模組製作者名字
    mods_folder = 改成Mods資料夾的位置
    game_folder = 改成模擬市民4遊戲的位置
  2. 執行(Run)decompile_all.py,然後等待執行視窗出現「process finished with exit code 0」表示反編譯完成。


編寫Python腳本:作弊碼sims4.commands

S4S提供的專案Sims 4 Python Script Workspace (3.7)也包含了一個範例的Python腳本,第一次撰寫腳本的話,可以藉由這個範例,測試環境有沒有建立完成以及試著打包一個*.ts4script。
「My Script Mods→Example Mod」的example_mod.py,腳本的內容如下:
import sims4.commands

@sims4.commands.Command('myfirstscript', command_type=sims4.commands.CommandType.Live)
def myfirstscript(_connection=None):
    output = sims4.commands.CheatOutput(_connection)
    output("This is my first script mod")

由於這個腳本要寫出可以使用的作弊碼,所以第一行import sims4.commands,必須先載入模擬市民4相關的作弊碼腳本,而這個Python檔案是「EA/core/sims4/commands.py」,接著在第三行和第四行定義函式以及玩家要輸入的作弊碼:
@sims4.commands.Command('作弊碼', command_type=sims4.commands.CommandType.Live)
def 函式名稱(_connection=None):

由於只是測試腳本,所以第五行和第六行,寫成「如果玩家輸入作弊碼之後,就跳出一行文字」,首先在第五行把output的程式從sims4.commands調出來用,然後第六行撰寫要跳出的內容:
output = sims4.commands.CheatOutput(_connection)
output("跳出的文字內容")
撰寫完成後儲存檔案,準備打包成*.ts4script。

打包成*.ts4script

腳本模組的格式實際上是壓縮檔,只是將格式後綴改為模擬市民4可以解析的格式,依照以下部分就能製成*.ts4script:
  1. 使用7z的壓縮檔製作軟體把編寫完成的*.py和*.pyc,製作成壓縮檔*.zip。
  2. 將檔名的.zip改成.ts4script
或是直接使用Sims 4 Python Script Workspace (3.7).zip附帶的compile.py執行打包:
  1. 撰寫完成的*.py檔案放在「My Script Mods→Example Mod→Script」資料夾底下
  2. 執行(Run)compile.py,進行打包
  3. 之後得到*.ts4script檔案


延伸閱讀

[模擬市民4自製模組]教學列表
Getting Started with Python Scripting
General Modding - For absolute beginners with no clue: Making a simple script that gets the town's population.
List of TS4 Tools / Documentation

2019年5月24日 星期五

[模擬市民4自製模組]進階教學 - XML Injector新增互動選項

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

2019年5月13日 星期一

[日本]日旅必買常備藥(2019)

這篇是寫給我自己的備註,所以恐怕不會保持最新的日本藥品,不過都是我自己使用過覺得每次去日本必須補貨的常備藥,其中藥品也包含了我自己考量的症狀以及需求,並不能適用所有人哦,我也不是藥師,成分說明僅供參考。

如果代購表單工具的需求,可以參考[日本]自助旅遊必裝App,「Excel簡易代購清單」能夠方便整理購物清單哦。
#more#

サカムケア


[簡易需求]刀傷、挫傷防護膠
[製藥廠商]小林製藥
[藥品類別]第3類
[成分說明]ピロキシリン
[個人心得]手工製作、指溝炎、常下廚,抗菌常備藥!但成分的硝化纖維只能形成一層防護膜,而不包含任何藥效,但是輕微傷口若是需要阻隔病菌感染就很適合使用。

のどぬ~るスプレー


[簡易需求]喉嚨抗菌噴劑
[製藥廠商]小林製藥
[藥品類別]第3類
[成分說明]ヨウ素
[個人心得]換季、傷寒、著涼,喉嚨發癢常備藥!小林製藥推出的喉嚨噴劑分為塗抹版和噴頭版,噴頭版相當適合個人使用,塗抹版則推薦給居家常備藥。
成份的碘,即是外傷使用的優碘,具有殺菌消毒的作用,如果是著涼後容易喉嚨發炎的體質推薦於喉嚨發癢的時候使用,如果已經開始紅腫可能會造成加深症狀,由於是內服藥,仍建議諮詢家庭醫師後再使用。

ニノキュア


[簡易需求]皮膚角化症
[製藥廠商]小林製藥
[藥品類別]第3類
[成分說明]尿素、トコフェロール酢酸エステル、グリチルリチン酸モノアンモニウム
[個人心得]皮膚粗糙、毛髮阻塞、角化症,女性常備藥!成份的酸和尿素作用於軟化角質、促進表皮血液和抗發炎,小幅度改善皮膚角化症,如果發炎演變成膿包或痘痘就必須諮詢醫師或更換藥品囉。

ルルアタックEX


[簡易需求]感冒藥,成人1次2錠,1天3次,未成年禁用。
[製藥廠商]第一三共
[藥品類別]第2類
[成分說明]トラネキサム酸イブプロフェン、クレマスチンフマル酸塩、ブロムヘキシン塩酸塩、dl-メチルエフェドリン塩酸塩、ジヒドロコデインリン酸塩、チアミン硝化物(ビタミンB1硝酸塩)、リボフラビン(ビタミンB2)
[個人心得]在第一三共ルル系列的眾多藥品中,不含無水咖啡因(無水カフェイン),可以睡前服用的感冒常備藥!推薦給咖啡因過敏、咖啡因失眠的體質,除此之外這款加強了緩解喉嚨痛和退燒,不過因為劑量有稍微加強,不建議習慣服用。

ナザール「スプレー」(ポンプ)


[簡易需求]鼻塞、鼻水噴劑,無味道版
[製藥廠商]SATO
[藥品類別]第2類
[成分說明]ナファゾリン塩酸塩クロルフェニラミンマレイン酸塩ベンザルコニウム塩化物
[個人心得]鼻塞、鼻水、換季過敏、起床過敏、冷熱過敏,點鼻常備藥!日本點鼻藥、噴劑常使用於花粉劑,然而銷售冠軍的鼻噴劑通常都含有類固醇成份(ベクロメタゾンプロピオン酸エステル),如果使用在非過敏源造成的鼻塞鼻水就變得有些多餘。
這款點鼻藥不含類固醇,但仍保有第一代抗組織胺(クロルフェニラミンマレイン酸塩),會有輕微嗜睡症狀,奈甲嘧唑啉(交感神經興奮劑)和苯扎氯銨,擴張鼻內部血管,阻止鼻水。

ニキビ 痘痘藥


痘痘藥有太多,族繁不及備載,可以參考這篇My Best撰寫的前10名痘痘藥排行榜,該篇也針對成份進行準確分析。
市販ニキビ用塗り薬のおすすめ人気ランキング10選【大人ニキビ・赤みなどにも!】
[簡易需求]痘痘藥、粉刺
[藥品類別]第2類
[成分說明]イオウイソプロピルメチルフェノールレゾルシングリチルレチン酸ヒドロコルチゾントコフェロール酢酸エステル
[個人心得]痘痘藥的基本成份是殺菌效果的硫化物,抗菌劑IPMP,抗發炎的Enoxolone和皮質醇,以及額外添加的保濕成份例如蜂蠟、橄欖油。
建議根據自己的痘痘體質挑選適合的痘痘藥,光是基本的殺菌就有不同藥劑,也有些痘痘藥不含抗發炎,或是不添加保濕,篩選適合以及交替使用是最佳解。

ハンドクリーム護手霜


護手霜也是族繁不及備ㄗ...
建議參考マガジン撰寫的12種護手霜比較,這篇將手質分為三種程度,粗糙、乾燥和硬皮,並且依序推薦適合的護手霜,護手霜質感也有評比質地、延展性、含水度、香味和保濕效果,非常推薦。
定番ハンドクリーム12種を塗って塗って徹底比較! 一番しっとりするのはどれ?

My Best撰寫的48種護手霜比較,則是幾乎把市面上都嚐過一遍了(?),評比簡單分成ABC等級,並且有做排行,如果マガジン也沒有寫出你想找的護手霜,可以參考這篇。
【徹底比較】ハンドクリームの最強おすすめ人気ランキング48選【2019年最新版】

順帶一題我是用花王アトリックス無香味。
[簡易需求]護手、乾裂
[成分說明]ヒアルロン酸、シアバターなど、ビタミンEビタミンC尿素やグリセリン
[個人心得]輕度護手使用含玻尿酸成份作為基礎保濕,但是玻尿酸分子比較大,無法滲入皮膚,所以只能作為表面防護。如果是缺乏水份,油和霜的基本成份也有防護效果像是乳木果油。
至於更嚴重的乾裂、即使使用油質也沒有效果,則是表示身體缺乏某些營養,可以選擇添加維他命E或C,但是根本方法是要飲食均衡。
如果已經呈現硬皮,就需要使用加入軟化角質作用的尿素或酸,但是到這種程度卻不是因為工作的話,最好還是去看醫生。

2019年5月5日 星期日

HTML encoder 轉碼工具

HTML encoder轉碼工具,用在文章中顯示程式碼內容。 #more#


[模擬市民4自製模組]基礎教學 - TDESC說明文件

在之前的[模擬市民4自製模組]第2篇基礎教學,說明如何修改Tuning腳本的XML,並以範本做簡單教學。
然而當製作Tuning Mod逐漸增加難度,閱讀Tuning腳本中的XML標籤和屬性變得越來越困惑,實際上模擬市民4的EA官方有釋出Tuning腳本的說明文件供模組製作者閱讀。

延伸閱讀
三宫六院:[功能MOD必备]调整档说明书浏览器 (TDesc Browser) 
#more#

什麼是Tuning Description(TDESC)

[論壇位置]Mods and CC Technical Discussions
EA遊戲官方在官方論壇會定期發佈供模組製作者閱讀的Tuning腳本說明文件,文件格式*.tdesc,可以透過文字編輯器閱讀,例如記事本或Notepad++。
例如Buff.tdesc的內容如下:
<Instance instance_type="buff" class="Buff" 
module="buffs.buff" muid="428AC54D9C8BCD1A" description="Main container 
class that holds all data for a buff and contains all the&#xA;accessors for the buff_tracker.
" instance_needs_reference="True" instance_subclasses_only="False" 
path="Buffs\Descriptions" use_guid_for_reference="True">

閱讀TDESC的工具

[下載位置]scumbumboTS4 Tuning Description Browser
[全文翻譯][模擬市民4]TS4 Tuning Description Browser
我推薦scumbumbo的工具,把TDESC以樹狀分類,並加入Search(搜尋)功能,閱讀介面也很清楚明瞭;搜尋功能可以同時搜尋多個單字,大小寫也不區分。
第一次啟動需要選擇TDESC資料夾的位置,如果之後要變更,在Settings的Tdesc Root Folder做更改。

TDESC的標籤


每一項Tuning名稱都會註明它的標籤,例如:buff_reason的(TunableVariant),接下來會說明標籤在XML如何使用。

Instance: 物件名稱,XML屬性是I。
<I n="名稱"></I>

Tunable: 表示可以調整,XML屬性是T。
<T n="名稱">調整內容</T>

TunableEnum: 列舉值,使用方法類似Tunable,XML屬性是E。
<E n="名稱">調整內容</E>

TunableTunableEnum通常使用在整個樹狀標籤的末端,內容取決於標籤的規則,例如:interaction_action的NO_ACTION。
當標籤的說明提到type是bool(布林值),標籤的規則就是True(啟用)和False(停用)。
allow_autonomous (Tunable): <T n="allow_autonomous">True</T>
interaction_action (TunableEnum): <E n="interaction_action">NO_ACTION</E>

TunableVariant: 可以從它的子項目中多選一,只能使用一項,超過一項以上會被無視,XML屬性是V,必須寫出t=表示他的子項目名稱。
<V n="名稱" t="子項目名稱">
  <T n="子項目名稱"></T>
</V>
有個特例,是當TunableVariant的名稱是None,表示這個Variant沒有名稱,則可以忽視n,直接寫t。
<V t="子項目名稱">
  <T n="子項目名稱"></T>
</V>

TunableTuple: 它的巢狀子項目有許多串列,這些串列都可以使用,XML屬性是U。
<U n="名稱">
  <T></T>
  <V n="子項目名稱"></V>
</U>

TunableList: 它是清單,表示可以它可以有很多統一屬性的子項目,XML屬性是L。
<L n="名稱">
  <T>項目名稱</T>
  <T>項目名稱</T>
</L>


當這些標籤在TDESC以樹狀結構表示的時候,必須在XML以巢狀撰寫,假設是以下情況的時候:
name_a (TunableVariant)
  ↳name_b (TunableVariant)
    ↳name_c (TunableTuple)
      ↳name_d (Tunable)

在XML撰寫的時候如下:
<V n="name_a" t="name_b">
  <V n="name_b" t="name_c">
    <U n="name_c">
      <T n="name_d"></T">
    </U>
  </V>
</V>

如何在XML文件中加上註解

註解的用途在於備註、整理、讓其他人讀懂,請養成習慣加上註解;註解也可以用於讓這行程式不被執行
如果你想加上EDITED,來表示你有修改過這行。
<!--EDITED-->

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

[模擬市民4自製模組]基礎教學 - Sims 4 Studio

本篇將會介紹簡潔好用的Sims 4 Studio,初步說明如何修改XML、使用Hash生成、何謂Tuning ID,最後完成一個適用於模擬市民4的Package檔案。

延伸閱讀
#more#

1. 安裝Sims 4 Studio


[Sims 4 Studio官方載點]Downloading Sims 4 Studio
Sims 4 Studio(簡稱S4S)是一套由第三方開發,管理模擬市民4自訂模組的工具,通常使用在翻譯模組、整合3D物件,以及本篇將會介紹如何用於製作功能模組。

2. 設定S4S

透過S4S,使用者能夠查看和複製模擬市民4程式碼,因此首先在Setting功能,設定模擬市民4遊戲的檔案位置,如果你有使用Blender製作模組,同樣也在這一步設定Blender檔案的位置。
Creator Name: (製作者的名字)
Sims 4 Path  (安裝模擬市民4的資料夾位置)
Sims 4 Documents (模擬市民4文件夾位置)  

3. 如何叫出模擬市民4的Tuning腳本

Tools使用Extract Tuning,等待S4S處理完成後,在搜尋欄位輸入想要查詢的腳本英文單字,選取要查看的腳本並按下Add to current package,可以選擇已存在的package或新建一個package。
一個package檔案,可以同時包含很多個Tuning腳本,在XML編輯器的左方欄位右鍵可以Add(新增腳本)、Duplicate(複製腳本)、Delete(刪除)、Import(載入)或Export(輸出)。
如果想把腳本給其他人閱讀,選擇Export(輸出),能夠另外儲存為方便閱讀的*.xml格式。

4. 編輯XML

S4S內建XML基本編輯器,上一步叫出Tuning腳本之後就能開始進行修改,如果有一些程式設計的基礎,修改XML可說是相當簡單,修改完成按下Save完成儲存。

每一份XML都說明它的資料類型、名稱和Tuning編號;XML的標籤是巢狀結構,假設以開頭,一定會以結束,存檔的時候也不要遺漏結束標籤。

Data頁面可以變更XML腳本的Name(名稱)Tuning ID(編號)
  • 如果要覆蓋原先模擬市民4的設定,不要修改Tuning ID的編號,模組範例:自主行為或是發生機率的模組。
  • 如果要建立新的設定,就得將Tuning ID和名稱(Name)重新編號,模組範例:自創技能或自創職業。

5. 使用Hash Generator


前一步提及「將Tuning ID重新編號」,將會使用到Hash Generator,從Tools選擇Hash Generator;Hash稱為雜湊值,運作方式參考wiki的說明,S4S內建簡易的雜湊值產生器,因此不需要另外找其他工具,對於修改模擬市民4的XML綽綽有餘。

S4S內建的Hash產生器採用FNV算法,在Text欄位輸入想要轉換的字串,轉換出24bit、32bit和64bit的編號,通常使用32bit的編號就足夠了

轉換出的編號也可以複製到Export Tuning的搜尋欄位,搜尋編號是否被使用過,如果能夠搜尋出其他腳本,就回到Hash Generator修改Text欄位的內容再生成一支不一樣的編號。

6. 查詢字串文本String Table 如果要修改遊戲介面出現的文字,就必須修改String Table(字串文本),經常使用於新建功能模組或是翻譯模組,從Tools選擇String Table Lookup(查看字串文本)。
如果只是單純的翻譯需求,我建議使用由c_major開發的STBL Editor,或是deaderpool開發的DP STBL Editor

7. 直接使用的package檔

 
透過S4S編輯的XML檔,完成後儲存為*.package格式,就能放入Mods資料夾直接使用,在製作模組的過程中需要不斷開啟模擬市民4進行測試package,這個過程稱為debug(除錯),是程式設計中相當重要的一環。

模組製作討論區

參考教學

2019年4月25日 星期四

[模擬市民4自製模組]教學列表

自製一些MOD之後,稍微有些心得,希望藉由模組自製教學讓更多人接觸模組製作。
自製模組的基本要求需要英文的讀寫技能、一點點的程式邏輯、不斷嘗試的耐心,以及發現玩家需求的洞察力。
如果沒有任何模組製作基礎,建議從基礎教學開始閱讀,如果稍微有些經驗,可以選擇想閱讀的篇章,基礎教學將會說明模組製作的觀念與基本工具。
第一次製作模組,可以從修改基本設定開始著手,在Mod The Sims搜尋相似的模組藉此學習程式設計的經驗,例如自主模組(Autonomous)、調整速率(Faster, Slower ...)或免費功能(... for Free)都是很好起步的範例。
當你熟悉了Sims4Studio,習慣編輯XML,能夠開始嘗試建立新的功能,例如新增心情狀態(Buff)、修正模組(fix)或強化模組(Improve, Better)。
然而S4S只是製作功能模組的其中一種功能,當簡單的修改設定已經無法滿足你的需求,開始閱讀進階教學,進階教學說明腳本模組ts4script,以及程式語言Python的基本。
#more#

基礎教學

  1. [模擬市民4自製模組]基礎教學 - Sims 4 Studio
  2. [模擬市民4自製模組]基礎教學 - 修改Tuning腳本
  3. [模擬市民4自製模組]基礎教學 - TDESC說明文件

進階教學

  1. [模擬市民4自製模組]進階教學 - XML Injector新增互動選項
  2. [模擬市民4自製模組]進階教學 - Python製作腳本模組

2019年4月24日 星期三

[日本]大阪環球影城交通怎麼去?票怎麼買?

[旅遊時間]2019/4/17
[旅遊地區]USJ大阪環球影城(ユニバーサル・スタジオ・ジャパン)
[中文網站]https://www.usj.co.jp/tw/
#more#
園區入場券
[購票]https://www.usj.co.jp/tw/ticket/

遊樂園當然需要門票(笑),可以當日現場購票或是提前預購,預購和現場購票並沒有價差或折扣,環球影城的門票是根據熱門日期,分為A、B和C票價,價格和使用時間也不同,由於每年的票價日期都不一樣,購票和入場前要記得再三確認遊玩的日期。
預購票會是一份PDF檔,列印紙本或是儲存在手機都可以給入口處掃描QR碼,票券上同時也會註明使用的區間和票價類型。
環球影城票已經無法重複入園,只能入園一次。
  • A票價:最便宜,通常是星期二、三、四。
  • B票價:中間價格,非國定假日。
  • C票價:最貴,國定假日期間,例如日本黃金週。

人潮預估
[ユニバーサルスタジオジャパン待ち時間・混雑情報]http://usjinfo.com/
  • リアルタイム待ち時間遊樂設施推算等待時間。
  • 混雑予想カレンダー人潮擁擠推算,顏色越深人數越多。
  • 過去の混雑カレンダー過往人潮擁擠狀況。
  • 待ち時間遊樂設施等待時間,以小時為單位的時間表。
  • ショースケジュール表演活動時間表。
日本的非官方網站USJ情報,根據過往的遊客數量和遊樂設施等待時間推估每個月的人潮,如果想要省下快速通關券或VIP,可以作為事先參考。
除此之外,手機應用程式搜尋「USJ」,有很多App可以參考當天的排隊等待時間和開園時間,我推薦KW10的「日本環球影城(USJ)的等待時間」。

特快入場券(快速通關)
[購票]https://www.usj.co.jp/tw/travel/
通稱快速通關,適用於減少遊樂設施的排隊時間,僅在入園之後使用。
有7種套票,大阪環球影城園區共有12種遊樂設施適用快速通關,但是套票又根據設施數量分為7個、4個和3個,套券適用的遊樂設施可以參考我製作的表格(截至2019/4/24)。

需要特別注意的是期間限定設施,這項設施會根據當時環球影城所推廣的活動而改變,例如2019/4月的期間限定設施是魯邦三世4D,環球影城在特殊期間也會發售限定2個遊樂設施快速通關,詳細必須參考各大代售票券的單位。
含有哈利波特遊樂設施的快速通關券,同時也附帶1次直接進入哈利波特魔法世界的資格券。


VIP入園手環+阿倍野HARUKAS300展望台套票
[購票]https://www.abenoharukas-300.jp/tc/observatory/ticket.html
快速通關券無法使用在門口入園,但是環球影城仍然有推出提早入園的票券,VIP入園手環僅適用於環球影城提早入園,而且套票綁定大阪天王寺車站的阿倍野展望台,購票只能透過網路預先購買,目前已經無法在日本國內和阿倍野展望台現場購票,此外環球影城也申明VIP手環無法保證提早1~2小時入園,但是至少提早30分鐘入園。
VIP手環的使用順序如下:
  1. 在網路預購票,取得環球VIP+阿倍野展望台套票憑證。
  2. 前往阿倍野展望台,使用憑證在16樓向櫃檯取票。
  3. 特別通道的集合時間輸入指定密碼查詢環球入場時間。
  4. (隔天)攜帶手環,前往環球影城Studio West(免稅禮品店)入場。


VIP手環入口位於正門的右側,Studio Gifts West(スタジオギフト・ウエスト),門口寫著Studio West,排隊時戴上手環,每日手環顏色都會更換,開門時間是特別通道的集合時間公布的時間。


哈利波特魔法世界
[官網]https://www.usj.co.jp/hk/attraction/timed-entry-ticket/
環球影城的特殊園區「哈利波特魔法世界」有進行流量管制,人潮過多的時候必須憑「整理券」才能入場,整理券的發放位置在魔法世界入口附近的中央公園內。
人潮少量或剛開園的時候,不發放整理券可以直接入園,至於人潮狀況可以參考人潮預估網站,通常平日二、三、四的上午不需要抽券。

  • 中央公園索取整理券。
  • 整理券每個時段發放的數量有限。
  • 以環球影城票兌換1張整理券
  • 整理券指定時間進入魔法世界。
去年底推出新型的e整理券,採用手機app線上抽券的方式,由於我自己也沒有嘗試過,僅分享看到的情報:【USJ】公式アプリに新機能『e整理券機能』が追加!
除了抽整理券之外,凡是包含哈利波特遊樂設施的快速通關券,皆有附帶1次哈利波特魔法世界的入場資格,但是出場後必須抽整理券才能再次入場。

    交通方式
    [官方交通方式]https://www.usj.co.jp/tw/access/
    環球影城官網上提供搭乘鐵路的交通方式,大阪環球影城所在的車站是日本鐵路「JR ユニバーサルシティ(環球影城)」,只能從ゆめ咲線(夢咲線)的「JR 西九条」轉乘,前往西九条可以藉由阪神電氣鐵道或JR。


    例如:去程從大阪前往環球影城(ユニバーサルシティ),在1號月台搭乘大阪環狀線(往西九条方向),抵達西九条車站的時候,不須換車,同一台車直接開往環球影城。
    回程在1號月台搭乘ゆめ咲線(往西九条方向),抵達西九条車站的時候,必須下車,換乘同樣是1號月台的大阪環狀線(往大阪方向)。

    延伸閱讀:[日本]自助旅遊必裝App


    推薦行程
    綜合快速通關、VIP、整理券以及人潮預估,我個人推薦的行程安排方式。

    淡季的非國定假日的星期二、三、四
    ※非常推薦超淡季前往環球影城,能夠省下快速通關的票券。
    早上入場:購買提早入場的VIP手環或直接入場,幾乎保證進入哈利波特魔法世界,以及2~3個遊樂設施的排隊時間縮短在30分鐘左右;但是如果體力有限,可能無法體驗到夜間遊行。

    下午入場:購買包含3個遊樂設施的快速通關,超淡季的下午入場門口幾乎不用排隊、哈利波特魔法世界也是整天開放,但是由於排隊人潮,遊樂設施至多排隊2小時,因此建議購買快速通關,下午入場的體力能體驗到晚上7點的夜間遊行。

    非國定假日的星期五~日
    早上入場:早上開園的時候,哈利波特魔法世界不需要抽整理券,建議作為第1個遊樂設施;週末人潮眾多,遊樂設施都需要排隊1小時,建議購買3個或4個設施快速通關,VIP手環則是因人而異,因為可以被快速通關券取代其價值。

    下午入場:建議購買包含哈利波特的4個設施的快速通關,下午時段哈利波特魔法世界通常開始進行人潮管制,由於大部分體力消耗在排隊,也只能玩到2個遊樂設施左右。

    國定假日或連假
    購買包含哈利波特的4個設施快速通關券,連假期間的魔法世界通常整天管制,一定要抽整體券,由於大部分的時間和體力都在排隊,非常建議購買快速通關券,連假期間不建議下午入場,所以票券的搭配方式:VIP手環+4個設施快速通關券,或是只有7個快速通關券。
    強烈建議安裝可以查看排隊時間的App,隨時能夠調整行程中的遊樂設施。


    延伸閱讀
    如果作為第一次進入環球影城,我會建議購買VIP手環,非常推薦附贈的阿倍野展望台,夜間的大阪市有一看的價值,阿倍野展望台也是目前大阪第二高的觀賞景點,阿倍野本身是一棟百貨,此外在16樓也設有阿倍野美術館,經常舉辦許多難得的展覽,推薦將天王寺車站的阿倍野作為初次前往的景點之一。

    [阿倍野HARUKAS300展望台]https://www.abenoharukas-300.jp/tc/
    [阿倍野美術館]https://www.aham.jp/

    2019年4月22日 星期一

    [日本]自助旅遊必裝App

    先前在其他篇行前準備,說明過日本自助旅行的準備方式,這篇將會統整我篩選的準備工具以及分享我自製的工具,工具的載體都是以智慧型手機為主,基礎是Android系統,若支援其他系統我也會一併註明(部分ios的App需要日本Apple ID才能下載),往後也將持續在這篇更新行前的準備。

    如果你的日本自助旅遊有以下的需求,這篇文章很適合你。
    行程規劃的App:
    ☑ 自動規劃交通工具及路線
    ☑ 充分的交通種類及準確的時刻表
    ☑ 詳細區分日本的交通
    ☑ 介面簡潔、容易操作

    交通App:
    ☑ 能夠篩選出最適合的交通路線
    ☑ 清楚註明搭乘和換乘的月台
    ☑ 乘車提醒功能
    ☑ 查看列車通行狀況(例:人身事故或風大停駛)
    ☑ 紀錄特定班次、常去車站和常用路線

    天氣App:
    ☑ 紀錄複數地區
    ☑ 天氣預報以每小時為單位
    ☑ 提供其他更容易理解的資訊(例:體感溫度、推薦服裝、紫外線程度等等)
    ☑ 少用的天氣相關資訊(例:山區天氣、花季情報、日出日落時間等等)

    自製的工具表格:
    ☑ 適用所有系統及螢幕的工具
    ☑ 能夠與他人共同編輯
    ☑ 離線閱讀功能
    ☑ 代購需求
    ☑ 做好的格式,並且以年為單位持續更新
    #more#
    Japan Travel
    日本最大的導航公司NAVITIME開發的日本行程規劃App,NAVITIME本身開發的地圖就相當齊全,Google Maps始終無法取得日本離線地圖的功能正是因為NAVITIME的版權問題,因此除了行程規劃App的《Japan Travel》之外,也推薦NAVITIME開發的其他地圖App。
    [Android]Japan Travel 日本旅遊 東京 交通地圖 JR
    [ios]Japan Travel – 导航, 地图, JR
    [網頁版]https://japantravel.navitime.com/en/

    《Japan Travel》的功能包含:行程編排、交通自動規劃、地圖查看、交通費用計算,交通的種類是我認為最齊全的App,例如關西機場至神戶港的高速船的交通方式也包含在內;缺點是無法分享行程和地圖,也無法匯出其他格式。


    Tenki.jp
    日本氣象協會開發的氣象預報App,除了日常天氣App,日本氣象協會也提供月費制的登山App《tenki.jp 登山天気》。
    [Android]tenki.jp
    [ios]tenki.jp
    [網頁版]https://tenki.jp/

    《tenki.jp》具備基本的天氣預報功能,然而相較於其他App,《tenki.jp》提供其他能夠更具體了解天氣狀況的資訊,例如體感溫度、服裝推薦、帶傘機率、紫外線程度、適合曬衣等等,此外《tenki.jp》也能夠外連至網頁版,查看花季情況、登山、日出日落等等,具有充分的旅遊天氣情報。


    Yahoo!乗換案内
    由日本Yahoo開發的交通App,針對日本交通有許多好用的App,基於個人習慣及喜好,我推薦《Yahoo!乗換案内》,但是也建議多嘗試App或網頁地圖,日本各地區都有更詳盡且特製的地圖。
    [Android]Yahoo!乗換案内
    [ios]Yahoo!乗換案内
    [網頁版]https://transit.yahoo.co.jp/

    我偏好《Yahoo!乗換案内》的原因是乘車提醒功能,但是必須註冊日本Yahoo,在App登入帳號之後,可以儲存常用車站、路線、車次提醒;除此之外,也可以查看鐵路的運行狀況,時刻注意停駛也能避免行程出錯。


    自助旅遊表@c821118
    [Google雲端]自助旅遊行前準備

    對於自助旅遊我一直有著完美主義(笑),由於遲遲找不到適合的工具,我經常自行編輯,先前在其他篇行前準備的文章,分享過利用Word和Excel製作的行程表,這篇分享出編輯完成的空白表格,Excel表格的寬度也調整為適合智慧型手機的螢幕。
    採用Google試算表是因為能夠分享以及共同編輯,安排數位旅伴的自助旅遊非常方便,在手機上安裝Excel也能夠離線閱讀。


    Excel簡易代購清單@c821118
    [Google雲端]Excel簡易代購清單
    經常旅遊日本的人可能也有同樣的困擾,代購的親友特別多(笑),為了方便我自己管理代購數量,以及讓親友透過Google表單提出,《Excel簡易代購清單》會自動統整Google表單提交的代購總數,負責代購的賣家能自行確認採買的數量,並且自動核對數字後顯示☑。
    《Excel簡易代購清單》適用少量代購和親友委託,對於大量採買我會建議使用進出貨管理App或程式,《Excel簡易代購清單》使用了Excel的函式,如果想進一步了解或弄壞函式,都可以向我提出詢問,我也想知道這份代購清單的實際使用情況。

    延伸閱讀:
    菜逼巴去京阪奈-行前準備
    菸酒生被九州櫻花打臉-行前準備