• QQ:15656018

    工作时间

    周一至周五:9:00-23:00

    周末及节日:9:00-23:00

  • 手机版二维码

    随时手机查素材

    gm下载站
  • 扫描二维码

    加入官方QQ群

    gm下载站
发布资源赚元宝
gm下载站 管理员
  • 未知地域
  • 8857发帖数
  • 8839主题数
  • 0关注数
  • 0粉丝
开通vip会员

[脚本命令] [BLUE引擎]传奇版本增加正则匹配检测NPC命令功能说明

[复制链接]
gm下载站 发表于 2025-1-4 19:36:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

马上注册,查看更多内容,丰富传奇GM资源等你下载探索。

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

x


增加正则匹配检测NPC命令:RegExMatch 源字符 匹配表达式 // S1是需要检测的字符串,可以到https://www.jyshare.com/front-end/854/验证
例:
; "1[34578]\d{9}"  // 手机号码
; "\$[0-9A-Fa-f]+"  // NPC说话内容里的16进制颜色
; 检测查源字符中是否包含有URL
#if
; 检测到内容里有网址
RegExMatch 源字符 "[a-zA-Z]+:\/\/"
#act

增加正则分解捕获NPC命令:RegExSplitCapture 源字符 查找表达式
匹配的字符串数量在:<$STR(M_MATCHED_CNT)>
匹配的字符串保存在:<$STR(S_MATCHED_STRS[n]> // n是数字,在0至“<$STR(M_MATCHED_CNT)> - 1”之间
分解后剩余的字符串数量在:<$STR(M_SPLIT_CNT)> //“分解后剩余的字符串”指不包含匹配字符串的剩余部分,比如源字符是:左中右,按表达式“中”分解后,剩余字符串是:左和右(数量2),匹配字符串是:中(数量1)
分解后剩余的字符串保存在:<$STR(S_SPLIT_STRS[n]> // n是数字,在0至“<$STR(M_SPLIT_CNT)> - 1”之间
例:
#act
; <$STR(M_MATCHED_CNT)>将等于2
; <$STR(S_MATCHED_STRS[0])>将等于:123
; <$STR(S_MATCHED_STRS[1])>将等于:456
; <$STR(M_SPLIT_CNT)>将等于3
; <$STR(S_SPLIT_STRS[0])>将等于:左
; <$STR(S_SPLIT_STRS[1])>将等于:中
; <$STR(S_SPLIT_STRS[2])>将等于:右
RegExSplitCapture 左123中456右 [0-9]+
====================================
增加正则替换字符NPC命令:RegExReplace S1 查找表达式 替换字符 替换次数(默认1次) // 使用正则表达式方式,在S1中按“查找表达式”查找,找到后替换为“替换字符”,结果还是在S1中  // 相关资料可参考https://www.runoob.com/regexp/regexp-tutorial.html
见下面例子
#if
True
#Act
Mov S11 强化圣战头盔|4,坚硬圣战头盔|5,破魔圣战头盔|6,嗜血圣战头盔|7,+装备碎片|10+原质晶石|0

;替换S11变量的所有|符号为* (强化圣战头盔*4,坚硬圣战头盔*5,破魔圣战头盔*6,嗜血圣战头盔*7,+装备碎片*10+原质晶石*0)

StringReplace S11 | *

;复制S12 S13都为S11的值。方便下面分隔
Mov S12 <$Str(S11)>
Mov S13 <$Str(S11)>

;删除S12 第一个"+"以及后面的所有内容或地S12的内容为 (强化圣战头盔*4,坚硬圣战头盔*5,破魔圣战头盔*6,嗜血圣战头盔*7,)
RegExReplace S12 "[+].*" ""
;获得S12变量的目前字符长度。以便分隔出来后面的S13的内容
GetStrLengTh $Str(S12) M11
;删除S13 从第一个字符到S12的最后一个字符。即得到 S13 的内容为 (+装备碎片*10+原质晶石*0)
Dec S13 1 <$STR(M11)>

;使用"+"号分隔S13的内容.这里要注意的是"[+]"里面的"+"为正常字符。"[+]"后面的+为正则特殊符号。具体使用方法可参照正则说明书。
RegExSplitCapture <$Str(S13)> "[+]+"
;因为第一个"+"号前面没有内容,所以获得以下结果


;<$STR(S_SPLIT_STRS[0])>= ""

;<$STR(S_SPLIT_STRS[1])>= 装备碎片*10

;<$STR(S_SPLIT_STRS[2])>= 原质晶石*0

;<$STR(M_SPLIT_CNT)> = 3

;因为<$STR(M_SPLIT_CNT)>为引擎内置变量。 每次使用正则拆分都会获取不一样的数据。所以这里做下赋值

Mov M数据数量 <$STR(M_SPLIT_CNT)>


;开始倒叙循环。因为<$STR(S_SPLIT_STRS[0])>下标从0开始的。后面又是检测循环次数大于等于0继续循环。 所以这里初始变量为参数1=M循环次数=3-1 参数2=检测循环次数大于等于0继续循环。 参数3=每次循环 M循环次数减1
#For (M循环次数 = M数据数量 - 1, M循环次数 ? 0, M循环次数 - 1)
#if
True
#Act
Sendmsg 7 需要材料<$LoopCursor>:<$STR(S_SPLIT_STRS[<$LoopCursor>])>



#if
CompVal <$LoopCursor> = 1
#act
;上面说了。因为<$STR(S_SPLIT_STRS[0])>为"" 所以到1的时间输出完。就直接跳出循环
BreakLoop

#~For

#if
True
#Act
;使用","号分隔S12的内容.这里要注意的是"[,]"里面的","为正常字符。"[,]"后面的+为正则特殊符号。具体使用方法可参照正则说明书。
RegExSplitCapture <$Str(S12)> "[,]+"

;因为最后一个个","号前面没有内容,所以获得以下结果


;<$STR(S_SPLIT_STRS[0])>= 强化圣战头盔*4

;<$STR(S_SPLIT_STRS[1])>= 坚硬圣战头盔*5

;<$STR(S_SPLIT_STRS[2])>= 破魔圣战头盔*6

;<$STR(S_SPLIT_STRS[3])>= 嗜血圣战头盔*7

;<$STR(S_SPLIT_STRS[4])>= ""

;<$STR(M_SPLIT_CNT)> = 5


;因为已知最后一个","后面是没有数据的。所以为了不输出空的数据。这里可以直接先给数据数量-1
Mov M数据数量 <$STR(M_SPLIT_CNT)>
Dec M数据数量 1


;开始正序循环。因为<$STR(S_SPLIT_STRS[0])>下标从0开始的。所以这里初始变量参数1=M循环次数为0. 参数2=检测M循环次数 < M数据数量继续循环。 参数3=每次循环 M循环次数加1
#For (M循环次数 = 0, M循环次数 < M数据数量, M循环次数 + 1)
#if
True
#Act
;每次循环输出结果。这里也可以直接拆分字符。然后用来计算等操作。
Sendmsg 7 合成结果<$Str(M循环次数)>:<$STR(S_SPLIT_STRS[<$Str(M循环次数)>])>
#~For
上传梦想,下载希望,为传奇爱好者添砖加瓦!
世界上能用金钱兑换时间的机会不多,这里就有一个!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
全国统一客服QQ
QQ:15656018

24x7小时免费咨询

  • 官方在线客服

    QQ客服:小西

    点击交谈

    QQ客服:良子

    点击交谈

    QQ客服:闵月

    点击交谈
  • 上海市虹口区海伦中心B座4F4055-4056室

  • 手机查找资源更方便

    手机扫码查看手机版

    手机查找资源更方便

  • 传奇QQ群

    扫一扫关注传奇Q群

    加入传奇QQ群

传奇游戏资源分享基地 gm下载站 ©2010-2024 传奇版本网站传奇游戏源码资源下载中心( 鄂ICP备2024043260号-1 )网站地图