# 事件

# BroadcastEvent

服务端客户端

method in mod.common.system.baseSystem.BaseSystem

  • 描述

    本地广播事件,客户端system广播的事件仅客户端system能监听,服务器system广播的事件仅服务端system能监听。

  • 参数

    参数名
    数据类型
    说明
    eventName str 事件名
    eventData dict 事件参数,一般用CreateEventData的返回值
  • 返回值

  • 示例

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的返回值
  • 返回值

  • 示例

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 事件数据
  • 示例

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 引擎的命名空间
  • 示例

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 引擎的命名空间
  • 示例

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
  • 示例

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
  • 示例

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
  • 示例

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的返回值
  • 返回值

  • 示例

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

  • 描述

    服务器发送事件到指定一批客户端,相比于在for循环内使用NotifyToClient性能更好

  • 参数

    参数名
    数据类型
    说明
    targetIdList list(str) 客户端对应的playerId列表,playerId为玩家的entityId
    eventName str 事件名
    eventData dict 事件参数,一般用CreateEventData的返回值
  • 返回值

  • 示例

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的返回值
  • 返回值

  • 示例

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

  • 描述

    反注册监听某个系统抛出的所有事件,即不再监听。

  • 参数

  • 返回值

  • 示例

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分别为GetEngineNamespaceGetEngineSystemName。与ListenForEvent对应。

  • 参数

    参数名
    数据类型
    说明
    namespace str 所监听事件的来源系统的namespace
    systemName str 所监听事件的来源系统的systemName
    eventName str 事件名
    instance any 回调函数所属的类的实例
    func function 回调函数
    priority int 这个回调函数的优先级。默认值为0,这个数值越大表示被执行的优先级越高。
  • 返回值

  • 示例

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)