Part 1 准备

1. 前言

我是模拟人生4老玩家了,最近学习了Python,突然对利用Python制作The Sims4的Mod有了兴趣。然而网上有关制作Mod的教程并不多,EA官方并没有给出相关的开发工具或者接口或者教程来帮助开发者添加自定义的Mod,不仅如此,EA一些迷惑行为还给开发者带来很多不便利(日常问候EA,夺笋呐)。
在谷歌找相关教程的时候,找到两位大佬的教程,写的非常棒,英语好的可以用特殊手段直接去看看。
Getting Started with Python Scripting - Sims 4 Studio
The Sims 4 Modern Python Modding

但是我在看他们的教程的时候遇见很多问题,比如这些教程全是在Origin平台,但是我们大多数人应该都是从Steam下载的,导致很多文件路径需要重新设置等等。我在这里写的一些教程(更多是学习心得吧),很多是借鉴(甚至有些是会直接翻译他们的一段),因为这些不是我想和大家分享的,毕竟他们的教程会英语或者用翻译器都能看得懂,我想分享给大家的是我遇到问题的解决方法,这些是他们这些教程里没有提到的,并且我个人觉得非常重要。

Mod制作在Windows平台下实现,Mac OS X我没用过,你们可以自己试试,反正需要用的软件Mac都有。

前言就到这啦,咱们开始进入正题!

每个教程后面都会有可能出现的问题清单与解决方法,如果跟着教程走出现问题,记得往后面翻一翻看。

2.准备

  • Python 3.7

    官网下载链接

    请注意,一定得是3.7版本,不能是3.6或者3.8、3.9这些。问就是EA没适配。Python安装教程就不赘述了,网上很多。

  • PyCharm Starter Project

    下载- 通过Google Drive需要特殊手段

    可以自动化编译mod,上面提到的一个大佬用了一堆繁琐的步骤+一个多小时反编译出来的东西(我花了一个小时),这个Project直接给你提供了。

    想要了解上面那个一个多小时的方法可以点击The Sims 4 Modern Python Modding找到 Option 2:Manual Setup,但是本教程不会提这个反人类的方法(还得用反编译,看了只会更想骂EA)。

  • PyCharm

    PyCharm 下载(我提供的是Windows的链接,Mac用户在官网自己找找)

    PyCharm是个很牛摆的IDE,很多modder都推荐使用PyCharm。如果使用其他IDE,如vs code ,应该问题也不大。

    PyCharm安装教程网上一堆,这里不赘述。

  • 真·一点点的Python基础

    至少基本的语法和数据结构要有所了解,不需要精通。本教程不涉及Python基础扫盲,但也不会拿高大上的东西(毕竟我也刚学),大家可以去网上找点教程为咱们的Modding旅程做好准备(菜鸟教程、AI学堂都特别好。)

    悄悄打个广告,讯飞的AI大学堂 里面一堆免费Python网课,我就在这白嫖的

3.配置好PyCharm

我假设你配置好Python、安装完PyCharm并且把PyCharm Stater Project解压并且为它找了个好位置。

由于我现在在实习,不允许使用个人电脑,所以我直接用了 这个教程 的截图
此外,这里块跟着教程走还是会一堆问题(这就是我自己写教程的原因),请移步至文章末尾处的可能会遇见的问题板块查找解决方法。

第一步:在PyCharm中打开PyCharm Stater Project

如果你安装好PyCharm第一次打开它的话,你在这个窗口点击open,在弹出的窗口选择PyCharm Stater Project解压后的文件夹

如果你是个好奇宝宝,安装完已经自己试着创建了一个项目,那就点击左上角File - Open…,然后选择PyCharm Stater Project解压后的文件夹

第2步:认识PyCharm Starter Project

打开了这个Project后,在左边的那一列中会出现一些文件和文件夹。

  • EA:提取的游戏的脚本会在这里存储,但是第一次打开这个Project的时候,里面文件夹是空的。
  • My Script Mods:这里保存你自己制作的Mod的资源文件
  • Utilities:这里的文件会帮你自动编译生成你的Mod文件,这里的文件不需要做任何的改动
  • decompile_all.py:这个脚本文件会自动提取游戏内的脚本文件,帮助你自动编译出mod
  • settings.py:这里设置作者名称、游戏路径等等的信息。

第3步:为第一个Mod做准备

(1)首先,打开settings.py文件

绿圈中 creator_name = 'andrew' 中将andrew替换成你的名字,例如creator_name = 'yesmola'

右上角的绿圈提醒你需要配置Python Interpreter,点击蓝色超链接文字(或者在File - Settings - Project - Project Interpreter中打开页面)

在弹出窗口中,点击小齿轮 - Add… - System Interpreter

确保右边绿框中地址为Python.exe文件所在的路径

点击OK,完成。此时settings.py上方的黄色提醒栏消失(有的时候有点问题,关了再打开PyCharm就消失了)

(2)再设置游戏路径

还是settings.py文件,请看第4行开始的这一段:

   mods_folder = os.path.expanduser(os.path.join('~', 'Documents', 'Electronic Arts', 'The Sims 4', 'Mods'))

os.path.join中的内容为你的Mods文件所在的位置,也就是平时Mods放的地方。如果你平时Mods文件放的不是这里,请根据实际情况填写路径。

再看第八行

```
game_folder = os.path.join('C', os.sep, 'Program Files (x86), 'Origin Games', 'The Sims 4')
```

这里是你游戏文件夹的地方,注意,游戏文件夹的路径不是你平时放mod时见到的那个The Sims 4文件夹。这里需要修改。

A:如果你是从Origin平台中下载的Sims 4

Origin 默认的游戏数据地址就是代码中的地址,恭喜你不需要做任何修改。

但是你自己主动改了Origin Games的位置的话,还是得根据实际情况修改。例如,我的Origin Games文件夹在D:\A\B\C\Origin Games的话,就需要改成:
game_folder = os.path.join('D:', os.sep, 'A', 'B', 'C', 'Origin Games', 'The Sims 4')

B: 如果你是通过Steam平台下载的Sims 4

首先找到steam这个文件夹,它可能在C盘,可能在D盘,如果在D盘,则需要吧那个 C: 改成D: ,其它以此类推。

以steam文件夹在 D:\steam 这个路径为例子

game_folder = os.path.join('D:', os.sep, 'steam', 'steamapps', 'commmon', 'The Sims 4')

C: 如果你是盗版用户

第一步请私信告诉我在哪能白嫖

找到The Sims 4这个文件夹,根据实际情况填写路径。请注意,不是你平时放Mod的那个 The SIms 4文件夹!!!不是你平时放Mod的那个 The SIms 4文件夹!!!不是你平时放Mod的那个 The SIms 4文件夹!!!找另外一个!!!

(3)运行decompile_all.py

右键选中decompile_all.py,选择Run "decompile_all",如果你上一步游戏路径啥的写对的话,你会看到下面控制台会出现一大堆不停滚动的文字,等文字停止之后就结束了。结束之后,在EA文件夹下会有一大堆的文件,这就说明成功了,但是你不需要做任何修改!!

如果没有出现滚动的文字,而是就几行白色的字就没了的话,那你的游戏路径写错了。如果是红色的字的话,那就是出现错误,看看哪一步做错了以及是不是少了个引号之类的。

到此为止,你的PyCharm已经具备了开发The Sims 4 Mod的能力,但是需要注意一下,每次游戏更新或者各位富婆阔少又买了新Mod,记得重新运行一下decompile_all.py文件,以让咱们的脚本保持最新的状态。

后序

第一篇教程结束啦,写的很累,但是当时按着教程走却莫名其妙出现一堆bug、然后不停找问题和解决方法更累。所以我更觉得我所做的事情对所有想学习如何制作mod的我们更有意义。我第一次写这么长的教程,有没说明白的或者纰漏烦请大家指出哦。下一次,咱们来做编程最经典的 Hello World Mod哦!(Hello World虽迟但到…)

可能出现的问题

题外话
我觉得“可能出现的问题”这一块才是我想和大家分享的主要内容,在这里我会详细介绍一些写在教程里冗余但是会偶尔碰见的一些问题。这些是在那些大神的教程中没有的(可能是他们比较牛吧,哈哈哈哈)

Q1:我导入PyCharm Starter Project,有一堆的报错怎么办?

  • 这也是当初特别困扰我的事情,但是好像没有任何一个人提到这件事情。有些报错特别离谱,比如import os都能出错误。如果是这种情况,我更换System Interperter为其他版本的Python解决了(但是注意,目前还必须是3.7.x版本)。System Interpreter更换方法在上面有写。

Q2: decompile_all.py一堆报错怎么办?


Utilities 以及 settings报错,但是明明这两个东西就在项目里面啊。
哈哈哈哈哈哈哈哈哈啊哈!!!!终于说到这个问题了!!!!困扰我很长时间了!!!仔细看这个截图:

你是不是这么新建的?我们来分析一下这个文件结构:

  • TheSims4Project (第一层)

    • Sims 4 Python Script Workspace (第二层)

      • Utilities (第三层)
      • EA
      • MY Script Mods
      • settings.py

如果是这样的话,你的Utilities和settings是放在第二层目录下的,Utilities和settings根本不会被识别到,请把Utilities和settings放在第一层目录下。


这样子才对,和上面那张对比一下看看。

用Python制作模拟人生4 Mod(01)相关推荐

  1. 飞象求职学python_用Python制作markdown编辑器

    还记得在上篇提到的rest-framework,文档中提到了markdown也是可选应用. 那么这篇我们就来尝试使用markdown来制作一个在线的可以预览的editor. 安装 Python Mar ...

  2. 怎么用python制作简单的程序-神级程序员教你如何用python制作一个牛逼的外挂!...

    玩过电脑游戏的同学对于外挂肯定不陌生,但是你在用外挂的时候有没有想过如何做一个外挂呢?(当然用外挂不是那么道义哈,呵呵),那我们就来看一下如何用python来制作一个外挂.... 我打开了4399小游 ...

  3. python身份证号掩盖出生日期的代码_利用Python制作全国身份证号验证及查询系统!就问你吊不吊!...

    大家好哇,又是一个愉快的周末,今天本鸟给大家分享1个有趣的实战项目,用python制作"全国身份证号验证及查询系统",成品界面如下图: 本系统可以实现身份证号真伪验证,年龄.性别及 ...

  4. Python制作AI贪吃蛇,很多很多细节、思路都写下来了!

    前提:本文实现AI贪吃蛇自行对战,加上人机对战,读者可再次基础上自行添加电脑VS电脑和玩家VS玩家(其实把人机对战写完,这2个都没什么了,思路都一样) 很多人学习python,不知道从何学起. 很多人 ...

  5. Python制作AI贪吃蛇,细节、思路都写下来了!

    前提:本文实现AI贪吃蛇自行对战,加上人机对战,读者可再次基础上自行添加电脑VS电脑和玩家VS玩家(其实把人机对战写完,这2个都没什么了,思路都一样) 实现效果: 很多人学习python,不知道从何学 ...

  6. 【python】python制作 连连看 游戏脚本(一)

    [python]python制作 连连看 游戏脚本(一)_sunriver2000的博客-CSDN博客 [python]python制作 连连看 游戏脚本(二)_sunriver2000的博客-CSD ...

  7. python制作有道翻译软件

    python制作有道翻译软件 完整代码: import requests import hashlib import json,time,random import tkinter as tk hea ...

  8. python 制作抽奖_python制作抽奖程序代码详解

    实现制作抽奖程序,需要认知到我们可以看到一般抽奖程序界面上是有很多按钮的,比如中奖区域,按键开始区域等等,所以我们先要设置界面,然后把这些按钮添加到界面中去,想必这对于学过tkinter的同学应该不难 ...

  9. 用Python制作销售数据可视化看板,展示分析一步到位!

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 洛阳亲友如相问,一片冰心在玉壶. ...

  10. 实战|用Python制作邮箱自动回复机器人

    相关导读 ????01|Python发送邮件讲解 ????02|Python读取邮件讲解 ????03|Python管理邮件案例 ????04|Python邮箱自动化实战 大家好,又来到Python办 ...

最新文章

  1. (原创)不带模板的DOI输出EXCEL
  2. docker 镜像名 tag 为none 的解决方案
  3. js04--对象与正则表达式
  4. sicily 1137 河床 (二分分治)
  5. poj 1695(三维dp)
  6. 前端做微信好友分享_前端微信分享,调用微信分享,分享朋友圈,分享微信好友,分享qq空间,qq好友...
  7. java资源文件获取属性_Java读写资源文件类Properties
  8. linux文件三种时间及stat的用法
  9. Linux强行取消挂载
  10. python pip download_Python Pip 参考手册 - pip download 命令
  11. OpenShift 4 - DevSecOps Workshop (3) - 从PipelineResource、Task到一个简单的Pipeline
  12. 机器视觉系统设计难点有哪些?
  13. nftables-howto-zh中文手册(不完整)
  14. next主题设定代码高亮格式
  15. 嵌入式Linux应用程序开发
  16. 如何在photoshop中等比例缩放一张图
  17. 飞塔防火墙添加删除用户配置
  18. Linux shell的输入输出
  19. 1.5. 唤醒任务:TTWU(try_to_wake_up)
  20. ICAP: 互换客户端地址协议 1

热门文章

  1. java channels_java.nio.channels.NotYetConnectedException
  2. matlab subs的用法,Matlab subs函數的用法
  3. 【安全】eWebeditor编辑器上传webshell
  4. php公告滚动源码,如何利用JavaScriptjQuery实现滚动公告栏(代码实例)
  5. 世界上最大的计算机硬盘,三星:2.5英寸16TB,我是史上最大SSD硬盘-消费电子-与非网...
  6. 【马三北漂记】之终章
  7. Flexsim Rack设置最底层Level不放货物
  8. vuefilters过滤器的使用,给金钱价格加上符号单位
  9. (Java实现)洛谷 P1093 奖学金
  10. Quora的技术探索