admin 发表于 2022-4-1 11:30:39

传奇动态切割飘血的脚本思维!


参考别人的帖子,那个帖子我购买了并下载了。使用的是地图播放魔法效果。
个人感觉不是很合理!不方便修改。下面使用的是目标播放特效

所以干脆直接写个脚本给大家,有疑问提出

首先:我们在QM的@Login 里加入读取文本设置

例如:
#ACT
ReadCacheConfigFileItem ..\QuestDiary\配置.txt 飘血值 0 N$飘血值0
ReadCacheConfigFileItem ..\QuestDiary\配置.txt 飘血值 1 N$飘血值1
ReadCacheConfigFileItem ..\QuestDiary\配置.txt 飘血值 2 N$飘血值2
ReadCacheConfigFileItem ..\QuestDiary\配置.txt 飘血值 3 N$飘血值3
ReadCacheConfigFileItem ..\QuestDiary\配置.txt 飘血值 4 N$飘血值4
ReadCacheConfigFileItem ..\QuestDiary\配置.txt 飘血值 5 N$飘血值5
ReadCacheConfigFileItem ..\QuestDiary\配置.txt 飘血值 6 N$飘血值6
ReadCacheConfigFileItem ..\QuestDiary\配置.txt 飘血值 7 N$飘血值7
ReadCacheConfigFileItem ..\QuestDiary\配置.txt 飘血值 8 N$飘血值8
ReadCacheConfigFileItem ..\QuestDiary\配置.txt 飘血值 9 N$飘血值9

配置.txt 内容
内容为0-9数字的图片号 ,每组图片为20个。

[飘血值]
0=20
1=40
2=60
3=80
4=100
5=120
6=140
7=160
8=180
9=200


当然也可以直接
MOV N$飘血值0 20
MOV N$飘血值1 40
..
..
MOV N$飘血值8 180
MOV N$飘血值9 200

以上2种方法看个人爱好,只上线申明一次,。节省资源。变量不要重复,尤其是后面的数字0-9不要删除

然后QF里就可以直接进行调用,例如:

[@Attack]
#IF
LARGE N$怪物切割 0
#ACT
M.HumanHP - N$怪物切割
;N$怪物切割可以是吸血,吸蓝其它的任何东西
MOV N$伤害值 <$str(N$怪物切割)>
#CALL [\掉血特效.txt] @掉血特效


[@掉血特效]
{
#IF
;检测伤害长度=1时
CheckStringlength N$伤害值 = 1
#ACT
;播放切割文字图片,补丁号为94.图片为0
PLAYEFFECT 94 0 20 1 50 0 -10 -150 1
;播放切割数字图片,补丁号为94.图片为QM里申明的数值
;如果目标是玩家,这里需要传递一下N$伤害值
PLAYEFFECT 94 N$飘血值<$str(N$伤害值)> 20 1 50 0 -10 -150 1

#IF
;检测伤害长度>1时
CheckStringlength N$伤害值 > 1
#ACT
;获取当前伤害值的总长度
TextLength N$伤害值 N$伤害值长度
;为P887飘血数字特效的X坐标
;为P886飘血数字特效的Y坐标
MOV P886 -150
MOV P887 -10
MOV P888 0
MOV P889 0
;播放切割文字图片,补丁号为94.图片为0
;如果目标是玩家,这里需要传递一下2个变量 p887和p886
PLAYEFFECT 94 0 20 1 50 0 <$STR(P887)> <$STR(P886)> 1
;循环执行 N$伤害值长度 为次数
loopgoto @播放掉血特效 N$伤害值长度

[@播放掉血特效]
#ACT
MOV S$播放飘血图 <$str(N$伤害值)>
DEC S$播放飘血图 <$str(P888)> <$str(P889)>
DEC S$播放飘血图 2 <$str(N$伤害值长度)>
;如果目标是玩家,这里需要传递一下3个变量 S$播放飘血图 和 p887和p886
PLAYEFFECT 94 N$飘血值<$str(S$播放飘血图)> 20 1 50 0 <$str(P887)> <$str(P886)> 1

#IF
NOT LARGE P888 0
#ACT
INC P888 1

#IF
#ACT
INC P889 1
INC P887 10
}


以上脚本原理,上线时直接申明0-9数字读取的图片号。
当触发伤害时,直接获取伤害长度进行操作
例如,如果伤害值 为 756412 长度则为 6
第一步:删除P888-P889,即0-0位置的字符,结果为:756412
第二步:删除 2-6的字符,结果为:剩余为7.获得第一个数字,同时播放此数字的图片即:N$飘血值7 (参考QM里的申明)
循环执行.p888+1 p889+1
第一步:删除P888-P889,即1-1位置的字符,结果为:56412
第二步:删除 2-6的字符,结果为:剩余为5,同时播放此数字的图片即:N$飘血值5
再循环执行.p888+1,由于此处检测结果为p888大于0,p888就不再增加,只有p889+1
第一步:删除P888-P889,即1-2位置的字符,结果为:412
第二步:删除 2-6的字符,结果为:剩余为4,同时播放此数字的图片即:N$飘血值4
直到loopgoto 执行完毕。次数为长度,也就是可以获得所有数字的图片号并播放

补充内容 (2022-3-31 18:52):
附件为补丁

han101202 发表于 2022-9-14 13:34:25

传奇动态切割飘血的脚本思维

灵动 发表于 2022-9-18 17:42:41


传奇动态切割飘血的脚本思维

k421061 发表于 2022-9-25 01:06:50

感谢分享。

梦醒 发表于 2022-11-10 01:54:44

牛逼了我的天
页: [1]
查看完整版本: 传奇动态切割飘血的脚本思维!