传奇合成脚本“抽奖”不会写?手把手教你设置随机概率和随机奖励

来源: 作者: 点击:
兄弟,你这个合成脚本思路挺好!想做成抽卡那种效果:先抽“成功/失败”,成功了再抽“给什么装备”。现在卡在合成几率.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)。

进游戏测试!准备好金币和黑铁剑,看看概率是不是你设置的,奖品是不是随机的。

搞定了!按这个步骤来,你的随机合成抽奖功能就能完美运行了。哪里没弄明白再问!
[顶部]