Files
netease-modsdk-wiki/docs/mconline/90-知识库获奖教程/4-SDK实用技巧/1-制作倒计时和cd.md
boybook 760c2dd9ad 2.6
2025-12-01 20:59:16 +08:00

60 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 制作倒计时和CD
> 本篇教程获得第一期知识库必看教程奖。
>
> 获奖作者:凉寂蜀黍。
前段时间看见有萌新使用time.sleep()来做计时,这样会导致整个程序停摆。
今天给萌新们分享一下如何用帧数事件来做倒计时和cd。本教程针对萌新大佬们(轻喷)也可以分享一下自己的方法。
**适用对象:**
- 刚接触开发、不熟悉api的开发萌新。
- 有一定python基础但不多的人。
- 不需要任何json基础 。
## 原理其实很简单
首先在代码最前方定义以下代码:
```python
#格式为"玩家id":剩余时间帧数(int)
dictcd = {}
```
之所以要用字典是因为在服务端中要考虑多玩家的情况要把每个玩家的数据进行隔离。客户端可以直接创建int类型的cd值不需要字典。
接着在需要用到cd的地方写逻辑若cd值为0了就可以让技能起效并重置cd为900帧(一秒30帧) 。
![img](./images/1_0.png)
若cd值不为0提示冷却中。
![img](./images/1_1.png)
然后在OnScriptTickSever事件中遍历字典dictcd中的键值对把每个不为0的cd值减一(客户端也有相关事件)。
![img](./images/1_2.png)
![img](./images/1_3.png)
最后在cd=1时即可执行cd到期对应的行为。(之所以在cd=1时执行是因为cd=0会长期存在cd=1在每次计时中只会触发一次) 。
![img](./images/1_4.png)
若对你有帮助,请评论区留言让我看到,我还会继续做下去。
若有问题或建议,也请评论区留言或私信哦。