行会竞价收人脚本的核心逻辑是:玩家缴纳竞价货币,系统记录当前最高出价行会;竞价时间结束后,出价最高的行会获得收人资格或奖励。HERO引擎本身没有固定“行会竞价”专用命令,完整实现需要依靠行会判断、货币检测、自定义变量、倒计时和公告组合完成。
一、脚本运行结构
竞价收人脚本通常分为四段:
NPC入口:玩家打开竞价界面,查看当前最高出价。
出价检测:检测玩家所在行会、货币数量、是否已出价。
最高价记录:使用全局变量记录当前最高出价和对应行会。
倒计时结算:竞价结束后公布获胜行会,并发放奖励或收人资格。
二、NPC主入口脚本
[@main]
IF
CHECKGUILD
ACT
GOTO @查看竞价
ELSESAY
你还没有加入行会,无法参与竞价收人。\
<离开/@exit>
[@查看竞价]
SAY
当前行会竞价收人活动正在进行。\
当前最高出价行会:<STR(GUILDBIDNAME)>\
当前最高出价:<STR(GUILDBIDPRICE)>元宝\
剩余时间:<STR(BIDTIME)>秒\
\
<出价/@出价界面>\
<离开/@exit>
三、出价界面脚本
[@出价界面]
SAY
请输入你要为行会出价的元宝数量。\
每次出价必须高于当前最高出价。\
\
<出价100元宝/@出价100>\
<出价500元宝/@出价500>\
<出价1000元宝/@出价1000>\
<返回/@main>\
<离开/@exit>
四、出价检测脚本
[@出价100]
IF
CHECKGUILD
LARGE 100 <GUILDBIDPRICE>
CHECKGAMEGOLD 100
ACT
TAKE GAMEGOLD 100
MOV <GUILDBIDPRICE> 100
MOV <GUILDBIDNAME> <GUILDNAME>
SENDMSG 0 【行会竞价】<GUILDNAME>出价100元宝,成为当前最高出价行会!
GOTO @重置倒计时
ELSESAY
出价失败,请确认元宝数量是否足够,或出价是否高于当前最高价。
[@出价500]
IF
CHECKGUILD
LARGE 500 <GUILDBIDPRICE>
CHECKGAMEGOLD 500
ACT
TAKE GAMEGOLD 500
MOV <GUILDBIDPRICE> 500
MOV <GUILDBIDNAME> <GUILDNAME>
SENDMSG 0 【行会竞价】<GUILDNAME>出价500元宝,成为当前最高出价行会!
GOTO @重置倒计时
ELSESAY
出价失败,请确认元宝数量是否足够,或出价是否高于当前最高价。
[@出价1000]
IF
CHECKGUILD
LARGE 1000 <GUILDBIDPRICE>
CHECKGAMEGOLD 1000
ACT
TAKE GAMEGOLD 1000
MOV <GUILDBIDPRICE> 1000
MOV <GUILDBIDNAME> <GUILDNAME>
SENDMSG 0 【行会竞价】<GUILDBIDNAME>出价1000元宝,成为当前最高出价行会!
GOTO @重置倒计时
ELSESAY
出价失败,请确认元宝数量是否足够,或出价是否高于当前最高价。
五、倒计时控制脚本
[@重置倒计时]
IF
ACT
MOV <BIDTIME> 300
BREAK
[@竞价倒计时]
IF
LARGE <BIDTIME> 0
ACT
DEC <BIDTIME> 1
GOTO @竞价倒计时
ELSEACT
GOTO @竞价结算
六、竞价结算脚本
[@竞价结算]
IF
LARGE <GUILDBIDPRICE> 0
ACT
SENDMSG 0 【行会竞价】竞价结束!<GUILDBIDNAME>以<STR(GUILDBIDPRICE)>元宝获得收人资格!
GOTO @发放奖励
ELSESAY
SENDMSG 0 【行会竞价】本次竞价无人出价,活动结束。
BREAK
[@发放奖励]
IF
ACT
GUILDADDPOINT <GUILDBIDNAME> 1000
SENDMSG 0 【行会竞价】<GUILDBIDNAME>获得行会积分奖励!
MOV <GUILDBIDPRICE> 0
MOV <GUILDBIDNAME> 无
MOV <BIDTIME> 0
BREAK
如果引擎不支持 GUILDADDPOINT,可改为给行会成员发放道具、元宝或经验。
七、行会成员奖励写法
[@发放成员奖励]
IF
ACT
GIVEGUILDMEMBER <GUILDBIDNAME> 竞价奖励券 1
SENDMSG 0 【行会竞价】<GUILDBIDNAME>所有成员获得竞价奖励券!
BREAK
部分HERO引擎可能没有直接给全行会发道具的命令,这种情况下可以在玩家上线或进入地图时检测行会名称,再发放奖励。
[@上线检测奖励]
IF
EQUAL <GUILDNAME> <GUILDBIDNAME>
CHECKITEM 竞价奖励券 0
ACT
GIVE 竞价奖励券 1
SENDMSG 6 你的行会在竞价收人活动中获胜,获得奖励券。
BREAK
八、防止重复出价
为避免同一行会反复小额加价,可以限制每次加价幅度。
[@加价检测]
IF
LARGE N1 <GUILDBIDPRICE>
SMALL N1 <GUILDBIDPRICE> + 100
ACT
SENDMSG 6 每次加价至少100元宝。
BREAK
ELSEACT
GOTO @执行出价
九、活动开启与关闭
活动可以通过GM命令或定时脚本开启。
[@开启竞价]
IF
ISADMIN
ACT
MOV <GUILDBIDPRICE> 0
MOV <GUILDBIDNAME> 无
MOV <BIDTIME> 300
SENDMSG 0 【行会竞价】行会竞价收人活动已开启,请各行会前往NPC出价!
GOTO @竞价倒计时
ELSESAY
你没有权限开启该活动。
[@关闭竞价]
IF
ISADMIN
ACT
MOV <GUILDBIDPRICE> 0
MOV <GUILDBIDNAME> 无
MOV <BIDTIME> 0
SENDMSG 0 【行会竞价】行会竞价收人活动已强制结束。
BREAK
十、调试要点
<GUILDBIDPRICE>、<GUILDBIDNAME>、<BIDTIME> 必须使用全局变量,避免使用个人变量。
CHECKGUILD 用于判断玩家是否拥有行会,具体命令以当前HERO引擎M2帮助为准。
GAMEGOLD 名称需与服务器货币名称一致,部分版本使用元宝、金币或自定义货币。
行会名称变量可能为 <GUILDNAME>、<GuildName> 或引擎自定义变量,需实际测试。
倒计时结束后必须清空最高价和最高价行会,否则会影响下一轮活动。
全行会奖励发放需确认引擎是否支持行会批量发放命令。
脚本修改后需要重新加载或重启服务端。
如果玩家出价后不扣除货币,优先检查 TAKE GAMEGOLD 是否与服务器货币字段一致。如果行会名称不显示,检查行会变量写法。如果倒计时不生效,确认全局变量是否在重置后被正确递减。
传奇HERO引擎行会竞价收人脚本:NPC交互、出价检测、最高价记录、倒计时结算与奖励发
来源:
作者:
点击:

