找回密码
 点一下
楼主: OracleKirito

存檔問題

[复制链接]
发表于 2017-7-6 13:07:30 | 显示全部楼层
OracleKirito 发表于 2017-7-6 12:04
對那我當初這樣寫上傳BATTLE NET更新後存檔還是會被覆蓋掉也= =

呃你尝试下吧,应该是你更新时修改了相关代码或者bank文件丢失了

点评

那假如說更新後多了幾格存檔項目一般來說不會重製?  详情 回复 发表于 2017-7-6 18:49
回复

使用道具 举报

 楼主| 发表于 2017-7-6 18:49:48 | 显示全部楼层
疯人¢衰人 发表于 2017-7-6 13:07
呃你尝试下吧,应该是你更新时修改了相关代码或者bank文件丢失了

那更新後多了幾格存檔項目一般來說不會重製?

点评

数据集(即bank)一般使用流程是这样的: 打开并同步数据集 读取值,并赋值给变量,如果存在,则返回读取的值,如果不存在则返回默认值(比如字符串就返回空串,整数就返回0) 进行游戏并使用这些变量,期间可能  详情 回复 发表于 2017-7-6 22:54
回复

使用道具 举报

发表于 2017-7-6 22:54:06 | 显示全部楼层
OracleKirito 发表于 2017-7-6 18:49
那更新後多了幾格存檔項目一般來說不會重製?

数据集(即bank)一般使用流程是这样的:
打开并同步数据集
读取值,并赋值给变量,如果存在,则返回读取的值,如果不存在则返回默认值(比如字符串就返回空串,整数就返回0)
进行游戏并使用这些变量,期间可能会改变某些变量的值
游戏结束时将变量重新写回数据集

所以如果你的新版本新增了某些值,这是读取老的数据集显然是没有的,这时候这些值会变成空值。不过玩家只要进行一次游戏,这些值就会写入数据集,再次游戏就能读取了。
如果你无法读取已经存在的值,就要看看,是数据集文件丢了,还是你读取值的触发器发生变化,其实没有正确读取旧值。数据集和地图版本无关,和地图是不是同名也无关,你甚至可以做出若干张地图都使用同一个数据集以便达到数据互通的目的。

点评

假如我改了其中的舊值那會不會導致BANK重置?  详情 回复 发表于 2017-7-7 17:17
回复

使用道具 举报

 楼主| 发表于 2017-7-7 17:17:12 | 显示全部楼层
yxxiaobin 发表于 2017-7-6 22:54
数据集(即bank)一般使用流程是这样的:
打开并同步数据集
读取值,并赋值给变量,如果存在,则返回读 ...

假如我改了其中的舊值那會不會導致BANK重置?
回复

使用道具 举报

发表于 2017-7-7 18:05:39 | 显示全部楼层
如果说你改动了旧值的名字,那么这个值就不作为那个值了,被认定为一个新值,这个值显然是空的,在数据集不存在。旧值会永久保存,不会丢失,但是没有代码使用它,相当于垃圾了。
回复

使用道具 举报

 楼主| 发表于 2017-7-13 19:57:53 | 显示全部楼层
疯人¢衰人 发表于 2017-7-4 22:08
是这样,你读取bank中存储的值使用的函数是BankValueGetAsXXX这种,
然后三个参数分别为bank、section、 ...

你說的galaxy是指自訂函數?
那如果是自訂函數的話
假如要選角色才要讀取存檔
是不是可以用自訂函數執行我裡面的觸發器

点评

剛剛測試發現了一件事 一定要在放在地圖初始化時的事件下才對正常讀取存檔??  详情 回复 发表于 2017-7-13 20:22
Galaxy是星际2的脚本语言,即使你使用的是触发器GUI来制作,最终还是会自动转换成Galaxy脚本。如果你熟知函数名和语法,也可以直接写Galaxy代码。两种方法只是过程不同,结果上是等效的(当然确实有极少数Galaxy函数  详情 回复 发表于 2017-7-13 20:21
回复

使用道具 举报

发表于 2017-7-13 20:21:44 | 显示全部楼层
OracleKirito 发表于 2017-7-13 19:57
你說的galaxy是指自訂函數?
那如果是自訂函數的話
假如要選角色才要讀取存檔

Galaxy是星际2的脚本语言,即使你使用的是触发器GUI来制作,最终还是会自动转换成Galaxy脚本。如果你熟知函数名和语法,也可以直接写Galaxy代码。两种方法只是过程不同,结果上是等效的(当然确实有极少数Galaxy函数没有写入到GUI中,只是一般用不到)。
对于存档来说,可以只是用GUI来制作,所有功能都能实现,无需自己手写Galaxy代码。

点评

因為我發現只要我地圖初始化裡沒有讀BANK存檔都會被重置= =  详情 回复 发表于 2017-7-13 21:00
回复

使用道具 举报

 楼主| 发表于 2017-7-13 20:22:14 | 显示全部楼层
本帖最后由 OracleKirito 于 2017-7-13 20:23 编辑


回复

使用道具 举报

 楼主| 发表于 2017-7-13 21:00:16 | 显示全部楼层
yxxiaobin 发表于 2017-7-13 20:21
Galaxy是星际2的脚本语言,即使你使用的是触发器GUI来制作,最终还是会自动转换成Galaxy脚本。如果你熟知 ...

因為我發現只要我地圖初始化裡沒有讀BANK存檔都會被重置= =

点评

肯定的啊,你没读存档,当然就没有获取到正确的值,而是采取默认值,游戏结束后保存存档,默认值就覆盖了正确的值了。 举个例子:上次玩家获得了500经验,并且保存到了存档里。这次游戏开始却没有读取它,那么玩家  详情 回复 发表于 2017-7-13 23:42
回复

使用道具 举报

发表于 2017-7-13 23:42:56 | 显示全部楼层
OracleKirito 发表于 2017-7-13 21:00
因為我發現只要我地圖初始化裡沒有讀BANK存檔都會被重置= =

肯定的啊,你没读存档,当然就没有获取到正确的值,而是采取默认值,游戏结束后保存存档,默认值就覆盖了正确的值了。
举个例子:上次玩家获得了500经验,并且保存到了存档里。这次游戏开始却没有读取它,那么玩家的经验默认为0,只好从头开始,假如玩家这次又获得了300经验,游戏结束时保存存档,玩家的经验就成了300。然而下次游戏还是不会读取,结果再次从头开始......
这样一来,存档的价值就丧失了。

点评

我指的是在事件地圖初始化的情況下 沒有那時做的存檔項目本地存檔都會給你用一個新的存檔就直接覆蓋掉舊的  详情 回复 发表于 2017-7-14 12:59
回复

使用道具 举报

发表于 2017-7-14 12:14:01 | 显示全部楼层
OracleKirito 发表于 2017-7-13 21:00
因為我發現只要我地圖初始化裡沒有讀BANK存檔都會被重置= =

实际上这里有点说错了,
如果没记错“打开数据存档”这一条是没有对应的galaxy函数的
而且必须写在地图中,写入mod无效……

打开存档读一次试试,如果读取失败,那么就是哪里出问题了。
回复

使用道具 举报

发表于 2017-7-14 12:24:47 | 显示全部楼层
预载入数据存档不是一条函数。那只是一条假代码。

告诉编辑器:“给玩家x预载bank!”

点评

这一点记得你说过,编译成代码后是没有这条的。 我一直就有一点想不明白,只是也不是必须了解,所以就没问,现在既然提到了,就问一下:如果手写代码,要如何预加载并同步bank?  详情 回复 发表于 2017-7-14 19:52
回复

使用道具 举报

 楼主| 发表于 2017-7-14 12:59:21 | 显示全部楼层
本帖最后由 OracleKirito 于 2017-7-14 13:03 编辑
yxxiaobin 发表于 2017-7-13 23:42
肯定的啊,你没读存档,当然就没有获取到正确的值,而是采取默认值,游戏结束后保存存档,默认值就覆盖了 ...

我指的是在事件地圖初始化的情況下
沒有那時做的存檔項目本地存檔都會給你用一個新的存檔就直接覆蓋掉舊的因為我當初放在地圖初始化下都可以讀取但是我把他換成函數跟另一個觸發器下都沒有獨到存檔
回复

使用道具 举报

 楼主| 发表于 2017-7-14 13:00:59 | 显示全部楼层
我用過函數+現在這樣的由另一個觸發去讀存檔都沒有

BANK演示.SC2Map

122.88 KB, 下载次数: 1

点评

你没有使用预加载并同步数据集的动作,在做存档是否存在的判定时,当然就会判定为不存在啦。下边这个是我的地图里的代码,你可以参考一下。因为我的地图只有玩家1-6是用户,所以就只为这六个玩家同步了存档。 [atta  详情 回复 发表于 2017-7-14 20:00
回复

使用道具 举报

发表于 2017-7-14 19:52:58 | 显示全部楼层
麦德三世 发表于 2017-7-14 12:24
打开数据存档不是一条函数。那只是一条假代码。

告诉编辑器:“给玩家x预载bank!”

这一点记得你说过,编译成代码后是没有这条的。
我一直就有一点想不明白,只是也不是必须了解,所以就没问,现在既然提到了,就问一下:如果手写代码,要如何预加载并同步bank?

点评

使用这条后,最后会在地图的根目录下生成一个预载bank的xml。游戏实际是读取这个文件来进行预载入的。 这个文件执行在触发器的前面。  详情 回复 发表于 2017-7-14 23:06
回复

使用道具 举报

发表于 2017-7-14 20:00:39 | 显示全部楼层
OracleKirito 发表于 2017-7-14 13:00
我用過函數+現在這樣的由另一個觸發去讀存檔都沒有

你没有使用预加载并同步数据集的动作,在做存档是否存在的判定时,当然就会判定为不存在啦。下边这个是我的地图里的代码,你可以参考一下。因为我的地图只有玩家1-6是用户,所以就只为这六个玩家同步了存档。
1.gif

点评

[attachimg]176970[/attachimg] 额我找到了但是我看不懂啊哪个是缓存啊?  详情 回复 发表于 2017-7-16 17:12
你知不知道战网的游戏缓存在哪?我记得头目有个帖子以前好像写了但是最近貌似被她误删了  详情 回复 发表于 2017-7-16 16:55
原來是這樣可以我一開始沒有預載存檔為啥可以讀取到?  详情 回复 发表于 2017-7-14 20:26
回复

使用道具 举报

 楼主| 发表于 2017-7-14 20:26:00 | 显示全部楼层
yxxiaobin 发表于 2017-7-14 20:00
你没有使用预加载并同步数据集的动作,在做存档是否存在的判定时,当然就会判定为不存在啦。下边这个是我 ...

原來是這樣可以我一開始沒有預載存檔為啥可以存到?
回复

使用道具 举报

 楼主| 发表于 2017-7-14 20:26:07 | 显示全部楼层
yxxiaobin 发表于 2017-7-14 20:00
你没有使用预加载并同步数据集的动作,在做存档是否存在的判定时,当然就会判定为不存在啦。下边这个是我 ...

原來是這樣但為啥我一開始沒有預載存檔可以讀取到?
回复

使用道具 举报

发表于 2017-7-14 23:06:03 | 显示全部楼层
yxxiaobin 发表于 2017-7-14 19:52
这一点记得你说过,编译成代码后是没有这条的。
我一直就有一点想不明白,只是也不是必须了解,所以就没 ...

使用这条后,最后会在地图的根目录下生成一个预载bank的xml。游戏实际是读取这个文件来进行预载入的。

这个文件执行在触发器的前面。

点评

原来是这样啊,了解了。  发表于 2017-7-16 09:21
回复

使用道具 举报

发表于 2017-7-16 16:55:45 | 显示全部楼层
yxxiaobin 发表于 2017-7-14 20:00
你没有使用预加载并同步数据集的动作,在做存档是否存在的判定时,当然就会判定为不存在啦。下边这个是我 ...

你知不知道战网的游戏缓存在哪?我记得头目有个帖子以前好像写了但是最近貌似被她误删了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-12-23 08:52 , Processed in 0.444770 second(s), 35 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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