LUACN论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
热搜: YJWOW MagicStone BoL
查看: 420|回复: 5

自动欢迎自动欢迎新玩家(事件教程)

[复制链接]
发表于 2023-4-1 12:52:13 | 显示全部楼层 |阅读模式
[Lua] 纯文本查看 复制代码
-- 新人加入公会自动欢迎
local GW_Message_Info = {
	"欢迎 > %s < 加入《游戏》公会!",
	"哟!有萌新 > %s < 加入啦?欢迎加入《游戏》公会!",
	"HYHY  > %s < ",
	"欢迎大佬 > %s < 加入《游戏》公会!",
	"热烈欢迎 > %s < 加《游戏》入公会,鼓掌呱唧呱唧~",
}--自定义随机喊话内容
local function UpdateGuildWelcome(_, _, msg) --定义一个喊话函数
	local str = gsub(GUILDEVENT_TYPE_JOIN, "%%s", "")---  切割字符串
	if msg:find(str) then  
		local name = gsub(msg, str, "")
		name = Ambiguate(name, "guild")
		if not UnitIsUnit(name, "player") then
			C_Timer.After(random(1000) / 1000, function()   --延迟随机数随机时间,执行工会喊话
				SendChatMessage(string.format(GW_Message_Info[random(4)], name), "GUILD")
			end)
		end
	end
end

local loader = CreateFrame("Frame") -- 注册框架
loader:RegisterEvent("CHAT_MSG_SYSTEM") ---注册系统说话事件
loader:SetScript("OnEvent", UpdateGuildWelcome)---系统说话跟新就触发执行函数UpdateGuildWelcome


WOWBEE最大的问题 就是 不断执行脚本,靠条件判断去执行动作,如果你脚本里面有几个动作条件满足 就会同事执行执行,打乱你的动作循环,还有无法保存变量 脚本不断重复运行,变量值不断的变,所以靠时间这 延迟施法这类条件只能靠DBUFF 时间来判断,写的痛苦,研究了下事件触发能解决上述问题, 上面代码 是 注册了 系统说话是事件,,只要系统喊话 出现 就能触发 函数执行。


回复

使用道具 举报

发表于 2023-4-1 16:38:27 | 显示全部楼层
虽然看不懂,但是感觉很牛皮的样子
回复 支持 反对

使用道具 举报

发表于 2023-4-2 11:56:15 | 显示全部楼层
感谢楼主分享,混个伸手费。。
回复 支持 反对

使用道具 举报

发表于 2023-4-5 11:33:33 | 显示全部楼层
感谢分享!测试中是否可用!
回复 支持 反对

使用道具 举报

发表于 2023-5-11 14:53:07 | 显示全部楼层
感谢楼主分享,混个伸手费。。......
回复 支持 反对

使用道具 举报

发表于 2023-8-19 22:25:03 | 显示全部楼层
感谢楼主分享,对事件用法又学习到了!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-31 06:17 AM , Processed in 0.024888 second(s), 24 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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