Previous topicNext topic
 Gameofmir Help
Help > 游戏引擎功能系统 > 游戏功能详解 >
高速哈希表

写入键值(包含物品首爆例子)
GOMHashTableCreate

功能:写入键值到内存

GOMHashTableCreate 参数1 参数2

参数详解:

参数1:标识字符串(不区分大小写)

参数2:存储内容

例子:

我们做个物品首爆提示功能

QManage.txt

[@Startup]
#ACT
;写在这里,是因为我们要把之前的记录,载入到哈希链表里,用于查询记录
GOMHashTableLoad ..\QuestDiary\功能文件\爆出提示.txt 1

;载入文件记录,如果想每次启动M2重新计算的,这里就可以去掉,因为哈希值链表,每次重新启动就会初始化,虽然是全局,但不会保存记录到下次启动M2,也不会因为玩家下线而清除之前添加的键值。

 

QFunction-0.txt

[@PickUpItemEx] ;这是拾取物品触发 爆物品触发看这里[查看]
#IF
;这条是查询指令,判断有没有这条记录,因为是用内存算法查找,所以会比用Checktextlist这个命令快上百倍、上千倍
GOMHashTableContainsKey <$CURRTEMNAME>

#ACT
;跳到这里,说明找到此记录,那就不是首爆了,那就空着,不写代码

#elseact
;跳到这块,说明没找到此记录
;加入哈希链表记录,参数2可以随便定义一个,在这里、用1就可以
GOMHashTableCreate <$CURRTEMNAME> 1
;同时输出文件,下次重新启动M2也可以载入此记录,如果想每次启动M2都是初始化,这句输出文件和载入命令也可以免了
AddTextListEx ..\QuestDiary\功能文件\爆出提示.txt  <$CURRTEMNAME>
SendMsg 1 恭喜玩家:<$USERNAME> 爆出全区第一个<$CURRTEMNAME>


查找键值(逻辑判读命令)
GOMHashTableContainsKey

功能:查找键值

GOMHashTableContainsKey 参数1
参数详解:

参数1:标识字符串(不区分大小写)

例子:

#IF
GOMHashTableContainsKey 标识字符串
#ACT
sendmsg 6 找到此记录!


功能:读取键值
GOMHashTableGet

GOMHashTableGet 参数1 参数2
参数详解:

参数1:标识字符串(不区分大小写)

参数2:存储的变量

例子:

#ACT
GOMHashTableGet 标识字符串 <$STR(D1)>
;有没有内容,取决于这个标识字符串有没有写入数据
sendmsg 6 内容为:<$STR(D1)>


功能:删除键值
GOMHashTableRemove

命令:

GOMHashTableRemove 参数1
参数详解:

参数1:标识字符串(不区分大小写)

#ACT
GOMHashTableRemove 标识字符串
;删除后,再查找或读取这个标识字符串,就不会有这个记录


功能:删除所有键值
GOMHashTableClear

命令:

GOMHashTableClear

例子:

#ACT
GOMHashTableClear
;全部删除后,此前添加的记录也会全部没有



功能:载入文件到键值
GOMHashTableLoad

命令:

GOMHashTableLoad 参数1 参数2 参数3
参数详解:

参数1:载入的文件路径

参数2:存储内容(载入的键,全部赋予此存储内存)

参数3:分割符号(留空代表换行符)

例子:

QManage.txt

[@Startup]
#ACT
GOMHashTableLoad ..\QuestDiary\功能文件\爆出提示.txt 1
;我们这个txt以行作为分隔符,所以参数3留空。


功能:载入文件到键值加强
GOMHashTableLoadEx

命令:

GOMHashTableLoadEx 参数1 参数2 参数3 参数4
参数详解:

参数1:载入的文件路径

参数2:标识字符串附加值(这个内容加上文件读取分割的内容,用于区分用途)

参数3:存储内容(载入的键,全部赋予此存储内存)

参数4:分割符号(留空代表换行符)

例子:

QManage.txt

[@Startup]

#ACT
GOMHashTableLoadEx ..\QuestDiary\功能文件\爆出提示.txt ABC 1
;我们这个txt以行作为分隔符,所以参数4留空。

;比GOMHashTableLoad多了标识字符串附加值
#ACT
GOMHashTableGet ABC金项链 <$STR(D1)>
sendmsg 6 内容为:<$STR(D1)>

;那读取到的内容就是1,ABC是自己定义的,用于区分不同用途