找回密码
 点一下
查看: 2927|回复: 11

SyncStoredxxx的同步问题

[复制链接]
发表于 2009-11-29 02:22:57 | 显示全部楼层 |阅读模式
一直对这个函数很陌生。。貌似牵扯到同步机制问题//

假设有N多机器联机

排除主机外的所有机器都同步数据
那么最终被接受的应该是哪个数据呢?
如:

if GetLocalPlayer()==2 then
call StoreInteger(XX,XX,XX,2)
call SyncStoredInteger(XX,XX,XX,)
endif
..
..
..
if GetLocalPlayer()==3 then
call StoreInteger(XX,XX,XX,3)
call SyncStoredInteger(XX,XX,XX,)
endif
..
..
..
if GetLocalPlayer()==4 then
call StoreInteger(XX,XX,XX,4)
call SyncStoredInteger(XX,XX,XX,)
endif
..
..
..
call call StoreInteger(XX,XX,XX,0)
call DisplayTimedTextToPlayer(GetTriggerPlayer(),0,0,10,I2S(GetStoredInteger(XX,XX,XX)))


我一直以为照这样写的话肯定输出的是 4
但是实验证明是错的!
输出的值  有时候是 2或者3
这到底是为什么呢?
有什么办法可以确定同步哪一个值?

评分

参与人数 1威望 +5 收起 理由
疯人¢衰人 + 5 鼓励研究……

查看全部评分

发表于 2009-11-29 09:16:36 | 显示全部楼层
LZ想判断主机吧……
http://bbs.islga.org/read-htm-tid-2257-keyword-%D6%F7%BB%FA.html
http://bbs.islga.org/read-htm-tid-2716-keyword-%D6%F7%BB%FA.html
这种方法是不准确的
正确的方法应该是多次试验
取平均值……
回复

使用道具 举报

 楼主| 发表于 2009-11-29 10:18:50 | 显示全部楼层
不是想判断主机诶。。。

上面说了 是除了主机以外的别的玩家
回复

使用道具 举报

 楼主| 发表于 2009-11-29 10:24:27 | 显示全部楼层
对了 ! 竟然有人说使用 Trigger相关函数
也可以同步数据!!
并且可以保证最终接纳的数据就是此方法同步上去的。。

即:

if GetLocalPlayer()==2 then
call StoreInteger(XX,XX,XX,2)
call SyncStoredInteger(XX,XX,XX,)
endif

if GetLocalPlayer()==3 then
call StoreInteger(XX,XX,XX,3)
call SyncStoredInteger(XX,XX,XX,)
endif

if GetLocalPlayer()==4 then
call StoreInteger(XX,XX,XX,4)
call SyncStoredInteger(XX,XX,XX,)
endif

if GetLocalPlayer()==5 then
call 未知方法同步数据 5
endif

call call StoreInteger(XX,XX,XX,0)
call DisplayTimedTextToPlayer(GetTriggerPlayer(),0,0,10,I2S(GetStoredInteger(XX,XX,XX)))



无论谁是主机  最终输出结果都是5
回复

使用道具 举报

发表于 2009-11-29 11:25:12 | 显示全部楼层
联机方面的问题我一点也不懂……
这个,因为没有测试条件……
相关的内容也不是很好找
鼓励LZ的研究……
回复

使用道具 举报

 楼主| 发表于 2009-11-29 11:29:54 | 显示全部楼层
- =果然还是独立奋斗的说

我记得看过一个 魔法反弹的技能演示

首先:
山丘对目标轮锤子~

如果这时候设置目标无敌  目标还是会中BUFF

演示里面把设置目标无敌加
到TriggerSyncStart()和TriggerSyncReady()之间

就奇迹般的不中BUFF不掉血了。。

很神奇的2个函数

有人知道TriggerSyncStart()和TriggerSyncReady()的作用到底是什么么
回复

使用道具 举报

发表于 2009-11-29 12:14:55 | 显示全部楼层
http://bbs.islga.org/read-htm-tid-873-keyword-SyncStored.html
关于这一系列函数
你自己看这个帖子吧
回复

使用道具 举报

发表于 2009-11-29 12:31:46 | 显示全部楼层
Sync这个东西应该是多人广播,看谁的消息最后到达吧
回复

使用道具 举报

 楼主| 发表于 2009-11-30 12:33:05 | 显示全部楼层
广播。。。广播。。。看来是谁的机器慢
就接受谁的数据了?。。。

那广播应该是广播到哪里呢??

是一起往主机广播?
那为什么大多数情况是主机同步成功呢?
回复

使用道具 举报

发表于 2009-12-10 07:58:42 | 显示全部楼层
TriggerSyncStart()和TriggerSyncReady()类似等待,也就是说那个无敌并不是瞬间加上或者0秒计时器后删除,而是持续了至少0.X秒
回复

使用道具 举报

发表于 2010-1-10 14:18:54 | 显示全部楼层
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
回复

使用道具 举报

发表于 2010-1-12 14:26:18 | 显示全部楼层
if GetLocalPlayer()==5 then
call 未知方法同步数据 5
endif

无论谁是主机  最终输出结果都是5
是不是你代码搞错了
GetLocalPlayer()这个是玩家的变量 绝对不会有条件成立了
除非这个五是ELSE 这样的话就 是五了
或者是你在这里打代码手误吧  
所以看到这代码请你确认一下你的代码是不是这样的  还是这是简单写代码
或者 把测试代码发上来  看一下到底是怎么 回事
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 20:20 , Processed in 0.177795 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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