找回密码
 点一下
查看: 2457|回复: 21

星际2自定义地图如何存储游戏信息,下次进入时可以读取

[复制链接]
发表于 2016-8-27 05:58:47 | 显示全部楼层 |阅读模式
比如玩家退出时记录分数,下次进去读取这个分数给予一定奖励。这个能实现吗
发表于 2016-8-27 14:47:46 | 显示全部楼层
本帖最后由 zt0616 于 2016-8-27 16:48 编辑

以前头目做过基础存档演示,能记录、读取分数,建议看看
这里我演示下一些扩展功能,看过你之前的帖子,好像在做RPG,或许有帮助:
1 能保存玩家资源(War3Mod的木材和金币)、单位技能、物品、等级等等
2 能根据不同游戏模式保存单位的位置、面向。比如在副本1和副本2中,单位存档位置是各自不同的
3 能比较时间戳同步各个玩家存档。比如某玩家不小心删掉了存档,可以找一起玩过的人再进游戏,拷贝别人存档中自己的信息继续上次的进度

存档演示.SC2Map (16.96 KB, 下载次数: 5)

点评

待会回家看看。如果是联网的所有玩家下次登录都可以读取吗?好像传奇网游那样子的  详情 回复 发表于 2016-8-27 19:52
回复

使用道具 举报

 楼主| 发表于 2016-8-27 19:52:36 | 显示全部楼层
zt0616 发表于 2016-8-27 14:47
以前头目做过基础存档演示,能记录、读取分数,建议看看
这里我演示下一些扩展功能,看过你之前的帖子,好 ...

待会回家看看。如果是联网的所有玩家下次登录都可以读取吗?好像传奇网游那样子的
回复

使用道具 举报

发表于 2016-8-27 20:25:21 | 显示全部楼层
本帖最后由 yxxiaobin 于 2016-8-27 20:27 编辑

你只能读取自己的,即便是写下队友的存档,但是也没办法应用到队友身上,他还是只能读取自己的....
当然,你通过代码来实现从别人的bank里读取自己的数据是可以的,但是这在实际应用中并没有什么卵用。

点评

例如天梯啊 积分制度这些都没办法实现吗?听说国外有地图可以,好像是外挂啥的?  详情 回复 发表于 2016-8-27 21:05
回复

使用道具 举报

 楼主| 发表于 2016-8-27 21:05:36 | 显示全部楼层
yxxiaobin 发表于 2016-8-27 20:25
你只能读取自己的,即便是写下队友的存档,但是也没办法应用到队友身上,他还是只能读取自己的....
当然, ...

例如天梯啊 积分制度这些都没办法实现吗?听说国外有地图可以,好像是外挂啥的?

点评

看过一些有积分榜的地图存档,无一例外用的比较时间戳更新积分 国外地图不清楚,sc2mapster上好像也没有提到外挂或者其他办法  详情 回复 发表于 2016-8-27 23:02
回复

使用道具 举报

发表于 2016-8-27 23:02:33 | 显示全部楼层
sky282438525 发表于 2016-8-27 21:05
例如天梯啊 积分制度这些都没办法实现吗?听说国外有地图可以,好像是外挂啥的?

看过一些有积分榜的地图存档,无一例外用的比较时间戳更新积分
国外地图不清楚,sc2mapster上好像也没有提到外挂或者其他办法
回复

使用道具 举报

发表于 2016-8-27 23:21:36 | 显示全部楼层
目前没有什么方法能自动的更新所有玩家的积分,毕竟bank是保存在本地的,对方不上网,你无论如何也读取不了他的积分。而且让每个玩家的积分副本都保存在所有的bank中,这种数据量也有点不现实,而且实时性也根本不高。就算是考虑试用时间戳,因为脚本无法读取服务器时间,所以很难实现精确地时间戳。

总之,这件事在开放相关功能之前,没有完美的实现方案。

点评

//游戏账号5-S2-1-111111 //角色1的总计游戏时间 //角色1 //角色2的总计游戏时间 //角  详情 回复 发表于 2016-8-30 17:59
这个时间戳对于地图只是123456789按顺序排列的自然数罢了,代表着数据的版本,所以能够高效的更新数据。  详情 回复 发表于 2016-8-29 22:24
回复

使用道具 举报

发表于 2016-8-29 22:24:48 | 显示全部楼层
yxxiaobin 发表于 2016-8-27 23:21
目前没有什么方法能自动的更新所有玩家的积分,毕竟bank是保存在本地的,对方不上网,你无论如何也读取不了 ...

这个时间戳对于地图只是123456789按顺序排列的自然数罢了,代表着数据的版本,所以能够高效的更新数据。

点评

也就是说你必须频繁更新地图才行。  发表于 2016-8-29 23:14
回复

使用道具 举报

发表于 2016-8-30 17:58:59 | 显示全部楼层
yxxiaobin 发表于 2016-8-27 23:21
目前没有什么方法能自动的更新所有玩家的积分,毕竟bank是保存在本地的,对方不上网,你无论如何也读取不了 ...

    <Section name="5-S2-1-111111"> //游戏账号5-S2-1-111111
        <Key name="unec|Timestamp|"> //角色1的总计游戏时间
            <Value fixed="350.25"/>
        </Key>
        <Key name="unec|Unit|"> //角色1
            <Type string="unec"/>
        </Key>

        <Key name="edoc|Timestamp|"> //角色2的总计游戏时间
            <Value fixed="89.25"/>
        </Key>
        <Key name="edoc|Unit|"> //角色2
            <Type string="edoc"/>
        </Key>
    </Section>

    <Section name="5-S2-1-222222"> //游戏账号5-S2-1-222222
        <Key name="Ulic|Timestamp|"> //角色1的总计游戏时间
            <Value fixed="2234.15"/>
        </Key>
        <Key name="Ulic|Unit|"> //角色1
            <Type string="Ulic"/>
        </Key>
    </Section>

不用频繁更新地图,存档在玩家中间往来。就像priceles说的,这个时间戳代表数据版本,至于用总计游戏时间还是用自然数做 看个人喜好了。上面是个简化的存档例子,读取单位时,会比较在场所有人的存档中 自己的Timestamp键,选择数值大的读取
回复

使用道具 举报

发表于 2016-8-30 17:59:04 | 显示全部楼层
yxxiaobin 发表于 2016-8-27 23:21
目前没有什么方法能自动的更新所有玩家的积分,毕竟bank是保存在本地的,对方不上网,你无论如何也读取不了 ...

    <Section name="5-S2-1-111111"> //游戏账号5-S2-1-111111
        <Key name="unec|Timestamp|"> //角色1的总计游戏时间
            <Value fixed="350.25"/>
        </Key>
        <Key name="unec|Unit|"> //角色1
            <Type string="unec"/>
        </Key>

        <Key name="edoc|Timestamp|"> //角色2的总计游戏时间
            <Value fixed="89.25"/>
        </Key>
        <Key name="edoc|Unit|"> //角色2
            <Type string="edoc"/>
        </Key>
    </Section>

    <Section name="5-S2-1-222222"> //游戏账号5-S2-1-222222
        <Key name="Ulic|Timestamp|"> //角色1的总计游戏时间
            <Value fixed="2234.15"/>
        </Key>
        <Key name="Ulic|Unit|"> //角色1
            <Type string="Ulic"/>
        </Key>
    </Section>

不用频繁更新地图,存档在玩家中间往来。就像priceles说的,这个时间戳代表数据版本,至于用总计游戏时间还是用自然数做 看个人喜好了。上面是个简化的存档例子,读取单位时,会比较在场所有人的存档中 自己的Timestamp键,选择数值大的读取

点评

这会出现一个保密性的问题,一定要选择运算十分复杂的算法, 否则想把某人从积分榜下拉下来就很容易了。  详情 回复 发表于 2016-8-30 22:51
回复

使用道具 举报

发表于 2016-8-30 19:21:42 | 显示全部楼层
病毒吗,这存档不就是一个越滚越大的雪球,还能感染其他的玩家存档……

点评

如果比对后,只保留位置靠前的若干名,就不会无限制的增长。  详情 回复 发表于 2016-8-31 10:42
回复

使用道具 举报

发表于 2016-8-30 22:51:20 | 显示全部楼层
zt0616 发表于 2016-8-30 17:59
//游戏账号5-S2-1-111111
         //角色1的总计游戏时间
            

这会出现一个保密性的问题,一定要选择运算十分复杂的算法,
否则想把某人从积分榜下拉下来就很容易了。

点评

如果深入的了解了编辑器,加密算法什么的都是纸老虎。  发表于 2016-8-31 10:38
回复

使用道具 举报

发表于 2016-8-31 10:40:25 | 显示全部楼层
zt0616 发表于 2016-8-30 17:59
//游戏账号5-S2-1-111111
         //角色1的总计游戏时间
            

利用玩家自己的游戏总时间是个不错的想法。我没想到这种方案,只是想到了利用地图版本内置时间戳。我上边的意见是错误的,这里纠正一下,以免误导别人。
回复

使用道具 举报

发表于 2016-8-31 10:42:25 | 显示全部楼层
dqndqn1 发表于 2016-8-30 19:21
病毒吗,这存档不就是一个越滚越大的雪球,还能感染其他的玩家存档……

如果比对后,只保留位置靠前的若干名,就不会无限制的增长。

点评

我感觉还不如整个一直在线的客服号,跟这个号发消息,他拉你进房间读存档,要玩游戏也是跟这个客服号发消息,自动创建房间,客服作为观战记录数据到个人服务器,就是暴雪爸爸发现了会出什么事就不知道了……  详情 回复 发表于 2016-8-31 12:26
回复

使用道具 举报

发表于 2016-8-31 12:26:46 | 显示全部楼层
yxxiaobin 发表于 2016-8-31 10:42
如果比对后,只保留位置靠前的若干名,就不会无限制的增长。

我感觉还不如整个一直在线的客服号,跟这个号发消息,他拉你进房间读存档,要玩游戏也是跟这个客服号发消息,自动创建房间,客服作为观战记录数据到个人服务器,就是暴雪爸爸发现了会出什么事就不知道了……

点评

你厉害  发表于 2016-8-31 20:11
回复

使用道具 举报

 楼主| 发表于 2016-8-31 20:26:18 | 显示全部楼层
貌似你们回帖我接收不到信息。听起来好像很高端啊,听不懂的。。。我还是放以后在研究这个吧
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 02:23 , Processed in 1.196914 second(s), 39 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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