兄弟,你这个合成脚本思路挺好!想做成抽卡那种效果:先抽“成功/失败”,成功了再抽“给什么装备”。现在卡在合成几率.txt和合成品.txt这两个文件到底该咋写,对吧?别急,你脚本的结构是对的,只需要按规则把这两个文本文件的内容填好就行。
核心原理:
GetRandomName命令:这是关键!它从一个文本文件里随机抽一行内容出来,然后塞到你指定的变量里(比如S1S2)。
合成几率.txt:这个文件就存放关于本次合成是否成功的判定结果。通常就是几个“成功”和“失败”的文本行。引擎会随机抽其中一行。
合成品.txt:这个文件存放如果合成成功了,玩家能得到什么具体奖品的名字。引擎也会在这里随机抽一行。
<STR(S1)>/<STR(S2)>:这就是读取变量S1和S2当前值的格式。S1存的是从“合成几率”文件里抽出来的结果(比如"成功"),S2存的是从“合成品”文件里抽出来的奖品名(比如"倚天剑")。
关键问题解答:合成几率.txt和合成品.txt怎么写?
合成几率.txt(控制成功/失败)
作用:决定这次合成是走#act(成功)还是#elseact(失败)。
写法:
创建一个纯文本文件,名字就叫合成几率.txt。
文件内容,一行就写一个“判定结果”!
你需要多少行就写多少行。
想控制成功概率,就调整文件里“成功”和“失败”这两行各自的数量比例。
示例(实现50%成功率):
成功
成功
失败
失败
这个文件有4行:2行“成功”,2行“失败”。引擎每次随机抽1行。抽中“成功”的概率是2/4=50%。
示例(实现20%成功率):
成功
失败
失败
失败
失败
这个文件有5行:1行“成功”,4行“失败”。抽中“成功”的概率是1/5=20%。
重要提示:
脚本里CompareText<$STR(S1)>成功就是检查抽到的这一行内容是不是等于“成功”这两个字。
所以文件里必须保证有一行或多行内容是完整等于“成功”这两个字的(不能多空格或其他字符)。同样,“失败”也需要写对。
文件名路径..\QuestDiary\几率控制\合成几率.txt必须正确!确保这个文件确实放在服务器上的这个位置。
合成品.txt(控制成功后给的奖品)
作用:当合成成功后,玩家具体能得到哪一件装备(比如随机给倚天剑、屠龙刀、裁决中的一种)。
写法:
创建一个纯文本文件,名字就叫合成品.txt。
文件内容,一行就写一个在数据库中真实存在的、完整的装备名称!
你想随机出几种装备,就写几行。
想控制某些装备出现概率高,就把它的名字多写几次。
示例(随机产出倚天剑、屠龙刀或裁决之杖):
倚天剑
屠龙刀
裁决之杖
文件里写了3件不同的装备。引擎抽中每件的概率都是1/3(约33.3%)。
示例(让倚天剑更容易出,比如50%概率):
倚天剑
倚天剑
屠龙刀
裁决之杖
文件里写了4行。抽中“倚天剑”的概率是2/4=50%,抽中“屠龙刀”和“裁决之杖”各是1/4=25%。
重要提示:
脚本里give<$STR(S2)>1就是把抽出来的这一行文本的内容当作装备名发给玩家。
装备名字必须完全正确!必须和StdItems.DB数据库里这件装备的Name字段一模一样!写错一个字(比如多一个空格、少一个字、用昵称)都会导致发装备失败!
文件名路径..\QuestDiary\几率控制\合成品.txt必须正确!确保文件存在。
最终完整脚本逻辑流程梳理(让你不蒙圈):
玩家点<倚天剑/@倚天剑合成>:进入合成界面。
执行#ACTGetRandomName..\QuestDiary\几率控制\合成几率.txtS1:
引擎跑去打开合成几率.txt。
从里面随便捞一行内容出来(比如“成功”)。
把捞到的这行内容存进变量S1。现在S1="成功"。
执行#ACTGetRandomName..\QuestDiary\几率控制\合成品.txtS2:
引擎跑去打开合成品.txt。
从里面随便捞一行内容出来(比如“屠龙刀”)。
把捞到的这行内容存进变量S2。现在S2="屠龙刀"。
检查条件#IFcheckgamegold>4999checkitem黑铁剑1CompareText<$STR(S1)>成功:
玩家有5000+金币?(>4999)
玩家背包有1把“黑铁剑”?
变量S1里存的内容是否等于“成功”?(CompareText<$STR(S1)>成功比较的就是S1变量的值是不是"成功")
如果上面三个条件都满足:执行#act部分。
如果上面三个条件有任何一个不满足:执行#elseact部分。
如果条件都满足(#act执行):
gamegold-5000:扣掉玩家5000金币。
take黑铁剑1:收走玩家背包里的1把黑铁剑。
give<$STR(S2)>1:把变量S2里的内容当作物品名给玩家1个。此时S2="屠龙刀",就给了一把屠龙刀!
sendmsg0恭喜:合成<STR(S2)>成功!:全服发红字公告“恭喜:合成屠龙刀成功!”(<STR(S2)>显示为“屠龙刀”)。
(结束)
如果条件不满足(#elseact执行):
sendmsg6合成失败或者条件不足!:给玩家自己发一条蓝字消息“合成失败或者条件不足!”。
goto@main:跳转回合成开始的界面(@main)让玩家再点。
(结束)
你需要注意的坑!
文件名和路径:..\QuestDiary\几率控制\这个路径必须存在!合成几率.txt和合成品.txt这两个文件名必须和你脚本里写的完全一致(包括大小写?看引擎,一般Windows不区分,但最好保持一致)。最好用英文/数字路径和文件名,避免中文乱码。
文本文件编码:用记事本或者Notepad++保存这两个文件。保存时选择ANSI编码!不要用UTF-8q则引擎读中文内容会乱码,导致CompareText永远不等于“成功”或者装备名字匹配不上。
装备名称:合成品.txt里的装备名字,务必去StdItems.DB数据库里复制粘贴Name字段的值!自己打很容易打错。
概率控制:修改概率就是修改那两个文本文件里的行数比例。想改概率?直接打开文件增删行就行!改完重启引擎/M2Server生效(有些引擎支持重新加载脚本,重启最保险)。
空格和换行:合成几率.txt和合成品.txt里,每一行就是一个结果选项。行首和行尾不要有多余的空格!一行写完按回车换行。
操作步骤总结:
在服务器上找到目录:..\QuestDiary\几率控制\(没有就自己创建这个文件夹)。
在几率控制文件夹里:
新建合成几率.txt:按你想要的概率写入多行成功和失败。
新建合成品.txt:按你想要的奖品概率写入多行完全正确的装备名称(从数据库里复制)。
保存文件,编码选ANSI!
启动或重启传奇服务端引擎(M2Server)。
进游戏测试!准备好金币和黑铁剑,看看概率是不是你设置的,奖品是不是随机的。
搞定了!按这个步骤来,你的随机合成抽奖功能就能完美运行了。哪里没弄明白再问!
核心原理:
GetRandomName命令:这是关键!它从一个文本文件里随机抽一行内容出来,然后塞到你指定的变量里(比如S1S2)。
合成几率.txt:这个文件就存放关于本次合成是否成功的判定结果。通常就是几个“成功”和“失败”的文本行。引擎会随机抽其中一行。
合成品.txt:这个文件存放如果合成成功了,玩家能得到什么具体奖品的名字。引擎也会在这里随机抽一行。
<STR(S1)>/<STR(S2)>:这就是读取变量S1和S2当前值的格式。S1存的是从“合成几率”文件里抽出来的结果(比如"成功"),S2存的是从“合成品”文件里抽出来的奖品名(比如"倚天剑")。
关键问题解答:合成几率.txt和合成品.txt怎么写?
合成几率.txt(控制成功/失败)
作用:决定这次合成是走#act(成功)还是#elseact(失败)。
写法:
创建一个纯文本文件,名字就叫合成几率.txt。
文件内容,一行就写一个“判定结果”!
你需要多少行就写多少行。
想控制成功概率,就调整文件里“成功”和“失败”这两行各自的数量比例。
示例(实现50%成功率):
成功
成功
失败
失败
这个文件有4行:2行“成功”,2行“失败”。引擎每次随机抽1行。抽中“成功”的概率是2/4=50%。
示例(实现20%成功率):
成功
失败
失败
失败
失败
这个文件有5行:1行“成功”,4行“失败”。抽中“成功”的概率是1/5=20%。
重要提示:
脚本里CompareText<$STR(S1)>成功就是检查抽到的这一行内容是不是等于“成功”这两个字。
所以文件里必须保证有一行或多行内容是完整等于“成功”这两个字的(不能多空格或其他字符)。同样,“失败”也需要写对。
文件名路径..\QuestDiary\几率控制\合成几率.txt必须正确!确保这个文件确实放在服务器上的这个位置。
合成品.txt(控制成功后给的奖品)
作用:当合成成功后,玩家具体能得到哪一件装备(比如随机给倚天剑、屠龙刀、裁决中的一种)。
写法:
创建一个纯文本文件,名字就叫合成品.txt。
文件内容,一行就写一个在数据库中真实存在的、完整的装备名称!
你想随机出几种装备,就写几行。
想控制某些装备出现概率高,就把它的名字多写几次。
示例(随机产出倚天剑、屠龙刀或裁决之杖):
倚天剑
屠龙刀
裁决之杖
文件里写了3件不同的装备。引擎抽中每件的概率都是1/3(约33.3%)。
示例(让倚天剑更容易出,比如50%概率):
倚天剑
倚天剑
屠龙刀
裁决之杖
文件里写了4行。抽中“倚天剑”的概率是2/4=50%,抽中“屠龙刀”和“裁决之杖”各是1/4=25%。
重要提示:
脚本里give<$STR(S2)>1就是把抽出来的这一行文本的内容当作装备名发给玩家。
装备名字必须完全正确!必须和StdItems.DB数据库里这件装备的Name字段一模一样!写错一个字(比如多一个空格、少一个字、用昵称)都会导致发装备失败!
文件名路径..\QuestDiary\几率控制\合成品.txt必须正确!确保文件存在。
最终完整脚本逻辑流程梳理(让你不蒙圈):
玩家点<倚天剑/@倚天剑合成>:进入合成界面。
执行#ACTGetRandomName..\QuestDiary\几率控制\合成几率.txtS1:
引擎跑去打开合成几率.txt。
从里面随便捞一行内容出来(比如“成功”)。
把捞到的这行内容存进变量S1。现在S1="成功"。
执行#ACTGetRandomName..\QuestDiary\几率控制\合成品.txtS2:
引擎跑去打开合成品.txt。
从里面随便捞一行内容出来(比如“屠龙刀”)。
把捞到的这行内容存进变量S2。现在S2="屠龙刀"。
检查条件#IFcheckgamegold>4999checkitem黑铁剑1CompareText<$STR(S1)>成功:
玩家有5000+金币?(>4999)
玩家背包有1把“黑铁剑”?
变量S1里存的内容是否等于“成功”?(CompareText<$STR(S1)>成功比较的就是S1变量的值是不是"成功")
如果上面三个条件都满足:执行#act部分。
如果上面三个条件有任何一个不满足:执行#elseact部分。
如果条件都满足(#act执行):
gamegold-5000:扣掉玩家5000金币。
take黑铁剑1:收走玩家背包里的1把黑铁剑。
give<$STR(S2)>1:把变量S2里的内容当作物品名给玩家1个。此时S2="屠龙刀",就给了一把屠龙刀!
sendmsg0恭喜:合成<STR(S2)>成功!:全服发红字公告“恭喜:合成屠龙刀成功!”(<STR(S2)>显示为“屠龙刀”)。
(结束)
如果条件不满足(#elseact执行):
sendmsg6合成失败或者条件不足!:给玩家自己发一条蓝字消息“合成失败或者条件不足!”。
goto@main:跳转回合成开始的界面(@main)让玩家再点。
(结束)
你需要注意的坑!
文件名和路径:..\QuestDiary\几率控制\这个路径必须存在!合成几率.txt和合成品.txt这两个文件名必须和你脚本里写的完全一致(包括大小写?看引擎,一般Windows不区分,但最好保持一致)。最好用英文/数字路径和文件名,避免中文乱码。
文本文件编码:用记事本或者Notepad++保存这两个文件。保存时选择ANSI编码!不要用UTF-8q则引擎读中文内容会乱码,导致CompareText永远不等于“成功”或者装备名字匹配不上。
装备名称:合成品.txt里的装备名字,务必去StdItems.DB数据库里复制粘贴Name字段的值!自己打很容易打错。
概率控制:修改概率就是修改那两个文本文件里的行数比例。想改概率?直接打开文件增删行就行!改完重启引擎/M2Server生效(有些引擎支持重新加载脚本,重启最保险)。
空格和换行:合成几率.txt和合成品.txt里,每一行就是一个结果选项。行首和行尾不要有多余的空格!一行写完按回车换行。
操作步骤总结:
在服务器上找到目录:..\QuestDiary\几率控制\(没有就自己创建这个文件夹)。
在几率控制文件夹里:
新建合成几率.txt:按你想要的概率写入多行成功和失败。
新建合成品.txt:按你想要的奖品概率写入多行完全正确的装备名称(从数据库里复制)。
保存文件,编码选ANSI!
启动或重启传奇服务端引擎(M2Server)。
进游戏测试!准备好金币和黑铁剑,看看概率是不是你设置的,奖品是不是随机的。
搞定了!按这个步骤来,你的随机合成抽奖功能就能完美运行了。哪里没弄明白再问!

