LUACN论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
热搜: YJWOW MagicStone BoL
查看: 917|回复: 23

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

[复制链接]
发表于 2024-6-24 20:38:58 | 显示全部楼层 |阅读模式
大佬们,我在学习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,
请问大佬该如何修改啊。

回复

使用道具 举报

发表于 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.
我 ...

版主大大,我是初学,你这个每个字我都认识,合起来就不知道说的撒了。我去翻翻看看lua基础知识
回复 支持 反对

使用道具 举报

发表于 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的答案行不行,用了闭包函数来实现[mw_shl_code=lua,true]-- 局部静态变量,用于存储 skillCaste ...

7大佬,刚才上机测试了下,还是只会放A技能。
回复 支持 反对

使用道具 举报

发表于 2024-6-24 22:42:17 | 显示全部楼层
老爷们 发表于 2024-6-24 10:11 PM
7大佬,刚才上机测试了下,还是只会放A技能。

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

使用道具 举报

发表于 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这样的变量名,有可能已经有别的插件用了这个变量名。最好在前面加个前缀保证唯一性。
回复 支持 反对

使用道具 举报

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

count=count or 0可以只初始化一次
回复 支持 反对

使用道具 举报

发表于 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了。
是我哪里操作不对嘛?

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

小黑屋|手机版|Archiver|LUACN论坛

GMT+8, 2025-5-2 02:03 AM , Processed in 0.069698 second(s), 34 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表