找回密码
 点一下
查看: 3903|回复: 7

[更新中]翻译Natives.galaxy中一些重要的注释

[复制链接]
发表于 2010-4-30 08:53:51 | 显示全部楼层 |阅读模式
BLZ这次在官方脚本里给的注释比war3时代多多了,省却了我们很多测试时间。

我在这里翻译一些重要注释,由于还没翻译完,所以本文还在更新中。



对于Galaxy的使用者们来说,这些属于必看内容。

//--------------------------------------------------------------------------------------------------
// 关于类型
//--------------------------------------------------------------------------------------------------
//
// -- 复合类型与自动删除 --
//
// 许多原生类型代表“复合”对象(通常大于4字节)。银河脚本语言会自动追踪这些对象,当他们不再被使用时就将他们从
// 内存中移除(“不再被使用”的意思是没有任何指向他们的脚本引用)。受益于自动删除的类型有:
//
//      abilcmd, bank, camerainfo, marker, order, playergroup, point,
//      region, soundlink, string, text, timer, transmissionsource, unitfilter, unitgroup, unitref,
//      waveinfo, wavetarget
//
// 而如果你想干掉其余对象类型则需要使用与之对应的显式销毁函数来进行销毁。
//
//
// -- 复合类型与等值比较 --
//
// 通常的,两个“复合”类型之间进行==操作或!=操作只会比较两者的引用,而非其引用的对象的值。然而,少数对象类型却会直接对其引用的对象的值进行比较。这些类型是:
//
//      abilcmd, point, string, unitfilter, unitref
//
// 举例:
//
//      Point(1, 2) == Point(1, 2)                              // 真
//      "test string" == "test string"                          // 真 (注意:大小写敏感)
//      AbilityCommand("move", 0) == AbilityCommand("move", 0)  // 真
//      Order(abilCmd) == Order(abilCmd)                        // 假 (两个不同指令实例)
//      RegionEmpty() == RegionEmpty()                          // 假 (两个不同区域实例)
//
//
// -- 复合类型与 +/- 操作 --
//
// 除了数值类型(byte, int, fixed)以外,少数复合类型也支持+或-操作:
//
//      string, text    + 操作用于合并string或text
//      point           +/- 操作将会对点的x,y坐标进行增减



//--------------------------------------------------------------------------------------------------
// 演算体(Actor)
// - 你可以使用API直接发送演算体消息,它在临时性的场合下可以取代一些动画API.
//
// 设计脚注
// - 触发代码必须同步,而演算体则是异步的。这也就意味着我们不能让任何分支返回任何结果,因为在演算体系统中,一切都是可疑的。
//   甚至连包括演算体本身存在与否你都无法打包票;比方说某个演算体可能只有在高端显卡的机器上才能被创建。
// - 这也意味着(在演算体相关类型中)将不存在集合类,因为我们无法返回一个确定的集合个数值。(技术上说,我们还是可以有集合类,只是不能给出他们所包含元素的数量。不幸的是,这样的集合类看起来实在不会有什么价值,因此被我们抛弃在了体系之外)
// - 我们能返回演算体和演算体域(ActorScope),但这些值并不稳定,甚至可能为Null.
//   客户端可以操作它们,但不见得总能让它们正常工作。换句话说,客户端看似总是能得到一个正常的返回对象,但用户其实没办法验证它是否在真的正常,除非他盯着屏幕看。而是否为null的判断只取决于这些对象是否曾被尝试赋值。
//--------------------------------------------------------------------------------------------------



//--------------------------------------------------------------------------------------------------
// 编目(Catalogs)
//
// 注意:数据编目表包含了其余字段所引用的条目,即便该条目实际上并不存在。这就意味着通过CatalogEntryCount和CatalogEntryGet来枚举可能会返回一些实际上并不存在的条目。遇到这种情况需要用CatalogEntryIsValid来进行验证。



//--------------------------------------------------------------------------------------------------
// 循环(Looping)
//
// 以下是一套无需创建任何局部变量即可进行循环操作的便利函数集。
// 注意:
// - 循环数据存储在当前执行的线程中
// - 这套函数集不支持嵌套循环(类型相同的情况下),会引发运行时错误。
//
//--------------------------------------------------------------------------------------------------
// Integer
// - start和end的值包含在内。
//
native void IntLoopBegin (int start, int end);
native void IntLoopStep ();
native bool IntLoopDone ();
native int  IntLoopCurrent ();
native void IntLoopEnd ();
// Player group
native void PlayerGroupLoopBegin (playergroup g);
native void PlayerGroupLoopStep ();
native bool PlayerGroupLoopDone ();
native int  PlayerGroupLoopCurrent ();
native void PlayerGroupLoopEnd ();
// Unit group
native void UnitGroupLoopBegin (unitgroup g);
native void UnitGroupLoopStep ();
native bool UnitGroupLoopDone ();
native unit UnitGroupLoopCurrent ();
native void UnitGroupLoopEnd ();


//--------------------------------------------------------------------------------------------------
// 指令(Orders)
// - 使用"null"技能命令(abilcmd)来创建"smart"指令(自动根据目标决定要用的技能)
//--------------------------------------------------------------------------------------------------



//--------------------------------------------------------------------------------------------------
// 区域(Regions)
//
// 区域由大量基本形状组合而成(矩形、圆形等等)。每个形状能指定为正或负。如果一个点在某区域的任何一个正图形中且不再该区域的任何一个负图形中,那么这个点就被认为是在该区域中。
//
// 举例:
// 创造一个L型区域的两种方式
//
捕获.PNG
//
// 区域的“边界”被定义为能容纳所有该区域中正图形的最小矩形。区域的“中心”则是所有正图形中心的位置平均值。
//
// 区域的“偏移”与图形坐标有关,中心和边界会把偏移考虑进去。
//
//--------------------------------------------------------------------------------------------------

// RegionRandomPoint会尝试寻找区域内的一个随机值。对于只包含一个正图形的区域,该函数绝对有效,但遇到更复杂的图形组合,它可能会在尝试了最大次数以后放弃并返回(0, 0).


native void     StoryMode (playergroup players, bool storyMode);     //  只有暴雪官方地图可以使用


// StringFind返回在字符串s1中第一次出现字符串s2的位置,如果没有找到,则返回c_stringNotFound
const int c_stringNotFound  = -1;
native int      StringFind (string s1, string s2, bool caseSens);
// StringContains
const int c_stringBegin     = 0;    // 如果s1的开头部分为s2则返回真
const int c_stringEnd       = 1;    // 如果s1的结尾部分为s2则返回真
const int c_stringAnywhere  = 2;    // 不计位置,如果s1包含s2即返回真
native bool     StringContains (string s1, string s2, int location, bool caseSens);
// StringWord 将整个字符串按照其中的空格来划分为多个单词,按照给定索引(index参数)来返回单词。
//
// 例:StringWord("klaatu barada nikto", 2) 返回的是 "barada"
//
native string   StringWord (string s, int index);
// StringReplace用replace参数的内容来替换原字符串start参数和end参数之间的部分,并返回替换结果。
//
native string   StringReplace (string s, string replace, int start, int end);




之后部分先待续吧。

评分

参与人数 1威望 +5 收起 理由
Flyingsnow + 5 前来膜拜!

查看全部评分

发表于 2010-4-30 09:49:57 | 显示全部楼层
弱弱的问下 这个文件在哪了捏
回复

使用道具 举报

发表于 2010-4-30 09:51:36 | 显示全部楼层
头目V5~~
回复

使用道具 举报

发表于 2010-4-30 09:52:54 | 显示全部楼层
我一直在考虑算不算插楼。。。现在没顾虑了。。。。
回复

使用道具 举报

 楼主| 发表于 2010-4-30 10:06:41 | 显示全部楼层
我更新也是更新在原贴的。
回复

使用道具 举报

发表于 2010-4-30 10:17:40 | 显示全部楼层
啊。头目每次更新都看不到 本帖被编辑啥的,所以辛苦头目更新的话便发帖回应下罢……
好更新= =
回复

使用道具 举报

发表于 2010-4-30 11:07:37 | 显示全部楼层
大宇宙银河编辑器强壮了不少。
回复

使用道具 举报

发表于 2010-4-30 11:54:12 | 显示全部楼层
native void     StoryMode (playergroup players, bool storyMode);     //  只有暴雪官方地图可以使用

只有官方地图可以用StoryMode么
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 01:32 , Processed in 0.129537 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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