• QQ21031394

    工作时间

    周一至周五:9:30-18:30

    周末及节日:根据情况调休

  • 手机版二维码

    随时手机查素材

  • 扫描二维码

    加入官方QQ群

站长推荐
prmosquito 一级会员
  • 未知地域
  • 6发帖数
  • 4主题数
  • 0关注数
  • 3粉丝

[演示和教程] JASS: 本地玩家详解

[复制链接]
prmosquito 发表于 2020-4-20 22:09:54 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题 <
提莫作坊QQ群:提莫作坊www.tbwlm.cn

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 prmosquito 于 2020-4-23 14:03 编辑

JASS: GetLocalPlayer()函数详解



教程原作者: PurgeandFire

原创翻译,请勿转载。


翻译和修订:JoyWoon

该文章对[本地玩家]或是[GetLocalPlayer]依旧有疑惑的朋友十分有帮助。

阅读前请先了解什么是handle,什么不是handle。

handle是游戏内一切实例的句柄,而handle也有handle索引,可以通过GetHandleId函数获取。

String字符串、Integer整数型、Real实数型,据我所知都不是handle。因此在使用本地玩家和GetLocalPlayer时,请一定注意是否对handle进行了操作。

以下都是handle类型(包括代理agent,因为agent继承了handle)的数据(引自:common.j)。

  
type agent extends handle
  
type event extends agent //触发器事件
  
type player extends agent //玩家
  
type widget extends agent //游戏对象
  
type unit extends widget //单位
  
type destructable extends widget //可破坏物
  
type item extends widget //物品
  
type ability extends agent //技能实例
  
type buff extends ability //buff实例
  
type force extends agent //玩家组
  
type group extends agent //单位组
  
type trigger extends agent //触发器
  
type triggercondition extends agent //触发器判断
  
type triggeraction extends handle //触发器动作
  
type timer extends agent //计时器
  
type location extends agent //以下不一一标识了……
  
type region extends agent
  
type rect extends agent
  
type boolexpr extends agent
  
type sound extends agent
  
type conditionfunc extends boolexpr
  
type filterfunc extends boolexpr
  
type unitpool extends handle
  
type itempool extends handle
  
type race extends handle
  
type alliancetype extends handle
  
type racepreference extends handle
  
type gamestate extends handle
  
type igamestate extends gamestate
  
type fgamestate extends gamestate
  
type playerstate extends handle
  
type playerscore extends handle
  
type playergameresult extends handle
  
type unitstate extends handle
  
type aidifficulty extends handle
  
type eventid extends handle
  
type gameevent extends eventid
  
type playerevent extends eventid
  
type playerunitevent extends eventid
  
type unitevent extends eventid
  
type limitop extends eventid
  
type widgetevent extends eventid
  
type dialogevent extends eventid
  
type unittype extends handle
  
type gamespeed extends handle
  
type gamedifficulty extends handle
  
type gametype extends handle
  
type mapflag extends handle
  
type mapvisibility extends handle
  
type mapsetting extends handle
  
type mapdensity extends handle
  
type mapcontrol extends handle
  
type playerslotstate extends handle
  
type volumegroup extends handle
  
type camerafield extends handle
  
type camerasetup extends handle
  
type playercolor extends handle
  
type placement extends handle
  
type startlocprio extends handle
  
type raritycontrol extends handle
  
type blendmode extends handle
  
type texmapflags extends handle
  
type effect extends agent
  
type effecttype extends handle
  
type weathereffect extends handle
  
type terraindeformation extends handle
  
type fogstate extends handle
  
type fogmodifier extends agent
  
type dialog extends agent
  
type button extends agent
  
type quest extends agent
  
type questitem extends agent
  
type defeatcondition extends agent
  
type timerdialog extends agent
  
type leaderboard extends agent
  
type multiboard extends agent
  
type multiboarditem extends agent
  
type trackable extends agent
  
type gamecache extends agent
  
type version extends handle
  
type itemtype extends handle
  
type texttag extends handle
  
type attacktype extends handle
  
type damagetype extends handle
  
type weapontype extends handle
  
type soundtype extends handle
  
type lightning extends handle
  
type pathingtype extends handle
  
type mousebuttontype extends handle//war3 1.29
  
type animtype extends handle//war3 1.30 PTR
  
type subanimtype extends handle//war3 1.30 PTR
  
type image extends handle
  
type ubersplat extends handle
  
type hashtable extends agent
  
type framehandle extends handle//war3PTR1.31.0.11889
  
type originframetype extends handle//war3PTR1.31.0.11889
  
type framepointtype extends handle//war3PTR1.31.0.11889
  
type textaligntype extends handle//war3PTR1.31.0.11889
  
type frameeventtype extends handle//war3PTR1.31.0.11889
  
type oskeytype extends handle//war3PTR1.31.0.11889
  
type abilityintegerfield extends handle//war3PTR1.31.0.11889
  
type abilityrealfield extends handle//war3PTR1.31.0.11889
  
type abilitybooleanfield extends handle//war3PTR1.31.0.11889
  
type abilitystringfield extends handle//war3PTR1.31.0.11889
  
type abilityintegerlevelfield extends handle//war3PTR1.31.0.11889
  
type abilityreallevelfield extends handle//war3PTR1.31.0.11889
  
type abilitybooleanlevelfield extends handle//war3PTR1.31.0.11889
  
type abilitystringlevelfield extends handle//war3PTR1.31.0.11889
  
type abilityintegerlevelarrayfield extends handle//war3PTR1.31.0.11889
  
type abilityreallevelarrayfield extends handle//war3PTR1.31.0.11889
  
type abilitybooleanlevelarrayfield extends handle//war3PTR1.31.0.11889
  
type abilitystringlevelarrayfield extends handle//war3PTR1.31.0.11889
  
type unitintegerfield extends handle//war3PTR1.31.0.11889
  
type unitrealfield extends handle//war3PTR1.31.0.11889
  
type unitbooleanfield extends handle//war3PTR1.31.0.11889
  
type unitstringfield extends handle//war3PTR1.31.0.11889
  
type unitweaponintegerfield extends handle//war3PTR1.31.0.11889
  
type unitweaponrealfield extends handle//war3PTR1.31.0.11889
  
type unitweaponbooleanfield extends handle//war3PTR1.31.0.11889
  
type unitweaponstringfield extends handle//war3PTR1.31.0.11889
  
type itemintegerfield extends handle//war3PTR1.31.0.11889
  
type itemrealfield extends handle//war3PTR1.31.0.11889
  
type itembooleanfield extends handle//war3PTR1.31.0.11889
  
type itemstringfield extends handle//war3PTR1.31.0.11889
  
type movetype extends handle//war3PTR1.31.0.11889
  
type targetflag extends handle//war3PTR1.31.0.11889
  
type armortype extends handle//war3PTR1.31.0.11889
  
type heroattribute extends handle//war3PTR1.31.0.11889
  
type defensetype extends handle//war3PTR1.31.0.11889
  
type regentype extends handle//war3PTR1.31.0.11889
  
type unitcategory extends handle//war3PTR1.31.0.11889
  
type pathingflag extends handle//war3PTR1.31.0.11889
  

什么是GetLocalPlayer()
  
constant native GetLocalPlayer takes nothing returns player
  
GetLocalPlayer是最有用的本地API函数之一,但它也是最容易出问题的。

GetLocalPlayer用于索引本地玩家,引用GetLocalPlayer的代码都将进行异步操作。因此,如果操作得当,您仅仅只能对一个玩家进行异步操作,而对其他玩家而言并不会同步这个操作。

GetLocalPlayer 异步
我们常称GetLocalPlayer函数为“异步函数”。 这意味着它容易引起玩家之间的数据不同步。数据的不同步会产生错误,并导致在玩多人游戏时会使某些玩家断开连接。 在本教程中,我将向您详细的解释如何正确的使用GetLocalPlayer(),而不会出现玩家断线问题。

JASS中如何引用玩家?
在JASS中,玩家索引的范围是0-11,而不是1-12。
(0 = 1, 1 = 2, 2 = 3 ... 10 = 11, 11 = 12)

如下:
  
if GetLocalPlayer() == Player(7) then
  
// Player(7) 引用的是Player 8(粉红色)
  
endif
  

其他常见的使用方法是:
1.   GetTriggerPlayer()
2.   GetOwningPlayer(GetTriggerUnit())
第1个是当前触发器事件触发的玩家,第2个是当前触发器事件触发的单位的所有者。您可以使用各种引用玩家的方式,不过以上是最常见的方式。

GetLocalPlayer基本用法
游客,本付费内容需要支付 30枚蓝钻 才能浏览支付


本地玩家和GetLocalPlayer.zip

33.13 KB, 下载次数: 13, 下载积分: 蓝钻 -225 枚

售价: 30 枚红钻  [记录]

[发帖际遇]: prmosquito 在论坛发帖时没有注意,被老提莫摸去了 6 枚 绿钻. 幸运榜 / 衰神榜
楼主热帖
免责条款:本站仅提供学习的平台,所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,并不承担任何法律责任,如果对您的版权或者利益造成损害,请提供相应的资质证明,我们将于3个工作日内予以删除。

本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。

本网站所提供的信息,只供参考之用。本网站不保证信息的准确性、有效性、及时性和完整性。本网站及其雇员一概毋须以任何方式就任何信息传递或传送的失误、不准确或错误,对用户或任何其他人士负任何直接或间接责任。在法律允许的范围内,本网站在此声明,不承担用户或任何人士就使用或未能使用本网站所提供的信息或任何链接所引致的任何直接、间接、附带、从属、特殊、惩罚性或惩戒性的损害赔偿。

精彩评论12

Morgan琨 发表于 2020-4-21 20:20:00 | 显示全部楼层 <
楼主发贴辛苦了,谢谢楼主分享!我觉得天工社区是注册对了!
创世神 发表于 2020-4-22 01:06:00 | 显示全部楼层 <

这东西我收了!谢谢楼主!天工社区真好!
亦真亦假皆为常世之梦
CNWorth 发表于 2020-4-23 10:21:30 | 显示全部楼层 <

我看不错噢 谢谢楼主!天工社区越来越好!
来看看 发表于 2020-4-23 12:01:38 | 显示全部楼层 <

这个帖子不回对不起自己!我想我是一天也不能离开天工社区
Secret放肆 发表于 2020-4-23 21:31:46 | 显示全部楼层 <

楼主太厉害了!楼主,I*老*虎*U!我觉得天工社区真是个好地方!
[发帖际遇]: Secret放肆 乐于助人,奖励 37 枚 绿钻. 幸运榜 / 衰神榜
liandey 发表于 2020-4-24 21:12:45 | 显示全部楼层 <
楼主发贴辛苦了,谢谢楼主分享!我觉得天工社区是注册对了!
初阳美少女 发表于 2020-4-26 20:39:45 | 显示全部楼层 <

我看不错噢 谢谢楼主!天工社区越来越好!
无邪蝶恋 发表于 2020-4-28 15:24:21 | 显示全部楼层 <
楼主发贴辛苦了,谢谢楼主分享!我觉得天工社区是注册对了!
[发帖际遇]: 无邪蝶恋 在老提莫家吃蘑菇,花了 24 枚 绿钻. 幸运榜 / 衰神榜
沃之文化 发表于 2020-5-1 15:14:40 | 显示全部楼层 <

感谢楼主的无私分享!要想天工社区好 就靠你我他

强调下版规的规定,如有恶意灌水从重处罚:
=====发表主题规则=======
1.主题内容请一定要附带预览图片,谢谢;
2.搬运来的东西请尽量不要卖钱!;
3.发帖有任何疑问请联系QQ21031394;
=====发表回复规则=======
1.禁止直接复制标题内容的;
2.禁止纯数字或者纯字母的;
3.禁止乱打一通文不对题;
4.禁止屠版和刷分行为;
第一次扣分处理,第二次扣分+警告,警告三次禁言三天,绝不手软,情况严重的直接封号,请大家珍惜自己的账号!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
天工维度唯一QQ群
786014245

欢迎进群交流,入群答案:编辑器

  • 官方在线客服

    QQ客服:小雪

    点击交谈

    QQ客服:砂糖

    点击交谈

    团队老大:荀公子

    商务合作
  • 上海市静安区共和新路4718号宏慧新汇园6号楼603室

  • 手机扫码查看手机版

    手机查找资源更方便

  • 扫一扫关注官方微信

    加入官方QQ群

Powered by 天天RPG&DZX3.4 ©2020-2021 Comsenz Inc.提百万设计( 沪ICP备18032615号-1 )营业执照