meta data for this page
  •  

📚 差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
scripting:client:core [2025/06/14 05:30] bibiboxsscripting:client:core [2025/08/16 04:04] (当前版本) bibiboxs
行 6: 行 6:
 ==**有关世界内容的玩法(如:Player、Character、Vehicle等)建议优先使用`World`脚本实现。**== ==**有关世界内容的玩法(如:Player、Character、Vehicle等)建议优先使用`World`脚本实现。**==
  
-> 如果有某些功能只有ClientAPI支持,可以用`SendDataToServer`相关方法与服务端进行二次通信,以实现**“通过服务端让某个玩家执行一个ClientAPI”**。+> 如果有某些功能只有ClientAPI支持,可以用`RPC\CMD`相关方法与服务端进行二次通信,以实现**“通过服务端让某个玩家执行一个ClientAPI”**。
  
 [note2] [note2]
行 67: 行 67:
  
  
-### OnLocalObserver( character )+### OnCameraObserver( character )
  
 > 当客户端`Camera.Target`发生变化时调用。 > 当客户端`Camera.Target`发生变化时调用。
行 94: 行 94:
 > >
 > **对于一些特殊情况,可以利用JSON(data参数)进行更详细的内容传输。** > **对于一些特殊情况,可以利用JSON(data参数)进行更详细的内容传输。**
 +
 +
 +
 +### OnTypingStateChange( state )
 +
 +> 当客户端**开始\结束**聊天框时调用。
  
  
行 139: 行 145:
     DLog("NewTime: " + newTime.Hour + "-" + newTime.Minute);     DLog("NewTime: " + newTime.Hour + "-" + newTime.Minute);
 } }
 +```
 +
 +
 +
 +### OnWorldWeatherChange( oldWeather, newWeather )
 +
 +> 当世界天气发生改变时调用。
 +
 +```javascript
 +function OnWorldWeatherChange( oldWeather: int, newWeather: int )
 ``` ```
  
行 165: 行 181:
 ```javascript ```javascript
 function OpenUrl( url: string ) function OpenUrl( url: string )
-``` 
- 
- 
- 
-### BindGameMenuButton() 
- 
-> 绑定当前场景自定义ESC菜单按钮。 
-> 
-> 此方法适用于对模组主菜单**没有特殊\高级自定义需求**(否则应该考虑使用FairyGUI自制菜单),可以通过此方法**快速**的建立一个**游戏原生主菜单**。 
-> 
-> **注意:此方法通常只需要在主菜单场景执行一次,绑定代码只在当前场景生效,==切换场景后将会自动重置默认绑定==。** 
- 
-[note2] 
- 
-此方法支持绑定内置(宏)按钮,这将直接引用引擎内置按钮(功能及翻译),详情可参考下方表格。 
- 
-**如果绑定的是一个内置按钮,则只需要填写参数0即可。** 
- 
-| 内置按钮(宏) | 说明                                                         | 
-| -------------- | ------------------------------------------------------------ | 
-| `@default`     | 绑定默认引擎菜单(游戏选项、多人游戏、地图编辑器、开发者名单、引擎首页、退出游戏……) | 
-| `@space`       | 绑定显示空行(分割显示)                                     | 
-| `@options`     | 游戏选项                                                     | 
-| `@multiplayer` | 多人游戏浏览器                                               | 
-| `@mapeditor`   | 地图编辑器                                                   | 
-| `@developers`  | 开发者名单                                                   | 
-| `@native`      | 沙盘引擎首页(模组选择页)                                   | 
-| `@quit`        | 退出游戏                                                     | 
- 
-[/note] 
- 
-[note3] 
- 
-注意:当玩家处于非主菜单(初始Main场景)界面时,引擎会自动补充【继续游戏】、【返回主菜单】两个额外的菜单按钮。 
- 
-[/note] 
- 
-```javascript 
-function BindGameMenuButton( titleOrKey: string, info: string = null, callback: Action = null ) 
-``` 
- 
-以下是一个示例。 
-```javascript 
-function OnScriptLoad() 
-{ 
-    //Custom Item 
- BindGameMenuButton("启动主机", "建立本地联机服务器", () => { 
- CreateHost("mapname", "scriptname"); 
- }); 
- BindGameMenuButton("[color=#ffff00]加入本地服务器[/color]", "加入本地服务器(127.0.0.1)", () => { 
- ConnectHost("127.0.0.1"); 
- }); 
-     
-    //Internal Item 
-    BindGameMenuButton("@space"); 
-    BindGameMenuButton("@mapeditor"); 
-} 
-``` 
- 
- 
- 
-### UnbindAllGameMenuButton() 
- 
-> 取消绑定所有主菜单界面按钮项目(包括引擎默认按钮)。 
-> 
-> **注意:此方法会清空所有菜单按钮,如果希望重置为默认引擎按钮,应该手动执行一次`BindGameMenuButton("@default");`。** 
- 
-```javascript 
-function UnbindAllGameMenuButton() 
-``` 
- 
- 
- 
-### SetGameMenuBGEffect() 
- 
-> 设置游戏菜单**世界背景效果**开关(通常为`Blur`效果),默认开启,**模组周期全局生效**。 
- 
-```javascript 
-function SetGameMenuBGEffect( active: bool = true ) 
-``` 
- 
- 
- 
-### SetGameMenuTitle() 
- 
-> 设置游戏菜单**标题文本**,留空参数则使用默认名称(模组名称)。 
- 
-```javascript 
-function SetGameMenuTitle( text: string = null ) 
-``` 
- 
- 
- 
-### GetGameMenuTitle() 
- 
-> 获取游戏菜单**标题文本**。 
- 
-```javascript 
-function GetGameMenuTitle(): string 
-``` 
- 
- 
- 
-### SetGameMenuStyle() 
- 
-> 设置游戏菜单**风格样式**,默认值为`0`。 
- 
-```javascript 
-function SetGameMenuStyle( style: int ) 
-``` 
- 
-| Style         | 样式                                                         | 
-| ------------- | ------------------------------------------------------------ | 
-| -1==(已过时)==            | 隐藏内置游戏菜单,通常配合`FairyGUI`高度自定义使用<br />(仅限Main主菜单,游戏世界仍然使用内置菜单风格) | 
-| **0(默认)** | **内置菜单风格,但使用`\GameMenu.png || \Cover.png`作为不透明底图** | 
-| 1             | 内置风格菜单,但不显示背景图片,直接显示世界相机视角             | 
- 
- 
- 
-### GetGameMenuStyle() 
- 
-> 获取游戏菜单**风格样式**。 
- 
-```javascript 
-function GetGameMenuStyle(): int 
-``` 
- 
- 
- 
-### CreateNativeView() 
- 
-> 打开一个引擎内置UI面板(如设置、服务器列表、MOD管理器等)。 
- 
-```javascript 
-function OpenNativeView( int type, Action onDisable = null ) 
-``` 
- 
-| ID   | 面板描述               | 
-| ---- | ---------------------- | 
-| 0    | 开发者界面(关于界面) | 
-| 1    | 游戏设置               | 
-| 2    | 多人游戏浏览器         | 
-| 4    | ~~MOD模组管理~~        | 
- 
-*尽管有些ID没有被表格记录,但有可能仍然是有内容的,但未被记录的ID通常不具备通用性意义,在打开时将会被引擎阻断。* 
- 
- 
- 
-### ExistNativeView() 
- 
-> 检查某个引擎内置UI界面是否存在(被打开)。 
- 
-```javascript 
-function ExistNativeView( type: int ): bool 
-``` 
- 
- 
- 
-### DestroyNativeView() 
- 
-> 关闭一个引擎内置UI面板。 
- 
-```javascript 
-function DestroyNativeView(type: int = -1, hasEffect: bool = true) 
-//如果不填写参数(-1),则默认关闭所有内置UI面板 
-//如果hasEffect == false则立即关闭面板 
 ``` ```
  
行 348: 行 198:
 | 1    | [地图编辑器](reference/mapeditor) | | 1    | [地图编辑器](reference/mapeditor) |
 | 2    | [实验工坊](reference/workshop) | | 2    | [实验工坊](reference/workshop) |
- 
- 
-### CreateNativeMenu() 
- 
-> 为本地玩家建立一个`NativeMenu`菜单(等同于`WorldScript/player.CreateNativeMenu()`的客户端版本)。 
-> 
-> 更多内容请查看[NativeMenu菜单](scripting/extend/nativemenu)。 
- 
-```javascript 
-function CreateNativeMenu( viewData: any ) 
-``` 
- 
- 
- 
-### DestroyNativeMenu() 
- 
-> 为本地玩家关闭`NativeMenu`菜单。 
- 
-```javascript 
-function DestroyNativeMenu() 
-``` 
- 
- 
- 
-### SetNativeMenuText() 
- 
-> 为本地玩家设置菜单中某项的文本。 
- 
-```javascript 
-function SetNativeMenuText( index: int, text: string ) //index: (-1 > 标题, -2 > 子标题, 0+ > 索引Item) 
-function SetNativeMenuText( tag: string, text: string ) //同理,区别是通过tag参数来选择改变的Item 
-``` 
- 
- 
- 
-### GetCurrentNativeMenuTag() 
- 
-> 获取当前正在显示的`NativeMenu`菜单Tag(获取自`viewData.Tag`),默认为空文本。 
-> 
-> 此方法可用于区分多个菜单实例,以当前正在显示的为准。 
- 
-```javascript 
-function GetCurrentNativeMenuTag(): string 
-``` 
- 
- 
- 
-### CreateRadialMenu() 
- 
-> 为本地玩家建立一个`RadialMenu`轮盘菜单(等同于`WorldScript/player.CreateRadialMenu()`的客户端版本)。 
-> 
-> 更多内容请查看[RadialMenu菜单](developer/extend/radialmenu)。 
- 
-```javascript 
-function CreateRadialMenu( viewData: any ) 
-``` 
- 
- 
- 
-### DestroyRadialMenu() 
- 
-> 为本地玩家关闭`RadialMenu`轮盘菜单。 
- 
-```javascript 
-function DestroyRadialMenu() 
-``` 
- 
- 
- 
-### GetCurrentRadialMenuTag() 
- 
-> 获取当前正在显示的`RadialMenu`轮盘菜单Tag(获取自`viewData.Tag`),默认为空文本。 
-> 
-> 此方法可用于区分多个菜单实例,以当前正在显示的为准。 
- 
-```javascript 
-function GetCurrentRadialMenuTag(): string 
-``` 
  
  
行 457: 行 229:
  
  
-### SetChatEnabled()+### SetOutlineColor()
  
-> 设置游戏聊天框启用开关,当聊天框被禁止后,玩家将无法显示或开启聊天框+> 设置游戏内描边相的**全局颜色**(共计3个索引`0~2`全局共享颜色)
 > >
-> *此功能主要用于主菜单界面,此时通常不希望玩家使用“聊天”功能,在`Main`场景中是默认被禁止的。*+> **注意:如果索引为`-1`可设置表面填充颜色(FillColor)**
  
 ```javascript ```javascript
-function SetChatEnabledenablebool ) +function SetOutlineColorindexint, colorColor )
-``` +
- +
- +
- +
-### GetChatEnabled() +
- +
-> 获取游戏聊天框开关。 +
- +
-```javascript +
-function GetChatEnabled()bool +
-``` +
- +
- +
- +
-### SetChatPanelPivot() +
- +
-> 设置游戏聊天框锚点位置(强制),默认值为`-1`(遵循游戏默认设置),通过此方法设定位置后,即使玩家在游戏选项设置了锚点位置,也会优先使用当前方法所设置的位置。 +
-+
-> *此功能适用于部分U丰富的模组,可能不希望聊天框占用模组UI位置(例如血条、状态条、信息面板等),可以使用此方法强制设定聊天框位置。* +
- +
-```javascript +
-function SetChatPanelPivot( pivot: int = -1 ) +
-``` +
-```javascript +
-SetChatPanelPivot(-1); //Use engine config (default) +
-SetChatPanelPivot(0); //Change pivot to Left_Top +
-SetChatPanelPivot(1); //Change pivot to Left_Center +
-SetChatPanelPivot(2); //Change pivot to Left_Bottom+
 ``` ```
  
行 577: 行 321:
 | 10   | 噪声覆盖、淡出                         | | 10   | 噪声覆盖、淡出                         |
 | 11   | 液体覆盖、淡出                         | | 11   | 液体覆盖、淡出                         |
- 
- 
  
  
行 780: 行 522:
 ```javascript ```javascript
 function GetGameOption( keyTag: string, defaultValue: any = null ): any function GetGameOption( keyTag: string, defaultValue: any = null ): any
-``` 
- 
- 
- 
-### ReadFile() 
- 
-> 从模组空间目录(`Mod/Space`)读取一个文件(文本内容),如果文件不存在则反馈空白文本。 
- 
-```javascript 
-function ReadFile( fileName: string ): string 
-``` 
- 
-```javascript 
-ReadFile( "Test.txt" ); //read: Mod/Space/Test.txt 
 ``` ```
  
行 800: 行 528:
 ### GetModArchive() ### GetModArchive()
  
 +> **此方法已在V0.83移除。**
 +>
 > 尝试读取**指定模组**的持久化存储数据,如不存在则返回空文本。 > 尝试读取**指定模组**的持久化存储数据,如不存在则返回空文本。
 > >
行 806: 行 536:
 ```javascript ```javascript
 function GetModArchive( package: string = null ): string function GetModArchive( package: string = null ): string
-``` 
- 
- 
- 
-### GetPropSourceData() 
- 
-> 获取**指定游戏道具**最新默认原始数据,如果未被`SetPropSourceData`重写过,则返回引擎原始数据。 
- 
-```javascript 
-function GetPropSourceData( prop: int, keyPath: string ): any 
 ``` ```
  
行 853: 行 573:
 ### BindActionKey() ### BindActionKey()
  
-> 绑定(更新)**行为触发按键**(游戏右下角按钮)。+> 绑定(更新)**行为触发按键**(类似触发`KEY: [E]`按钮)。
 > >
 > **注意:同一个`keyTag`同时只会存在一个。** > **注意:同一个`keyTag`同时只会存在一个。**
行 906: 行 626:
 function UnbindAllActionKey() function UnbindAllActionKey()
 ``` ```
 +
 +
 +
 +### GenerateMapSnapshot()
 +
 +> 生成游戏地图(大地图+小地图雷达)快照。
 +>
 +> 世界加载时默认会**自动生成**,如果世界布局**动态改动**过大,或者希望修改**渲染风格**时,可以手动执行一次方法。
 +>
 +> 注意:此方法会根据**地图尺寸**进行动态生成(地图越大,生成越慢),可能引起短暂卡顿。
 +>
 +> 补充:此方法允许设置`_Config.json`配置文件,以在地图加载时提前生成,避免额外的开销。
 +
 +```javascript
 +function GenerateMapSnapshot( style: int = 0, worldTime: int = 10 )
 +```
 +
 +- `style`渲染风格(0=默认;1=描边;2=油画;3=灰质;4=黑白描边;5=霓虹描边)
 +- `worldTime`世界时间(生成快照时的亮度)
 +
 +
 +
 +### SetFocusEntityDistance()
 +
 +> 设置本地玩家**焦点检测距离**(与`World`作用相同)。
 +
 +```javascript
 +function SetFocusEntityDistance( value: float )
 +```
 +
 +
 +
 +### GetFocusEntityDistance()
 +
 +> 获取本地玩家**焦点检测距离**。
 +
 +```javascript
 +function GetFocusEntityDistance(): float
 +```
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +