【重发】[转自WOW8]LocalPlayer(本地玩家)和非同步
魔兽地图编辑器吧
全部回复
仅看楼主
level 12
小鑫94 楼主
最近被吞了2个精品,重发一次,顺便骗精[鲁拉]
2012年01月25日 13点01分 1
level 12
小鑫94 楼主
因为使用jass来示范LocalPlayer,所以需要一定的jass基础才可以
#~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨~¨#
第一节:令人迷惑之GetLocalPlayer()
GetLocalPlayer(),顾名思义,是获取本地玩家的函数。其原形如下:
native GetLocalPlayer takes nothing returns player
那么什么是“获取本地玩家”呢?这要从WC的多人游戏运行机制说起。Warcraft3(事实上绝大多游戏都一样)在多人联机时,为了减小网络延迟对游戏进
程的影响,每当执行一段指令的时候,并不是主机执行后再把结果发给每个玩家,而是在每个玩家的电脑上分别执行相同的指令。因此每个玩家的执行结果都是自己
电脑中独立的结果。一般情况下,由于执行的指令和各参数相同,每个玩家会获得相同的结果,即使是计算随机数也不例外(因为“随机数”其实是由“种子”确定
性地计算出来的),所以每个玩家看到的游戏还是相同的。然而有一些情况会使得每个玩家的运算结果不同,最重要的情况之一便是这个函数——
GetLocalPlayer。它会返回执行该函数的玩家(也就是你自己),因此每个人会获得他/她在游戏中对应的玩家(的句柄)。
我知道有人要提问了……
“那数据不就不同步了么?不同步不就可以作弊了么?”
玻璃渣当然不可能那么纯洁,而事实上,魔兽有一套自己的同步机制保证游戏能公平地进行下去。如果检测到玩家数据不同步的话,会造成数据分流,玩家和主机的连接就会断开,俗称……掉线了。
“那这个函数有什么用?一调用不就掉线了?”
慢着,这里其实还有东西要解释。所谓“同步”,并不是要保证玩家间的所有数据都保持一致,否则效率还不如在主机上计算完再传输呢。要同步的只是关系到游戏本
身的关键数据,例如游戏中的单位和它的位置生命等各项属性、玩家资源、游戏时间等等,而GetLocalPlayer的返回值,玻璃渣说了,who
cares。
顺便一说的是,数据只在必要的时候才同步检查。例如某玩家修改了金钱,则只在该玩家购买Ta本来买不起的东西的时候才掉线,
同理单位技能CD,仅在施放本来不能释放的技能时掉线。所以作为一个weer,有时候地图出现了掉线,要考虑到有可能很久以前数据分歧就产生了,只是一直
没机会检查而已。
以上,关于同步的背景介绍完毕,接下来是正题。
2012年01月25日 13点01分 2
好赞,如果触发是设置镜头,为了仅设置触发玩家的镜头,要用LocalPlayer(),没看这个还真不知奥~~之前不知道用处我都把LocalPlayer()的条件给删了。。。[黑线]
2013年07月13日 15点07分
level 12
小鑫94 楼主
2012年01月25日 13点01分 5
level 9
已加精.
2012年01月25日 13点01分 6
level 12
小鑫94 楼主
..自重
2012年01月25日 13点01分 7
level 10
[瞌睡]话说精品里好像已经有有关本地玩家的帖子了~~
2012年01月25日 17点01分 8
level 10
额,原来被吞了....[汗]
2012年01月25日 17点01分 9
level 8
养肥
2012年01月25日 19点01分 10
吧务
level 15

2012年01月26日 03点01分 11
level 11
本地玩家来对指定玩家显示特效
会掉线吗??
2012年01月27日 05点01分 12
吧务
level 15
会。但可以异步特效的字符串
2012年01月27日 06点01分 13
都有哪些掉线或哪些不掉线,有人统计过没?
2023年04月10日 00点04分
level 12
为什么是用J讲解的,我没完全看懂
2012年03月15日 11点03分 14
去学J吧 骚年
2014年12月18日 14点12分
回复 __________X___ :。。。这坟挖的
2014年12月18日 16点12分
回复 Applelovehebe :楼下挖的 不是我
2014年12月18日 16点12分
…………
2014年12月19日 13点12分
level 7
这贴这么具有实用性,怎么没人关注?
2014年12月18日 14点12分 15
level 12
看到只有自己能点选的单位那一栏我就吓尿了
2014年12月21日 04点12分 16
level 9

2015年07月30日 04点07分 17
level 11
只能说。。新手极其容易掉线[喷]
2015年10月25日 14点10分 18
level 1
顶一个
2016年02月03日 09点02分 20
level 7
[惊哭]惊得我突然产生了学J的兴趣。
2016年07月20日 04点07分 21
level 15
为啥要用j写 触发没有吗。。
2017年08月06日 03点08分 22
level 7
3楼和4楼呢
2020年05月09日 01点05分 23
1 2 尾页