联机大厅*

:::warning{title=注意} *高难度内容,已整合为中等难度! ::: :::success{title=太棒了}

  • 轻松自定义公告活动,包含签到、文本等
  • 轻松自定义商店商品,自动统计购买量
  • 玩家自动跨存档保存背包数据 :::

索引

接口
描述
SetPlayerDataInLobby服务端设置联机大厅玩家/服务器存储数据
GetPlayerDataInLobby服务端获取联机大厅玩家/服务器存储数据
BindPlayerBuyItemFunction服务端绑定联机大厅玩家购买商品事件函数
GetPlayerLobbyUID服务端获取玩家联机大厅UID
RegisterCustomLobbyNotice服务端注册自定义联机大厅公告
RegisterLobbyMenuButton客户端注册自定义联机大厅菜单按钮
RebindMenuButtonFunction客户端重新绑定菜单按钮触发函数
SelectNotice客户端打开指定标题公告活动界面
RegisterCustomLobbyPriceType服务端注册自定义联机大厅货币类型
AddPlayerCoinInLobby服务端为已注册的货币进行添加或减少,仅限于联机大厅
RegisterCustomLobbyStore服务端注册自定义联机大厅商品,需要提前注册货币
SetLobbyMenuVisible客户端设置联机大厅菜单是否显示
OpenStoreInLobby客户端打开联机大厅商店界面
RegisterCustomLobbyRank服务端注册联机大厅排行榜
RegisterOPPlayerUIDInLobby服务端注册联机大厅管理员UID

网易联机大厅服务端bug

由于网易我的世界联机大厅服务器启动服务端随机顺序运行脚本,不受约束,因此需要通过以下代码获取灵免以太实例进行解决:

:::code-group

def __init__(self, namespace, systemName):
  ...
  self.AddTimes = 0
  self.GetMainPackSystem()

def GetMainPackSystem(self):
  logging.debug('{0}'.format(self.AddTimes))
  try:
      self.LA = self.GetLASys('密钥')
      if self.AddTimes <= 10:
          if not self.LA:
              compTimer.AddTimer(1.0, self.GetMainPackSystem)
              self.AddTimes += 1
          else:
              # 服务端真正初始化逻辑
              self.LA.SetIsDisable('AntiCheatUseServerApi', False)
              self.LA.SetIsDisable('IsStartUI', False)
              self.LA.SetIsDisable('IsLobby', True)
  except Exception as e:
      if self.AddTimes <= 10:
          compTimer.AddTimer(1.0, self.GetMainPackSystem)
          logging.critical('异常:{0}'.format(e))
def __init__(self, namespace, systemName):
  ...
  self.AddTimes = 0
  self.GetMainPackSystem()

def GetMainPackSystem(self):
    try:
        self.LA = self.GetLASys('密钥')
        if self.AddTimes <= 10:
            if not self.LA:
                compTimer.AddTimer(1.0, self.GetMainPackSystem)
                self.AddTimes += 1
    except:
        if self.AddTimes <= 10:
            compTimer.AddTimer(1.0, self.GetMainPackSystem)

:::

联机大厅默认数据Key列表

:::warning{title=注意}

  • 因此在自行编写一些存储数据的时候,应当避开原版Key :::

玩家

  • {PriceType}int; 玩家该货币余额
  • All{PriceType}int; 玩家对该充值类型货币总获取量(累充)
  • OffHandItemListdictlist; 玩家副手物品数据
  • ArmorItemDictdictlist; 玩家盔甲物品数据
  • PackItemList0dictlist; 玩家快捷栏物品数据
  • PackItemList1dictlist; 玩家背包第三行物品数据(拆分存储,防止卡死)
  • PackItemList2dictlist; 玩家背包第二行物品数据(拆分存储,防止卡死)
  • PackItemList3dictlist; 玩家背包第一行物品数据(拆分存储,防止卡死)
  • IsBanbool; 玩家是否封禁(需要日期小于封禁日期才会封禁)
  • BanInfostr; 玩家封禁提示文字
  • UnBanDatestr; 玩家封禁截止日期,格式为'{Year}_{Month}_{Day}',例如'2034_8_31'

服务器

  • ServerStorage服务器主要数据
    • CloudLobbyNotice公告活动列表
    • CloudLobbyStore商店商品列表
    • CloudLobbyStoreItem商品售卖数据
  • ChargedRank排行榜
    • All{PriceType}Rank充值类型货币玩家排行榜列表

SetPlayerDataInLobby

服务端

  • 描述
    设置联机大厅玩家存储数据(对应Key进行覆盖)

  • 参数

参数名数据类型说明
PlayerDatadict玩家需要存储的数据,可进行部分覆盖
PlayerIdstr玩家id,默认为None,则获取服务器存储数据
FunctionInstancefunction指定CallBack返回函数(一个dict参数),例如self.CreateMsg,不要填写成self.CreateMsg(),默认为None
  • 返回值

  • 备注

    • 所指定的函数接收的一个dict参数如下

      Key数据类型说明
      PlayerIdstr玩家Id
      PlayerDatalist使用接口传入的PlayerData参数列表
      Codebool(已弃用)是否成功
    • 留意json跟dict的区分,例如json的key一定要是字符串,json没有tuple等

    • 该接口有调用频率限流,同一个组件所有联机大厅房间的请求频率最多为每秒50次。如果请求超过该频率会导致阻塞,请求的相应时间变长。

  • 示例

def ServerInIt(self, *args):
  ItemCmd = ['A_600', 'A_1200', 'A_4000', 'A_6800', 'A_12800', 'A_32800', 'A_64800']
  for OneItemCmd in ItemCmd:
    self.LA.BindPlayerBuyItemFunction(OneItemCmd, self.BuyCoin)

def BuyCoin(self, args):
  PlayerId, ItemCmd = args['PlayerId'], args['ItemCmd']
  # 因为这里的货币充值面额的Cmd都是规范格式,所以可以多种商品逻辑整合为一个函数
  Coin = int(ItemCmd.split('_')[-1])
  self.LA.SetModRenderAttrByKey(PlayerId, 'BuyCoin', Coin)
  self.LA.GetPlayerDataInLobby(['Coin'], PlayerId, FunctionInstance=self.GetAndAddCoin)

def GetAndAddCoin(self, args):
  PlayerId, PlayerCoin = args['PlayerId'], {'Coin': int(args.get('Coin', 0))}
  Coin = self.LA.GetModRenderAttrByKey(PlayerId, 'BuyCoin')
  PlayerCoin['Coin'] += Coin
  self.LA.SetPlayerDataInLobby(PlayerCoin, PlayerId)
  self.LA.ServerMsg(PlayerId, '获得货币:{0}'.format(Coin))
  # 此时也可使用这个来进行获取返回值,但这可能导致获取成其他玩家的数据
  PlayerCoin = self.LA.GetModRenderAttrByKey(PlayerId, 'LobbyData') or {'Coin': 0}
  PlayerCoin['Coin'] += Coin

GetPlayerDataInLobby

:::warning{title=注意}

  • 受网易服务器性能影响,实际使用中,请勿按照示例中使用了GetPlayerDataInLobby之后立刻使用GetModRenderAttrByKey获取数据!

  • 推荐再使用SetModRenderAttrByKey本地存储同样数据或使用的FunctionInstance参数来指定CallBack返回函数

  • Value为数字时,记得二次int,防止因后台调控导致值变为str类型 ::: 服务端

  • 描述
    获取联机大厅玩家存储数据(可部分获取)

  • 参数

参数名数据类型说明
PlayerDataKeyListlist玩家存储的联机大厅数据Key列表,可部分获取
PlayerIdstr玩家id,默认为None,则获取服务器存储数据
DataKeystr指定获取返回值GetModRenderAttrByKey接口的Key,默认为'LobbyData'
FunctionInstancefunction指定CallBack返回函数(一个dict参数),例如self.CreateMsg,不要填写成self.CreateMsg(),默认为None
  • 返回值

  • 备注

    • 所指定的函数接收的一个dict参数如下,当该Key没有数据时,返回的参数不会携带该Key
    Key数据类型说明
    PlayerIdstr玩家Id
    PlayerDataKeyListlist使用接口传入的PlayerDataKeyList参数列表
    *PlayerDataKey(玩家存储的联机大厅数据Key)any对应Key的值,有很多个,根据传入的PlayerDataKeyList有关
    • 【由于服务器黑箱环境,现已不再推荐】由于网易反作弊使用异步:返回值需使用GetModRenderAttrByKey获取Key为DataKey来获得返回值!,当不存在这个Key的存储值时,DataKey值为None,而不再是因为没有异步返回而不会进行任何修改!
    • 该接口有调用频率限流,同一个组件所有联机大厅房间的请求频率最多为每秒200次。如果请求超过该频率会导致阻塞,请求的相应时间变长。因此玩家初始化设置的时候会出现伪回档现象,需要进行逻辑规避
  • 示例

def ServerInIt(self, *args):
  ItemCmd = ['A_600', 'A_1200', 'A_4000', 'A_6800', 'A_12800', 'A_32800', 'A_64800']
  for OneItemCmd in ItemCmd:
    self.LA.BindPlayerBuyItemFunction(OneItemCmd, self.BuyCoin)

def BuyCoin(self, args):
  PlayerId, ItemCmd = args['PlayerId'], args['ItemCmd']
  # 因为这里的货币充值面额的Cmd都是规范格式,所以可以多种商品逻辑整合为一个函数
  Coin = int(ItemCmd.split('_')[-1])
  self.LA.SetModRenderAttrByKey(PlayerId, 'BuyCoin', Coin)
  self.LA.GetPlayerDataInLobby(['Coin'], PlayerId, FunctionInstance=self.GetAndAddCoin)

def GetAndAddCoin(self, args):
  PlayerId, PlayerCoin = args['PlayerId'], {'Coin': int(args.get('Coin', 0))}
  Coin = self.LA.GetModRenderAttrByKey(PlayerId, 'BuyCoin')
  PlayerCoin['Coin'] += Coin
  self.LA.SetPlayerDataInLobby(PlayerCoin, PlayerId)
  self.LA.ServerMsg(PlayerId, '获得货币:{0}'.format(Coin))
  # 此时也可使用这个来进行获取返回值,但这可能导致获取成其他玩家的数据
  PlayerCoin = self.LA.GetModRenderAttrByKey(PlayerId, 'LobbyData') or {'Coin': 0}
  PlayerCoin['Coin'] += Coin

BindPlayerBuyItemFunction

服务端

  • 描述
    绑定联机大厅玩家购买商品事件函数,为防止作弊无法解绑

  • 参数

参数名数据类型说明
ItemCmdstr商品指令
FunctionInstancefunction函数(一个dict参数),例如self.CreateMsg,不要填写成self.CreateMsg()
  • 返回值

  • 备注

    • 所绑定的函数接收的一个dict参数如下
    Key数据类型说明
    PlayerIdstr玩家id
    PlayerUIDint玩家UID
    ItemCmdstr商品指令
  • 示例

def ServerInIt(self, *args):
  ItemCmd = ['A_600', 'A_1200', 'A_4000', 'A_6800', 'A_12800', 'A_32800', 'A_64800']
  for OneItemCmd in ItemCmd:
    self.LA.BindPlayerBuyItemFunction(OneItemCmd, self.BuyCoin)

def BuyCoin(self, args):
  PlayerId, ItemCmd = args['PlayerId'], args['ItemCmd']
  # 因为这里的货币充值面额的Cmd都是规范格式,所以可以多种商品逻辑整合为一个函数
  Coin = int(ItemCmd.split('_')[-1])
  self.LA.SetModRenderAttrByKey(PlayerId, 'BuyCoin', Coin)
  self.LA.GetPlayerDataInLobby(['Coin'], PlayerId, FunctionInstance=self.GetAndAddCoin)

def GetAndAddCoin(self, args):
  PlayerId, PlayerCoin = args['PlayerId'], {'Coin': int(args.get('Coin', 0))}
  Coin = self.LA.GetModRenderAttrByKey(PlayerId, 'BuyCoin')
  PlayerCoin['Coin'] += Coin
  self.LA.SetPlayerDataInLobby(PlayerCoin, PlayerId)
  self.LA.ServerMsg(PlayerId, '获得货币:{0}'.format(Coin))
  # 此时也可使用这个来进行获取返回值,但这可能导致获取成其他玩家的数据
  PlayerCoin = self.LA.GetModRenderAttrByKey(PlayerId, 'LobbyData') or {'Coin': 0}
  PlayerCoin['Coin'] += Coin

GetPlayerLobbyUID

服务端

  • 描述
    获取玩家联机大厅UID

  • 参数

参数名数据类型说明
PlayerIdstr玩家id
  • 返回值
    玩家联机大厅UID (int)

  • 备注

  • 示例 空


RegisterCustomLobbyNotice

服务端
:::info{title=提示}

  • 公告活动功能是支持脚本层、云端(即联机大厅存储数据,结合联机大厅后台控制中心)动态注册的

  • 公告活动功能在联机大厅的存储Key必须为ServerStorage下的CloudLobbyNotice (list)

  • 在脚本层动态注册时,必须要在服务端初始化时注册 :::

  • 描述
    注册自定义联机大厅公告活动

  • 参数

参数名数据类型说明
Titlestr公告列表标题
Iconstr图标路径,例如textures/ui/LA/button
Typestr公告类型
Datadict公告类型数据
  • 返回值

  • 备注

    • 公告类型列表

      类型说明备注
      Text文本公告使用$imagepath$添加图片,格式为textures/ui/...
      Image图片公告海报图片、一个自定义按钮
      Sign签到活动7天自定义签到活动,支持云端存储、本地
    • 文本公告类型数据

      参数名数据类型说明
      Titlestr标题
      Contentstr内容、支持富文本
    • 图片公告类型数据

      参数名数据类型说明
      Textstr按钮文字
      Imagestr图片路径
      ModNamestr按钮触发函数(接受一个参数)所在的模组名称
      ClientSystemNamestr按钮触发函数(接受一个参数)所在的客户端名称
      FunctionNamestr按钮触发函数(接受一个参数)所在的客户端实例下的函数名称
    • 签到活动类型数据

      参数名数据类型说明
      BindDataKeystr绑定存储数据Key
      IsLobbybool是否为联机大厅数据存储Key
      Rewardlist奖励数据列表,必须为7个dict
      • Reward奖励数据
      参数名数据类型说明
      Iconstr奖励内容贴图路径
      Numint奖励内容数量
      ModNamestr领取触发函数(接受一个参数)所在的模组名称
      ServerSystemNamestr领取触发函数(接受一个参数)所在的客户端名称
      ClientSystemNamestr(不推荐)领取触发函数(接受一个参数)所在的客户端名称
      FunctionNamestr领取触发函数(接受一个参数)所在的实例下的函数名称
      *any自定义Key的自定义标记信息,因为领取触发的函数会将本奖励数据dict所有内容返回到函数,因此可以自定义一些数据来进行记录或辨别
  • 示例 :::code-group

self.LA.RegisterCustomLobbyNotice('文本公告', 'textures/ui/text_icon', 'Text', {
  'Title': '自定义标题',
  'Content': '自定义文本内容及图片$textures/ui/logo$'
})
# -*- coding:utf-8 -*-
OPUidList = [2147535861, 4294967295]  # 拥有后台权限的玩家UID
LobbyStorageKeyList = ['ServerStorage']  # 联机大厅服务器存储数据的KeyList,用于初始化服务器配置
LobbyStorageDict = {
    # 第一级Key对应 LobbyStorageKeyList
    'ServerStorage': {
        'CloudLobbyNotice': [
            {
                'Title': '文本公告',
                'Icon': 'textures/ui/text_icon',
                'Type': 'Text',
                'Data': {
                    'Title': '自定义标题',
                    'Content': '自定义文本内容及图片$textures/ui/logo$',
                },
            }
        ]
    }
}
self.LA.RegisterCustomLobbyNotice('图片公告', 'textures/ui/iamge_icon', 'Image', {
  'Text': '前往签到',
  'Image': 'textures/ui/iamge',
  'ModName': 'LingmienMod',
  'ClientSystemName': 'LingmienModClientSystem',
  'FunctionName': 'ButtonEvent',
})
# -*- coding:utf-8 -*-
OPUidList = [2147535861, 4294967295]  # 拥有后台权限的玩家UID
LobbyStorageKeyList = ['ServerStorage']  # 联机大厅服务器存储数据的KeyList,用于初始化服务器配置
LobbyStorageDict = {
    # 第一级Key对应 LobbyStorageKeyList
    'ServerStorage': {
        'CloudLobbyNotice': [
            {
                'Title': '图片公告',
                'Icon': 'textures/ui/iamge_icon',
                'Type': 'Image',
                'Data': {
                  'Text': '前往签到',
                  'Image': 'textures/ui/iamge',
                  'ModName': 'LingmienMod',
                  'ClientSystemName': 'LingmienModClientSystem',
                  'FunctionName': 'ButtonEvent',
                },
            }
        ]
    }
}
self.LA.RegisterCustomLobbyNotice('签到', 'textures/ui/LA/first_charge_icon', 'Sign', {
    'BindDataKey': 'SignList2',
    'IsLobby': True,
    'Reward': [
        {
            'ItemId': 'tutupiao',  # 可当作指令使用,用于辨别获取的奖励信息
            'Icon': 'textures/ui/red',
            'Num': 1,
            'ModName': 'lair',
            'ClientSystemName': 'lairClientSystem',
            'FunctionName': 'Get',  # 接受领取的args参数,会携带本dict返回到函数,因此可以自定义ItemId来记录一些辨别信息
        },
        {
            'ItemId': 'tutupiao',  # 可当作指令使用,用于辨别获取的奖励信息
            'Icon': 'textures/ui/red',
            'Num': 2,
            'ModName': 'lair',
            'ClientSystemName': 'lairClientSystem',
            'FunctionName': 'Get',  # 接受领取的args参数,会携带本dict返回到函数,因此可以自定义ItemId来记录一些辨别信息
        },
        {
            'ItemId': 'tutupiao',  # 可当作指令使用,用于辨别获取的奖励信息
            'Icon': 'textures/ui/red',
            'Num': 2,
            'ModName': 'lair',
            'ClientSystemName': 'lairClientSystem',
            'FunctionName': 'Get',  # 接受领取的args参数,会携带本dict返回到函数,因此可以自定义ItemId来记录一些辨别信息
        },
        {
            'ItemId': 'tutupiao',  # 可当作指令使用,用于辨别获取的奖励信息
            'Icon': 'textures/ui/red',
            'Num': 2,
            'ModName': 'lair',
            'ClientSystemName': 'lairClientSystem',
            'FunctionName': 'Get',  # 接受领取的args参数,会携带本dict返回到函数,因此可以自定义ItemId来记录一些辨别信息
        },
        {
            'ItemId': 'tutupiao',  # 可当作指令使用,用于辨别获取的奖励信息
            'Icon': 'textures/ui/red',
            'Num': 3,
            'ModName': 'lair',
            'ClientSystemName': 'lairClientSystem',
            'FunctionName': 'Get',  # 接受领取的args参数,会携带本dict返回到函数,因此可以自定义ItemId来记录一些辨别信息
        },
        {
            'ItemId': 'tutupiao',  # 可当作指令使用,用于辨别获取的奖励信息
            'Icon': 'textures/ui/red',
            'Num': 2,
            'ModName': 'lair',
            'ClientSystemName': 'lairClientSystem',
            'FunctionName': 'Get',  # 接受领取的args参数,会携带本dict返回到函数,因此可以自定义ItemId来记录一些辨别信息
        },
        {
            'ItemId': 'tutupiao',  # 可当作指令使用,用于辨别获取的奖励信息
            'Icon': 'textures/ui/red',
            'Num': 5,
            'ModName': 'lair',
            'ClientSystemName': 'lairClientSystem',
            'FunctionName': 'Get',  # 接受领取的args参数,会携带本dict返回到函数,因此可以自定义ItemId来记录一些辨别信息
        },
    ]
})
# -*- coding:utf-8 -*-
OPUidList = [2147535861, 4294967295]  # 拥有后台权限的玩家UID
LobbyStorageKeyList = ['ServerStorage']  # 联机大厅服务器存储数据的KeyList,用于初始化服务器配置
LobbyStorageDict = {
    # 第一级Key对应 LobbyStorageKeyList
    'ServerStorage': {
        'CloudLobbyNotice': [
            {
                'Title': '签到',
                'Icon': 'textures/ui/LA/first_charge_icon',
                'Type': 'Sign',
                'Data': {
                    'BindDataKey': 'SignList2',
                    'IsLobby': True,
                    'Reward': [
                        {
                            'ItemId': 'tutupiao',  # 可当作指令使用,用于辨别获取的奖励信息
                            'Icon': 'textures/ui/red',
                            'Num': 1,
                            'ModName': 'lair',
                            'ClientSystemName': 'lairClientSystem',
                            'FunctionName': 'Get',  # 接受领取的args参数,会携带本dict返回到函数,因此可以自定义ItemId来记录一些辨别信息
                        },
                        {
                            'ItemId': 'tutupiao',  # 可当作指令使用,用于辨别获取的奖励信息
                            'Icon': 'textures/ui/red',
                            'Num': 2,
                            'ModName': 'lair',
                            'ClientSystemName': 'lairClientSystem',
                            'FunctionName': 'Get',  # 接受领取的args参数,会携带本dict返回到函数,因此可以自定义ItemId来记录一些辨别信息
                        },
                        {
                            'ItemId': 'tutupiao',  # 可当作指令使用,用于辨别获取的奖励信息
                            'Icon': 'textures/ui/red',
                            'Num': 2,
                            'ModName': 'lair',
                            'ClientSystemName': 'lairClientSystem',
                            'FunctionName': 'Get',  # 接受领取的args参数,会携带本dict返回到函数,因此可以自定义ItemId来记录一些辨别信息
                        },
                        {
                            'ItemId': 'tutupiao',  # 可当作指令使用,用于辨别获取的奖励信息
                            'Icon': 'textures/ui/red',
                            'Num': 2,
                            'ModName': 'lair',
                            'ClientSystemName': 'lairClientSystem',
                            'FunctionName': 'Get',  # 接受领取的args参数,会携带本dict返回到函数,因此可以自定义ItemId来记录一些辨别信息
                        },
                        {
                            'ItemId': 'tutupiao',  # 可当作指令使用,用于辨别获取的奖励信息
                            'Icon': 'textures/ui/red',
                            'Num': 3,
                            'ModName': 'lair',
                            'ClientSystemName': 'lairClientSystem',
                            'FunctionName': 'Get',  # 接受领取的args参数,会携带本dict返回到函数,因此可以自定义ItemId来记录一些辨别信息
                        },
                        {
                            'ItemId': 'tutupiao',  # 可当作指令使用,用于辨别获取的奖励信息
                            'Icon': 'textures/ui/red',
                            'Num': 2,
                            'ModName': 'lair',
                            'ClientSystemName': 'lairClientSystem',
                            'FunctionName': 'Get',  # 接受领取的args参数,会携带本dict返回到函数,因此可以自定义ItemId来记录一些辨别信息
                        },
                        {
                            'ItemId': 'tutupiao',  # 可当作指令使用,用于辨别获取的奖励信息
                            'Icon': 'textures/ui/red',
                            'Num': 5,
                            'ModName': 'lair',
                            'ClientSystemName': 'lairClientSystem',
                            'FunctionName': 'Get',  # 接受领取的args参数,会携带本dict返回到函数,因此可以自定义ItemId来记录一些辨别信息
                        },
                    ]
                },
            }
        ]
    }
}

:::

RegisterLobbyMenuButton

客户端
:::info{title=提示}

  • 必须要在客户端初始化时注册 :::

  • 描述
    注册自定义联机大厅菜单按钮

  • 参数

参数名数据类型说明
Iconstr图标路径,例如textures/ui/LA/button
FunctionInstancefunction该按钮按下触发的函数(一个dict参数),例如self.CreateMsg,不要填写成self.CreateMsg()
IsMustbool是否为必显菜单列表的按钮,默认为False
  • 返回值

  • 备注

  • 示例 空


RebindMenuButtonFunction

客户端
:::info{title=提示}

  • 必须要在客户端初始化时重新绑定 :::

  • 描述
    重新绑定菜单按钮触发函数

  • 参数

参数名数据类型说明
MenuTypestr菜单类型
FunctionInstancefunction该按钮按下触发的函数(一个dict参数),例如self.CreateMsg,不要填写成self.CreateMsg(),默认为None,则隐藏该按钮
  • 返回值

  • 备注

    • 菜单类型

      类型说明备注
      Store商店
      Lucky抽奖
      FirstCharge首充
      Vip会员
      Notice公告活动
      Rank排行榜
      Refresh刷新服务端数据
      QQButtonQQ按钮
      Question如何游玩
      Tpa传送申请
  • 示例 空


SelectNotice

客户端

  • 描述
    打开指定标题公告活动界面

  • 参数

参数名数据类型说明
Titlestr公告活动标题
  • 返回值

  • 备注

  • 示例 空


RegisterCustomLobbyPriceType

服务端
:::info{title=提示}

  • 自动绑定购买指令及发放函数

  • 购买指令:BindDataKey_Num Num为600,1200,4000,6800,12800,32800,64800,1240,4210,7250,13950,35950,71950,2400,8000,13600,25600,65600,129600

  • 自动统计充值总额 :::

  • 描述
    注册自定义联机大厅货币类型

  • 参数

参数名数据类型说明
BindDataKeystr货币数据Key,即PriceType,两者合并为一个参数
Iconstr货币类型图标路径,例如textures/ui/LA/button
IsChargedbool是否为联机大厅充值货币
IsLobbybool是否为联机大厅数据存储Key
  • 返回值

  • 备注

  • 示例 空


AddPlayerCoinInLobby

服务端

  • 描述
    为已注册的货币进行添加或减少,仅限于联机大厅

  • 参数

参数名数据类型说明
PlayerIdstr玩家id
CoinKeystr货币注册的Key
AddCoinNumint添加的数量(负数为减少)
IsVisiblebool是否显示加载界面,默认为True
  • 返回值

  • 备注

  • 示例 空


RegisterCustomLobbyStore

服务端

  • 描述
    注册自定义联机大厅商品,需要提前注册货币

  • 参数

参数名数据类型说明
Titlestr商品名称
Iconstr商品图标路径,例如textures/ui/LA/button
Tagstr商品分类标签
PriceTypestr价格类型
Priceint价格数量
Infostr富文本商品介绍
ModNamestr购买成功后发货触发函数(接受一个参数,会返回PlayerId)所在的模组名称
ServerSystemNamestr购买成功后发货触发函数(接受一个参数,会返回PlayerId)所在的服务端名称
FunctionNamestr购买成功后发货触发函数(接受一个参数,会返回PlayerId)所在的服务端函数名称
OtherDatadict其他数据,用于自定义标记商品数据,如售卖数量、售卖的物品id,注意key不要和之前的参数冲突
  • 返回值

  • 备注

    • 发货触发函数接收的一个参数中默认包含上述接口参数所有的Key, Value(除了OtherData,OtherData当中填写的Key和Value,都会直接返回在与Title同一级Key和Value。),
    • 发货触发函数接收的一个参数中额外包含Key:
    参数名数据类型说明
    PlayerIdstr玩家Id
    BuyNumTimesint批量购买数量
    • 由于服务器存储规则越简单层级越好,因此OtherData当中填写的Key和Value,都会直接返回在与Title同一级Key和Value。

      例如OtherData = {'CustomKey': 'abc'},那么在回调函数中,接受的参数args,直接print args['CustomKey']可以直接得到'abc'

  • 示例 空


SetLobbyMenuVisible

客户端

  • 描述
    设置联机大厅菜单是否显示

  • 参数

参数名数据类型说明
Visiblebool是否显示
  • 返回值

  • 备注

  • 示例 空


OpenStoreInLobby

客户端

  • 描述
    打开联机大厅商店界面

  • 参数

  • 返回值

  • 备注

  • 示例 空


RegisterCustomLobbyRank

服务端
:::info{title=提示}

  • 服务端初始化时调用

  • 使用GetModRenderAttrByKey接口Key为RankListBy{BindDataKey}获取排行榜list数据

  • BindDataKey 排行榜绑定的服务器ChargedRank下的数据Key,Value为dictlist,且dict必须包含Value,PlayerUID,PlayerName :::

  • 描述
    注册联机大厅排行榜

  • 参数

参数名数据类型说明
BindDataKeystr排行榜绑定的服务器ChargedRank下的数据Key,Value为dictlist,且dict必须包含Value,PlayerUID,PlayerName
Namestr该排行榜显示的名字
Iconstr图标路径,例如textures/ui/LA/button
InfoTextstr该排行榜提示文字信息,默认为''
IsPositiveSequencebool排序是否为正序,默认为False
  • 返回值

  • 备注

  • 示例 空


RegisterCustomLobbyRank

服务端
:::info{title=提示}

  • 服务端初始化时调用 :::

  • 描述
    注册联机大厅管理员UID

  • 参数

参数名数据类型说明
PlayerUIDint玩家UID
  • 返回值

  • 备注

  • 示例 空

评论交流

文档目录

灵免以太