传奇3K引擎行会竞价自动招人全脚本:掌门出价截标最高价入会等级职业防刷与机器人清标

来源: 作者: 点击:
行会竞价自动招人分四层。第一层掌门在竞价NPC出价,扣元宝或金币,记录最高行会名、当前最高价、最低入会等级、入会职业限制、截止标志。第二层普通玩家在招人NPC点加入,脚本校验无行会、等级达标、职业在允许列表、当前有中标行会,自动执行AddGuildMember把玩家加进中标行会。第三层用3K定时器或机器人做倒计时,到点自动截标,未到截止前允许继续加价。第四层机器人每日或每周清标,避免旧中标行会长期占着自动招人入口。3K不同子版本入会命令可能用AddGuildMember,也可能用ADDGUILDMEMBER,按所用M2命令帮助二选一替换;竞价变量用全局G变量或文本文件存,重启后靠SAVEVAR/LOADVAR恢复。

一、变量与文件规划

全局变量用G系列示例,实际按3K不冲突编号改:

G100竞价状态,0未开、1进行中、2已截标
G101当前最高价,单位按元宝或金币统一
G102最低加价幅度
G103最低入会等级
G104入会职业开关,0全职业、1战士、2法师、3道士,可扩展多职业位
G105中标行会开关,1有效、0无效
S1中标行会名
S2竞价公告文本
S3当前最高出价掌门名

文本文件放Envir\QuestDiary\行会竞价\,用于持久化:

最高价记录.txt写S1=行会名S3=掌门名G101=价格
G100=状态
招人名单.txt可选,记录自动入会日志,排错用
屏蔽行会.txt可选,禁止参与竞价的行会

机器人或NPC启动段用LOADVAR读这些文件;每次出价成功用SAVEVAR回写。纯G变量小退不丢但重启可能复位,重要竞价必须落文件。

二、竞价NPC掌门出价

Market_Def建“行会竞价官-0.txt”,Merchant按3K格式写地图号、坐标、范围、名称。脚本体:

[@main]
查看当前竞价状态/state
参与行会竞价出价/bid
设置入会等级要求/setlv
设置入会职业要求/setjob
修改竞价招人公告/setgg
管理本行会中标状态/mgr

[@state]
if

EQUALG1000
act

SENDMSG6当前无竞价,联系管理员开启或点出价开始。
elsesay

if

EQUALG1001
act

SENDMSG6竞价进行中,最高行会<S1>,最高价<G101>,最低入会等级<$G103>。
elsesay

SENDMSG6竞价已截标,当前中标行会<$S1>,招人按截标结果执行。

[@bid]
if

HAVEGUILD
ISGUILDMASTER
CHECKGAMEGOLD><$G101>
act

CALCVARG101+G102
GAMEGOLD-<$G101新增额按实际写>
MOVS1行会名变量权按3K取当前行会名
MOVS3<$USERNAME>
SETG1001
SETG1051
SAVEVARGLOBALG101..\QuestDiary\行会竞价\最高价记录.txt
SENDMSG0<S3>代表<S1>出价<$G101>,成为当前最高竞价行会。
elsesay

if

HAVEGUILD
ISGUILDMASTER
elsesay

SENDMSG6你不是行会掌门或无行会,无法参与竞价。
elsesay

if

CHECKGAMEGOLD<<G101>+<G102>
act

SENDMSG6元宝不足,出价需高于当前最高价且包含最低加价<$G102>。
elsesay

SENDMSG6出价条件不满足。

上面出价逻辑用通用伪写;3K若取当前行会名用专门命令,就替换MOVS1后的取值。掌门必须HAVEGUILD且ISGUILDMASTER,避免小弟乱出价。扣款前先比较“当前最高价+最低加价”,首次出价可设底价G101初始值、G102加价幅度。若用金币不用元宝,把CHECKGAMEGOLD、GAMEGOLD换成CHECKGOLD、GOLD相关命令。

三、输入最低等级与职业

用@@InPutInteger收等级,@@InPutString收公告,3K自动招人帖常用这两组输入命令。

[@setlv]
if

HAVEGUILD
ISGUILDMASTER
EQUALS1当前中标行会名一致性校验
act

@@InPutInteger设置最低入会等级
elsesay

SENDMSG6仅中标掌门可设置招人条件。

[@InPutInteger设置最低入会等级]
if

LARGEN11
SMALLN1300
act

MOVG103N1
SAVEVARGLOBALG103..\QuestDiary\行会竞价\最高价记录.txt
MESSAGEBOX已设置自动招人最低等级<$G103>。
elsesay

MESSAGEBOX请输入1到300之间的等级。

[@setjob]
if

HAVEGUILD
ISGUILDMASTER
act

@@InPutInteger设置职业开关1战士2法师3道士可多选改多段
elsesay

SENDMSG6仅掌门可设置。

[@InPutInteger设置职业开关]
if

EQUALN20
act

SETG1040
SENDMSG6已设为全职业招人。
elsesay

if

EQUALN21
act

SETG1041
SENDMSG6已限战士。
elsesay

if

EQUALN22
act

SETG1042
SENDMSG6已限法师。
elsesay

if

EQUALN23
act

SETG1043
SENDMSG6已限道士。
elsesay

SENDMSG6职业参数错误,0全职业、1战士、2法师、3道士。

多职业允许可改G104为位标志,例如1战士、2法师、4道士,入会段用按位与判断;简单版本只做单职业或全职业最稳。

[@setgg]
if

HAVEGUILD
ISGUILDMASTER
act

@@InPutString设置竞价招人公告
elsesay

SENDMSG6仅掌门可改公告。

[@InPutString设置竞价招人公告]
if

act

MOVS2<$STR(N0)>
SAVEVARGLOBALS2..\QuestDiary\行会竞价\最高价记录.txt
MESSAGEBOX公告已更新:<$S2>。
elsesay

SENDMSG6公告内容为空。

四、玩家自动加入中标行会

招人NPC可和竞价官分开,也可同NPC。Market_Def建“行会自动招人-0.txt”:

[@main]
查看中标行会与招人要求/view
一键申请加入中标行会/join
退出/exit

[@view]
if

EQUALG1051
act

SENDMSG6当前中标行会<S1>,最低等级<G103>,职业限制<G104>,公告:<S2>。
elsesay

SENDMSG6当前无中标行会,暂不可自动加入。

[@join]
if

HAVEGUILD
act

SENDMSG6你已有行会,不能重复加入。
elsesay

if

EQUALG1050
act

SENDMSG6当前没有开启竞价中标行会。
elsesay

if

CHECKLEVELEX<<$G103>
act

SENDMSG6等级低于<$G103>,未达到自动招人要求。
elsesay

if

EQUALG1041
CHECKJOB0
act

GOTO@doadd
elsesay

if

EQUALG1042
CHECKJOB1
act

GOTO@doadd
elsesay

if

EQUALG1043
CHECKJOB2
act

GOTO@doadd
elsesay

if

EQUALG1040
act

GOTO@doadd
elsesay

SENDMSG6当前中标行会不招收你的职业。

[@doadd]
if

EQUALG1051
act

AddGuildMember<$S1>
SENDMSG0恭喜<USERNAME>通过行会竞价自动招人加入<S1>。
ADDNAMELIST..\QuestDiary\行会竞价\招人名单.txt
elsesay

SENDMSG6加入失败,中标行会状态异常。

若3K该子版本入会命令为ADDGUILDMEMBER,把AddGuildMember<S1>改成ADDGUILDMEMBER<S1>或ADDGUILDMEMBER<S1><USERNAME>;空第二参数表示把自己加入。已会判断用HAVEGUILD前置拦截,避免重复加人报错。招人名单用ADDNAMELIST写日志,后期查谁通过自动招人进来。

五、定时器倒计时截标

3K定时器在QManage用SetOnTimer,OnTimer0到OnTimer19对应段。竞价开始NPC里启动:

[@starttimer]
if

ISADMIN
act

SETONTIMER0600
SENDMSG6竞价定时器已启动,每60秒检测一次截标条件。
elsesay

SENDMSG6无权限启动竞价定时器。

QManage.txt:

[@OnTimer0]
if

EQUALG1001
CHECKTIME>截标时间变量按3K取系统时间
act

SETG1002
SETG1051
SAVEVARGLOBALG100..\QuestDiary\行会竞价\最高价记录.txt
SENDMSG0行会竞价已截标,中标行会<S1>,最高价<G101>,自动招人继续开放。
elsesay

if

EQUALG1001
act

SENDMSG6当前最高<S1>、价格<G101>,继续出价。

没有系统时间比较命令时,用机器人RUNONDAY到固定点执行截标段代替定时器。定时器索引别和其他泡点、活动冲突;测试先SetOnTimer0100,10秒一检,稳定再改正式间隔。

六、机器人自动清标与每日招人维护

Envir\Robot_def\AutoRunRobot.txt:

AutoRunNPCRUNONDAY00:00:05@竞价每日初始化

AutoRunRobot按所用3K文件名写

AutoRunNPCRUNONDAY20:00:00@竞价自动截标

AutoRunNPCRUNONWEEK1:00:00@竞价每周清标

RobotManage.txt或对应机器人功能文件:

[@竞价每日初始化]
if

act

SETG1000
SETG1050
MOVS1无
MOVS3无
SAVEVARGLOBALG101..\QuestDiary\行会竞价\最高价记录.txt
SENDMSG1行会竞价每日初始化完成,掌门可重新出价。

[@竞价自动截标]
if

EQUALG1001
act

SETG1002
SETG1051
SAVEVARGLOBALG100..\QuestDiary\行会竞价\最高价记录.txt
SENDMSG0晚间截标完成,中标行会<$S1>开启自动招人。
elsesay

SENDMSG1当前无进行中竞价,晚间截标跳过。

[@竞价每周清标]
if

act

SETG1000
SETG1050
SETG101底价重置值
MOVS1无
DELNAMELIST..\QuestDiary\行会竞价\招人名单.txt
SAVEVARGLOBALG101..\QuestDiary\行会竞价\最高价记录.txt
SENDMSG1每周竞价清标完成,历史招人名单已清空。

机器人RUNONDAY/RUNONWEEK写法参考通用定时活动配置;3K若机器人目录命令名不同,按M2机器人帮助改。清标太频繁会导致掌门刚出价就被清,正式服建议每日开标一次、固定晚上截标,或每周几轮。

七、防刷与异常规则

同会多号抬价:出价段加判断,S3等于当前最高掌门且S1等于当前中标行会时不允许自己继续加价;若允许自我加价会刷高底价但不增加真实竞争,可禁止。

小号占中标:掌门出价前校验行会人数、行会等级、创建时长;例如少于5人、创建不足1天不允许竞价。3K创建行会走沃玛号角+金币,掌门资格本身有门槛,脚本再加ISGUILDMASTER即可。

重复入会:join段HAVEGUILD前置;入会后再次点NPC直接提示已会,不执行AddGuildMember。

职业绕过:G104全职业为0才放行,单职业只放行对应CHECKJOB;多职业用位标志,别用多个EQUAL并列导致全满足才进。

金钱异常:出价先判断余额再扣款;用CHECKGAMEGOLD/CHECKGOLD前置,避免扣成负数。拍卖类通用做法也是先校验当前价+加价、再扣款、再更新最高价。

中标行会被解散:机器人或定时器招人前检测S1对应行会是否存在,不存在则G105置0、G100置0、S1置无,避免把玩家加进空会报错。

重启丢数据:NPC启动段LOADVAR读最高价记录.txt、招人名单可不读只写;定时器截标后SAVEVAR,机器人清标后SAVEVAR。通用拍卖/竞价都建议变量持久化。

八、完整最小可跑示例

行会竞价官-0.txt:

[@main]
出价竞价/bid
设等级/setlv
设职业/setjob
状态/state

[@bid]
if

HAVEGUILD
ISGUILDMASTER
CHECKGAMEGOLD><G101>+<G102>
act

CALCVARG101+G102
GAMEGOLD-<$G102新增按实际>
MOVS1取当前行会名
MOVS3<$USERNAME>
SETG1001
SETG1051
SAVEVARGLOBALG101..\QuestDiary\行会竞价\最高价记录.txt
SENDMSG0<S3>代表<S1>出价<$G101>,当前最高。
elsesay

SENDMSG6掌门元宝不足或出价不高于最高价加幅。

行会自动招人-0.txt:

[@main]
申请入会/join
状态/view

[@join]
if

HAVEGUILD
act

SENDMSG6已有行会。
elsesay

if

EQUALG1050
act

SENDMSG6无中标行会。
elsesay

if

CHECKLEVELEX<<$G103>
act

SENDMSG6等级不足。
elsesay

if

EQUALG1040
GOTO@doadd
elsesay

if

EQUALG1041
CHECKJOB0
GOTO@doadd
elsesay

if

EQUALG1042
CHECKJOB1
GOTO@doadd
elsesay

if

EQUALG1043
CHECKJOB2
GOTO@doadd
elsesay

SENDMSG6职业不符合。

[@doadd]
if

EQUALG1051
act

AddGuildMember<$S1>
SENDMSG0<USERNAME>加入中标行会<S1>。
ADDNAMELIST..\QuestDiary\行会竞价\招人名单.txt
elsesay

SENDMSG6入会失败。

机器人每天开标、晚上截标、每周清标三段的G变量和S变量与NPC保持一致,NPC文件用ANSI,QManage定时器索引不与其他活动重复,入会命令按3K子版本在AddGuildMember与ADDGUILDMEMBER间替换,竞价自动招人即可长期运行。
[顶部]