同步官网文档8m_25d
This commit is contained in:
59
mconline/90-知识库获奖教程/4-SDK实用技巧/1-制作倒计时和cd.md
Normal file
59
mconline/90-知识库获奖教程/4-SDK实用技巧/1-制作倒计时和cd.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# 制作倒计时和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在每次计时中只会触发一次) 。
|
||||
|
||||

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