meta data for this page
  •  

📚 差别

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

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
scripting:world:core [2025/06/14 05:30] bibiboxsscripting:world:core [2025/08/28 02:49] (当前版本) bibiboxs
行 83: 行 83:
     DLog("NewTime: " + newTime.Hour + "-" + newTime.Minute);     DLog("NewTime: " + newTime.Hour + "-" + newTime.Minute);
 } }
 +```
 +
 +
 +
 +### OnWorldWeatherChange( oldWeather, newWeather )
 +
 +> 当世界天气发生改变时调用。
 +
 +```javascript
 +function OnWorldWeatherChange( oldWeather: int, newWeather: int )
 ``` ```
  
行 485: 行 495:
 ### SetWorldSolarColor() ### SetWorldSolarColor()
  
-> 设置游戏世界日月颜色(太阳&月亮),默认为淡黄色`Color(255, 240126)`。+> 设置游戏世界日月颜色(太阳&月亮),默认为淡黄色`Color(255, 253235)`。
  
 ```javascript ```javascript
行 519: 行 529:
 ```javascript ```javascript
 function GetWorldSolarScale(): float function GetWorldSolarScale(): float
 +```
 +
 +
 +
 +### SetWorldCloudColor()
 +
 +> 设置游戏世界云层颜色,默认为浅灰色`Color(180, 180, 180)`。
 +
 +```javascript
 +function SetWorldCloudColor( color: Color )
 +```
 +
 +
 +
 +### GetWorldCloudColor()
 +
 +> 获取游戏世界**云层颜色**。
 +
 +```javascript
 +function GetWorldCloudColor(): Color
 +```
 +
 +
 +
 +### SetWorldCloudDensity()
 +
 +> 设置游戏世界**云层密度(强度)**,默认为`0.5`,限制范围`0.0~1.0`。
 +
 +```javascript
 +function SetWorldCloudDensity( density: float )
 +```
 +
 +
 +
 +### GetWorldCloudDensity()
 +
 +> 获取游戏世界**云层密度(强度)**。
 +
 +```javascript
 +function GetWorldCloudDensity(): float
 ``` ```
  
行 683: 行 733:
 ### Message() ### Message()
  
-> 给全服在线玩家发送一条公屏消息(在消息框中)。+> 给全玩家发送一条公屏消息(在消息框中)。
  
 ```javascript ```javascript
行 693: 行 743:
 ### Announce() ### Announce()
  
-> 给全服在线玩家发送一条**公告\大文字**消息,具体类型样式参考[《世界资源实例汇总》](https://sengine.mp-gamer.com/reference/instances)。+> 给全玩家发送一条**公告\大文字**消息,具体类型样式参考[《世界资源实例汇总》](https://sengine.mp-gamer.com/reference/instances)。
  
 ```javascript ```javascript
行 703: 行 753:
 ### Subtitle() ### Subtitle()
  
-> 给全服在线玩家发送一条**底部字幕**消息。+> 给全玩家发送一条**底部字幕**消息。
  
 ```javascript ```javascript
行 965: 行 1015:
 ```javascript ```javascript
 function ResumeWorldSound( uuid: string ): bool //返回false表示不存在UUID实例 function ResumeWorldSound( uuid: string ): bool //返回false表示不存在UUID实例
-``` 
- 
- 
- 
-### SetWorldSound() 
- 
-> 设置一个**服务器世界声音实例**的网络世界`World`(不同世界将无法听到声音)。 
- 
-```javascript 
-function SetWorldSound( uuid: string, world: int ): bool //返回false表示不存在UUID实例 
 ``` ```
  
行 1013: 行 1053:
  
  
-### SetPropSourceData()+### WriteHostFile()
  
-设置**指定游戏道具**默认原始数据(重写)建议场景初始化时使用本次场景内有效+写入文件(或以`/`结尾的文件夹)到模组**主机目录**`Mod/Host`写入文件尺寸限制4MB如果文件已存在则会覆盖
 > >
-> **注意:由于`PropData`的数据类型,通过此方法设数据后仅会在`character.SetProp()`时赋予最新的道具数据,如果数据在`character.SetProp()`后才进行修改,则之前生成的Prop不会使用最新数据**+此功能通常用于实现**游戏存档\配**等可以使用`Json`功能进行序列化
  
 ```javascript ```javascript
-function SetPropSourceDatapropintkeyPath: string, value: any )+function WriteHostFilelocalPathstringcontent: string = null )
 ``` ```
  
-```javascript 
-SetPropSourceData(277, "Multiple", 100); //set RPG multiple to 100 
-``` 
  
  
 +### ReadHostFile()
  
-### GetPropSourceData()+> 从模组**主机目录**(`Mod/Host`)读取文件(文本内容),如果文件不存在则返回**空白文本**。
  
-> 获取**指定游戏道具**最新默认原始数据,如果未被`SetPropSourceData`重写过,则返回引擎原始数据。+```javascript 
 +function ReadHostFile( localPath: string ): string 
 +```
  
 ```javascript ```javascript
-function GetPropSourceDataprop: int, keyPath: string ): any+ReadFile"Test.txt" ); //readMod/Space/Test.txt
 ``` ```
  
  
  
-### ClearPropSourceData()+### CopyHostFile()
  
-清空**指定游戏道具**修改数据,恢使用引擎原始数据。 +从模组**主机目录**(`Mod/Host`)制文件到位置
-+
-> **注意:此方法不会更已被生成的Prop**+
  
 ```javascript ```javascript
-function ClearPropSourceDatapropint )+function CopyHostFilelocalPathstring, pasteLocalPath: string ): bool
 ``` ```
  
 +```javascript
 +CopyHostFile( "Test.txt", "Test2.txt" );
 +```
  
  
-### ClearAllPropSourceData() 
  
-清空**全部游戏道具**修改数据,恢复使用引擎原始数据。 +### RenameHostFile() 
-+ 
-> **注意:此方法不会更已被生成的Prop**+从模组**主机目录**(`Mod/Host`)修改文件名称到位置
  
 ```javascript ```javascript
-function ClearAllPropSourceData()+function RenameHostFilelocalPath: string, renameLocalPath: string, isReplace: bool = false ): bool
 ``` ```
  
 +- `isReplace`如果目标文件已存在,是否强制替换
  
  
-### WriteFile() 
  
-写入一个文件到模组空间目录`Mod/Space`,安全起见,写入文件尺寸限制2MB,且有最大文件数量限制(`Space`目录最多可写`50`文件)。 +### ExistHostFile() 
-+ 
-> 此功能通常用于实现**游戏\服务器档、配置**等写入,建议使用JSON功能进行序列化+判断模组**主机目录**(`Mod/Host`文件(或以`/`结尾的文件是否
  
 ```javascript ```javascript
-function WriteFilefileName: string, contentstring )+function ExistHostFilelocalPath: string )bool
 ``` ```
  
  
  
-### ReadFile()+### DeleteHostFile()
  
-模组空间目录(`Mod/Space`)读取一个文件(文本内容)如果文件不存在则返回空白文本+删除模组**主机目录**(`Mod/Host`)文件(或以`/`结尾的件夹以及所有子文件)。 
 +
 +> 注意:删除操作是**可恢复**的,谨慎使用
  
 ```javascript ```javascript
-function ReadFilefileName: string ): string+function DeleteHostFilelocalPath: string )
 ``` ```
  
-```javascript +
-ReadFile( "Test.txt" ); //read: Mod/Space/Test.txt +
-```+
  
 ### SetModArchive() ### SetModArchive()
  
 +> **此方法已在V0.83移除。**
 +>
 > 设置并覆盖**当前模组**的持久化存储数据(字符串,可通过Json扩展,最长限制512字符)。 > 设置并覆盖**当前模组**的持久化存储数据(字符串,可通过Json扩展,最长限制512字符)。
 > >
 > 数据内容存储到`ModArchive.json`文件,**任意模组之间可相互获取,但只有当前模组可写入自身数据**。 > 数据内容存储到`ModArchive.json`文件,**任意模组之间可相互获取,但只有当前模组可写入自身数据**。
-> 
-> ==(出于安全考虑,此方法仅限World端使用,Client端是只读的)== 
  
 ```javascript ```javascript
行 1103: 行 1143:
 ### GetModArchive() ### GetModArchive()
  
 +> **此方法已在V0.83移除。**
 +>
 > 尝试读取**指定模组**的持久化存储数据(可通过`SetModArchive()`写入修改),如不存在则返回空文本。 > 尝试读取**指定模组**的持久化存储数据(可通过`SetModArchive()`写入修改),如不存在则返回空文本。
 > >
行 1109: 行 1151:
 ```javascript ```javascript
 function GetModArchive( package: string = null ): string function GetModArchive( package: string = null ): string
-``` 
- 
- 
- 
-### SetSaveItem() 
- 
-> 设置并覆盖【存档数据槽(`Slot`)】指定`Key`的项目,并以最终Json的格式存储,仅支持基础类型(`string\number\bool...`)。 
-> 
-> 存档槽默认参数为`0`,如果只用于本地持久化数据存储,或者不需要多存档槽的设计,可以忽略`Slot`参数。 
-> 
-> **注意:此方法最多支持50个存档槽(文件),以及单文件最大1MB的写入空间。有关持久化存档相关内容,无论是单存档、多存档或其他使用场景,都可尝试此方案进行存储。** 
-> 
-> ==(出于安全考虑,此方法仅限World端使用,Client端是只读的)== 
- 
-```javascript 
-function SetSaveItem( key: string, value: object, slot: int = 0 ) 
-``` 
- 
-```javascript 
-SetSaveItem("gold", 1000, 0); //Save file to 'SaveData/SaveData_0.json' 
-SetSaveItem("playerlevel", 3, 5); //Save file to 'SaveData/SaveData_5.json' 
-``` 
- 
- 
- 
-### RemoveSaveItem() 
- 
-> 移除【存档数据槽(`Slot`)】指定`Key`的项目**(并非删除存档,而是删除存档中的一个项)**。 
-> 
-> ==(出于安全考虑,此方法仅限World端使用,Client端是只读的)== 
- 
-```javascript 
-function RemoveSaveItem( key: string, slot: int = 0 ) 
-``` 
- 
-```javascript 
-SetSaveItem("playerlevel", 3, 10); //Set level to 3 
-RemoveSaveItem("playerlevel", 10); //Remove 'playerlevel' item 
-``` 
- 
- 
- 
-### GetSaveItem() 
- 
-> 尝试读取【存档数据槽(`Slot`)】指定`Key`的项目内容,如不存在则返回`defaultValue`。 
- 
-```javascript 
-function GetSaveItem( key: string, slot: int = 0, defaultValue: any = null ): any 
-``` 
- 
-```javascript 
-SetSaveItem("gold", 1000); //Save file to 'Host/SaveData_0.json' 
-DLog("Your coin: " + GetSaveItem("gold")); 
-``` 
- 
- 
- 
-### ExistSaveItem() 
- 
-> 判断【存档数据槽(`Slot`)】指定`Key`的**项目内容是否为空(`bool`)**。 
- 
-```javascript 
-function ExistSaveItem( key: string, slot: int = 0 ): bool 
-``` 
- 
-```javascript 
-DLog(ExistSaveItem("gold")); 
-``` 
- 
- 
- 
-### ExistSaveData() 
- 
-> 判断【存档数据槽(`Slot`)】存档文件是否已被创建(`bool`)。 
- 
-```javascript 
-function ExistSaveData( slot: int = 0 ): bool 
-``` 
- 
- 
- 
-### DeleteSaveData() 
- 
-> 删除【存档数据槽(`Slot`)】存档文件,包括其文件内所有数据。 
-> 
-> ==(出于安全考虑,此方法仅限World端使用)== 
- 
-```javascript 
-function DeleteSaveData( slot: int = 0 ): bool 
 ``` ```
  
行 1204: 行 1157:
 ### SendSocketData() ### SendSocketData()
  
-> 发送Socket\Network网络通信数据。+> 发送`Socket\Network`网络通信数据。
 > >
 > **在当前版本下,此方法主要用于外部UDP传输。** > **在当前版本下,此方法主要用于外部UDP传输。**
 > >
-> **对应接收事件:`OnDataServerReceive`**+> **对应接收事件:`OnDataServerReceive`**
  
 ```javascript ```javascript
行 1221: 行 1174:
  
  
-### SetNavMeshDirtyByPos()+### ReplaceTerrainLayer()
  
-重置指定坐标的NavMesh脏数据该区域范围内的NavMesh(如存在)将会在后续自动重建。 +尝试**替换修改**地形层贴图具体参考[地形层贴图ID](reference/instances)文档。 
-+>  
-> 此方法通常不需要手动调用,除非希望动态成对象参与NavMesh寻路逻辑这样就需要在合适的时机对发生变化区域进行重建,因为区域的NavMesh可能在之前已经烘焙完成+注意:此方法会产些许开销如果一个层的`layer`已经被替换 ,那么下一次需要使用新`layer`来进行后续替换
  
-```javascript +[note] 
-function SetNavMeshDirtyByPos( pos: Vector ) +游戏场景运行时,会对**使用较少**贴图自动进行**剔除优化**因此可能少数情况下会出现**无法找到贴图**的提示 
-``` +[/note]
- +
- +
- +
-### GetNavMeshRandomPoint() +
- +
-> 获取指定坐标范围内的随机NavMesh坐标点(已烘焙)。 +
-+
-> 如果范围内不存合适坐标将返回`VECTOR_NULL`+
  
 ```javascript ```javascript
-function GetNavMeshRandomPointposVectorradiusfloat ): Vector+function ReplaceTerrainLayerlayerintnewLayerint )
 ``` ```
  
  
  
-### IsValidNavMeshPoint() 
  
-> 判断指定坐标是否已被烘焙完成(即合理的寻路坐标)。 
-> 
-> 如果返回`false`则表示此区域没有被烘焙,关于AI的移动逻辑也无法到达目标。 
  
-[note2] 
  
-通常情况下,关于AI的移动将会在设置目标点时自动请求烘焙(可能会在数秒内完成),如果确实需要主动激活某处NavMesh烘焙,请使用`SetNavMeshDirtyByPos()`。 
  
-[/note] 
- 
-```javascript 
-function IsValidNavMeshPoint( pos: Vector ): bool 
-```