从代码角度分析对游戏的理解+改动经验
jackhf吧
全部回复
仅看楼主
level 7
null_ycMia 楼主
前几天在调试slave属性时发现修补术只能做一次,回头翻源代码发现作者没写完...
版本(从f95zone) 2.2 original_no_loli
分别是以下几个字段:
slave['beauty']
slave['base_beauty']
slave_rate['beauty']
2021年10月10日 02点10分 1
level 7
null_ycMia 楼主
(怎么改标题啊,此帖长期更)
2021年10月10日 02点10分 3
level 7
null_ycMia 楼主
之前的几个字段有能力的吧友可以探寻一下,那
接下去就开始正题吧[吐舌]
名词:
引擎: 运行QSP文件进行游戏的应用程序 -- 失去了引擎,QSP文件本身不具有运行功能
QSP 文件: 决定了游戏运作的方式, 这个文件将会被送至游戏引擎供其读取, 一般以*.qsp作为后缀
IDE: 即集成开发环境, 可以编辑QSP文件的代码 -- 在例如像JackHF这种QSP游戏的IDE就是 [QGen.exe]
代码: "是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。" -- 来自百度百科
Save(存档): 各位绅士都懂[滑稽], 在QSP游戏内一般以*.sav后缀名结尾
(来到这里玩这个游戏的怎么会没有编程基础呢...是吧, 不是吗...QSP官方文档是俄文, 楼主所有编程信息全靠猜...所以不用紧张)
----
2021年10月10日 04点10分 4
补充一下, 这个游戏的源代码是暴露的, 意味着任何人都可以通过修改源代码的方式来改变游戏内容, 前提是不将游戏用作为商用或者其它牟利方式 (请参照其动态更新的游戏开源协议[太开心])
2021年10月10日 04点10分
因此理论上, 你可以对自己的存档作所有的修改(例如更改slave个性, 或者精力限制, 屈服规则等), 还能编写更多游戏形式(例如现在没编写完的whorehouse功能[哈哈]
2021年10月10日 04点10分
level 7
null_ycMia 楼主
声明:
此贴吧仅为经验交流, 并非官方文档
并且一些代码用法暂无官方文档佐证(俄文翻译不便), 有名词解释错误的地方请多指正 [:感谢]
哒, 来说一下代码结构, 不必理解每句话的意思:
首先我们进入 '#options' 这个Action, 其中包含了许多我们能在明面上看到的字段(例如这里的Br[勉强]east Aug[冷]mentation 按钮选项):
--这里选用的例子是 '科技区' 的 '医院' 地点
我们可以看到 $hospital_options[1] 这个字段内存入了多行代码, 是用于显示菜单而设
(这里的func()的目标是调用 '$menu' Action并对其进行传参, 具体可再翻看 $menu 中怎么写的)
其中包含多个分支, 绿色下划线为可点击选项, 灰色下划线为不可点击选项
这里是菜单展示效果:
游戏的资源量巨大, 因此我们需要一个过程Action去调取资源
并且合理显示它们, 而不是资源在加载时:
在'interaction_city' Action这里调取资源字段'hospital_options'转移至 'display_options' 中后, 在下一行将会跳转至( gt 命令) 'shop_general' Action
请注意, 这里整体转移了一整个hosptial_options数组
让我们移步至shop_general Action中:
喜闻乐见, 这是dynamic命令, 这句命令的意义是执行 (已经被迁移至display_options中的) hospital_options所涵的func('$menu', ...)命令组
这一句对应的效果?
能看到这里的JH友, 恭喜你! 你已经入门了JackHF的菜单显示框架, 并且理解了数据从资源库走向前台的整个过程~
我们来做个奇怪的尝试, 把最后那一句话注释掉, 然后f3重新在引擎内*读取修改过后的qsp文件*, 再次进入游戏, 看看进入医院会发生什么[吐舌]
(千万要保存存档免得翻车了x)
好耶! 验证了我们对菜单框架的探究[哈哈]
你会发现在这个情况下游戏没有任何可交互按钮, 你无法从医院出去了[不高兴][滑稽]
2021年10月10日 05点10分 5
level 7
null_ycMia 楼主
接上之前的:
注释方法是在行首添加感叹号, 这样你的整行代码都会失效, 但是比删除操作要更具有迂回余地
也就是将14行改为
!dynamic $display_options[sp_txt]
2021年10月10日 06点10分 6
level 7
null_ycMia 楼主
在QGen中打开代码时请另存为其它Qsp文档, 方法是:
--菜单栏Game -> Save As...
--也可以按下ctrl+W
...并且你还要在引擎中手动读取QSP File, 方法是
--菜单栏File -> Open File
--也可以直接按下Ctrl+O
这两种方法执行之前请确保你的存档没有问题
(谁都不希望可爱的slave们数据损坏...[心碎])
2021年10月10日 06点10分 7
大佬,我修改了一些数据,2.2版本的作弊器的作弊数值。 之后我的存档就无法读取了。 但是我换到没有进行修改的游戏,还可以读取。 这个修改新开游戏查看也成功了。 为什么这样呢?要怎么避免呢?
2022年02月20日 08点02分
level 7
null_ycMia 楼主
下一篇大概晚上更, 将会介绍我如何添加slave的美貌(beauty)的修改项
暂且坐在了医院里, 名为"Cosmetic surgery"
晚上是指什么...(明天晚上?后天晚上?大后天晚上?大大后天晚上?一个月后?一年后?)
下面上图啦[开心]
2021年10月10日 06点10分 8
level 7
null_ycMia 楼主
8楼是
"如何添加slave的美貌(beauty)的修改项" 的效果图
如果看不到8L证明度娘吞了x
2021年10月10日 06点10分 10
level 7
null_ycMia 楼主
求顶顶呗w~
2021年10月10日 06点10分 11
level 7
虽然看不到,帮顶
2021年10月10日 06点10分 12
看代码用QGen.exe打开qsp文件就可以 Qgen是游戏附赠的
2021年10月10日 16点10分
@null_ycMia 是看不懂[小乖]
2021年10月11日 01点10分
@黑色光芒⚡ 到后面会一句话一句话解析的啦w~ 等我更新
2021年10月11日 09点10分
level 7
null_ycMia 楼主
我回来辣~继续更新
2021年10月11日 15点10分 13
写个修改技能经验的呗!B+到S+太久了。
2021年10月11日 15点10分
@一桶姜珊 好, 我更完这个立刻做 改技能经验的操作 更偏近 ... 作弊 [滑稽]所以理论上来说更简单
2021年10月11日 17点10分
level 7
null_ycMia 楼主
和上一次分析类似, 我们从可见的菜单文字入手[哈哈]:
在合适的顺序排列位置上加上我们的选项(Cosmetic Surgery)
这一组分支选项的意思是:
---
当 星火 大于等于 3000 并且 slave 的初始美貌等级 小于等于 5 并且 康复期等待时长 小于 1 时:
显示一个可点击的整容术选项
反之
显示一个不可点击, 灰色的整容术菜单选项
---
让我们复习一下qsp中的func()函数是什么吧~
(其实就是运行函数的函数啦, 个人理解[吐舌])
func( 'Action名称', 第一个参数, 第二个参数, 第三个参数, 第四, 第五, 第六, 第七, ...)
在这里的Action名称为 '$menu' 就代表运行了名为 $menu 的Action对象 (作为函数运行的)
他在这里~~
在 $menu Action 对象中我们找到了形如 $args[数字] 的蓝色标记, 这就代表了刚才的...
第一个参数 = arg[0]
第二个参数 = arg[1]
第三个参数 = arg[2]
...
(又及: $args是保留字,不要用作自己的程序的自定义变量名称)
参阅$main的代码第89行,(日后我将会深度分析)
...你会发现, func( '$menu', 'interaction_city',...)将会遇到一个可交互菜单显示
相反, func( '$menu', 'interaction_city',...)将会遇到一个不可交互, 并且是灰色的菜单显示
两者的第二,三,四个参数分别代表了: 该选项的小图标, 该选项交互后的情景参数(存储在json中), 该选项的文字
json是个什么东西呢? -- 接
2021年10月11日 16点10分 14
level 7
null_ycMia 楼主
json也是一种存储轻量级数据的文件格式, 文件以*.json结尾
我们目前正在用到的是menu_item.json这个文件, 地址在 根目录\game\json\ 路径下
它包含了大多数在中间过程(例如子菜单和子菜单的子菜单) 需要传递给下一过程的量, 以整数的形式存储
我们可以回过去看到修补手术显示菜单的代码:
---
func('$menu', 'interaction_city', $menu_item_SNeoplasty, menu_SNeoplasty, 'Neoplasty (250$)')
---
(在 # options Action 中)
查阅json文件, 第三个参数 menu_SNeoplasty的是 3324
这一行指令就是对应了下一张图片中的判断, 数值居然也是3324[笑眼]
这样就完成了从 "显示菜单选项" 到 "响应交互" 的衔接
下面传上我的代码改动吧~ 相信小伙伴们能在不用了解句子基层原理的情况下轻松看懂代码运行逻辑
最后运行是不是出了点问题? 黑屏了
没错! ( 上机操作的吧友直接骂人了 )[阴险]因为 在$yes 选项中的 $interaction_type 传参往interaction_screen_city也有需要改动的地方, 毫无疑问, 这是一个中间形态Action
不过上机操作的吧友还是有福利的, 因为
使用 "msg" 操作指令可以打印一些文字出来
例如
if interaction_city = xxxx :
msg "Hello world!"
end
那祝各位吧友调试愉快~武运昌隆[太开心]
---大概星期五之前再更几次吧, 今日太累了
2021年10月11日 16点10分 15
结果最后还是到星期六才更2333333
2021年10月16日 13点10分
level 7
null_ycMia 楼主
补图
2021年10月11日 17点10分 16
level 7
null_ycMia 楼主
给资源被封了一天....已深刻反省
先在这里注明一下: 本吧杜绝一切资源贴
接下去会陆续更新~
2021年10月14日 01点10分 17
1 2 尾页