传奇996_21——龙岭事件

news/2024/11/19 7:44:59/

游戏事件

点击事件

点击触发npc

倒叙讲解:

  • 提前设下游戏事件add,由点击npc事件EventCfg.onClicknpc调用该游戏事件,搜索EventCfg.onClicknpc即可
GameEvent.add(EventCfg.onClicknpc, function (actor,npcid,npcRet)if npcid ~= 14 and npcid ~= 31 and npcid ~= 47 and npcid ~= 51 thenreturnendnpcRet.ret = true_openui(actor)
end, ChengHaoJinSheng)
  • QF中,游戏事件push调用的游戏事件add,然后的点击钩子函数clicknpc,调用游戏事件push
local npcRet = { ret = false }
function clicknpc(actor, npcid)--sendmsg(actor, ConstCfg.notice.own, '{"Msg":"' .. npcid .. '","Type":1}')--release_print("aaa",getflagstatus(actor,100))npcRet.ret = falseGameEvent.push(EventCfg.onClicknpc, actor, npcid, npcRet)return npcRet.ret
end

以上点击npc打开弹窗就算结束,下面是点击弹窗内按钮功能:

  • ui内按钮触发,调用的onbtnclick函数,传参数升级称号,搜索onbtnclick
<Button|x=373.5|y=296.5|color=255|mimg=public/chxt/002.png|size=18|pimg=public/chxt/002.png|nimg=public/chxt/001.png|link=@onbtnclick,升级称号>]]
  • QF中onbtnclick函数调用点击事件dispatch
function onbtnclick(actor, msgId, ...)ClickEvent.dispatch(actor, msgId, ...)
end
  • 按钮点击事件dispatch函数中,执行了dispatch_handler数组内的函数,所以需要dispatch_handler内先有函数,下方第二个函数按钮注册事件就是往dispatch_handler送函数的,搜索ClickEvent.RegisterMsg
function ClickEvent.dispatch(actor, msgID, ...)local target = dispatch_handler[msgID]if not target then return end--target(actor, ...)local result, errInfo = pcall(target, actor,...)if not result thenlocal err = "点击事件发生错误:事件名="..msgIDrelease_print(err, errInfo)end
endfunction ClickEvent.RegisterMsg(msgId, target)dispatch_handler[msgId] = target
end
  • 游戏注册事件如下,逻辑业务代码在_start函数中
ClickEvent.RegisterMsg("升级称号", _start)

npc事件总结:

点击npc,打开弹窗:
  • 提前添加游戏事件GameEvent.add,游戏事件内写业务代码(打开弹窗ui页面)
  • 由钩子函数clicknpc调用提前添加的游戏事件。
    除了框架外加GameEvent.add代码和业务函数代码
点击弹窗内按钮:
  • 提前弹窗内调用onbtnclick函数
  • onbtnclick函数调用ClickEvent.dispatch函数点击事件
  • ClickEvent.dispatch函数内调用了dispatch_handler数组内函数
  • ClickEvent.RegisterMsg函数往dispatch_handler数组内加函数

除了框架外加ClickEvent.RegisterMsg代码和调用onbtnclick函数


http://www.ppmy.cn/news/1548185.html

相关文章

【大数据分析机器学习】分布式机器学习

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘&#xff0c;以提取有价值的信息和洞察。它结合了大数据技术、人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&a…

蓝桥杯每日真题 - 第15天

题目&#xff1a;&#xff08;钟表&#xff09; 题目描述&#xff08;13届 C&C B组B题&#xff09; 解题思路&#xff1a; 理解钟表指针的运动&#xff1a; 秒针每分钟转一圈&#xff0c;即每秒转6度。 分针每小时转一圈&#xff0c;即每分钟转6度。 时针每12小时转一圈…

C++ 模板进阶:探索更强大的编程技巧

&#x1f31f; 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。&#x1f31f; 如果你对C 模板编程还存在疑惑&#xff0c;欢迎阅读我之前的作品 &#xff1a; &#x1f525;&#x1f525;&#x1f525;C 模板…

C++设计模式:建造者模式(Builder) 房屋建造案例

什么是建造者模式&#xff1f; 建造者模式是一种创建型设计模式&#xff0c;它用于一步步地构建一个复杂对象&#xff0c;同时将对象的构建过程与它的表示分离开。简单来说&#xff1a; 它将复杂对象的“建造步骤”分成多部分&#xff0c;让我们可以灵活地控制这些步骤。通过…

Signoz 和 Jaeger

Signoz 和 Jaeger 是两款流行的分布式追踪系统&#xff0c;它们都旨在帮助开发者和运维人员理解和优化分布式系统的性能。下面是 Signoz 和 Jaeger 的一些主要特性和对比&#xff1a; 1. 项目背景 Jaeger 开源时间&#xff1a;Jaeger 是由 Uber 开源的&#xff0c;最初发布于…

在Qt(以及C++)中, 和 * 是两个至关重要的符号--【雨露均沾】

在Qt&#xff08;以及C&#xff09;中&#xff0c;& 和 * 是两个至关重要的符号&#xff0c;它们用于处理引用和指针。我们将逐个解释这两个符号&#xff0c;并提供简单示例来说明它们的用法。 1. 引用&#xff08;&&#xff09; 定义: 引用是一种别名&#xff0c;它不…

Qt ini文命名分析和命名规范实例

在 Qt 中使用 QSettings 保存到 .ini 文件时&#xff0c;键名的格式设计非常重要&#xff0c;既要清晰又要适应扩展性需求。以下是一些键名格式建议和设计规则&#xff1a; 1. 键名的基本设计规则 分层结构&#xff08;分组&#xff09; 使用 / 或 . 表示分层结构&#xff0c;便…

scikit-learn学习Day30

1.数据集划分 import numpy as np from sklearn.datasets import load_iris import pandas as pd arr load_iris() data arr.data target arr.target print(target) n_target target.reshape(len(target),1) print(n_target) n_data np.hstack([data,n_target]) print(n_…