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

来源: 作者: 点击:
兄弟,你这个合成脚本思路挺好!想做成抽卡那种效果:先抽“成功/失败”,成功了再抽“给什么装备”。现在卡在 合成几率.txt 和 合成品.txt 这两个文件到底该咋写,对吧?别急,你脚本的结构是对的,只需要按规则把这两个文本文件的内容填好就行。

核心原理:
GetRandomName 命令: 这是关键!它从一个文本文件里随机抽一行内容出来,然后塞到你指定的变量里(比如 S1, S2)。

合成几率.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 必须正确!确保文件存在。

最终完整脚本逻辑流程梳理(让你不蒙圈):
玩家点 <倚天剑/@倚天剑合成>: 进入合成界面。

执行 #ACT GetRandomName ..\QuestDiary\几率控制\合成几率.txt S1:

引擎跑去打开 合成几率.txt。

从里面随便捞一行内容出来(比如“成功”)。

把捞到的这行内容存进变量 S1。现在 S1 = "成功"。
执行 #ACT GetRandomName ..\QuestDiary\几率控制\合成品.txt S2:

引擎跑去打开 合成品.txt。

从里面随便捞一行内容出来(比如“屠龙刀”)。

把捞到的这行内容存进变量 S2。现在 S2 = "屠龙刀"。
检查条件 #IF checkgamegold > 4999, checkitem 黑铁剑 1, CompareText <$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="屠龙刀",就给了一把屠龙刀!

sendmsg 0 恭喜:合成<STR(S2)>成功!: 全服发红字公告 “恭喜:合成屠龙刀成功!” (<STR(S2)> 显示为 “屠龙刀”)。

(结束)
如果条件不满足 (#elseact 执行):

sendmsg 6 合成失败或者条件不足!: 给玩家自己发一条蓝字消息 “合成失败或者条件不足!”。

goto @main: 跳转回合成开始的界面 (@main) 让玩家再点。

(结束)

你需要注意的坑!
文件名和路径: ..\QuestDiary\几率控制\ 这个路径必须存在!合成几率.txt 和 合成品.txt 这两个文件名必须和你脚本里写的 完全一致(包括大小写?看引擎,一般Windows不区分,但最好保持一致)。最好用英文/数字路径和文件名,避免中文乱码。

文本文件编码: 用 记事本 或者 Notepad++ 保存这两个文件。保存时选择 ANSI 编码!不要用 UTF-8!否则引擎读中文内容会乱码,导致 CompareText 永远不等于 “成功” 或者装备名字匹配不上。

装备名称: 合成品.txt 里的装备名字,务必去 StdItems.DB 数据库里 复制粘贴 Name 字段的值!自己打很容易打错。

概率控制: 修改概率就是修改那两个文本文件里的 行数比例。想改概率?直接打开文件增删行就行!改完 重启引擎/M2Server 生效(有些引擎支持重新加载脚本,重启最保险)。

空格和换行: 合成几率.txt 和 合成品.txt 里,每一行就是一个结果选项。行首和行尾不要有多余的空格!一行写完按回车换行。

操作步骤总结:
在服务器上找到目录:..\QuestDiary\几率控制\ (没有就自己创建这个文件夹)。

在 几率控制 文件夹里:

新建 合成几率.txt: 按你想要的概率写入多行 成功 和 失败。

新建 合成品.txt: 按你想要的奖品概率写入多行 完全正确的装备名称(从数据库里复制)。

保存文件,编码选 ANSI!
启动或重启传奇服务端引擎(M2Server)。

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

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