找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 59|回复: 7

[翎风] CDK领取功能实现

[复制链接]

4

主题

40

回帖

481

积分

管理员

元宝
302
金币
131
金刚石
0

荣誉管理论坛元老

发表于 3 天前 | 显示全部楼层 |阅读模式
给玩家发一个CDK码,他在游戏中点击一个NPC,输入CDK就可以领取对应的福利,这个在游戏中怎么用脚本实现。@82PC小秘书
回复

使用道具 举报

0

主题

24

回帖

19

积分

新手上路

元宝
0
金币
3
金刚石
0
发表于 3 天前 | 显示全部楼层
在NPC脚本中用`CheckVar`验证CDK状态,`#IF`判断有效性:
  1. [@main]
  2. #SAY
  3. 请输入CDK码:<输入/@@InPutString5>\

  4. [@InPutString5]
  5. #IF
  6. CheckVar HUMAN CDK_<$STR(S5)> = 未使用
  7. #ACT
  8. ; 执行奖励
  9. give 金币 100000
  10. CHANGEEXP + 10000
  11. MOV HUMAN CDK_<$STR(S5)> 已使用
  12. SENDMSG 6 CDK兑换成功!
  13. #ELSEACT
  14. SENDMSG 6 CDK无效或已使用。
复制代码
需提前用`MOV`预设CDK变量,或从文本列表读取。禁止修改客户端数据,服务器端变量保证安全。
回复

使用道具 举报

4

主题

40

回帖

481

积分

管理员

元宝
302
金币
131
金刚石
0

荣誉管理论坛元老

 楼主| 发表于 3 天前 | 显示全部楼层
82PC小秘书 发表于 2026-7-28 15:52
在NPC脚本中用`CheckVar`验证CDK状态,`#IF`判断有效性:

[@main]

建议使用TXT存储CDK,用另一个TXT存储已领取列表,还要做到一个区只能领取一次的功能。@82PC小秘书
回复

使用道具 举报

0

主题

24

回帖

19

积分

新手上路

元宝
0
金币
3
金刚石
0
发表于 3 天前 | 显示全部楼层
NPC脚本示例:  
  1.   
  2. [@main]  
  3. #ACT  
  4. MOV S1  
  5. INPUTSTRING 请输入CDK码  
  6. GOTO @CheckCDK
  7. [@CheckCDK]  
  8. #IF  
  9. EQUAL S1  
  10. #ACT  
  11. MESSAGEBOX 输入不能为空。  
  12. BREAK  
  13. #IF  
  14. CHECKTEXTLIST ..\QuestDiary\CDK\已使用.txt <$STR(S1)>  
  15. #ACT  
  16. MESSAGEBOX 此CDK已被使用或无效。  
  17. BREAK  
  18. #ELSEACT  
  19. ADDTEXTLIST ..\QuestDiary\CDK\已使用.txt <$STR(S1)>  
  20. GIVE 金条 1  
  21. SENDMSG 6 CDK领取成功,获得金条x1!  
复制代码

需在QuestDiary\CDK目录下创建“已使用.txt”,CDK预先生成并交给玩家。
回复

使用道具 举报

4

主题

40

回帖

481

积分

管理员

元宝
302
金币
131
金刚石
0

荣誉管理论坛元老

 楼主| 发表于 3 天前 | 显示全部楼层
@82PC小秘书 你小子还挺可以的,是个合格的技术,有两把刷子,给你加个大鸡腿,好好努力
回复

使用道具 举报

0

主题

24

回帖

19

积分

新手上路

元宝
0
金币
3
金刚石
0
发表于 3 天前 | 显示全部楼层
在NPC脚本中通过输入框获取CDK,校验并发放奖励。使用个人标记防止重复领取。
  1. [@main]
  2. #IF
  3. CHECK [200] 0
  4. #SAY
  5. 输入CDK兑换福利:<输入CDK码/@@InPutString1>
  6. #ELSESAY
  7. 你已经领取过CDK福利了。
  8. [@InPutString1]
  9. #IF
  10. CHECK [200] 0
  11. #ACT
  12. MOV S1 <$STR(S1)>
  13. ; 假设合法CDK为"2025NEWYEAR"
  14. #IF
  15. EQUAL S1 2025NEWYEAR
  16. #ACT
  17. SET [200] 1
  18. GIVE 金币 1000000
  19. GIVE 祝福油 5
  20. SENDMSG 6 CDK兑换成功,请查收背包。
  21. BREAK
  22. #ELSEACT
  23. SENDMSG 6 CDK无效,请检查后重试。
  24. BREAK
复制代码

将CDK列表、对应奖励存储在文本中循环校验可实现多CDK支持。
回复

使用道具 举报

0

主题

8

回帖

42

积分

新手上路

元宝
2
金币
32
金刚石
0
发表于 3 天前 来自手机 | 显示全部楼层
82PC小秘书 发表于 2026-7-28 16:52
在NPC脚本中通过输入框获取CDK,校验并发放奖励。使用个人标记防止重复领取。


真的这么厉害吗
回复

使用道具 举报

0

主题

24

回帖

19

积分

新手上路

元宝
0
金币
3
金刚石
0
发表于 昨天 16:30 | 显示全部楼层
CDK通过检测文本文件实现,每个CDK一行,已使用则删除或标记。  

[
  1.   
  2. [@main]  
  3. #ACT  
  4. MOV S$输入CDK  
  5. #SAY  
  6. 请输入CDK码:\  
  7. <输入CDK码/@@InPutString80>\  
  8. <退出/@exit>  
  9. [@InPutString80]  
  10. #IF  
  11. CheckStringlength S80 > 0  
  12. #ACT  
  13. MOV S$输入CDK <$STR(S80)>  
  14. GOTO @CheckCDK  
  15. #ELSEACT  
  16. MESSAGEBOX 请输入有效CDK码。  
  17. [@CheckCDK]  
  18. #IF  
  19. CheckTextFile CDK列表.txt S$输入CDK  
  20. #ACT  
  21. #ELSEACT  
  22. MESSAGEBOX CDK码无效或已使用。  
  23. BREAK  
  24. #IF  
  25. CheckTextFile CDK已用.txt S$输入CDK  
  26. #ACT  
  27. MESSAGEBOX 该CDK已被领取。  
  28. BREAK  
  29. #ACT  
  30. AddTextList CDK已用.txt S$输入CDK  
  31. DelTextList CDK列表.txt S$输入CDK  
  32. GIVE 金条 1  
  33. GIVE 祝福油 1  
  34. SENDMSG 6 你成功领取了CDK奖励:金条、祝福油。  
  35. CLOSE  
复制代码


备好“CDK列表.txt”存放有效CDK,“CDK已用.txt”记录已领取。如需限制单角色,可用个人变量或数据文件记录。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|八·二单机论坛 ( 冀ICP备2026022037号-1 )

GMT+8, 2026-7-31 13:44 , Processed in 0.084525 second(s), 29 queries .

Powered by Discuz! X3.5

© 2026-2026 八二论坛.