说一些感想不喜略过:
最近一段时间比较忙,也不知道该写什么就一直停更了,最近在处理几个问题的时候突然想把这篇文章写一下分享出来
目录 :
一: ScriptGlobal.lua
二: 数据库读写MDDATA
一: ScriptGlobal.lua
这个文件之前简单了介绍了一下: 全局变量,可以封装一些公共的调用,定义全局的参数变量
其实这个文件在还是比较重要的,因为他能封装一些公关的调用,所以大部分公用的函数都会在这里写,所以有能力的小伙伴可以自己找几个分析分析
这里我先把我了解的简单分成三类
- 系统定义的功能常量(简单介绍)
- 自定义的功能常量
- 自定义函数
1. 系统定义的功能常量
比如一些神鼎,属性,修炼之类的枚举定义,这些一定不要随意改动的
2. 自定义的功能常量
这里一般定义的是一些特殊的功能,比如最常见的江湖声望,我们需要存储两个数值:1. 当前等级, 2. 声望数量
我们可以发现在你的ScriptGlobal文件中必然有两个这样的常量(后面的具体数值视情况而定)
MD_JIANGHUSHENGWANGLEVEL = 111
MD_JIANGHUSHENGWANG = 112
为什么要定义一个常量?定义之后如何使用?
常量的定义是因为本身他的存储方式决定的,他是不可重复的,如果不在统一文件中定义很容易出现重复,或者混淆,
定义好了常量主要还是为了读写数据库(这里的数据库也不一定是真实的数据库,也可以存到txt中) ,但是一般使用常量定义的说明
他的存储是有限的,所以最好还是都写到数据库中比较好
自定义函数一般是我们基于某些功能写的但是由于改功能调用较为频繁,所以一般会放在这里写,比如排行榜,杀人不,获取一些榜单数据之类的,
这里再扩展一下,比如某个功能需要频繁的读写txt, 其实可以再该lua中定义一个对象,在第一次调用的时候判断一下对象是否为空,为空的话再去读取TXT并且加载到对象中, 在写入的时候也是先写入txt同时重新加载一次对象内的数据(有点类试与缓存的写法,有开发经验的小伙伴应该会比较容易理解) 甚至是不是可以写入的时候都不去写入TXT 定时取写入一次,但是这种如果出现重启就会存在问题
二. 数据库存储
上面我们提到了ScriptGlobal中的常量的自定义的常量,使用到存储数据库的,那么怎么存储我们下面来具体说一下
-
获取数据库中常量对应的数值
GetMissionData(sceneId,selfId, 常量) 该方法是读取数据库Tlbb表t_char字段Mddata 二进制字符中对应常量的数值
比如上面的声望等级GetMissionData(sceneId,selfId, MD_JIANGHUSHENGWANGLEVEL)
其实这个方法之前也提到过,红利的写法也是一样的
-
数据库写入
SetMissionData(sceneId,selfId, 常量, 1000) 1000为具体想要写入的数值, 这个写入的方法是有长度限制的,但是我没有仔细了解过具体长度,如果假设他是int类型的话应该只有11位,(只是猜测没有验证过)
现在很多的功能其实都是基于MDDATA的存储来实现的,当然MDDATA也不是无限制存储的使用还是要谨慎一些