找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 312|回复: 11

[教程] GMS083 修复道具介绍中,中文换行的问题

[复制链接]

33

主题

11

回帖

98

积分

管理员

积分
98
发表于 2025-3-1 16:59:47 | 显示全部楼层 |阅读模式
这是修复前的样子



这是修复后的样子



083和095两个版本我都有修复,095的以前拍过视频演示 https://www.bilibili.com/video/BV1ePxyeuECb/ 上面的图片截取自该视频

以下修复代码仅 GMSv083 可用
游客,如果您要查看本帖隐藏内容请回复



原理很简单,在 ToolTip 输出道具描述时会判断 5 个特殊符号(空格 , . ; :)

如果遇到这 5 个特殊符号就检查后面的文字(一直到再次遇到这些特殊符号)是否有足够的位置,如果位置不够就换行插入。

举个例子 "123456,789;123456."

第一个特殊符号是","第二个特殊符号是";"第三个特殊符号是"."

程序会在第n个特殊符号后,获取第n个到第n+1个特殊符号之间的文字(比如n=1时就是"789") 然后计算这段字符串的宽度并判断当前行是否有足够的空间容纳,如果放不下就把"789"插入下一行。

这个操作对最初的字符串 "123456" 也有效。对后续所有的特殊符号都是。

那么我们来看假如纯中文的道具描述,由于全文都没有特殊符号,相当于输入了"1234567890123456798···"这样一段超长的内容,即使第一行前面没有任何东西,这段超长内容也过长了,所以被强行插入下一行,又由于,后续也没有特殊符号,所以整个内容都挤在同一行了。也就是图1魔方描述的效果。

橙色字是#c开头的,在后续代码有单独的判断,所以不受影响。

修复代码的原理是移除了对特殊符号的判断,改为对所有符号都进行一次判断。即每一个字符都是特殊符号,每一个字符都进行判断。

这么做有一个弊端,就是如果你的描述中有英文的话,英文单词可能会被强行拆开在两行显示,这样其实不美观。所以我在 095 的时候改用了复杂一点的判断。不是简单粗暴的对所有字符进行判断,而是在原来5个特殊字符的基础上增加对中文的判断。当然这样的修改需要使用 codecave 或者 sethook 来进行,代码我暂时不放出,就当作是一个小练习,只要看过前面的基础教程加上ai的帮助,很容易就可以写出来。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我尽可能地不设置回复可见,希望让跟帖更有质量,有问题欢迎跟帖提问。

4

主题

11

回帖

8

积分

新手上路

积分
8
发表于 2025-3-1 17:17:48 | 显示全部楼层
來參考下是怎麼換行的

0

主题

5

回帖

43

积分

新手上路

积分
43
发表于 2025-3-1 17:21:46 | 显示全部楼层
我hook替换了字符串中的中文字符为英文字符 不过还是怪怪的 有的也有bug 来学习一下

33

主题

11

回帖

98

积分

管理员

积分
98
 楼主| 发表于 2025-3-1 17:25:12 | 显示全部楼层
disguisebilly 发表于 2025-3-1 17:21
我hook替换了字符串中的中文字符为英文字符 不过还是怪怪的 有的也有bug 来学习一下 ...

具体说说?
我尽可能地不设置回复可见,希望让跟帖更有质量,有问题欢迎跟帖提问。

0

主题

5

回帖

43

积分

新手上路

积分
43
发表于 2025-3-1 19:25:09 | 显示全部楼层

没什么技术含量..就是单纯替换了中文符号为英文符号,部分显示的会好一些,不过有些地方也有很多问题..
我现在把这个结合跟你的一起使用 看起来更舒服了一些.
HOOK了drawtextsepartedline函数,应该是叫这个。。里面第五个还是第六个参数 就是显示的文本,然后写了一个列表,把。替换成. 以此类推

4

主题

12

回帖

109

积分

注册会员

积分
109
发表于 2025-3-1 21:24:33 | 显示全部楼层
可算等到你了

0

主题

4

回帖

6

积分

新手上路

积分
6
发表于 2025-3-1 23:26:58 | 显示全部楼层
看看额了

0

主题

4

回帖

6

积分

新手上路

积分
6
发表于 2025-3-3 10:26:41 | 显示全部楼层
本帖最后由 可可可乐 于 2025-3-3 10:32 编辑

支持一下。。其实追加个判断 || v13 == 255 就好。直接全砍没了就太惨了。

0

主题

2

回帖

24

积分

新手上路

积分
24
发表于 2025-3-3 15:13:01 | 显示全部楼层
太强了吧 挽尊!

0

主题

1

回帖

3

积分

新手上路

积分
3
发表于 2025-3-16 21:10:51 | 显示全部楼层
看看怎么弄呀
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|蘑菇物语

GMT+8, 2025-4-19 12:41 , Processed in 0.053088 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表