找回密码
 点一下
查看: 1809|回复: 3

PTR1.3.5的一些隐藏改动。

[复制链接]
发表于 2011-7-12 19:49:38 | 显示全部楼层 |阅读模式
1.3.5的补丁信息见此:
http://bbs.islga.org/read-htm-tid-123897.html

这是一个小补丁,不过还是有一些隐藏的改动的。本帖列举一些补丁信息中未列出的编辑器隐藏改动。




-现在使用对话框模板来创建对话框的时候。如果传递过去的参数是不存在的模板,也不会导致游戏崩溃。仅仅会输出一串错误信息“找不到xxx模板”而已,游戏会继续进行。这个游戏更稳定了些呢




另外加了了一些新的native函数,不过大部分是blizzard only的。

[codes=galaxy]
native bool     PlayerHasLicense (int inPlayer, int inLicense);

// Player Licenses
const int c_playerLicenseLibertyFull        = 162;
[/codes]

以上函数可以判断玩家是否购买了自由之翼的付费版,还是在处于免费试玩状态。不过这个函数只有blizzard官方地图可以调用就是了。从参数的名称看来,以后肯定还会扩展到虫群之心。比方说判断玩家有没有购买虫群之心。




[codes=galaxy]
native bool         UnitCanAttackTarget (unit inUnit, unit inTarget);
[/codes]

这个函数用来判断单位能否攻击某个目标。不过这个函数很废,没什么意义。暴雪也没把它加入触发编辑器中,显然是放弃了它。我测试了一下,把两个参数都设为同一个机枪兵,结果竟然返回真。太土了,显然根本没考虑单位是不是自己。

不过这个问题不大,最大的问题在于——如果单位不能攻击目标,这个函数需要执行20秒(在我的电脑上)才能返回假……完全没用嘛。这函数显然是bug了,我会想办法向blizzard汇报看看。




[codes=galaxy]
native point UnitGroupCenterOfGroup (unitgroup g);
native unit UnitGroupClosestToPoint (unitgroup g, point p);
[/codes]

这两个新函数,一个是直接用来获得一个单位组目前的中心点的。另一个用来获得一个单位组中离开一个指定点最近的那个单位。




[codes=galaxy]
native void UnitGroupAddUnitGroup (unitgroup inGroup, unitgroup addUnitGroup);

native void UnitGroupRemoveUnitGroup (unitgroup inGroup, unitgroup removeUnitGroup);
[/codes]

这两个函数一个用来把一个单位组加入另一个单位组,另一个是从单位组中删除单位组。有人会问,唉,不是已经有这样的函数了么?

其实以前没有,以前的向单位组中添加单位组的功能是其实就是用向单位组中添加单位这个函数UnitGroupAdd()包装出来的。其实就是一个个地挨个往单位组里面塞单位。

现在暴雪直接给出了native版本,执行效率方面当然是上去了。


我做了一下基本的测试:

我在地图上放了100个机枪兵,然后两个单位组分别有其中50个机枪兵,把其中50个加入另外50个的单位组里面。原版函数的平均执行时间是0.09毫秒,而新版的native函数执行时间是0.03毫秒。效率是原来的三倍。

然后,我试着在100个机枪兵的单位组中删去50个机枪兵。原版函数平均执行时间0.087毫秒,新版native函数只需0.026 毫秒。效率是3.4倍。

50个机枪兵的添加和删除的数量还是比较小的。一旦数字加大,效率的差别会更大明显。





最后一个新增的Native函数:

[codes=galaxy]
// Links to nydus web pages
const int c_nydusLinkBreakingNews           = 0;
const int c_nydusLinkAccountManagement      = 1;
const int c_nydusLinkAccountPurchase        = 2;
const int c_nydusLinkAccountTrialUpgrade    = 3;
const int c_nydusLinkAccountNew             = 4;
const int c_nydusLinkAccountTrial           = 5;
const int c_nydusLinkSecurityPassword       = 6;
const int c_nydusLinkForum                  = 7;
const int c_nydusLinkCommunity              = 8;
const int c_nydusLinkFeedHomepage           = 9;
const int c_nydusLinkFeedCommunity          = 10;
const int c_nydusLinkStore                  = 11;
const int c_nydusLinkSecurityHelp           = 12;
const int c_nydusLinkSupport                = 13;
const int c_nydusLinkOnlineGuide            = 14;
const int c_nydusLinkCopyright              = 15;

native void         UILaunchNydusLink (playergroup inPlayers, int inNydusLink);
[/codes]

这个函数可以直接把玩家转到指定的网页哦!可惜的是,这个同样只有blizzard地图可以用。否则可以在地图里放GA的链接呢。不过无所谓了。这东西确实也容易被人滥用。限制是好事。






另外,由于1.3.5加入了试玩版和付费版账号的判断数据编辑器里有了一些相应的变化:

游戏UI数据里加入了Trial Allowed Maps这项,显然是指试玩版可以玩哪些战役地图。我大致看了下,雷诺的前三关,泰克斯的第一关,韩森的第一关。以及两张挑战地图。看来大家可以给免费试玩的同学们制作地图呢。

未命名.jpg

另外种族数据里也加入了一个flag,决定当前种族是否能被试玩版的玩家选择:

默认情况下试玩账号只能选人类。你也可以勾上其它两个让他们过把瘾什么的。

2.jpg
发表于 2011-7-12 19:51:38 | 显示全部楼层
先抢地方的。。
回复

使用道具 举报

发表于 2011-7-12 20:04:55 | 显示全部楼层
给力函数只能玻璃渣用啊。。。
回复

使用道具 举报

 楼主| 发表于 2011-7-13 18:58:47 | 显示全部楼层
关于那个有bug的新函数的测试地图:

UnitCanAttackTargetTest.SC2Map

145 KB, 下载次数: 14

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 00:31 , Processed in 0.074825 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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