60 lines
1.6 KiB
Markdown
60 lines
1.6 KiB
Markdown
# 制作倒计时和CD
|
||
|
||
> 本篇教程获得第一期知识库必看教程奖。
|
||
>
|
||
> 获奖作者:凉寂蜀黍。
|
||
|
||
前段时间看见有萌新,使用time.sleep()来做计时,这样会导致整个程序停摆。
|
||
|
||
今天给萌新们分享一下,如何用帧数事件来做倒计时和cd。本教程针对萌新,大佬们(轻喷)也可以分享一下自己的方法。
|
||
|
||
**适用对象:**
|
||
|
||
- 刚接触开发、不熟悉api的开发萌新。
|
||
- 有一定python基础但不多的人。
|
||
- 不需要任何json基础 。
|
||
|
||
|
||
|
||
## 原理其实很简单
|
||
|
||
首先在代码最前方定义以下代码:
|
||
|
||
```python
|
||
#格式为"玩家id":剩余时间帧数(int)
|
||
dictcd = {}
|
||
```
|
||
|
||
之所以要用字典,是因为在服务端中要考虑多玩家的情况,要把每个玩家的数据进行隔离。客户端可以直接创建int类型的cd值,不需要字典。
|
||
|
||
接着在需要用到cd的地方写逻辑:若cd值为0了,就可以让技能起效,并重置cd为900帧(一秒30帧) 。
|
||
|
||

|
||
|
||
|
||
|
||
若cd值不为0,提示冷却中。
|
||
|
||

|
||
|
||
|
||
|
||
然后在OnScriptTickSever事件中遍历字典dictcd中的键值对,把每个不为0的cd值减一(客户端也有相关事件)。
|
||
|
||

|
||
|
||

|
||
|
||
|
||
|
||
最后在cd=1时,即可执行cd到期对应的行为。(之所以在cd=1时执行,是因为cd=0会长期存在,cd=1在每次计时中只会触发一次) 。
|
||
|
||

|
||
|
||
|
||
|
||
若对你有帮助,请评论区留言让我看到,我还会继续做下去。
|
||
|
||
若有问题或建议,也请评论区留言或私信哦。
|
||
|