沙盘引擎 (SEngine)

创意诞生沙盘世界,不止如此想象!

用户工具

站点工具


侧边栏

scripting:native:main

这是本文档旧的修订版!


📚 Native/Main

原生脚本是一个内置的通用脚本功能类,此分类下还有更多通用的扩展工具类。

此文档内所代码均可在ClientWorld脚本及其子脚本直接进行使用。

标注原生(Native)类型的常量、类型、事件、函数方法等,它们都基于原生Native类。

在脚本开发时可省略前缀Native.XXXX,而直接使用XXXX即可。

📒 Const

📘 VECTOR_NULL

三维坐标默认“空”坐标。

由于Vector是一个值类型,所以表示为空时不应该直接设为null,在通常情况下应该使用常量代替

const VECTOR_NULL = Vector3(-128000, -128000, -128000);

📒 Type

📘 Vector()

三维坐标结构类型,沙盘引擎世界坐标的通用形式,其中Y轴表示高度。

let pos = Vector(0, 0, 10); //X, Y, Z
pos.x //左右
pos.y //上下
pos.z //前后

📘 Color()

颜色结构类型,表示一种RGBA组成的颜色,默认情况下A=255(可省略)。

let newColor = Color(255, 255, 255, 255); //R, G, B, A
let newColor2 = Color(255, 255, 255); //R, G, B, A=255

📒 Event

📘 OnGameOptionUpdate( optionKey )

当游戏配置(通过SetGameOption被绑定过的)发生主动更新时触发(或有数值被改变)。

每次客户端脚本加载完成时,都会自动触发一次(optionKey==null)。

function OnGameOptionUpdate( optionKey: string )
function OnGameOptionUpdate( optionKey )
{
    if(optionKey == null)
    {
        //如果参数==null,表示不是由某个选项更新触发,而是引擎主动刷新
        DLog("Force Update.");
        return;
    }
 
    //如果不为空,则OptionKey返回具体哪个选项发生更新
    DLog("OnGameOptionUpdate: " + optionKey);
}

📒 Function

📘 DLog()

输出标准控制台信息(白色文本)。

function DLog("Hello World!");

📘 DWarn()

输出警告类型控制台信息(黄色文本)。

function DWarn("Hello World!");

📘 DError()

输出错误类型控制台信息(红色文本)。

function DError("Hello World!");

📘 LoadScript()

加载脚本目录下其他脚本文件(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");
}

📘 Reconnect()

重新建立连接当前服务器(重新建立\重连)。

function Reconnect()

📘 CheckServerMode()

获取当前是否为服务端模式(仅作为服务器启动)。

function CheckServerMode(): bool

📘 GetEngineTickCount()

获取游戏启动至此已运行的时间(秒)。

function GetEngineTickCount(): float

📘 GetModTickCount()

获取模组启动至此已运行的时间(秒)。

如果期间发生了延迟加载、重载模组等情况,此时间也会被随之重置。

function GetModTickCount(): float

📘 GetDateTime()

获取系统时间。

返回格式会按照yyyy-MM-dd|HH:mm:ss进行字符串处理,开发者可通过split得到的数组获取单独的值。

function GetDateTime(): string

📘 GetTimestamp()

获取Unix时间戳(格林威治时间1970年01月01日00时00分00秒)。

function GetDateTime(): int

📘 GetSystemInfo()

获取系统信息json格式。

你可以在合规的范围内使用这些非隐私的信息,以来进行如游戏配置自适应、反作弊等操作。

function GetDeviceInfo(): Json

📘 SetGlobalVars()

设置一个全局变量(可跨脚本使用),支持绝大部分类型的JavaScript变量(如:数组、对象等)。

此功能可善用扩展,例如:菜单界面设置【服务器名称、服务器模式等】全局变量对象,待服务器加载完毕事件读取,并根据数值来修改逻辑。

如果一个全局变量不再使用,可以将其设置为value = null删除全局变量。

function SetGlobalVars( key: string, value: any )
//设置一个字符串类型的全局变量
SetGlobalVars("myWebsite", "www.abc.com");
 
//设置一个JavaScript扩展对象全局变量
SetGlobalVars("createServerConfig", {
    serverName: "服务器名称",
    gameMode: 1,
    openPVP: false
});

📘 GetGlobalVars()

读取一个全局变量(可跨脚本使用),支持绝大部分类型的JavaScript变量(如:数组、对象等)。

如指定key不存在则返回null

function GetGlobalVars( key: string ): any
//设置一个JavaScript扩展对象全局变量
SetGlobalVars("createServerConfig", {
    serverName: "服务器名称",
    gameMode: 1,
    openPVP: false
});
 
//读取时可正常进行读取
let getConfig = GetGlobalVars("createServerConfig");
DLog("serverName: " + getConfig.serverName);

📘 GetScriptName()

获取当前加载的脚本名称。

function GetScriptName(): string

📘 GetMapName()

获取当前加载的地图名称(并非地图文件名,而是地图名),可用作判定特定地图。

function GetMapName(): string

📘 DistancePoint()

获取两个坐标点之间的距离,单位是沙盘引擎世界距离。

function DistancePoint( pos: Vector, pos2: Vector ): float

📘 InPoly()

获取某个点是否在多边形点范围内(X\Z是否在某片2D形状范围内)。

注意坐标系Vector(x左右, y上下, z前后),最低要求输入3个多边形点,最多支持8个多边形点验证。

function InPoly( pos: Vector, p1: Vector, p2: Vector, p3: Vector, p4: Vector = null, p5: Vector = null, p6: Vector = null, p7: Vector = null, p8: Vector = null ): bool
DLog(InPoly(Vector(0, 0, 0), Vector(-10, 0, -10), Vector(-10, 0, 10), Vector(10, 0, 10), Vector(10, 0, -10))); //返回true

scripting/native/main.1694760537.txt.gz · 最后更改: 2023/09/15 14:48 由 bibiboxs