玩傢“alsie”分享的該教程主要目的是讓你習慣於在Sims4的Python代碼中找到東西。它是一個巨大的對象,類和函數的網絡,所以很容易在裡面迷路。通過這個教程,我們將學習制作一個“查詢城鎮人口”mod。希望通過這個教程,你可以簡單的理解這個遊戲框架是怎麼工作的。感興趣的朋友們快來看看吧!

自制查詢城鎮人口mod教程

*以下內容需要一點寫代碼的基礎,哪怕你隻是個會看c代碼的萌新,完全不懂的可能會覺得有點懵逼。

你需要如下內容:

“模擬市民4的核心Python模塊、對Python如何工作的一點想法”

所以,現在我們來看看在sims 4(PY文件,不是PYO文件)提供的Python模塊。你可以在這裡找到有用的方法來獲得這些核心模塊。 “基礎(base)”,“核心(core)”和“模擬(simulation)”都是在遊戲的引擎中使用的模塊集合的標簽。這裡我們主要關註“核心”和“模擬”兩大類。“base”包含瞭大量的庫模塊,可用於遊戲代碼中的某些微操作,但不一定是我們經常要看的東西。 “核心”和“模擬”對於改裝遊戲相對而言更加重要。

要成功完成我們的小mod,我們需要一個你可以鍵入的命令。當輸入它的時候,Sims 4會告訴你的遊戲中的模擬人口是多少。現在我們知道瞭目標,就可以開始尋找我們需要的東西瞭。

首先是“核心”集合。用google搜索:“shared_commands”和“sims4”。在sims4中,你會發現幾個與修改和創建Python模塊、遊戲運行所必需的算法、Sims 4用戶界面中的關鍵方面相關的函數庫。如果我們想找出在哪裡有一個功能,我們就可以從這裡面找。這樣,遊戲就能允許我們創建新的控制臺(Ctrl + Shift + C)命令瞭。

讓我們來看看Command函數:

代碼:*定義Command函數

def Command(* aliases,command_type = CommandType.DebugOnly,pack = None):

* aliases:輸入的命令字符串名稱

command_type:見下文

pack = None:不用管

hin好!這就是我們需要的代碼!讓我們開始寫我們的腳本吧!

代碼:*導入xxx包

import sims4.commands

現在,是時候插入調用sims4.commands.Command()作為裝飾器。任何我們在裝飾器下面直接定義的函數都會成為它的“主體”(裝飾器將應用於該函數)。不過在我們創建命令之前,我們需要確保我們已經確定瞭命令的類型。在“commands.py”中,有一個枚舉的命令類型列表:

class CommandType(enum.Int, export=False):

OK,所以我們要定義我們的命令類型為Live命令。由於之前的Command()已經傳遞瞭一個command_type的變量,現在需要在我們自己的代碼中覆蓋它為:

@sims4.commands.Command('getpopulation', command_type=sims4.commands.CommandType.Live)

現在我們要在這個裝飾器下聲明一個函數,給出一些輸出。當玩傢輸入“getpopulation”時,函數返還鎮上的人口。

首先,我們需要找出(1)怎麼把代碼輸出到控制臺(Ctrl + Shift + C),(2)如何獲取鎮的人口。這是整個腳本最難的地方。

(1)我們來看看“commands.py”,找到有關輸出的代碼:

class CheatOutput(Output):
__qualname__ = 'CheatOutput'
def __call__(self, s):
cheat_output(s, self._context)

“__call__”函數的作用是:當用戶輸入某特定字符串時,調用所對應的指定函數。

(2)處理完控制臺部分後,下面讓我們來編寫一個獲取城鎮人口的函數:

需要使用到的集合:“模擬”。

在“sims”文件夾中,有一個名為“sim_info_manager.py”的文件。

在該文件中有一個名為“SimInfoManager”的類。它是用來保存每個小人的數據的。如果我們可以計數其列表中的所有sim個數,那麼我們就能得到所有模擬的人口瞭。通過查看TS4的存儲庫中的其餘代碼,我註意到一個模式:sim_info_manager是服務(services)中的一個對象,位於services文件夾的__init__.py中。它有一個非常重要的函數:get_all()<-看到名字應該就猜到是什麼作用的瞭吧?

這裡是我們到目前為止的代碼:

import sims4.commands
@ sims4.commands.Command('getpopulation',command_type = sims4.commands.CommandType.Live)

(寫瞭這麼久才兩行代碼zzz,作者表示請大傢堅持看下去,因為大部分的關鍵線索都已經找到瞭,就差把它們合一起啦~功夫不負有心人~)

現在我們導入service(包含瞭剛才說的__init__.py):

import services

然後在裝飾器下面聲明一個函數:

def getpop(_connection = None):

*getpop是你的函數名,_connection是形參的名稱,隨便叫什麼都可以,作者表示你就算叫它fluffy_kittens(毛毛貓)都行。

所以,現在我們知道如何輸出到控制臺(通過調用CheatOutput),我們就可以定義一個調用它的變量,輸出得字符串是類型output('blablabla'):

output = sims4.commands.CheatOutput(_connection)

但我們不想隻輸出'blablabla',我們想輸出城鎮的人口。這是我們在service中使用sim_info_manager的地方。

output('Your town\'s population is {}'.format(len(services.sim_info_manager().get_all())))

*可以把英語改成中文

output('你的城鎮人口是: {}'.format(len(services.sim_info_manager().get_all())))

通過我們在services.sim_info_manager()中調用get_all()時獲得的列表長度,我們得到瞭城鎮中所有小人的數量!完成!

這是我們的最終代碼:

import servicesimport sims4.commands@sims4.commands.Command('getpopulation', command_type=sims4.commands.CommandType.Live)def getpop(_connection=None):output = sims4.commands.CheatOutput(_connection)output('Your town\'s population is {}'.format(len(services.sim_info_manager().get_all())))

遊戲截圖:

Q1:首先……如何編寫python?

下載一個文本編輯器,如Notepad++ (僅windows),sublime Text (支持windows、OS X、Ubuntu),兩個都很好用~

*notepad++編寫時選擇語言>python,sublime選擇view>syntax>python

Q2:如何把.py文件轉換成.pyo?

(1)下載python3.3.5(模擬市民使用的python版本),安裝時別忘瞭把安裝python路徑(path) 這個選項也選上

(2)保存如下代碼,格式為.bat,文件名隨便取,比如:PythonOptimizeCompile.bat

import sims4.commandsimport services@sims4.commands.Command('getpopulation', command_type=sims4.commands.CommandType.Live)def getpop(_connection=None): output = sims4.commands.CheatOutput(_connection)output('Your town\'s population is {}'.format(len(services.sim_info_manager().get_all())))

好瞭,然後把已經寫好的.py文件拉到xxx.bat上,你會發現文件夾裡多瞭一個.pyo文件,把.py和.pyo打包到一起,放入mod文件夾就可以啦~

更多相關資訊請關註:模擬市民4專題

《模擬市民4》柳溪鎮隱藏地圖在哪?柳溪鎮隱藏地圖進法介紹

2022-03-17 遊戲攻略

《模擬市民4》遊戲無限載入怎麼辦?遊戲載入中處理方法分享

2022-03-17 遊戲攻略

《模擬市民4》怎麼玩?遊戲小貼士分享

2022-03-17 遊戲攻略

《模擬市民4》秘籍大全 全秘籍2021最新一覽表

2022-03-17 遊戲攻略

《模擬市民4》醫生怎麼晉升?醫生晉升攻略分享

2022-03-17 遊戲攻略

《模擬市民4》如何開局不缺錢?新手開局技巧推薦

2022-03-17 遊戲攻略

《模擬市民4》怎麼提高情商?提高情商方法推薦

2022-03-17 遊戲攻略

《模擬市民4》島嶼之子是什麼?島上通靈者機制介紹

2022-03-17 遊戲攻略

《模擬市民4》簡繁體選哪個?簡繁體選擇推薦

2022-03-17 遊戲攻略

《模擬市民4》怎麼賺錢快?快速賺錢方法分享

2022-03-17 遊戲攻略

《模擬市民4》怎麼生孩子 生孩子方法介紹分享

2022-03-17 遊戲攻略

《模擬市民4》怎麼談戀愛?談戀愛方法分享

2022-03-17 遊戲攻略

《模擬市民4》星光獎怎麼獲取 星光獎獲取心得

2022-03-17 遊戲攻略

《模擬市民4》復古風潮套件包有什麼內容?復古風潮套件包DLC介紹

2022-03-17 遊戲攻略

《模擬市民4》鄉村廚房套件包DLC怎麼樣?鄉村廚房套件包內容介紹

2022-03-17 遊戲攻略

《模擬市民4》灰塵大作戰套件包有什麼?灰塵大作戰套件包內容介紹

2022-03-17 遊戲攻略

《模擬市民4》MOD裝瞭沒用怎麼辦?MOD裝瞭不顯示解決方法分享

2022-03-17 遊戲攻略

《模擬市民4》靈異沖擊dlc好玩嗎 靈異沖擊dlc介紹

2022-03-17 遊戲攻略

《模擬市民4》頭頂水晶怎麼隱藏?隱藏頭頂水晶攻略

2022-03-17 遊戲攻略

《模擬市民4》雪境仙蹤dlc多少錢 雪境仙蹤dlc介紹

2022-03-17 遊戲攻略

《模擬市民4》孕產期怎麼改?孕產期修改秘籍

2022-03-17 遊戲攻略

《模擬市民4》市民品格獎勵特征怎麼改?市民品格獎勵特征秘籍一覽

2022-03-17 遊戲攻略

《模擬市民4》浪漫關系有什麼用 浪漫關系詳解

2022-03-17 遊戲攻略

《模擬市民4》怎麼寫作業 作業完成指南

2022-03-17 遊戲攻略

《模擬市民4》星球大戰dlc有什麼內容 星戰dlc內容介紹

2022-03-17 遊戲攻略

《模擬市民4》怎麼快速生病?生病秘籍分享

2022-03-17 遊戲攻略

《模擬市民4》餐廳津貼怎麼得?餐廳津貼獎勵秘籍解鎖方法介紹

2022-03-17 遊戲攻略

《模擬市民4》職業秘籍怎麼用?職業秘籍大全

2022-03-17 遊戲攻略

《模擬市民4》秘籍怎麼用?常用秘籍分享

2022-03-17 遊戲攻略

《模擬市民4》MOD文件夾在哪?常見問題解答

2022-03-17 遊戲攻略

《模擬市民4》巧手針織怎麼玩?巧手針織玩法攻略詳解

2022-03-17 遊戲攻略

《模擬市民4》編織技能怎麼提升?編織技能提升方法介紹

2022-03-17 遊戲攻略

《模擬市民4》巧手針織搖椅有什麼用?巧手針織搖椅作用技巧

2022-03-17 遊戲攻略

《模擬市民4》情緒蠟燭有哪些?可制作蠟燭類型一覽

2022-03-17 遊戲攻略

《模擬市民4》綠色生活燃料怎麼獲得?蠟燭制作方法介紹

2022-03-17 遊戲攻略

《模擬市民4》制造技能等級介紹 制造技能有什麼用?

2022-03-17 遊戲攻略

《模擬市民4》綠色生活回收機怎麼用?回收機使用技巧

2022-03-17 遊戲攻略

《模擬市民4》綠色生活有什麼新npc 綠色生活新增npc一覽

2022-03-17 遊戲攻略

《模擬市民4》綠色生活不消費主義是什麼 不消費主義特性介紹

2022-03-17 遊戲攻略

《模擬市民4》綠色生活冷凝器使用方法 冷凝器有什麼用?

2022-03-17 遊戲攻略

《模擬市民4》綠色生活露水收集器怎麼樣?露水收集器功能介紹

2022-03-17 遊戲攻略

《模擬市民4》綠色生活除錯模式怎麼開啟?綠色生活除錯模式開啟方法

2022-03-17 遊戲攻略

《模擬市民4》steam多少錢 steam售價介紹

2022-03-17 遊戲攻略

《模擬市民4》綠色生活怎麼玩?綠色生活玩法與新增內容介紹

2022-03-17 遊戲攻略

《模擬市民4》綠色生活制造機怎麼用?綠色生活汽水制造方法介紹

2022-03-17 遊戲攻略

《模擬市民4》綠色生活bug解決方法介紹 綠色生活bug怎麼解決

2022-03-17 遊戲攻略

《模擬市民4》綠色生活dlc服裝及建築裝飾匯總

2022-03-17 遊戲攻略

《模擬市民4》6月3日更新內容一覽 6月3日更新瞭哪些內容

2022-03-17 遊戲攻略

《模擬市民4》綠色生活dlc內容內容介紹 綠色生活好玩嗎?

2022-03-17 遊戲攻略

《模擬市民4》大學生活什麼時候出 大學生活資料片分享

2022-03-17 遊戲攻略