玩家 alsie 分享本教程的主要目的是让你习惯于在Sims4的Python代码中查找东西。它是一个由对象、类和函数组成的巨大网络,因此很容易迷失在其中。通过本教程,我们将学习制作一个 查询城市人口 模1 .希望通过这个教程,你能简单了解一下这个游戏框架是怎么运作的。感兴趣的朋友,快来看看吧!
自制城市人口查询mod教程
*以下内容需要一点写代码的基础,哪怕你只是一个会看C代码的萌新。如果完全不懂,可能会有点不知所措。
您需要以下内容:
模拟人生4的核心Python模块,关于Python如何工作的一些想法
所以,现在让我们来看看模拟人生4中提供的Python模块(PY文件,不是PYO文件)。您可以在这里找到获得这些核心模块的有用方法。 base) ;, 核心) 还有 模拟) 是游戏引擎中使用的模块标签。我们主要关心的是 核心 还有 模拟 两类。 base 包含了大量的库模块,可以用于游戏代码中的一些微操作,但不一定是我们经常要看的。 核心 还有 模拟 修改游戏相对更重要。
为了成功完成我们的小mod,我们需要一个您可以键入的命令。当你输入后,模拟人生4会告诉你游戏中的模拟人口是多少。现在我们知道了目标,就可以开始寻找我们需要的东西了。
首先 核心 集合。用谷歌搜索: shared _ commands 还有 sims4 。在sims4中,你会发现几个与修改和创建Python模块相关的函数库,游戏运行所必需的算法,以及Sims 4用户界面中的关键方面。如果我们想知道哪里有一个函数,我们可以从这里开始寻找。这样,游戏将允许我们创建新的控制台(Ctrl+Shift+C)命令。
让我们来看看命令功能:
代码:*定义命令功能
def命令(*别名,command_type = CommandType。DebugOnly,pack = None):
*别名:输入的命令字符串名称。
Command_type:见下文。
Pack = None:没关系。
欣,好!这是我们需要的代码!让我们开始写剧本吧!
代码:*导入xxx包
导入sims4 .命令
现在,是时候插入调用sims4.commands.Command()作为装饰器了。我们直接在装饰器下定义的任何函数都将成为它的 主题 (装饰器将应用于该函数)。但是在创建命令之前,我们需要确保已经确定了命令的类型。At commands.py 在中,有一个命令类型的枚举列表:
类CommandType(枚举。Int,export=False):
好,我们必须将命令类型定义为实时命令。由于前面的命令()已经传递了一个command_type变量,现在我们需要在自己的代码中覆盖它,如下所示:
@ sims 4 . commands . command( # 39;getpopulation # 39,command _ type = sims 4 . commands . commandtype . live)
现在我们要在这个装饰器下声明一个函数,并给出一些输出。当玩家输入 getpopulation 当为时,该函数返回城镇的人口。
首先,我们需要弄清楚(1)如何将代码输出到控制台(Ctrl+Shift+C)以及(2)如何获得城镇的人口。这是整个剧本最难的部分。
(1)让我们看一看 commands.py ,找到关于输出的代码:
class cheat Output(Output):
_ _ qual name _ _ = # 39;CheatOutput # 39
def __call__(self,s):
cheat_output(s,self。_上下文)
_ _ call _ _ 函数用于在用户输入特定字符串时调用指定的函数。
(2)处理完控制台部分,我们来写一个函数获取城市人口:
要使用的收藏: 模拟 。
At 模拟人生 文件夹中,有一个文件夹名为 。sim _ info _ manager.py 文件。
有一个文件名为 在这个文件里。SimInfoManager 班级。用来保存每个小人物的资料。如果我们能统计出它列表中所有的sim卡号码,那么我们就能得到所有的模拟人口。通过查看TS4存储库中的其余代码,我注意到一个模式:sim_info_manager是服务中的一个对象,它位于__init__。服务文件夹中的py。它有一个很重要的函数:get _ all()<-看到名字猜猜它是做什么的吧?
以下是我们目前的代码:
导入sims 4 . commands
@ sims 4 . commands . command( # 39;getpopulation # 39,command _ type = sims 4 . commands . commandtype . live)
(写了两行代码zzz花了这么长时间,作者说请继续看,因为大部分关键线索都找到了,放在一起就好~物有所值~)
现在我们导入服务(包括__init__)。py刚刚提到):
进口服务
然后在装饰器下声明一个函数:
def getpop(_connection = None):
*getpop是你的函数名,_connection是参数名,你可以随便叫。作者说你可以叫它毛毛_小猫(毛毛猫)。
所以,现在我们知道了如何输出到控制台(通过调用CheatOutput),我们可以定义一个调用它的变量,输出字符串是类型output( # 39;blablabla # 39):
output = sims 4 . commands . cheat output(_ connection)
但是我们不想只是输出 # 39;blablabla # 39我们要输出城镇人口。这是我们在服务中使用sim_info_manager的地方。
输出( # 39;你的城镇\ # 39;的人口是{ } # 39;。format(len(services . sim _ info _ manager()。get_all())))
*你可以把英文改成中文。
输出( # 39;你们城市人口是:{ } # 39;。format(len(services . sim _ info _ manager()。get_all())))
根据我们在services.sim_info_manager()中调用get_all()时得到的列表长度,我们得到了镇上所有小人的数量!搞定了。
这是我们最后的代码:
导入服务导入sims 4 . commands @ sims 4 . commands . command( # 39;getpopulation # 39,command _ type = sims 4 . commands . commandtype . live)def get pop(_ connection = None):output = sims 4 . commands . cheat output(_ connection)output( # 39;你的城镇\ # 39;的人口是{ } # 39;。format(len(services . sim _ info _ manager()。get_all())))
游戏截图:
Q1:首先 hellip hellippython怎么写?
下载一个文本编辑器,例如Notepad++(仅适用于windows)和sublime Text(支持windows、OS X和Ubuntu)。两个都很好用~
*记事本++编写时选择语言>:Python,sublime选择视图>:语法 gt大蟒
Q2:如何转换?将文件复制到。皮欧?
(1)下载python3.3.5(模拟人生使用的python版本),安装时别忘了选择安装python路径的选项。
(2)以格式保存下面的代码。bat,并采用任何文件名,例如:PythonOptimizeCompile.bat
import sims 4 . commands import services @ sims 4 . commands . command( # 39;getpopulation # 39,command _ type = sims 4 . commands . commandtype . live)def get pop(_ connection = None):output = sims 4 . commands . cheat output(_ connection)output( # 39;你的城镇\ # 39;的人口是{ } # 39;。format(len(services . sim _ info _ manager()。get_all())))
好吧,那就拉已经写好的。py文件放到xxx.bat上,您会发现一个附加的。pyo文件夹中的文件。打包。py和。pyo一起放在mod文件夹里~