--- sidebarDepth: 1 --- # 事件 ## BroadcastEvent 服务端客户端 method in mod.common.system.baseSystem.BaseSystem - 描述 本地广播事件,客户端system广播的事件仅客户端system能监听,服务器system广播的事件仅服务端system能监听。 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | eventName | str | 事件名 | | eventData | dict | 事件参数,一般用CreateEventData的返回值 | - 返回值 无 - 示例 ```python import mod.server.extraServerApi as serverApi ServerSystem = serverApi.GetServerSystemCls() class FpsServerSystem(ServerSystem): def BroadCastEventTest(self, args): self.BroadcastEvent("bulletShootEvent", args) ``` ## BroadcastToAllClient 服务端 method in mod.server.system.serverSystem.ServerSystem - 描述 服务器广播事件到所有客户端 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | eventName | str | 事件名 | | eventData | dict | 事件参数,一般用CreateEventData的返回值 | - 返回值 无 - 示例 ```python import mod.server.extraServerApi as serverApi ServerSystem = serverApi.GetServerSystemCls() class FpsServerSystem(ServerSystem): def BroadCastEventTest(self, args): self.BroadcastToAllClient("bulletShootEvent", args) ``` ## CreateEventData 服务端客户端 method in mod.common.system.baseSystem.BaseSystem - 描述 创建自定义事件的数据,eventData用于发送事件。创建的eventData可以理解为一个dict,可以嵌套赋值dict,list和基本数据类型,但不支持tuple - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | dict | 事件数据 | - 示例 ```python import mod.server.extraServerApi as serverApi ServerSystem = serverApi.GetServerSystemCls() class FpsServerSystem(ServerSystem): def shoot(self): shootData = self.CreateEventData() shootData["id"] = self.mPlayerId # 向客户端发送事件,传递了一个playerId self.NotifyToClient('-12345678910','BulletHit', shootData) ``` ## GetEngineNamespace 服务端客户端 ### 服务端接口 method in mod.server.extraServerApi - 描述 获取引擎事件的命名空间。监听引擎事件时,namespace传该接口返回的namespace - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | str | 引擎的命名空间 | - 示例 ```python import mod.server.extraServerApi as serverApi ServerSystem = serverApi.GetServerSystemCls() class FpsServerSystem(ServerSystem): def __init__(self, namespace, systemName): ServerSystem.__init__(self, namespace, systemName) self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(), ‘AddServerPlayerEvent’, self, self.OnPlayerAdd) ``` ### 客户端接口 method in mod.client.extraClientApi - 描述 获取引擎事件的命名空间。监听引擎事件时,namespace传该接口返回的namespace - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | str | 引擎的命名空间 | - 示例 ```python import mod.client.extraClientApi as clientApi ClientSystem = clientApi.GetClientSystemCls() class FpsClientSystem(ClientSystem): def __init__(self, namespace, systemName): ClientSystem.__init__(self, namespace, systemName) self.ListenForEvent(clientApi.GetEngineNamespace(), clientApi.GetEngineSystemName(), 'UiInitFinished', self, self.OnUIInitFinished) ``` ## GetEngineSystemName 服务端客户端 ### 服务端接口 method in mod.server.extraServerApi - 描述 获取引擎系统名。监听引擎事件时,systemName传该接口返回的systemName - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | str | 引擎的systemName | - 示例 ```python import mod.server.extraServerApi as serverApi ServerSystem = serverApi.GetServerSystemCls() class FpsServerSystem(ServerSystem): def __init__(self, namespace, systemName): ServerSystem.__init__(self, namespace, systemName) self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(), ‘AddServerPlayerEvent’, self, self.OnPlayerAdd) ``` ### 客户端接口 method in mod.client.extraClientApi - 描述 获取引擎系统名。监听引擎事件时,systemName传该接口返回的systemName - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | str | 引擎的systemName | - 示例 ```python import mod.client.extraClientApi as clientApi ClientSystem = clientApi.GetClientSystemCls() class FpsClientSystem(ClientSystem): def __init__(self, namespace, systemName): ClientSystem.__init__(self, namespace, systemName) self.ListenForEvent(clientApi.GetEngineNamespace(), clientApi.GetEngineSystemName(), 'UiInitFinished', self, self.OnUIInitFinished) ``` ## ListenForEvent 服务端客户端 method in mod.common.system.baseSystem.BaseSystem - 描述 注册监听某个系统抛出的事件。若监听引擎事件时,namespace和systemName分别为GetEngineNamespace()和GetEngineSystemName()。具体每个事件的详细事件data可以参考"事件"分类下的内容 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | namespace | str | 所监听事件的来源系统的namespace | | systemName | str | 所监听事件的来源系统的systemName | | eventName | str | 事件名 | | instance | any | 回调函数所属的类的实例 | | func | function | 回调函数 | | priority | int | 这个回调函数的优先级。默认值为0,这个数值越大表示被执行的优先级越高,最高为10。 | - 返回值 无 - 备注 - 服务端system监听的客户端系统事件的回调参数中会自带一个叫"__id__"的key,值为对应客户端的玩家id - 示例 ```python import mod.server.extraServerApi as serverApi ServerSystem = serverApi.GetServerSystemCls() class FpsServerSystem(ServerSystem): def ListenEvent(self): # 监听了引擎事件'ServerChatEvent' self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(), 'ServerChatEvent', self, self.OnServerChat) # 监听客户端系统事件 self.ListenForEvent("MyFpsMod", "FpsClientSystem", "MyEvent", self, self.OnMyEvent) def OnServerChat(self, args): print 'OnServerChat', args def OnMyEvent(self, args): print 'OnMyEvent', args['__id__'], args ``` ## NotifyToClient 服务端 method in mod.server.system.serverSystem.ServerSystem - 描述 服务器发送事件到指定客户端 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | targetId | str | 客户端对应的Id,一般就是玩家Id | | eventName | str | 事件名 | | eventData | dict | 事件参数,一般用CreateEventData的返回值 | - 返回值 无 - 示例 ```python import mod.server.extraServerApi as serverApi ServerSystem = serverApi.GetServerSystemCls() class FpsServerSystem(ServerSystem): def NotifyToClientTest(self, args): self.NotifyToClient('-1234567890',"bulletShootEvent", args) ``` ## NotifyToMultiClients 服务端 method in mod.server.system.serverSystem.ServerSystem - 描述 2.0版本仅Apollo可用,服务器发送事件到指定一批客户端 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | targetIdList | list(str) | 客户端对应的playerId列表,playerId为玩家的entityId | | eventName | str | 事件名 | | eventData | dict | 事件参数,一般用CreateEventData的返回值 | - 返回值 无 - 示例 ```python import mod.server.extraServerApi as serverApi ServerSystem = serverApi.GetServerSystemCls() class FpsServerSystem(ServerSystem): def NotifyToClientTest(self, args): self.NotifyToMultiClients(['-1234567890', '-321654987'],"bulletShootEvent", args) ``` ## NotifyToServer 客户端 method in mod.client.system.clientSystem.ClientSystem - 描述 客户端发送事件到服务器 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | eventName | str | 事件名 | | eventData | dict | 事件参数,一般用CreateEventData的返回值 | - 返回值 无 - 示例 ```python import mod.client.extraClientApi as clientApi ClientSystem = clientApi.GetClientSystemCls() class FpsClientSystem(ClientSystem): def NotifyToServerTest(self, args): self.NotifyToServer("bulletShootEvent", args) ``` ## UnListenAllEvents 服务端客户端 method in mod.common.system.baseSystem.BaseSystem - 描述 反注册监听某个系统抛出的所有事件,即不再监听。 - 参数 无 - 返回值 无 - 示例 ```python import mod.server.extraServerApi as serverApi ServerSystem = serverApi.GetServerSystemCls() class FpsServerSystem(ServerSystem): def ListenEvent(self): # 服务端脚本自定义了1个事件 self.DefineEvent('BulletHit') # 服务器端脚本监听了引擎的1个事件'ServerChatEvent' # 具体每个事件的详细事件data可以参考《MODSDK文档》 self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(), 'ServerChatEvent', self, self.OnServerChat) def UnListenEvent(self): # 取消自定义的事件 self.UnDefineEvent('BulletHit') # 取消监听的系统事件 self.UnListenAllEvents() ``` ## UnListenForEvent 服务端客户端 method in mod.common.system.baseSystem.BaseSystem - 描述 反注册监听某个系统抛出的事件,即不再监听。若是引擎事件,则namespace和systemName分别为[GetEngineNamespace](#getenginenamespace)和[GetEngineSystemName](#getenginesystemname)。与ListenForEvent对应。 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | namespace | str | 所监听事件的来源系统的namespace | | systemName | str | 所监听事件的来源系统的systemName | | eventName | str | 事件名 | | instance | any | 回调函数所属的类的实例 | | func | function | 回调函数 | | priority | int | 这个回调函数的优先级。默认值为0,这个数值越大表示被执行的优先级越高。 | - 返回值 无 - 示例 ```python import mod.server.extraServerApi as serverApi ServerSystem = serverApi.GetServerSystemCls() class FpsServerSystem(ServerSystem): def ListenEvent(self): # 服务端脚本自定义了1个事件 self.DefineEvent('BulletHit') # 服务器端脚本监听了引擎的1个事件'ServerChatEvent' self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(), 'ServerChatEvent', self, self.OnServerChat) def UnListenEvent(self): # 取消自定义的事件 self.UnDefineEvent('BulletHit') # 取消监听的系统事件 self.UnListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(), 'ServerChatEvent', self, self.OnServerChat) ```