ERA帮助手册求翻译
本帖附件为ERA手册,共有html文件13个。文字量比较少。
请各位跟帖自己挑能翻译的。其中era ii.html已经由yzgrey 玩家翻译好了。在此表示感谢。
谢谢大家为359A添砖加瓦。
wog手册翻译
Mod概述Mod是文件及文件夹的集合,其中包括图片,声音,视频,脚本,插件,补丁包等文件以及定制的文件。Era 根目录下增加了一个Mods文件夹,此目录下的每个文件夹都代表一个mod,相当于该mod的游戏根目录。
原始:数据
MOD: Mods\我的mod 名字\数据
Mod 内容
Mod的内容并不意味着在游戏运行时间内对其进行改变。所有在运行时间内被改变主题的文件(如环境,日志以及临时的文件)应该在安装时被放置在真实的游戏文件夹下。一些mods可以同时存在于同一Mod文件夹内并确保它们是互相兼容的。每一个Mod可以拥有无限制的被自动载入的游戏内资源(在数据中的snd,vid以及pacarchives)。
优先级
如果任意一个mod拥有和源游戏中某个文件同样的名称,这个源自mod的文件夹将会替代原先的文件。如果几个mods中的文件拥有同一个名称时,那么拥有最高优先级的mod的名字将被使用。为了给Mod分配优先级,在它名字的开头添加一个数字,用空格将剩余的文本分开。这个更高的数字代表了更高的优先级。例如:100 我的mod。如果没有特别设置优先级,它会被假设为0。在平等优先级的情况下,当你进行文件搜索时,建立mods文件夹的时间会被检查并且系统会选择时间点最近的文件夹作为最优选项。这种机制保证了后安装的mod将会比先前的mod拥有更高的优先级。
提示如何给予一个文件夹最近的建立及修改时间。
设置“工具\安装mod.exe”作为唯一验证的mod文件夹名称。
原始的snd/vid档案以如下顺序载入:
*英雄无敌3.vid来自CD
*视频.vid
*h3ab_ahd.vid
*英雄无敌3.snd来自CD
*英雄无敌3.snd
*h3ab_ahd.snd
神之苏醒Mod
神之苏醒是当前分发作为规范的一款mod并且没有改变任何的游戏资源。大部分神之苏醒的资源被放置在数据\hmm35wog.pac中。所有的神之苏醒会话直接读取相关档案并忽略其他的mods。唯一没有被推荐的方法(试图去修理它)是在hmm35wog.pac中输入新的数据,包括确定的第一次的帮助医疗帐篷防御以确保游戏没有被冻结(这句话不太明白)。
额外的选项修正:
更快的战斗动画。删除文件 数据\cranim.txt以使其无效。
没有预备战斗时的音乐:删除文件 数据\wog=no prebattle music.snd以令其无效。
更灵动的英雄无敌3对象:删除文件 数据\wog-animated objects.pac以令其无效。
更生动的数目:删除文件 数据\wog-animated trees.pac以令其无效。
战场装饰:删除文件 数据\wog-battle decorations.pac以令其无效。
尤娜mod
尤娜是一个开源码的mod。它被写在一个纯德尔菲的Era软件开发工具包中。它的精髓是完全的可选性(数据\尤娜的\settings.ini),在游戏中原生支持所有的新功能,包括人工智能及多人游戏代码。此mod与其他mod是兼容的,并不会在存档中存储任何东西并且不会改变ERM脚本。想删除这个mod只需删除“Mods\Yona文件夹即可。
特点:
新的战场日志提示在英雄模式下描述可能击杀的数量,平均数值,灾祸值以及在攻击中运用的新能力。
新能力:
1.枪兵\戟兵忽略竞争的奖励并对骑兵类单位造成200%的伤害。
* 骑士
* 冠军骑士
* 半人马
* 半人马队长
* 独角兽
* 战斗独角兽
* 暗黑骑士
* 死亡骑士
* 游牧民
* 席尔瓦半人马
* 地狱烈马
* 梦魇兽
2.骑士、冠军骑士获得移动一格20%的伤害奖励而不是原来的5%奖励。伤害奖励与其他奖励可以叠加,比如攻击的改变或反击技能等。
3.剑士\十字军在防御时可忽略50%的物理伤害。
4.半兽人\半兽人首领(扔斧子那位仁兄)根据目标与自己的距离来决定是否拥有两次攻击。
公式:基础伤害*(19-距离)-2/100。
额外技能卷轴mod
在第二个技能列表右侧增加卷轴按钮。(位于英雄界面并允许玩家用鼠标滚动,如果超过8个)
改变
可便携性
这个游戏变得更加可便携化。所有的游戏环境被存储在“英雄无敌3.ini”文件夹中。默认CD扫描机制是关闭的。Era会自动载入文件。“.\英雄无敌3\数据\英雄无敌3.vid”和“.\英雄无敌3\数据\英雄无敌3.snd”,如果全部的。如果载入CD选项在“英雄无敌3.ini”被设置为1,Era扫描所有的CD驱动去寻找英雄无敌3的文件。如果前文提及的snd/vid档案文件没有在游戏文件夹中被找到,Era会试图从CD中载入他们,提供“读取CD”的选项将会开启。
出错模式
为了支持出错mod设置出错选项为1.文件“eralog.txt”会自动重启游戏。
可扩展性
所有的erm文件(以及拥有相同名称的ert文件)会从“数据\s”中自动存储,在地图开启或F12被点击时。神之苏醒的选项会话不会验证在磁盘中已存在的文件。脚本的数量被限制在外部存储器的数量下。如果一个有效(无论是正面或是负面)数字在脚本数字之前被找到(比如 50 文本.erm),它被视作读取优先级。如果这个文件只读取这些在数据\s文件夹中的脚本,那么只有那些被写在那里的脚本(一个脚本名称一行)才会被读取。在这种情况下,读取顺序将和文件的排列顺序一致。神之苏醒ini选项“交替_脚本_位置不再被使用。
多人游戏一个联机游戏可以放置在一台电脑的不同游戏副本下(不同文件夹)。如果它们在“英雄无敌3.ini文件中拥有不同的“唯一系统ID”。要获取这个ID,只需释放所有的游戏环境线程并运行游戏。
外部的IP地址检测机制进行了改进。第一个非本地地址被移动到gethostbyname函数返回列表中第一个位置。
编辑器原始的编辑器(h3maped.exe 和 h3ccmped.exe) 工作出色。神之苏醒的编辑器(h3wmaped.exe and h3wcmped.exe) 可能需要特殊的修正。神之苏醒的地图编辑器可以正确的打开地图并读取mods。它也接受所有的内存补丁并且读取来自Era编辑器的动态链接库文件夹。灰脸编辑器补丁向外部编辑器提供功能性的服务时需要查找在h3sprite内的资源。Lod和h3bitmap.lod.神之苏醒的事件编辑器不能支持mods。为了能够使地图ed补丁为新的神之苏醒中的对象提供功能,同时也为了激活神之苏醒的事件编辑器之前不能提供的功能,这个地图制造器可以运行“工具\修正编辑器\修正编辑器tor.bat。这将输出在h3sprite.lod和h3比特地图内所有重要的数据。
定制按键支持
对于所有mod或脚本来说,使其在据大多数游戏内视窗中具有定制按键是有可能的。Mop的原始插件(按键.动态链接库)被改进并成为了Era的一部分。定制按键在*btn文件中被描述。所有的*btn文件在游戏开始时从“数据\按键文件夹中被读取。帮助
所有的文件,变更的日志,升级的ERM以及手动的Era可以在帮助文件夹中被找到。
按钮
Windows 7会在非运行Xp兼容性选项时具有的兼容性。
不再具有神之苏醒的安装程序。
Speeded-up calling all wog dialogs, several times lower HDD load.迅速生成呼叫所有神之苏醒的会话,几次后减弱HDD读取。
最优化的神之苏醒的会话HDD以及中央处理器的读取。“减少中央处理器读取.bin”补丁被移除同时高清mod“Berserker的中央处理器补丁”将会被关闭.
使用ERM写入的ini文件或Era的功能现在经常生成选项的分类列表及文件中的密匙。
随机地图在游戏或编辑器中的生成不再基于源自末日之刃的垃圾snd/vid/lod文件
如果合适的资源在其他补丁中被找到,游戏不再需要在数据文件夹中天然的lods文件。
在灰脸中添加同步的生物声音。
脚本98(快速而又智能的存储)被重写,现在支持神之苏醒菜单的选择,不在同聊天冲突并且在变量中也十分安全。
所有的工具被移动至工具文件夹,包括新的规范:
Lod输出, lod输入, 对象.exe, repman.exe, resman.exe, 安装mod.exe.
升级了应用程序界面及其资源。Updated API and sources.
F11键现在从内存中提取脚本至“数据\提取的脚本文件夹以替换“数据\s\提取的脚本文件夹。
移除复制的神之苏醒的初始代码。
修正Era1.9PO/内存中导致非法储存游戏数据和大小的错误。
修正无论何时插件和补丁在关闭延长文件中读取,Era1.9的错误。
技术细节
定制按键支持
所有*btn文件(平的txt文件)包括(每个按键)以下行数:
【按键窗口】;【唯一的按键名称】;【按键防护】;【左坐标】;【右坐标】;【宽】;【高】;【长描述】;【短描述】,在按键窗口是以下值时:
*adv地图
*市镇
*英雄
*英雄们
*战场
*傀儡(按键不再被使用)
每一个按键自动的获取ID并通过呼叫std call(来自Era.dll)”获取按键ID”功能来检索用以匹配唯一认证的按键名称。如果特殊的名称没有被登记,此功能返回-1值。
虚拟文件系统(“mods”文件夹支持)
同以下名字一起工作的文件系统功可以被支持
*建立文件A
*获得文件属性A
*寻找第一个文件A
*寻找下一个文件A
*寻找关闭
*读取动态链接库A
*删除文件A
*建立文件夹A
*移除文件夹A
*获取私有的字符串A的轮廓
*读取来自文件A的指针
*运行声音A
*获取当前文件夹A
*设置当前文件夹A
新事件“叠堆伤害”(!?FU77012)
内容提要:
*攻击者叠堆(0..41)或-1
*防御者叠堆(0..41)或-1
*最终伤害值(恒定)
*最终伤害值(可变)
*基础伤害值
*伤害奖励
*是否遥远(如果不是0或1则移除垃圾站)
*距离(只针对理论攻击)
*是否理想化(表示提示或人工智能计算)
这个时间发生在当叠堆攻击或射击重合时。
新事件“人工智能叠堆攻击效果”(!?FU77013).内容提要
*攻击者叠堆 (0..41)
*防御者叠堆 (0..41)
*效果值(可变)
*效果值(恒定)
新事件“在聊天”(!?FU77014)第一个内用提要决定事件类型和剩余的内容提要:
* 0 (输入聊天)
无法输入?(0..1)
* 1 (输入)
输入字符串
行为:0(清除对话框),1(关闭对话框)或2(初始化)
* 2 (离开聊天室)
其它条款
* 添加“应用程序界面挂钩”功能。它能自动找到补丁大小并比较挂钩功能。
* 应用程序挂钩和挂钩功能返回一个重新代码的新的地址在桥Mod中。
* 版本1保持了Era动态链接库当*era补丁中做读取处理。
* Era自动呼叫方法DisableThreadLibraryCalls 以为了所有读取的*era补丁。
* 方法ExecErmCmd不会在错误出现时导致游戏崩溃。
* 事件“在名字颜色”被重命名至“在下一个生成的窗口”。 风大,实在抱歉。我没有看到上传文件的选项,所以只能把翻译的文本发上来了。有几处地方涉及专有名词,我不是十分清除,还请见谅。 谢谢,我会对其进行修订。
翻译的时候请注意,文件名如heroes3.vid,文件相对地址,ERA指令,脚本,等内容不需翻译。 好的,下次翻译时我会注意。
main.html
什么是Era?Era——是《英雄无敌:神之苏醒》3.5的一个技术性扩展。
项目目标:
能够使用第三方插件和补丁。
修复游戏以及ERM脚本语言错误,使mod的开发和调试运转更容易,更容易保持脚本间的兼容性。
具有新的命令和事件的ERM语言扩展。
在游戏对话框中使用彩色字体。
简化mod安装。
统一和标准化游戏引擎的开发。
玩家将会在Era下见识到什么新功能呢?
一些游戏错误已经被修复,例如CPU超载,崩溃,以及ERM脚本被关闭。
例如在文档选择对话框自动高亮最近的文档等有用的调整,以及更快的游戏加载。
在Era下的新mod也许可以使用带有彩色文字、新的键盘命令、高级内存函数的自定义设计对话框。
mod制作者可以使用Era的哪些新资源呢?
全部Era项目和基础模块的源代码。
Pascal和C++对象的附加模块以帮助创建新插件。
新的ERM事件,包括键盘操作。
随着自动分配和释放块成为可能,克服了脚本变量不兼容的问题,从而无限制地扩展ERM内存。
能够生成插件和ERM脚本的新事件,并使用第三方扩展。
能够从存档导出和重载ERM脚本,或者加载到存档中去。
能够从ERM读取动态链接库,获取他们的函数地址,并且调用他们。所有的标准调用习惯均支持。返回的结果可以是字符型、整型或者浮点型数字。
设置钩子、节省内存写入、与缓存的ini文件工作、操作保存文档的用户自定义部分以及检查游戏状态的应用程序接口。
创建和实施核心代码补丁的工具。
LOD档案自动加载和LodImport/ResMan组件,该组件允许玩家不运行WoG升级程序就能创建安装包。
能够动态执行ERM命令,支持插件中的ERM/Era事件。 我来翻译下插件吧。
游戏补丁:
(ERA提供了一种可以直接将数据写入内存的处理方法),而游戏补丁的作用则是定位在内存中需要修改的地址。从而可以修正游戏BUG,开启或关闭某些游戏功能。这些补丁的扩展名是”BIN“。
ERA1.9以上版本的补丁有两种,其一是EraPlugin文件夹下,为了增强兼容性,所有该文件夹下的补丁都会被自动加载,而如果要关闭某些补丁功能,只需要简单地更改文件扩展名就可以了。该文件夹下的补丁会在WOG代码初始化之后被加载。
另一种补丁则被放在文件夹"BeforeWog"或者"AfterWog”下,这类补丁会在程序将控制权转移给WOG代码之前/之后加载。
ERA自带补丁简述:
BeforeWog文件夹下的补丁:
remove exe protection.bin,作者: Berserker。某些修改需要在程序加载完DLL文件后执行,为此,必须要取消对程序EXE文件的保护。不然的话,程序将在各种菜单处崩溃。由于某些商业原因(其实就是我看不懂……)这种预防是必须的。
AfterWog文件夹下的补丁:
ai sod radius.bin,作者: Berserker。恢复死亡阴影中的AI的反应半径。在WOG中,这个半径被莫名其妙地大幅度减小了,从而导致AI智力降低和卡机(为啥减小了反而会导致卡机啊!!!!)
enable next hero button.bin, 作者: MoP。允许使用"Next Hero“按键。这个按键在多人游戏中,由于可能导致的作弊被禁止了(谁能告诉我这个键在哪里啊!!!)
enable town info.bin,作者:Berserker。在城镇界面,右击城镇图标可以检查城镇信息(反正我是没找到这个图标在哪里……)
fix erm check syntax.bin, 作者: Berserker。修正了ERM引擎在某些逻辑检测中的不合理行为
fix erm ss a command.bin, 作者: Berserker。修正了ERM指令SS:A的一个BUG,这个命令现在仅仅修改法术的简称,而不是全名(……玩中文版的表示这是神马玩意啊)
fix erm ca b2 command.bin, 作者: Berserker。修正了ERM指令CA:b2的一个BUG,这个命令现在不会建造被拆除建筑的所有前置建筑了。
fix erm tr r roads.bin, 作者: Berserker。修正了ERM指令TR:R在设置/获取道路状况时的BUG
dl buttons fix.bin, 作者: Berserker.(这个我表示完全看不懂……求援手)
mp3 44khz patch.bin, 作者: Berserker. 允许游戏播放更高质量的MP3文件
nocd speedup.bin, 作者: Berserker. 跳过CD检测,大概可以减少游戏加载速度约3~6秒
no erm he f redraw.bin, 作者: Berserker. 取消了ERM指令HE:F执行后附带的屏幕重绘
no erm ow r redraw.bin, 作者: Berserker. 取消了ERM指令OW:R执行后附带的屏幕重绘
no erm scripts turning off.bin, author: Berserker. 禁止ERM引擎在出错时停止执行脚本。以前ERM引擎会在脚本出错的位置写入字符串(#0)来终止执行,但是,这样会永久删除掉脚本的一部分
no memory and hdd checks.bin, 作者: Berserker. 取消对内存空间和硬盘空间的检测
no multiplayer notes.bin, author: Berserker. “不是所有脚本都兼容多人游戏”这个警告信息不会再出现了
no real time trigger.bin, author: Berserker. 禁用实时触发器指令!?TL
reduce cpu load.bin, 作者: Berserker.减少了CPU占用,具体原理……我表示理解不能
remove black screens.bin, 作者: MoP. 去除了游戏窗口之间的光暗平滑处理
skeleton transformer fix.bin, 作者: Bes.龙巫妖和鬼魂不会在骷髅转换场中被转换成骷髅了
---------------------------------我是分割线--------------------------------------------------------------
以下补丁默认是关闭的,可以通过将这些文件的后缀名改成BIN来开启这些补丁功能
, author: Berserker. 无视水系魔法等级,召船术一定会成功
, author: MoP. 可以在常规地图中选择战役英雄作为首发
, author: Berserker. 去除了龙巫妖的格挡技能
, author: MoP. 允许解散英雄的最后一支部队(这个功能很棒)
, author: MoP. 通过地狱之门可以到达任何一个城镇(不限地狱了)
, author: Berserker. AI盟友不会傻乎乎地给你送大礼了
, author: Berserker. 取消读取游戏时会出现的确认信息
, authors: Berserker & gamecreator. 取消8个辅助技能的限制,请配合Secondary Skil Scroll这个MOD使用
, author: Berserker. 可以移动英雄的最后一支部队,但是这支部队会失去所有的生物经验
, author: Berserker. 自动战斗不会询问玩家是否撤退了
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
游戏插件:如果补丁不足以满足需要,那么,还可以使用插件。插件是用高级语言撰写并编译成机器码的动态链接库文件(DLL),可用于实现新功能,修正游戏BUG,甚至是对整个游戏的改动。
在旧版(1.8)ERA中,插件的扩展名是DLL,并被放置在EraPlugin文件夹下。ERA保证了这些插件会在WOG代码初始化之后被加载。
新版本的插件同样在EraPlugin文件夹下,但是扩展名则成了ERA。新插件有更强的功能,例如设置对游戏事件和ERA函数的自定义处理器。插件在初始化过程中,不能引入会修改游戏程序的代码,仅仅允许自定义处理器和数据结构初始化(好吧,我承认这里是瞎翻了,根本看不懂……)
要加载新版本插件,只要将文件放在EraPlugin文件夹下就行了。卸载的方式则是修改文件的扩展名。
ERA自带插件:
, author: baratorch. 修正了宝物制造者的BUG(啥BUG啊?)
, author: MoP. 可以在铁匠铺买到所有的战争机器
完了……
[ 本帖最后由 wuxiangjinxing 于 2013-2-6 08:45 编辑 ]
builtin_changes.html
LOD档案自动加载不再需要以安装包的形式发布mod,安装包会以两种主要的游戏档案导入文件:h3sprite.lod和h3bitmap.lod。Era使用Data里发现的*.pac扩展名加载所有的lod档案。加载的优先级由文件名字的字母表顺序决定。后面加载的文档在资源搜索上有更高的优先级。如果两个档案,"A.pac"和"B.pac",替换了相同的图片,那么来自档案"B.pac"的图片将会被使用。
从加载后的游戏中导入或导出脚本
按下F12键会导致"Data\s"文件夹下的脚本script重新编译并加载。如果在按下按键的时候没有打开ERM对话框,游戏进程不会被破坏。该功能允许对已经存在的存档进行非常有效的调试和实施新脚本版本的上载。
注意:如果地图存在内嵌脚本,不要使用F12键。
建议复杂和有趣地图的制作者用单一的脚本发布,脚本将会被安装在"Data\s"文件夹内。
按下F11键会从游戏内存中保存所有的基本脚本script到"Data\s\ExtractedScripts"文件夹内。如果有需要分析保存的东西或者轮换的话,这种机会将非常有用。
颜色文字
两种颜色的组合:浅金色和白色用于所有的游戏对话框。为了高亮金色的文字,必须用特殊的括弧包装起来:"{word}"。
这种实践成为颜色标签用法。
Era添加颜色标签在游戏中支持以下格式:
"{~color name}...包括嵌套标签的文字...{~}"
与用于HTML里的原则相同,应用如下:
开始标签({~color})让文字变成特定的颜色,直到其他颜色标签或者遇见结尾标签({~})。
下一个例子清晰地解释了上面所提到的:
"White {~red} Red {~blue} Blue {~} Red {~} White"
颜色可以被指定为十六进制形式(xxxxxx, 例如: ff0057),也可以通过注册的颜色名字指定。147个注册的标准html颜色的所有清单可以在标准颜色表页面查看。
此外,第三方插件可以在事件"OnNameColors"里注册新的颜色名字。也有简短的同义词列表给最常用的颜色:
r=红,g=绿,b=蓝,y=黄,w=白,o=橙,p=紫,a=浅绿
最近使用存档高亮
游戏运行之后,我们开始例行计数所有存档,希望记忆最后使用的那个,这种情况经常出现。现在,游戏自己找到最近使用的文档,并且在游戏列表里自动高亮它,这允许你保持时间和勇气。
高分辨率下DL对话框对中修复
使用ERM DL命令创建的原始对话框绑定到800x600,这导致了高分辨率下无效的对中。
ERM HE:A 命令修复
用负索引从变量中取值的语法没有正确工作。例如:y-5。这种情况导致一些标准WoG脚本错误。
ERM HE:A3 命令修复
从背包中删除宝物不会导致他们数量的减少。
ERM HE:A# 命令修复
操作的结果未知。现在信号1表示成功。
ERM DL:C 命令修复
该命令关闭所有的对话框链而不是当前的。
ERM CA:B3 命令修复
检查已建建筑的命令并不总是正确工作。特别地,如果你尝试检查生物住所的话,会返回错误的结果。
多个逻辑或物理核心运行游戏导致崩溃的修复
这种崩溃是有规律的,在随机地址上发生,并且直到现在都无法修复。解决的办法是绑定游戏进程到第一逻辑核心。
用ini文件加速运行
运行速度慢的功能被更快的ini文件替换。此外,文件缓存于首个参照,且重复地参照不会使用硬盘。
在热座上自动填充玩家名字
开始和加载热座游戏传统上紧接着输入两个玩家的名字之后以使OK键可用。现在游戏生成两个各自的名字,且一打开对话框就激活按键。
。。。。
附件下不下来啊,我想我可以的。。。;juwe; 标准颜色那一页就不需要翻译了吧,一看就明白;juwe;new_commands.html
简介新的命令是由延伸的标准操作“SN”引进的。所有的Era命令可以与以下ERM单元一起工作:
-不论正负的数值常数;
-Set(没有修饰语"d")与Get("?")句法;
-变量y+, v, w, x, z+, f..t, e;
-字符串常数,形式为^...^,使用%Y, %V, %W, %X, %Z, %E作为分类符支持。分类符必须有正索引。
Era的核心,传递了一系列的整数(每一个4字节大小)给命令。字符串或者取值句法的情况下,这些数字是变量的地址。变量的地址是数值,描述了可操作内存的数据位置。参数的最大数量是64。
例如:
!!SN:Xv1; 从v1传值
!!SN:X?v1; 传递v1变量地址
!!SN:Xz1; 传递z1变量地址
!!SN:X^text^; 临时存储文本并传递其地址
动态链接库(DLL)加载
!!SN:L/?;
Example:
!!SN:L^kernel32.dll^/?y1;
从库函数中获取二进制函数的地址
!!SN://?;
Example:
!!SN:L^kernel32.dll^/?y1 Ay1/^lstrcpyA^/?y2;
执行二进制函数
!!SN:E//arguments...
调用习惯:
- 0 (PASCAL)
- 1 (CDECL or STDCALL)
- 2 (THISCALL)
- 3 (FASTCALL)
该函数默认要求返回整数结果。结果将会被v1里的变量替换。如果该函数返回实数(浮点型)结果,习惯上数字应该增加4。所有的Windows系统库使用STDCALL习惯。
Example:
!!SN:L^kernel32.dll^/?y1;
!!SN:Ay1/^lstrcpyA^/?y2;
!!SN:Ey2/1/z1/z2; 复制z2内容到z1里。VRz1:Sz2也一样;
跳转到当前触发器的指定命令
!!SN:G;
Example:
!?CM0; 右击冒险地图
0; !!SN:G2; 转到命令#2
1; !!IF:M^this text will never be shown^;
2; !!IF:M^this text will be shown^;
命令的编号只使例子更清晰。
获取ERM函数地址
!!SN:C0//?;
ERM函数地址仅可被用于跳转一个函数命令。
跳转到指定ERM函数命令
!!SN:C/;
获取控制的函数与调用的一样,使用本地变量。这是它的益处。当跳转几乎一下子完成的时候,通常的函数调用(!!FU:P)是更繁杂的操作。Era保存了调用源头的地址,让稍后返回变成可能。
从跳转ERM函数返回
!!SN:R;
Example:
!?FU40000;
0; !!IF:M^bye^;
1; !!IF:M^hello^; <== 我们将会跳转到此处
2; !!SN:R;
!?CM0; 右击冒险地图
!!SN:C0/40000/?y1; y1是ERM函数40000的地址
!!SN:Cy1/1; 跳转到40000:1
!!IF:M^world^;
两条信息将会显示:"hello" 和 "world"。
执行的跳转数必须等于执行的返回数。
停止当前事件句柄
!!SN:Q;
该命令与!!FU:E不同,它中断了同类型触发器的整条链。
Example:
!?FU40000;
!!SN:Q; 留下整条FU40000触发链
!?FU40000;
!!IF:M^this message will never be displayed^;
!?CM0;
!!FU40000:P; 调用函数40000
进入新事件的参数
!!SN:X...
新的Era事件(下面会描述)与插件添加的事件需要一种方法通过脚本交换数据。命令X提供了这样的可能性。它扮演了类似值存储器的角色。值的类型由与其工作的方法决定。因此你可以把值5放进位置0里,然后获取它到实e-variable里。"e"将不会保留5,除了一些垃圾之外,因为处理器实在机器水平上进行的。位置里的值在获取字符串的情况下,被当做字符串地址来看待。所以"!!SN:X0; !!SN:X?z1;"将会导致崩溃,因为在地址0处没有字符串。
Example:
!!SN:X?y1/?y2; 获取头两个事件参数
!!SN:Xz1; 第一个参数是z1地址
!!SN:X?y1; y1现在保存着z1地址
额外的内存工作
描述
!!SN:M[...];
ERM变量是静态的,且限制于数值。它们的静态特性导致了管理动态数据结构(例如,列表)的不可能性,管理动态数据结构需要内存配给和存储单元分配函数。索引变量的最后数字决定了它们严格的数量,而没有克服限制的机会。再者,ERM里的z-strings实际占用了512字节而不是它们的真实长度。Era提供给程序员最高达20亿个存储位,可用于新变量(整型或者字符串)的数组。数组的尺寸可以通过ERM改变。这样就有可能自动分配位置的ID了,因为动态数据结构需要这个功能。正索引的位置属于用户,而负索引的位置被用于自动化的内存分配。
删除内存位置
!!SN:M;
Example:
!!SN:M5;删除位置5
获取、设置位置长度
!!SN:M/[?];
位置长度是数组里元素的数量。如果位置不存在,命令返回-1。
Example:
!!SN:M2/5; 设定位置2长度为5。
!!SN:My1/?y2; 获取位置的长度到y2。
操作位置元素的值
!!SN:M//[?];
Example:
!!SN:M1/3; 设定位置1的长度为3
!!SN:M1/0/111 M1/1/222 M1/2/333; 位置1包含:111, 222, 333
!!SN:M1/1/?y5; y5包含位置1的#1元素值
!!IF:M^%Y5^; 显示: "222"
获取位置元素的地址
!!SN:M/?/;
删除位置或者改变大小之后,地址将会变无效!
Example:
!!SN:M1/?y1/2; y1拥有位置1的#2元素的地址
创建新的位置
!!SN:M///;
位置的旧内容(如果有的话)被删除。
*slot number*-位置数,"-1"用于v1里未指定数字和定位的自动分配
*type of elements*:元素类型
- 0 (数值型)
- 1 (字符串)
*should the values be stored*-值是否存储
- 0 (不,当游戏加载的时候,元素的内容将会被当做垃圾)
- 1 (是,内容将会被保存)
如果设置了0,那么这会节省文件空间且增加文件存储速度。
Example:
!!SN:M0/4/1/1; Allocate a four-string array in slot 0. Save the array contents when loading.
!!SN:M0/2/^Hello^; Set the value of the 2nd string of the slot at 0.
!!SN:M0/3/^World^; Set the value of the 3rd string of the slot at 0.
!!SN:M0/2/?z1 M0/3/?z2; Get the values of the 2nd and 3rd strings in z1, z2.
!!IF:M^%Z1 %Z2^; A message "Hello World" will be displayed.
!!SN:M0; Delete slot 0.
!!SN:M-1/0/0/0; Allocate an empty slot for a temporary numeric array.
!!VRy1:S1 R6; A random number 1..6 was generated.
!!SN:Mv1/y1; A new slot size value was designated for this number.
!!VRy1:-1; y1 is an index of the last element in the slot.
!!SN:Mv1/y1/777; The value of the last slot element is 777.
获取字符串长度
!!SN:K/?;
Example:
!!VRz1:S^123^;
!!SN:Kz1/?y1; y1 = 3
操作字符串字符
!!SN:K//[?];
Example:
!!VRz1:S^abc^;
!!SN:Kz1/2/^d^; 设置字符串z1的第三个字符为"d"。
!!IF:M^%Z1^; A字符串“abd”将会显示出来。
复制内存块
!!SN:K///;
Example:
!!SN:K12/?v1/?y1/1; 从 v1, v2, v3 到 y1, y2, y3 复制 12 字节 (数量3,每个4字节 )
!!VRv1:C1/2/3; v1 = 1, v2 = 2, v3 = 3
!!SN:K12/?y1/?v1/1; 存储v1, v2, v3的值
联想内存的操作
描述
!!SN:W[...];
经常地,一些变量应该通过玩家命令被创建用于特定的英雄,特定的地图单元或者对象。所有英雄、所有对象或者所有单元的静态内存分配有显著的缺点,例如过度的内存占用,游戏存储速度的减慢和大小限制。所有这些问题可以通过操作“key — value”配对的全局存储器来解决,这与ini文件相似。每一个键可以拥有1个数值和1个字符串值。0或者空值不会存储以节省空间。当一个不存在的键被请求的时候,0或者空值将会根据目标类型返回。
清空联想内存
!!SN:W;
删除变量
!!SN:W;
操作变量
!!SN:W/[?];
Example:
右键冒险地图以在单元上显示点击数。这基本上类似于!!PO命令。
!?CM0;
!!CM:R0 P?y1/?y2/?y3;
!!SN:W^Map%Y1/%Y2/%Y3^/?y4;
!!IF:L^{~gold}You have clicked on this cell %Y4 times{~}^;
!!VRy4:+1;
!!SN:W^Map%Y1/%Y2/%Y3^/y4; 挖一下坟好了……;ekow; 这么大,好怕怕~我先搞定小兽兽同学的东西吧~
回复 13# 的帖子
;gaxing; 嗯,行,我最近比较忙,都没翻译new events……
页:
[1]