🎁
🏆 导航菜单
🎪 扩展内容
🎯 沙盘引擎文档
🕹️ 文章及书籍&教程
🎖️ 外部的链接
🎁
🏆 导航菜单
🎪 扩展内容
🎯 沙盘引擎文档
🕹️ 文章及书籍&教程
🎖️ 外部的链接
这是本文档旧的修订版!
原生脚本是一个内置的脚本功能类,此分类下还有更多通用的扩展工具类。
此文档内所代码均可在Client和World脚本及其子脚本直接进行使用。
标注原生(Native)类型的数据、函数、常量等,它们都基于原生类。
在脚本开发时可省略前缀
Native.XXXX
,而直接使用XXXX()
即可。
输出标准控制台信息(白色文本)。
function DLog("Hello World!");
输出警告类型控制台信息(黄色文本)。
function DWarn("Hello World!");
输出错误类型控制台信息(红色文本)。
function DError("Hello World!");
加载脚本目录下其他脚本文件(js)。
目标脚本将被续写在当前代码的作用域,共享当前环境(World或Client脚本)的代码及变量,开发者要自行分配隔离World\Client脚本,避免混用。
此方法适合对目录规范有需求的开发者,或者制作模块化功能、插件时使用。
function LoadScript( path: string ) /* path:脚本目录下的 同级或子级 脚本文件路径(例如:"Test/MyCode.js") */
//路径规则 LoadScript("Test/MyCode.js"); //正确,读取Test目录下的MyCode.js LoadScript("Test/MyCode"); //正确,读取Test目录下的MyCode.js(可忽略".js") LoadScript("MyCode.js"); //正确,读取脚本目录下的MyCode.js LoadScript("../MyCode.js"); //错误,安全性考虑无法使用层级符号 //举例 //Main脚本 LoadScript("Test.js") TestAction(); //正常执行,执行Test.js脚本下的TestAction() /* 扩展解释:如果Main脚本原有一个TestAction()方法,但是后续加载了Test.js脚本,那么执行的应该是Test.js脚本的,因为后续加载覆写了早期方法 */ //Test.js function TestAction() { DLog("TestMode"); }
重新建立连接当前服务器(重新建立\重连)。
function Reconnect()
获取当前是否为服务端模式(仅作为服务器启动)。
function CheckServerMode(): bool
获取游戏启动至此已运行的时间(秒)。
function GetEngineTickCount(): float
获取模组启动至此已运行的时间(秒)。
如果期间发生了延迟加载、重载模组等情况,此时间也会被随之重置。
function GetModTickCount(): float
获取系统时间。
返回格式会按照
yyyy-MM-dd|HH:mm:ss
进行字符串处理,开发者可通过split
得到的数组获取单独的值。
function GetDateTime(): string
获取Unix时间戳(格林威治时间1970年01月01日00时00分00秒)。
function GetDateTime(): int
获取系统信息
json
格式。你可以在合规的范围内使用这些非隐私的信息,以来进行如游戏配置自适应、反作弊等操作。
function GetDeviceInfo(): Json
设置一个全局变量(可跨脚本使用),支持绝大部分类型的JavaScript变量(如:数组、对象等)。
此功能可善用扩展,例如:菜单界面设置【服务器名称、服务器模式等】全局变量对象,待服务器加载完毕事件读取,并根据数值来修改逻辑。
如果一个全局变量不再使用,可以将其设置为
value = null
删除全局变量。
function SetGlobalVars( key: string, value: any )
//设置一个字符串类型的全局变量 SetGlobalVars("myWebsite", "www.abc.com"); //设置一个JavaScript扩展对象全局变量 SetGlobalVars("createServerConfig", { serverName: "服务器名称", gameMode: 1, openPVP: false });
读取一个全局变量(可跨脚本使用),支持绝大部分类型的JavaScript变量(如:数组、对象等)。
如指定
key
不存在则返回null
。
function GetGlobalVars( key: string ): any
//设置一个JavaScript扩展对象全局变量 SetGlobalVars("createServerConfig", { serverName: "服务器名称", gameMode: 1, openPVP: false }); //读取时可正常进行读取 let getConfig = GetGlobalVars("createServerConfig"); DLog("serverName: " + getConfig.serverName);
获取当前加载的脚本名称。
function GetScriptName(): string
获取当前加载的地图名称(并非地图文件名,而是地图名),可用作判定特定地图。
function GetMapName(): string
Json js = new Json();
SQLite sql = new SQLite();
获取一个游戏物品的本地化名称(根据模型ID)
参数 | 类型 | 说明 |
---|---|---|
model | int | 模型ID |
返回 | 说明 |
---|---|
string | 本地化名称(未找到返回“”空字符串) |
获取一个游戏载具的本地化名称(根据模型ID)
参数 | 类型 | 说明 |
---|---|---|
model | int | 模型ID |
返回 | 说明 |
---|---|
string | 本地化名称(未找到返回“”空字符串) |
获取一个游戏建筑物体的本地化名称(根据模型ID)
参数 | 类型 | 说明 |
---|---|---|
model | int | 模型ID |
返回 | 说明 |
---|---|
string | 本地化名称(未找到返回“”空字符串) |
获取指定坐标所在的Area区域
GetAreaPoint( pos: Vector ): SE.Area //条件所匹配的Area区域(未找到返回null)
参数 | 类型 | 说明 |
---|---|---|
pos1 | Vector | 比较坐标距离A点 |
pos2 | Vector | 比较坐标距离B点 |
返回 | 说明 |
---|---|
float | 两点之间的距离 |
let pos = Vector(0, 0, 10); //X, Y, Z
let newColor = Color(255, 255, 255, 255); //R, G, B, A
当游戏配置(通过
SetGameOption
被绑定过的)发生主动更新时触发(或有数值被改变)。注意:这里事件将在任何GameOption值发生改变时触发,建议有关GameOption值的更新事件都放在这里执行,而不一定是模组加载完成时。
function OnGameOptionUpdate( optionKey ) { if(optionKey == null) { //如果参数==null,表示不是由某个选项更新触发,而是引擎主动更新 DLog("Force Update."); } DLog("OnGameOptionUpdate: " + optionKey); }