传奇行会竞价系统:将元宝支付改为每次10万金币

来源: 作者: 点击:
将原脚本中的元宝(GAMEGOLD)支付方式替换为金币(CREDITPOINT),并设定每次竞价固定增加10万金币,需修改检测条件、扣款逻辑及提示文本。以下是完整修改方案。

修改核心变量与提示文本

在[@main]段落中,将“元宝”相关描述替换为“金币”,并将金额单位明确为“10万”。原句:

改为:

同时,将界面中显示的竞标价格变量保持不变,但其数值单位已转为金币。

替换[@cyjj]竞价逻辑

原脚本使用CHECKGAMEGOLD和GAMEGOLD操作元宝,需全部替换为金币相关指令。金币在多数引擎中对应CREDITPOINT变量。

原代码:
[@cyjj]
IF
HAVEGUILD
ISGUILDMASTER
CHECKGAMEGOLD >
ACT
INC G56 100
GAMEGOLD -
...

修改后代码:
[@cyjj]
IF
HAVEGUILD
ISGUILDMASTER
CHECKCREDITPOINT >
ACT
MOV S0 ;读取当前竞价金额
INC S0 100000 ;增加10万金币
MOV G56 ;更新G56为新竞价额
CREDITPOINT - ;扣除玩家10万金币(注意:此处扣的是新增后的总额?需修正)

但上述逻辑有误:原意是“支付比当前多10万”,即新出价 = 当前价 + 100000,而扣款应为这10万,而非新总价。

正确逻辑应为:
[@cyjj]
IF
HAVEGUILD
ISGUILDMASTER
ACT
MOV S0 100000 ;本次竞价增量:10万
MOV S1 ;读取当前竞价额
ADD S1 S0 ;S1 = G56 + 100000(新出价)
IF
CHECKCREDITPOINT > S0 ;检查玩家是否有10万金币
ACT
CREDITPOINT - S0 ;扣除10万金币
MOV G56 ;更新行会竞价为新出价
mov A30
mov A31
Messagebox [成功]:您在行会竞价板上花费【100000】金币竞得。
SendCenterMsg 250 0 【】在行会竞价板为行会【】出价金币!
GuildNoticeMsg 250 0 【】在行会竞价板为行会【】出价金币!
GOTO @main
BREAK
ELSEACT
Messagebox [失败]:您的金币不足10万,无法参与竞价。

修正失败提示中的货币名称

原[@cyjj]末尾的#ELSEACT提示为“金币不足或者您没有行会”,但原脚本实际检测的是元宝。现因改为金币,且前置条件已包含行会与掌门判断,故提示应精准:

ELSEACT
Messagebox [失败]:您不是行会掌门,或未创建行会。

但更完整的失败分支应拆分为多个条件。建议重构[@cyjj]入口判断:

[@cyjj]
IF
EQUAL A30 ;若尚无行会竞标
ACT
Messagebox [提示]:当前无行会参与竞标,请先由其他行会出价。
GOTO @main
BREAK

IF
!HAVEGUILD
ACT
Messagebox [失败]:您尚未加入任何行会。
BREAK

IF
!ISGUILDMASTER
ACT
Messagebox [失败]:只有行会掌门才能参与竞价。
BREAK

ACT
MOV S0 100000
MOV S1
ADD S1 S0
IF
CHECKCREDITPOINT
mov A30
mov A31
Messagebox [成功]:您已成功加价10万金币!当前行会竞价为金币。
SendCenterMsg 250 0 【】为行会【】加价至金币!
GuildNoticeMsg 250 0 【】为行会【】加价至金币!
GOTO @main

其他注意事项

金币变量确认:部分引擎使用CHECKGOLD/GOLD而非CREDITPOINT。请根据服务端类型确认:
GOM引擎:通常用CREDITPOINT
Hero引擎:可能用GOLD
若不确定,可测试CHECKGOLD > 100000是否生效

初始竞价处理:若G56初始为0,首次竞价应直接设为100000,而非0+100000。上述脚本已兼容此情况。

界面显示格式化:若G56数值过大(如1000000),可在显示时用字符串分割插入逗号,但非必需。

完成以上修改后,行会竞价系统将完全基于金币运作,每次加价固定10万,失败不扣款,成功仅扣除增量部分,符合需求。