CDK领取功能实现
给玩家发一个CDK码,他在游戏中点击一个NPC,输入CDK就可以领取对应的福利,这个在游戏中怎么用脚本实现。@82PC小秘书在NPC脚本中用`CheckVar`验证CDK状态,`#IF`判断有效性:
[@main]
#SAY
请输入CDK码:<输入/@@InPutString5>\
[@InPutString5]
#IF
CheckVar HUMAN CDK_<$STR(S5)> = 未使用
#ACT
; 执行奖励
give 金币 100000
CHANGEEXP + 10000
MOV HUMAN CDK_<$STR(S5)> 已使用
SENDMSG 6 CDK兑换成功!
#ELSEACT
SENDMSG 6 CDK无效或已使用。需提前用`MOV`预设CDK变量,或从文本列表读取。禁止修改客户端数据,服务器端变量保证安全。 82PC小秘书 发表于 2026-7-28 15:52
在NPC脚本中用`CheckVar`验证CDK状态,`#IF`判断有效性:
[@main]
建议使用TXT存储CDK,用另一个TXT存储已领取列表,还要做到一个区只能领取一次的功能。@82PC小秘书
NPC脚本示例:
[@main]
#ACT
MOV S1
INPUTSTRING 请输入CDK码
GOTO @CheckCDK
[@CheckCDK]
#IF
EQUAL S1
#ACT
MESSAGEBOX 输入不能为空。
BREAK
#IF
CHECKTEXTLIST ..\QuestDiary\CDK\已使用.txt <$STR(S1)>
#ACT
MESSAGEBOX 此CDK已被使用或无效。
BREAK
#ELSEACT
ADDTEXTLIST ..\QuestDiary\CDK\已使用.txt <$STR(S1)>
GIVE 金条 1
SENDMSG 6 CDK领取成功,获得金条x1!
需在QuestDiary\CDK目录下创建“已使用.txt”,CDK预先生成并交给玩家。 @82PC小秘书 你小子还挺可以的,是个合格的技术,有两把刷子,给你加个大鸡腿,好好努力 在NPC脚本中通过输入框获取CDK,校验并发放奖励。使用个人标记防止重复领取。
[@main]
#IF
CHECK 0
#SAY
输入CDK兑换福利:<输入CDK码/@@InPutString1>
#ELSESAY
你已经领取过CDK福利了。
[@InPutString1]
#IF
CHECK 0
#ACT
MOV S1 <$STR(S1)>
; 假设合法CDK为"2025NEWYEAR"
#IF
EQUAL S1 2025NEWYEAR
#ACT
SET 1
GIVE 金币 1000000
GIVE 祝福油 5
SENDMSG 6 CDK兑换成功,请查收背包。
BREAK
#ELSEACT
SENDMSG 6 CDK无效,请检查后重试。
BREAK
将CDK列表、对应奖励存储在文本中循环校验可实现多CDK支持。 82PC小秘书 发表于 2026-7-28 16:52
在NPC脚本中通过输入框获取CDK,校验并发放奖励。使用个人标记防止重复领取。
真的这么厉害吗 CDK通过检测文本文件实现,每个CDK一行,已使用则删除或标记。
[
[@main]
#ACT
MOV S$输入CDK
#SAY
请输入CDK码:\
<输入CDK码/@@InPutString80>\
<退出/@exit>
[@InPutString80]
#IF
CheckStringlength S80 > 0
#ACT
MOV S$输入CDK <$STR(S80)>
GOTO @CheckCDK
#ELSEACT
MESSAGEBOX 请输入有效CDK码。
[@CheckCDK]
#IF
CheckTextFile CDK列表.txt S$输入CDK
#ACT
#ELSEACT
MESSAGEBOX CDK码无效或已使用。
BREAK
#IF
CheckTextFile CDK已用.txt S$输入CDK
#ACT
MESSAGEBOX 该CDK已被领取。
BREAK
#ACT
AddTextList CDK已用.txt S$输入CDK
DelTextList CDK列表.txt S$输入CDK
GIVE 金条 1
GIVE 祝福油 1
SENDMSG 6 你成功领取了CDK奖励:金条、祝福油。
CLOSE
备好“CDK列表.txt”存放有效CDK,“CDK已用.txt”记录已领取。如需限制单角色,可用个人变量或数据文件记录。
页:
[1]