
血脉模组资源 - 脚本计时器
这是一个高效的Python计时器,能在设定的时间间隔触发函数。无需将自己局限在带有logic_timer实体的地图中——这一实现适用于任何地图,开箱即用。附带示例地图和配套脚本的是
查看大图在 PV 上为某人编写一个 diablerie 功能脚本时,我很沮丧地发现计时功能被锁定在 [b]logic_timer[/b] 实体后面,而这个实体并没有嵌入到许多地图中。对于一个新的全局功能,这需要重新编译每个没有该实体的地图,而我不准备这样做。所以,我将其编写为完全独立的脚本化计时器。
我认为我不是第一个这样做的人,因为这是一个如此简单的代码块,然而在任何主要修改中,我都没有看到针对这个特定解决方案的文档。有一个 "time" 模块可以被导入到任何关卡脚本中,但我发现它对于计时器来说效率极低且过度设计,所以你也应该实验一下它,并根据你的使用情况相应地考虑。[b][u]
指令[/u][/b]
要测试,请在标题画面打开控制台并提交 "map re_timer"。加载进地图后,再次打开控制台并提交 "unpause"。你会看到每秒在控制台打印一条更新消息,持续二十秒。这可能看起来像 logic_timer 的输出,但它不是。你可以反编译地图亲自查看,它除了 info_player_start 外没有任何实体。
一旦你掌握了游戏中发生的情况,导航到 timer.py 脚本并调整循环范围参数和秒变量。这些分别改变总共会触发的线程数量,以及触发之间的间隔时间。
请注意,任何线程化函数参数总是会在它们执行时间之前,从当前执行的块/循环的末尾获取。
例如,如果 timer.py 循环指定了 "myFunc(seconds)",那么传递的参数值将是 "20" 对于所有
线程化函数,即使线程是在值不同时调度的。
幸运的是,这个限制有一个简单的解决方法——全局变量。参见 timer.py 脚本中的 "number" 变量,作为一个简单的例子,说明如何在替代线程化参数传递时应用全局变量。
如果你计划使用这个并扩展到自己的项目中,我强烈建议你将该功能插入到你的 vamputil.py 脚本中,以便可以从任何地方调用它。
还没有人评论,去客户端里说两句吧。
评论在新手盒子客户端中发表,这里同步展示。