汤团先生 发表于 2022-8-13 23:27:14

【汤团先生】脚本系列-师父角瑟显示XX的师父脚本

本帖最后由 汤团先生 于 2022-8-14 09:39 编辑

引擎:白嫖V8+G63
脚本功能:在师父角瑟上显示XX的师父。
主要亮点:多师徒系统导致师父角瑟正常不再显示XX的师父,该脚本可以显示全部徒弟的师父。(以我的3个徒弟系统为例)
示意图:(3个徒弟是正常显示的,我为验证出师,特意出师了一个徒弟,截图上就剩2个徒弟)


1、脚本在登录脚本里面触发:
[@Login]

#IF
NOT ISDUMMY
#ACT
#CALL [\功能脚本\登录触发.txt] @称号设置


2、称号设置是

[@称号设置]
{
;s104 会员称号,你可以不用管
#IF
#ACT
;S105 保存全部徒弟列表
GetMasterList S105

#IF
;徒弟列表不为空,即至少有一个徒弟
NOT EQUAL <$STR(S105)>
#ACT
;下面三行是精髓:徒弟列表包含了XXX(大徒弟)   XXX(二徒弟)   XXX(三徒弟),
;所以要使用秘传方法将徒弟列表里面的三个数据分配给三个变量:<$STR(S$大徒弟)> <$STR(S$二徒弟)> <$STR(S$三徒弟)>
;使用字符串分割进行分配
MOV S$无用显示
SetStringBlank <$STR(S$无用显示)> 1 0
EXTRACTSTRING <$STR(S$无用显示)> <$STR(S105)> <$STR(S$大徒弟)> <$STR(S$二徒弟)> <$STR(S$三徒弟)>
;分配好后分别处理这3个变量
GOTO @徒弟处理

#IF
#ACT
DELAYGOTO 100 @最后称号设置

[@最后称号设置]
#IF
#ACT
SETRANKLEVELNAME%s\<$STR(S$大徒弟)>\<$STR(S$二徒弟)>\<$STR(S$三徒弟)>\<$STR(S104)>

[@徒弟处理]
#IF
;分配后的变量 <$STR(S$大徒弟)> 是类似xxx(大徒弟),得去掉后面的(大徒弟),使用DEC 配合字符串长度实现
NOT EQUAL <$STR(S$大徒弟)>
#ACT
;N108 保存的是字符串长度,同时也是最后一个)的字节数
TextLength <$STR(S$大徒弟)> N108
;N109 是前面第一个(的字节数,因为相差3个汉字,每个汉字2字节,所以N109比N108少7个字节
FORMULATION <$STR(N108)>-7 N109
DEC <$STR(S$大徒弟)> <$STR(N109)> <$STR(N108)>
;截取出真正的徒弟名字后,再加上 的师父这3个字,大功告成,剩下的2个变量一样的处理方法
MOV S$大徒弟 <$STR(S$大徒弟)>的师父

#IF
NOT EQUAL <$STR(S$二徒弟)>
#ACT
TextLength <$STR(S$二徒弟)> N108
FORMULATION <$STR(N108)>-7 N109
DEC <$STR(S$二徒弟)> <$STR(N109)> <$STR(N108)>
MOV S$二徒弟 <$STR(S$二徒弟)>的师父

#IF
NOT EQUAL <$STR(S$三徒弟)>
#ACT
TextLength <$STR(S$三徒弟)> N108
FORMULATION <$STR(N108)>-7 N109
DEC <$STR(S$三徒弟)> <$STR(N109)> <$STR(N108)>
MOV S$三徒弟 <$STR(S$三徒弟)>的师父
}


威尔 发表于 2022-8-14 09:33:21

版主出品必属精品

yangfengke 发表于 2022-8-18 15:17:45


我也是自己写的脚本。
赶紧把“高质量”几个字擦了,别到时候啪啪打脸了。。

wtw120 发表于 2024-10-23 00:16:56

版主出品必属精品

cq5388309 发表于 2024-10-29 11:07:37

本帖最后由 cq5388309 于 2024-10-29 11:08 编辑

思路不错,特别是那个空格的处理
用数组,稍微改进了一下,多多指教:
[@称号设置]
{

#IF
#ACT
GetMasterList S105

#IF
NOT EQUAL <$STR(S105)>
#ACT
MOV S$无用显示
SetStringBlank <$STR(S$无用显示)> 1 0
TextReplace <$STR(S105)> <$STR(S$无用显示)> , S$总徒弟名称处理1
GetMasterCount P1
MOV L$徒弟名称后缀 [(大徒弟),(二徒弟),(三徒弟),(四徒弟),(五徒弟),(六徒弟),(七徒弟),(八徒弟),(九徒弟),(十徒弟),(十一徒弟),(十二徒弟),(十三徒弟),(十四徒弟)]
MOV N$徒弟循环次数 0
MOV S$徒弟称号显示
WHILE N$徒弟循环次数 < <$STR(P1)>
DEC <$STR(S$总徒弟名称处理1)> <$STR(L$徒弟名称后缀[<$STR(N$徒弟循环次数)>])>
MOV L$徒弟名称集合 [<$STR(S$总徒弟名称处理1)>]
INC S$徒弟称号显示 \<$STR(L$徒弟名称集合[<$STR(N$徒弟循环次数)>])>的师父
INC N$徒弟循环次数 1
ENDWHILE
SETRANKLEVELNAME%s<$STR(S$徒弟称号显示)>\<$STR(S104)>

}
页: [1]
查看完整版本: 【汤团先生】脚本系列-师父角瑟显示XX的师父脚本