4. 加载道具

本贴最后更新于 2269 天前,其中的信息可能已经物是人非

实际上道具系统应该还算是有点复杂的。
类似流程有,钟乳洞场景上的一块石头,可以受击,可阻挡角色,打碎了还有动画,然后还爆出一个物品,实际上爆的物品只是之前隐藏起来了
而由于道具大部分与脚本系统关联,很多回调消息都是走脚本来处理的,所以说,如果脚本系统没实现,那么道具功能是不可能完备的
那这一张只讲流星里道具大致框架
一般的一个关卡里最少有 2 个脚本
拿钟乳洞关卡来说,就是 sn01/sn01.pst 以及 level/sn01_.pst

sn01.pst 负责关卡里物件的初始化,以及其响应攻击,和设置属性的函数
sn01_.pst 则负责 角色属性 出生点 阵营 武器 关卡剧情和 npc 以及剧本
这 2 个脚本,又会引用其他的一些脚本
类似 sn01
.pst_里有
OnStart()
{
AddNPC("npc01_01");
AddNPC("npc01_02");
AddNPC("npc01_03");
}
这里加载了 3 个脚本
类似以下一些语句,是负责对场景物品的属性做赋值的
SetSceneItem(name, "name", "machine");//让道具不要旋转,默认的全都会绕左手坐标系下 y 轴自转
SetSceneItem(name, "attribute", "damagevalue", 50);//设置此物体属性的 伤害值为 50 就是 被击破后可以播放一个碎裂动画,这个动画里每一次碰到角色,对角色造成 5 点伤害
SetSceneItem(name, "attribute", "active", 1);//设置物品在场景树里是激活的
SetSceneItem(name, "attribute", "damage", 0);//设置物品是可伤害玩家的
SetSceneItem(name, "attribute", "collision", 1);//设置物品为有碰撞盒
SetSceneItem(name, "pose", 0, 0);//设置物品的动画为 0 序号动画
SetSceneItem(name, "attribute", "interactive", 0);//是否可交互 否 可交互指,一件物品,一件武器能否被捡起来
道具的气血值,大部分在
int g_iStoneMaxHP = 500;//50HP 每个石头的气血上限
int g_iNumStones = 32;//最多 32 个石头
int g_iStoneHP[g_iNumStones];//每个石头的当前气血量
类似桌子椅子,以及一些陷阱,都会如此设置
这个脚本系统被称为 pscript 也是实现了一个解释器(分解 token 以后形成语法树然后在主调工程 meteor.exe 里包含了这个解释器环境),而脚本调用原流星里主程序提供的一些特定函数
实际上就是 meteor.exe 分析 pst 文件,对其中的 invoke function 语法的 function name 进行一个表查询,对在表里的 function name 就会调用指定的 meteor.exe 里的对应名称的函数
在后面的脚本系统里,我希望能做到自己做一个简单的脚本系统,而不使用任何现成的 slua 框架等(可以先使用 slua 实现流星蝴蝶剑脚本后面有时间再自己造轮子,来实现 pscript 原框架)
然后一部分关卡里道具的气血值在 PScriptLib/Def.h 里
包括一线天关门的时间 g_iLevel03DoorWaitTime = 7000//7 秒关门

这部分还无源码,可以参照上节加载地图一章的源工程

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 57 关注
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 70 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    693 引用 • 537 回帖
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    21 引用 • 245 回帖 • 227 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    56 引用 • 85 回帖
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 734 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖 • 1 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    498 引用 • 1395 回帖 • 249 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    95 引用 • 901 回帖
  • 996
    13 引用 • 200 回帖 • 2 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖 • 7 关注
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖 • 1 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖 • 1 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    85 引用 • 165 回帖 • 1 关注
  • 分享

    有什么新发现就分享给大家吧!

    248 引用 • 1794 回帖 • 2 关注
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    44 引用 • 208 回帖 • 3 关注
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    66 引用 • 114 回帖 • 197 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 209 关注
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 725 关注
  • 叶归
    5 引用 • 16 回帖 • 11 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 224 关注
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 32 关注
  • 音乐

    你听到信仰的声音了么?

    62 引用 • 512 回帖