---
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)
```