老爷们 发表于 2024-6-24 20:38:58

学习wewbee脚本,请大佬帮助!

大佬们,我在学习bee,写了一个魔蜂释放技能的脚本。

local count = 0-- 假设这是全局变量,以便在脚本多次执行时保持其值
-- 检查是否能施放“A”且是否应该施放技能
if BeeIsRun("/cast A") then
    -- 如果count小于5,使用A并使count加1
    if count < 5 then
      BeeRun("/cast A", "player")
      count = count + 1
    elseif count == 5 then
      -- 当count等于5时,使用B并重置count
      BeeRun("/cast B", "player")
      count = 0
    end
end

但是验证后发现只能一直释放A,不会释放B,
请问大佬该如何修改啊。

vshrd 发表于 2024-6-24 21:19:03

你的第一行不管是局部变量还是全局变量
每帧执行到这里都会重新进行一个写值操作,使其内存结果变回0.
我猜你可能是想利用静态变量初始化的原理来让这个变量的初始化只执行一次
但这是C++的语法
我不确定lua有没有这么个做法
但我知道lua现有的解决方案有这么两个
1.通过面向对象将变量封装到某个类里
2.通过保存到外部,也就是本地的形式,进行动态读写.

老爷们 发表于 2024-6-24 22:01:53

本帖最后由 老爷们 于 2024-6-24 10:05 PM 编辑

vshrd 发表于 2024-6-24 09:19 PM
你的第一行不管是局部变量还是全局变量
每帧执行到这里都会重新进行一个写值操作,使其内存结果变回0.
我 ...
版主大大,我是初学,你这个每个字我都认识,合起来就不知道说的撒了。:lol我去翻翻看看lua基础知识

vshrd 发表于 2024-6-24 22:03:42

老爷们 发表于 2024-6-24 10:01 PM
版主大大,我是初学,你这个每个字我都认识,合起来就不知道说的撒了。

BeeGetVarblue
BeeSetVarblue
- -自己去看吧

老爷们 发表于 2024-6-24 22:11:33

7858321 发表于 2024-6-24 10:04 PM
试试chatgpt的答案行不行,用了闭包函数来实现-- 局部静态变量,用于存储 skillCaste ...

7大佬,刚才上机测试了下,还是只会放A技能。

7858321 发表于 2024-6-24 22:42:17

老爷们 发表于 2024-6-24 10:11 PM
7大佬,刚才上机测试了下,还是只会放A技能。

我看出来,所以我删帖了,因为还是重复初始化了,貌似不用全局或者BeeGetVarblue
BeeSetVarblue还真不行,怎么在循环体中把局部变量只初始化一次呢?

blxyz521 发表于 2024-6-25 09:05:03

local count = 0-- 假设这是全局变量,以便在脚本多次执行时保持其值

首先把local去掉,加了local就是局部变量,count的值就只在本次循环中有效,不会保存count的值。
local去掉后count就是全局变量,count的值可以保存了,但是会重复赋值,因为count=0本来就是赋值,应该改成count=count or 0,意思是如果count有值就等于本身(不赋值),为空(初始化)就赋值为0.
全局变量最好不要用count这样的变量名,有可能已经有别的插件用了这个变量名。最好在前面加个前缀保证唯一性。

blxyz521 发表于 2024-6-25 09:08:18

vshrd 发表于 2024-6-24 09:19 PM
你的第一行不管是局部变量还是全局变量
每帧执行到这里都会重新进行一个写值操作,使其内存结果变回0.
我 ...

count=count or 0可以只初始化一次

vshrd 发表于 2024-6-25 10:04:11

本帖最后由 vshrd 于 2024-6-25 10:07 AM 编辑

blxyz521 发表于 2024-6-25 09:08 AM
count=count or 0可以只初始化一次
哦对
lua的这个便捷语法还真省事儿但依赖全局变量终归不是什么好事儿
还是尽量避免使用全局变量吧= =

老爷们 发表于 2024-6-25 10:13:57

本帖最后由 老爷们 于 2024-6-25 11:01 AM 编辑

blxyz521 发表于 2024-6-25 09:05 AM
local count = 0-- 假设这是全局变量,以便在脚本多次执行时保持其值

首先把local去掉,加了local就是 ...
感谢大佬提点,马上去验证一下。只是改动这个地方嘛?
local count = 0 换成 count = count or 0
换了以后就既不用a也不用b了。
是我哪里操作不对嘛?

页: [1] 2 3
查看完整版本: 学习wewbee脚本,请大佬帮助!