懒得动手,也没有思路,悬赏个脚本!
要求:全服有30+地图,每个地图里有个传送石头,第一次去点一下就可以激活该地图的传送石头,然后下次就可以直接传送到这里。
没有激活的地图,传送列表里面将无法显示!
脚本要求:不会又长又臭就行,最好是用文本保存变量或者T变量最好。
感谢@czy7812 的思路,虽然他的脚本不能直接用,但是还是参考了他的脚本思路。
下面把我优化后的脚本贴出来给大家参考一下,人物出生必须先添加一段脚本才可以:
AddTextListEx ..\\QuestDiary\\传送坐标\\<$USERNAME>传送.txt <$MapTitle>:<$MAP>:<$X>:<$Y>
所有传送石头的统一脚本:
[@main]
#IF
#ACT
goto @ass
[@ass]
#IF
GetStringPosEX ..\\QuestDiary\\传送坐标\\<$USERNAME>传送.txt <$MapTitle> N1 S2 0
#ACT
goto @djksafh
#ELSEACT
AddTextListEx ..\\QuestDiary\\传送坐标\\<$USERNAME>传送.txt <$MapTitle>:<$MAP>:<$X>:<$Y>
goto @ass
[@djksafh]
#IF
#ACT
GetStringPos ..\\QuestDiary\\传送坐标\\<$USERNAME>传送.txt 和平客栈:0116:10:14
INC N0 1
#IF
#ACT
MOV N1 0
MOV P1 0
MOV S$内容 \"\"
LOOPGOTO @显示 <$STR(N0)>
#SAY
传送祭坛可以传送你已经抵达的地方,瞬间即达:\\
<$STR(S$内容)>
[@显示]
#IF
#ACT
GetListString ..\\QuestDiary\\传送坐标\\<$USERNAME>传送.TXT <$STR(N1)> S0
TextSplit : <$STR(S0)> S1
INC S$内容 <
INC S$内容 <$STR(S1)>/@移动(<$STR(S2)>,<$STR(S3)>,<$STR(S4)>)>
INC N1 1
INC P1 1
#IF
EQUAL P1 5
#ACT
MOV P1 0
INC S$内容 \\
#ELSEACT
INC S$内容 \" \"
[@移动]
#IF
#ACT
MAPMOVE <$SCRIPTPARAM1> <$SCRIPTPARAM2> <$SCRIPTPARAM3> 2
复制代码 不知道下图这样满意不满意?有多少个显示多少个,没有显示还没标记,每5个分行:
脚本如下:
1.添加坐标的脚本:
[@main]
#IF
#ACT
MOV S$名称 盟重
MOV N$坐标X 110
MOV N$坐标Y 150
#IF
GetStringPosEX ..\\QuestDiary\\<$USERNAME>传送.txt <$STR(S$名称)> N1 S2 0
#ACT
SENDMSG 6 坐标已存在
#ELSEACT
AddTextListEx ..\\QuestDiary\\<$USERNAME>传送.txt <$STR(S$名称)>:<$MAP>:<$STR(N$坐标X)>:<$STR(N$坐标Y)>
SENDMSG 6 坐标添加完成
2.显示移动的脚本:
[@main]
#IF
#ACT
GetTextLineCount ..\\QuestDiary\\<$USERNAME>传送.txt N$行数
#IF
LARGE N$行数 0
#ELSEACT
MOV S$内容 你还没做任何标记,无法传送。
#ACT
MOV N1 0
MOV P1 0
MOV S$内容 \"\"
LOOPGOTO @显示 <$STR(N$行数)>
#SAY
传送祭坛可以传送你已经抵达的地方,瞬间即达:\\
<$STR(S$内容)>
[@显示]
#IF
#ACT
GetListString ..\\QuestDiary\\<$USERNAME>传送.TXT <$STR(N1)> S0
TextSplit : <$STR(S0)> S1
INC S$内容 <
INC S$内容 <$STR(S1)>/@移动(<$STR(S2)>,<$STR(S3)>,<$STR(S4)>)>
INC N1 1
INC P1 1
#IF
EQUAL P1 5
#ACT
MOV P1 0
INC S$内容 \\
#ELSEACT
INC S$内容 \" \"
[@移动]
#IF
#ACT
MAPMOVE <$SCRIPTPARAM1> <$SCRIPTPARAM2> <$SCRIPTPARAM3> 2 [@main]
随机激活地图:<激活/@激活>\\ \\
直接传送地图:<传送/@传送>
[@激活]
#IF
#ACT
MOVR N1 1 31
MOV T1 地图<$STR(N1)>
MESSAGEBOX 成功激活了<$STR(N1)>号地图!
BREAK
[@传送]
#IF
#ACT
MAP <$STR(T1)>
BREAK 菜鸟会读书 发表于 2022-6-11 12:33 [@main]
随机激活地图:\\ \\
直接传送地图:
简单高效啊. 菜鸟会读书 发表于 2022-6-11 12:33 [@main]
随机激活地图:\\ \\
直接传送地图:
是不是理解错了呀 不是随机的
[@传送石头]
传送祭坛可以传送你已经抵达的地方,瞬间即达\\
<$STR(S21)> <$STR(S22)> <$STR(S23)> <$STR(S24)> <$STR(S25)> \\
<$STR(S26)> <$STR(S27)> <$STR(S28)> <$STR(S29)> <$STR(S30)> \\
<$STR(S31)> <$STR(S32)> <$STR(S33)> <$STR(S34)> <$STR(S35)> \\
<$STR(S36)> <$STR(S37)> <$STR(S38)> <$STR(S39)> <$STR(S40)> \\
<$STR(S41)> <$STR(S42)> <$STR(S43)> \\
复制代码
补充内容 (2022-6-11 13:54):
是不是理解错了呀 不是随机的,我要弄个类似传送点的 每个地图都有一个传送点,但是没去过的不显示,只有去过一次且点击过这个传送点的才会显示,这个是我写的一部分 但是比较麻烦,所以想弄个简单高效一点的 建议你玩一下暗黑 wzs221122 发表于 2022-6-11 13:52 是不是理解错了呀 不是随机的
你这挺简单的啊,每个角色弄个文本文件,每点过一个传送点就把坐标加进去。然后点开传送石的时候就读取并显示这个文件上面记录的所有坐标,点击就过去了啊。 [@传送石头]
传送祭坛可以传送你已经抵达的地方,瞬间即达\\
<地图一/@传送(<$STR(T1)>)> <地图二/@传送(<$STR(T2)>)> <地图三/@传送(<$STR(T3)>)>\\
[@传送]
#IF
not EQUAL <$SCRIPTPARAM1>
#ACT
map <$SCRIPTPARAM1> <$SCRIPTPARAM2> <$SCRIPTPARAM3>
#ELSEACT
MESSAGEBOX 提示:你还没有激活此地图
BREAK
地图传送石头触发:
#IF
EQUAL T1
#ACT
MOV T1 <$MAP>,<$x>,<$y>
MESSAGEBOX 提示:你现在可以通过传送祭坛直达此地了
BREAK 如果你想要不显示未激活地图 就这样
[@传送石头]
#IF
not EQUAL T1
#ACT
MOV S$地图1 <地图一/@传送(<$STR(T1)>)>
#IF
not EQUAL T2
#ACT
MOV S$地图2 <地图二/@传送(<$STR(T2)>)>
#IF
not EQUAL T3
#ACT
MOV S$地图3 <地图二/@传送(<$STR(T3)>)>
#IF
#ACT
#SAY
传送祭坛可以传送你已经抵达的地方,瞬间即达\\
<$STR(S$地图1)> <$STR(S$地图2)> <$STR(S$地图3)> \\
[@传送]
#IF
not EQUAL <$SCRIPTPARAM1>
#ACT
map <$SCRIPTPARAM1> <$SCRIPTPARAM2> <$SCRIPTPARAM3>
#ELSEACT
MESSAGEBOX 提示:你还没有激活此地图
BREAK