无标题文章

[TOC]

后端中间件与游戏的设计分析

维护人 版本号 描述 日期
张纪 0.1 初版 2016-04-06
张纪 0.2 增加4.38接口 2016-04-08

1. 需求概要

后端中间件需要同各游戏之间做交互,需要获取游戏的数据,游戏中用户的数据,以及对游戏中用户数据做操作。中间件向游戏方发出请求后,在一定时间内游戏方处理完后根据该份设计文档定义的格式将结果返回给后端中间件。

需求中有需要客户端做实现的会特别注明,如果游戏方的客户端有实现的可忽略实现,但具体的实现要求需要游戏方同运营人员做详细沟通
针对以上需求概要做了细分,现整理如下:

1.1 获取游戏的所有服信息

游戏会存在单服或多服,这里中间件后续的各种请求都会基于游戏服去做对应处理。

1.2 玩家个人资料获取以及更新

获取用户在游戏里的一些基础数据,涉及到的ID方面的信息(平台ID,炫踪UID,游戏UID)不允许被修改,其他均可修改,可修改的信息包括:真实姓名,性别,国籍,生日,职业,邮箱,电话,其它联系方式等等,这部分信息应该是在每个游戏里都存在,如果不存在的,游戏方可传空或不传。
玩家查询条件为:具体游戏服里的游戏UID或者用户在游戏里的昵称或姓名。

1.3 玩家基础游戏数据

玩家游戏数据包括玩家身份数据,状态,实力,经济数据,玩家游戏进度,活跃度信息。

1.3.1 身份数据

  • 玩家游戏UID
  • 角色ID,角色名称
  • 所属阵营/国家
  • 所属公会

1.3.2 玩家状态

包括玩家当前是否在线,是否禁言,是否冻结(永久或临时)

1.3.3 玩家实力

  • 经验值
  • 当前等级
  • VIP积分
  • VIP等级

1.3.4 经济数据

经济数据主要包括以下数据,但依据各游戏类别不同,可能有的数据在某类游戏里有有的游戏里没有,没有的可不对数据做实现,另外后续也可能会增加一些接口,也是同样规则,没有的可不做实现。

  • 建筑数据
  • 店铺数据
  • 资产数据
  • 英雄数据
  • 地块数据
  • 装备数据
  • 店员数据
  • 技能数据
  • AVATAR数据
  • 宝石数据
  • 装饰物数据
  • 皮肤数据
  • 社交数据
  • 士兵数据
  • 宠物数据

1.3.5 游戏进度

以游戏为单位获取用户在游戏的不同的进度,具体在接口中描述。

1.3.6 活跃度信息

包括最近14天活跃天数,最后登陆时间,最后充值时间等。(后续还有这里会再加上)

1.4 教学(新手)引导

需要先获取游戏里所有的引导清单,然后针对用户的某个或某批引导的完成情况做重置和跳过操作。

1.5 任务处理

需要先获取游戏里所有的任务清单,然后针对用户的某个或某些任务做处理,会包括任务进度修改,任务解锁,重置任务。

1.6 成就处理

需要先获取游戏里所有的成就清单,然后针对用户的某个或某些成就做处理,包括成就完成,成就的重置。

1.7 背包数据

获取玩家游戏里背包里的数据,可对背包数据进行实时修改和删除操作,也能增加背包的数据。不同类别的游戏中,背包里有的数据会存在属性项目,可对属性进行修改,比如装备,宝石等。

1.8 充值订单记录

获取玩家在游戏里的充值记录,可按时间段查询,订单只做查看操作,不进行任何其他更新操作。

1.9 活动设置

游戏上线前,需要预先将运营要设置的活动包放到游戏中,后续运营平台通过向中间件发起活动的设置请求,设置主要集中在活动是否开启,活动的起讫时间,强制关闭,游戏方需要判断设置的活动是必须存在于游戏里。(客户端实现)

1.10 账号操作

需要对游戏里用户账号进行一些封号(永久和临时),账号数据重置,禁止(解禁)发言

1.11 补偿操作

游戏中会经常需要对用户进行各种补偿,补偿主要包括资源性补偿,背包里的物品补偿。 补偿的方式分为两种:实时补偿以及邮件补偿(客户端实现)

  • 实时补偿,游戏方需要接受补偿的数据,待用户在游戏里触发后进行实时补偿操作。
  • 邮件补偿,这里会设计2份数据保存,一个是邮件发送的数据,另外一个是实时补偿的数据,邮件补偿也是需要用户在游戏的邮件系统里操作后进行实时补偿操作。

1.12 登陆公告管理

中间件会想游戏发送登录公告,该公告只在用户登录游戏时弹出,会带有一些条件,满足条件的才进行弹出。(客户端实现)

1.13 内部邮件

即游戏中的邮件系统,可以理解为向用户发送内容,中间件会向游戏写入邮件内容并由客户端做展现。(客户端实现)

1.14 手机消息推送

该推送类似于在用户关闭游戏或长期未打开游戏时推送的类似短信的内容,中间件会请求游戏的写入接口,游戏收到手机推送消息后保存并有客户端取的后端数据后根据一定逻辑做展现。(客户端实现)

1.15 广播处理

广播是游戏在运行时在游戏内显示,可能有的是走马灯,大喇叭,用户系统通知等。中间件将广播的数据通过接口写入游戏,由客户端展现。(客户端实现)

1.16 排行榜查询

通常的排行查询,根据选择的排行类型显示排行列表,列表中可查看具体玩家信息

1.17 公会查询

查询游戏的公会信息,然后点详情后可查看公会的用户列表

1.18 调查问卷

这里会复杂些,中间件将问卷信息传递给游戏后端保存,客户端根据问卷设置做一定展现后,由用户填写,问卷完毕后,游戏后端需要保存调查数据然后中间件会通过接口获取调查结果。 (客户端实现)

1.19 loading界面管理

游戏加载画面,可加载的游戏画面必须要事先已在游戏包中,然后有中间件来去请求接口保存loading界面的设置,客户端根据设置来显示loading界面。(客户端实现)

2. 设计

2.1 各游戏请求地址配置

游戏方接入时需要提供gameId和areaId以及与之对应的请求的地址信息(不包含中间件请求的uri),这里gameId为游戏id,areaId为游戏所在服id。
后端中间件会和不同游戏做交互,所以中间件请求的URI会在不同游戏中保持一致,后面会对请求的URI做说明。
如下:

字段名 类型 备注
gameId int 游戏的唯一标识
areaId int 游戏服id
urlDomain string 请求的地址信息(不包含中间件请求的uri),http://game1_url,游戏方给出

2.2 请求方式以及入参格式定义

2.2.1 请求方式

以GET方式请求

2.2.2 入参说明

这里我们统一用新框架的*参数,参数入口为*,格式为json字符串,原始格式如下:

array(
    "{$function}.{$action}",
    $params => array(...)
)

$params 的顺序参看下面各接口的入参说明
这里json字符串需要进行压缩和base64操作,函数如下:

function compress($data, $needBase64Encode = false)
{
    $data = gzcompress(trim($data));

    if ($needBase64Encode) {
        $data = base64_encode($data);
    }

    return $data;
}

统一进行base64编码

示例:
原json字符串:[["Middleware.handleItem",[12,123,[{"itemDefId": 30005, "count": 1}],1441837585]]]
压缩并base64: eJyLjlbyzUxJyUktTyxK1ctIzAMyPUtSc5V0og2NdAyNjHWiq5UygQIuqWmeKUpWCsYGBgamOgpKyfmleSVAvmFtrI6hiYmhhbG5qYVpbGwsADc6GEA=

2.3 请求的合法性校验

参见“运营后台中间件分析设计” 2.3 中的说明

2.4 返回结果说明

结果为json格式,如下说明

字段名 类型 备注
code int 0为成功,大于0的标示错误,具体错误见下面的msg说明
msg mixed 返回数据的封装,如果是错误,这里将是一段描述说明

再向请求方发送数据前需要进行压缩并base64,函数参见2.3.2中的对应说明。

3. 基本参数说明

3.1 gameId

gameId 是公司游戏针对不同平台的不同语言产生的一个游戏的唯一标识,这里不是单指某个游戏,比如花店这个游戏,它的英文版本以及该版本在facebook上的就会是一个gameId,如果这个英文版在其他平台,如:ArmorGames,又会是另一个gameId,通常可以理解为app id。

3.2 areaId

areaId 这里是针对gameId来的游戏服id,一个gameId会对应多个areaId,即游戏多服的概念。

3.3 requestTime

请求接口的时间,对校验会有一定的帮助,后段中间件默认会在最后加上此参数。

4. 接口

4.1 获取游戏所有服信息

接口名:Middleware.fetchGameSeverInfo
说明: 获取游戏所有服信息。
入参说明:

字段名 类型 备注
gameId int 如前

返回:

{
    "data":  
    [  
         {"serverName": "华东一服","areaId": 1,"url":"http://dev-flowershop2.shinezone.com/?pf_token=52d0ee3c031dd&token=52d0e112031dd&user_id=1"},
        {"serverName": "华东二服","areaId": 2,"url":"https://fs-join-facebook.shinezone.com/middleware.php?"}
    ],  
    "message": "success",  
    "status": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
serverName| string | 华东一服 | 游戏服名
areaId| int | 1 | 游戏服id
url | string |https://fs-join-facebook.shinezone.com/middleware.php? | 请求的url

4.2 搜索用户

接口名:Middleware.searchUserList
说明:模糊搜索游戏中的用户。
入参说明:

字段名 类型 备注
searchkey string 查询的关键字,可以是玩家游戏里的uid,玩家炫踪UID,游戏中的用户名,游戏中使用的姓名(如果有)

返回:

{
    "msg":  
    [  
        {
             "areaId": 1,                  
            "uid":    868790,                          
            "nickname":    "tiger",                     
            "level":    32,                         
        },
        ....
        
    ],  
    "code": 0,  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
areaId| int | 1 | 游戏服id
uid| int | 868790 | 用户游戏里的uid
nickname| string | tiger | 用户昵称
level| int | 32 | 用户等级

4.3 游戏用户信息

接口名:Middleware.fetchUserInfo
说明:以用户的游戏uid获取游戏中用户的基本信息。
入参说明:

字段名 类型 备注
uid int 游戏里的UID

返回:

{
    "msg":  
    {  
        "areaId": 56485005488,                  
         "pfId": 56485005488,                    
        "szUid": 100001770390950,               
        "uid":    868790,                          
        "name":    "张纪",                          
        "level": 32,                            
        "sex":    "男",                            
        "nation":  "中国",                       
        ....                    
        
    },  
    "code": 0,  
}

返回msg字典说明:

字段名 | 类型 | 样列 | 备注
--- | --- | ---
areaId| int | 56485005488 | 游戏服ID
pfId| int | 56485005488 | 玩家平台UID
szUid| int | 100001770390950 | 玩家炫踪UID
uid| int | 868790 | 玩家游戏UID
name| string | 张纪 | 真实姓名
level| int | 32 | 等级
sex| string | 男 | 性别
nation| string | 中国 | 国籍
birth| string | 1980-01-31 | 出生
job| string | 工程师 | 职业
email| string | zhangji@shinezone.com | 邮箱
tel| int | 8888888888888 | 电话
otherTel| int | 66666666666 | 其他联系方式
isVip| int | 0 | 是否vip组

4.4 更新用户基本信息

接口名:Middleware.updateUserInfo
说明:更新游戏中用户的信息。
入参说明:

字段名 类型 备注
uid string 游戏里的UID
info json 这里只以下列举的字段进行更新,非以下列举的会被屏蔽,最后更新结果依赖游戏方现有的字段

info列举:

    {  
        "name":    "张纪",                          
        "sex":    "男",                            
        "nation":  "中国",                       
        "birth": "1980-01-31",                   
        "job":  "工程师",                         
        "email":  "zhangji@shinezone.com",       
        "tel":  "8888888888888",                  
        "otherTel":  "66666666666",              
    }  

返回:

{
    "msg": "更新成功",   
    "code": 0  
}

4.5 获取玩家游戏基础数据

接口名:Middleware.fetchUserGameInfo
说明:获取用户在游戏基础数据,具体参见下面返回的说明。
入参说明:

字段名 类型 备注
uid string 游戏里的UID

返回:

{
    "msg":  
    {  
         "areaId": 56485005488,                  
        "szUid": 100001770390950,               
        "uid":    868790,                          
        "roleID":    23,                          
        "roleName":    "上邪",                       
        ...
        
    },   
    "code": 0  
}

返回msg字典说明:

字段名 | 类型 | 样列 | 备注
--- | --- | ---
gameID| int | 1 | 游戏ID
areaId| int | 56485005488 | 游戏服ID
szUid| int | 100001770390950 | 玩家炫踪UID
uid| int | 1234323 | 玩家游戏UID
roleID| int | 23 | 角色ID
roleName| string | 上邪 | 角色名
belong| string | 中国 | 所属阵营/国家
belongGuild| string | 男神公会 | 所属公会
exp| int | 1305 | 经验值
level| int | 24 | 等级
vipLev| int | 0 | Vip等级
vipExp| int | 0 | Vip积分
rank| int | 100 | 游戏排名
economy | json | [{"战斗力",101,200},{"付费钻石",201,6},....] | 玩家经济,依据各游戏不同返回,所以这里的数据里会带有经济对应的名称和数量信息,第一项经济名称,第二项是游戏里该经济存储的id值,更新时会传递该值,第三项是具体的值
energy | json | [{"水",102,200}....] | 体力描述,第一项名称,第二项是游戏里的体力id,第三项是具体的值
baseSource | json | [{"粮食",103,300}....] | 基础资源描述,第一项名称,第二项是游戏里的资源id,第三项是具体的值
corpProps | json | [{"圣剑",104,400}....] | 核心道具描述,第一项名称,第二项是游戏里的核心道具id,第三项是具体的值
process | json | [{"成就进度",15/200}....] | 玩家进度描述,第一项进度名称,第二项是进度具体的值
lastLoginTime | int | 1458662400 | 最后登录时间,时间戳
lastRechargeTime | int | 1458662400 | 最后充值时间,时间戳
activeDayFor14 | int | 5 | 最近14天活跃天数
isOnline | int | 0 | 0=不在线,1=在线
silenceTime | int | 0 | 0=不禁言,>0代表禁言的到期时间,时间戳,如:1458748800,代表2016-03-24零点解禁
forbiddenTime | int | 0 | 0=不冻结,>0代表冻结的到期时间,时间戳,如:1458748800,代表2016-03-24零点解冻

4.6 更新玩家游戏基础数据

接口名:Middleware.updateUserGameInfo
说明:更新用户在游戏基础数据,具体参见下面返回的说明。
入参说明:

字段名 类型 备注
areaId string 游戏服ID
uid json 游戏里的UID, ex:[1,2,3,4....]
info json 这里只以下列举的字段进行更新,非以下列举的会被屏蔽,最后更新结果依赖游戏方现有的字段

info字典说明:

字段名 | 类型 | 样列 | 备注
--- | --- | ---
exp| int | 1305 | 经验值
level| int | 24 | 等级
vipLev| int | 0 | Vip等级
vipExp| int | 0 | Vip积分
rank| int | 100 | 游戏排名
economy | json | [{101,200},{201,6},....] | 玩家经济,第一项是游戏里该经济存储的id值,第二项是具体的值
energy | json | [{102,200}....] | 体力描述,第一项是游戏里的体力id,第二项是具体的值
baseSource | json | [{103,300}....] | 基础资源描述,第一项是游戏里的资源id,第二项是具体的值
corpProps | json | [{104,400}....] | 核心道具描述,第一项是游戏里的核心道具id,第二项是具体的值
silenceTime | int | 0 | 0=不禁言,>0代表禁言的到期时间,时间戳,如:1458748800,代表2016-03-24零点解禁
forbiddenTime | int | 0 | 0=不冻结,>0代表冻结的到期时间,时间戳,如:1458748800,代表2016-03-24零点解冻

返回:

{  
    "msg": "success",  
    "code": 0  
}

4.7 重置玩家所有游戏数据

接口名:Middleware.resetUserGameData
说明:重置玩家所有游戏数据,具体参见下面返回的说明。
入参说明:

字段名 类型 备注
uid json 游戏里的UID,ex[1,2,3,4]

返回:

{
    "msg": 
    {
        "status": 1,//重置是否成功1=成功,0=未成功
        "uid": 100010200112
    },   
    "code": 0  
}

4.8 获取游戏所有教学引导清单

接口名:Middleware.fetchGuideList
说明: 获取游戏里所有的教学引导列表。
入参说明:

字段名 类型 备注
areaId int 游戏服ID
gameId int 游戏UID

返回:

{
    "msg":  
    [  
         {"defId": 1,"desrc":"教你升级","unlockDesc":"解锁商城后的首次点击","totalSteps":5,"expectLev":3},
        ...
    ],  
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
defId| int | 1 | 引导定义的id,再给玩家操作引导的时候会传递
desrc| string | 教你升级 | 描述
unlockDesc| string | 解锁商城后的首次点击 | 解锁的描述
totalSteps| int | 5 | 该步引导的步数
expectLev| int | 3 | 该引导要达到的等级

4.9 获取用户在游戏中引导的状态

接口名:Middleware.fetchUserGuideList
说明: 获取用户在游戏中的引导状态。
入参说明:

字段名 类型 备注
uid int 游戏里的UID

返回:

{
    "msg":  
    [  
         {"defId": 1,"status":0},
        ...
    ],  
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
defId| int | 1 | 引导定义的id,再给玩家操作引导的时候会传递
status| int | 0 | 0=未解锁,1=未通过,2=已通过

4.10 更新用户在游戏中引导的状态

接口名:Middleware.updateUserGuideList
说明: 更新用户在游戏中的引导状态,对单个用户的可进行批量状态更新。
入参说明:

字段名 类型 备注
uid int 游戏里的UID
defId string 引导的定义ID,{1,2....}
status int 要修改的状态

返回:

{
    "msg":  
    [  
         {"defId": 1,"status":1},
        ...
    ],  
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
defId| int | 1 | 引导定义的id
status| int | 0 | 0=未解锁,1=未通过,2=已通过,-1=修改失败

4.11 获取游戏所有任务清单

接口名:Middleware.fetchTaskList
说明: 获取游戏里所有的任务列表。
入参说明:

字段名 类型 备注
areaId int 游戏服ID
gameId int 游戏UID

返回:

{
    "msg":  
    [  
         {"defId": 1,"desrc":"教你升级","unlockDesc":"解锁商城后的首次点击","type":"行为类任务","expectLev":3},
        ...
    ],   
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
defId| int | 1 | 任务定义的id,再给玩家操作任务的时候会传递
desrc| string | 教你升级 | 描述
unlockDesc| string | 解锁商城后的首次点击 | 解锁的描述
type| string | 行为类任务 | 任务类型
expectLev| int | 3 | 该任务要达到的等级

4.12 获取用户在游戏中任务清单

接口名:Middleware.fetchUserTaskList
说明: 获取用户在游戏中的任务数据。
入参说明:

字段名 类型 备注
uid int 游戏里的UID

返回:

{
    "msg":  
    [  
         {"id":100, "defId": 1,"status":0},
        ...
    ],   
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
id | int | 100 | 玩家游戏里任务存储的id,再给玩家操作任务的时候会传递
defId| int | 1 | 任务定义的id
status| int | 0 | 0=未解锁,1=未完成,2=已完成

4.13 更新用户在游戏中任务的状态

接口名:Middleware.updateUserTaskList
说明: 更新用户在游戏中的任务状态,可进行批量更新状态。
入参说明:

字段名 类型 备注
uid int 游戏里的UID
Id int 存储任务的ID,{1,2....}
status int 要修改的状态 0=未解锁,1=未完成,2=已完成

返回:

{
    "msg":  
    [  
         {"Id": 1,"status":1},
        ...
    ],   
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
Id| int | 1 | 存储任务的ID,当为0的时候表示任务被更改为未解锁
status| int | 0 | 0=未解锁,1=未完成,2=已完成,-1=修改失败

4.14 获取游戏所有成就清单

接口名:Middleware.fetchAchieveList
说明: 获取游戏里所有的成就列表。
入参说明:

字段名 类型 备注
areaId int 游戏服ID
gameId int 游戏UID

返回:

{
    "msg":  
    [  
         {"defId": 1,"desrc":"教你升级","unlockDesc":"解锁商城后的首次点击","type":"行为类任务","expectLev":3,"title":"我的配置称号"},
        ...
    ],   
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
defId| int | 1 | 成就定义的id,再给玩家操作成就的时候会传递
desrc| string | 教你升级 | 描述
unlockDesc| string | 解锁商城后的首次点击 | 出现条件的描述
type| string | 行为类任务 | 成就类型
expectLev| int | 3 | 该成就要达到的等级
title| string | 配置称号 | 配套称号 TODO 不明白

4.15 获取用户在游戏中成就列表

接口名:Middleware.fetchUserAchieveList
说明: 获取用户在游戏中的成就数据。
入参说明:

字段名 类型 备注
uid int 游戏里的UID

返回:

{
    "msg":  
    [  
         {"defId": 1,"status":0},
        ...
    ],  
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
defId| int | 1 | 成就定义的id,再给玩家操作成就的时候会传递
status| int | 0 | 0=未解锁,1=未完成,2=已完成

4.16 更新用户在游戏中成就的状态

接口名:Middleware.updateUserAchieveList
说明: 更新用户在游戏中的成就状态,可进行批量更新用户的成就状态。
入参说明:

字段名 类型 备注
uid int 游戏里的UID
defId string 成就的定义ID,{1,2....}
status int 要修改的状态 0=未解锁,1=未完成,2=已完成,

返回:

{
    "msg":  
    [  
         {"defId": 1,"status":1},
        ...
    ],  
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
defId| int | 1 | 成就定义的id
status| int | 0 | 0=未解锁,1=未完成,2=已完成,-1=修改失败

4.18 获取用户在游戏中所有游戏数据列表

接口名:Middleware.fetchUserGameData
说明: 获取用户在游戏中的游戏数据,会根据传入的要获取的类型,然后每个数据类型会有一个对应的json格式,具体会在后面进行描述,这里的数据是运营给出的,如果游戏里有认为不妥或不明白之处,请及时与我沟通,这里如果接入的游戏有的没有该游戏数据可不必实现
入参说明:

字段名 类型 备注
uid int 游戏里的UID
dataType string 要获取的类型,说明如下

dataType类型枚举

字段名
Building 建筑
Assets 资产
Hero 英雄
Store 店铺
Item 装备
Skill 技能
Ground 地块
Employee 店员
Avatar AVATAR
Gem 宝石
Decorations 装饰物
Sociality 社交
Soldier 士兵
Pet 宠物
Skin 皮肤

返回参考:

{
    "msg":  
    [  
         {
            "Id": 1
            ...
        },
        ...
    ],  
    "code": 0  
}

每种dataType类型返回data中字典说明如下:

Building=建筑的data字典

字段名 | 类型 | 样列 | 备注
--- | --- | ---
Id| int | 1 | 游戏里存储的id,再给玩家操作成就的时候会传递
unlockTime| int | 1458662400 | 解锁时间
buyTime| int | 1458662400 | 购买时间
status| int | 0 | 0=仓库中,1=外部闲置,2=使用中

Assets=资产的data字典

字段名 | 类型 | 样列 | 备注
--- | --- | ---
Id| int | 1 | 游戏里存储的id,再给玩家操作的时会传递
name| string | 农田 | 资产名称
getTime| int | 1458662400 | 获取时间
lev| int | 3 | 当前等级
defId | int | 0 | 资产定义ID
status| int | 0 | 0=仓库中,1=外部闲置,2=使用中

Hero=英雄的data字典

字段名 | 类型 | 样列 | 备注
--- | --- | ---
Id| int | 1 | 游戏里存储的id,再给玩家操作的时会传递
name| string | titan | 英雄名称
exp| int | 200 | 英雄经验
lev| int | 3 | 英雄等级
quality| int | 3 | 英雄品质
star| int | 3 | 英雄星级
getTime| int | 1458662400 | 获得时间
profession| string | 术士 | 英雄职业
status| int | 0 | 0=闲置,1=阵型中,2=训练中,3=出战中

Store=店铺的data字典

字段名 | 类型 | 样列 | 备注
--- | --- | ---
Id| int | 1 | 游戏里存储的id,再给玩家操作的时会传递
name| string | titan | 店铺名称
unclockTime| int | 1458662400 | 解锁时间
opTime| int | 1458662400 | 上次操作时间
opData | json | [{"lev":12},{"squar":5*5}] | 这里设置稍灵活些,是用json格式,目前暂时有扩张(squar)和升级(level),后续可继续扩展

Item=装备的data字典

字段名 | 类型 | 样列 | 备注
--- | --- | ---
Id| int | 1 | 游戏里存储的id,再给玩家操作的时会传递
name| string | titan | 装备名称
setting| json | [{"id":1000,"name":"宝石"},....] | 装备镶嵌的内容 id为镶嵌的存储id,name为镶嵌的中文名称
lev| int | 3 | 装备等级
quality| int | 3 | 装备品质
star| int | 3 | 装备星级
getTime| int | 1458662400 | 获得时间
profession| string | 猎人 | 装备职业
status| string | 闲置 | 当前装备使用信息

Skill=技能的data字典

字段名 | 类型 | 样列 | 备注
--- | --- | ---
Id| int | 1 | 游戏里存储的id,再给玩家操作的时会传递
name| string | titan | 技能名称
lev| int | 3 | 技能等级
hero| json | {"id":101,"name":"关公"} | 所属英雄 技能所属英雄id,和英雄名称
status| string | 闲置、吕布(紫) | 当前状态

Ground=地块的data字典

字段名 | 类型 | 样列 | 备注
--- | --- | ---
Id| int | 1 | 游戏里存储的id,再给玩家操作的时会传递
name| string | 风水宝地 | 地块名称
status| int | 0 | 0=未解锁、1=已解锁

Employee=店员的data字典

字段名 | 类型 | 样列 | 备注
--- | --- | ---
Id| int | 1 | 游戏里存储的id,再给玩家操作的时会传递
name| string | TIger | 店员名称
status| int | 0 | 0=未解锁、1=闲置、2=工作中

Avatar=AVATAR的data字典

字段名 | 类型 | 样列 | 备注
--- | --- | ---
Id| int | 1 | 游戏里存储的id,再给玩家操作的时会传递
part| string | 手 | AVATAR部位
lev | int | 2 | AVATAR等级
status| string | 闲置、使用中(驻店歌手) | 当前状态

Gem=宝石的data字典

字段名 | 类型 | 样列 | 备注
--- | --- | ---
Id| int | 1 | 游戏里存储的id,再给玩家操作的时会传递
name| string | 紫宝石 |宝石名称
defId| int | 1000121 |宝石定义ID
lev | int | 1 | 宝石等级
useInfo| string | 屠龙刀(紫) | 具体使用情况

Decorations=装饰物的data字典

字段名 | 类型 | 样列 | 备注
--- | --- | ---
Id| int | 1 | 游戏里存储的id,再给玩家操作的时会传递
name| string | 壁纸 |装饰物名称
defId| int | 1000121 |装饰物定义ID
type | string | 室外装饰 | 装饰物类型
getTime | int | 1458662400 | 获得时间
status | string | 仓库中 | 当前状态 0=仓库中,1=外部闲置,2=使用中

Skin=皮肤的data字典

字段名 | 类型 | 样列 | 备注
--- | --- | ---
Id| int | 1 | 游戏里存储的id,再给玩家操作的时会传递
name| string | 天空蓝 |皮肤名称
lev | int | 1 | 皮肤等级
useInfo| string | 闲置、使用中(关羽) | 具体使用情况

Sociality=社交的data字典

字段名 | 类型 | 样列 | 备注
--- | --- | ---
Id| int | 1 | 游戏里存储的id,再给玩家操作的时会传递
name| string | lucaus |好友名称
lev| int | 1 |好友等级
getTime | int | 1458662400 | 加好友时间
val| int | 10 |友情值

Soldier=士兵的data字典

字段名 | 类型 | 样列 | 备注
--- | --- | ---
Id| int | 1 | 兵种ID,再给玩家操作的时会传递
name| string | 攻击兵 |兵种名称
total| int | 1000 |拥有数量
useInfo| string | 闲置、使用中(1000/5000) | 当前使用情况

Pet=宠物的data字典

字段名 | 类型 | 样列 | 备注
--- | --- | ---
Id| int | 1 | 宠物ID,再给玩家操作的时会传递
name| string | titan | 宠物名称
exp| json | 200 | 宠物经验
lev| int | 3 | 宠物等级
quality| int | 3 | 宠物品质
star| int | 3 | 宠物星级
race| string | 大和 | 宠物种族
getTime| int | 1458662400 | 获得时间
status| string | 闲置、阵型中、训练中、出战中 | 当前使用信息

4.19 更新用户在游戏中数据

接口名:Middleware.updateUserGameData
说明: 更新用户在游戏中的建筑物数据,依据updateData里的说明来。
入参说明:

字段名 类型 备注
uid int 游戏里的UID
dataType string 数据类型,参见上述接口中的说明
updateData json 要修改的数据,会根据dataType不同而有不同的json数据格式

updateData各数据类型的json格式描述如下:

Building=建筑

字段名 类型 备注
Id json 游戏存储的ID,{1,2....}
status int 要修改的状态 0=仓库中,1=外部闲置,2=使用中

Assets=资产

字段名 类型 备注
Id json 游戏存储的ID,{1,2....}
status int 要修改的状态 0=仓库中,1=外部闲置,2=使用中
lev int 要修改的等级

Hero=英雄

字段名 类型 备注
Id json 游戏存储的ID,{1,2....}
exp int 英雄经验, 不修改,请保持为空
lev int 英雄等级,不修改,请保持为空
quality int 英雄品质,不修改,请保持为空
star int 英雄星级,不修改,请保持为空

Store=店铺

字段名 类型 备注
Id json 游戏存储的ID,{1,2....}
unclock int 解锁的状态 0=未解锁,1=解锁
opData json [{"lev":12},{"squar":5*5}] 这里设置稍灵活些,目前暂时有扩张和升级,后续可继续扩展,lev设置等级,squar设置面积

Item=装备

字段名 类型 备注
Id json 游戏存储的ID,{1,2....}
lev int 装备等级 不修改,请保持为空
quality int 装备品质 不修改,请保持为空
star int 装备星级 不修改,请保持为空

Skill=技能

字段名 类型 备注
Id json 游戏存储的ID,{1,2....}
lev int 技能等级

Ground=地块

字段名 类型 备注
Id json 游戏存储的ID,{1,2....}
status int 要修改的状态 0=未解锁,1=解锁

Employee=店员

字段名 类型 备注
Id json 游戏存储的ID,{1,2....}
status int 要修改的状态 0=未解锁,1=解锁,解锁后等同于闲置

Avatar=AVATAR

字段名 类型 备注
Id json 游戏存储的ID,{1,2....}
status int 要修改的状态 0=未解锁,1=解锁,解锁后等同于闲置

Gem=宝石

字段名 类型 备注
Id json 游戏存储的ID,{1,2....}
lev int 要修改的等级

Decorations=装饰物

字段名 类型 备注
Id json 游戏存储的ID,{1,2....}
status int 要修改的状态 0=未解锁,1=仓库中,2=外部闲置,3=使用中

Skin=皮肤

字段名 类型 备注
Id json 游戏存储的ID,{1,2....}
lev int 要修改的等级

Sociality=社交

字段名 类型 备注
Id json 游戏存储的ID,{1,2....}
val int 要修改的友情值

Soldier=士兵

字段名 类型 备注
Id json 游戏存储的ID,{1,2....}
total int 要修改的数量

Pet=宠物

字段名 类型 备注
Id int 游戏存储的ID,{1,2....}
exp int 要修改的宠物经验
lev int 要修改的宠物等级
quality int 宠物品质 不修改,请保持为空
star int 宠物星级 不修改,请保持为空

返回:

{
    "msg":  
    [  
         {
            "defId": 1
            "status": 0
        },
        ...
    ],  
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
defId| int | 1 | 游戏存储的ID
status| int | 0 | 0=修改失败,1=修改成功

4.20 删除用户在游戏中数据

接口名:Middleware.deleteUserGameData
说明: 删除用户在游戏中的建筑物,可进行批量。
入参说明:

字段名 类型 备注
uid int 游戏里的UID
Id string 游戏里存储的ID,{1,2....}

返回:

{
    "msg":  
    [  
         {"defId": 1,"status":1},
        ...
    ],  
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
defId| int | 1 | 游戏存储的ID
status| int | 0 | 0=删除失败,1=删除成功

4.21 获取用户的充值记录

接口名: Middleware.fetchUserPayList
说明:对外平台获取用户在游戏里充值记录,包含成功或不成功。
入参说明:如下:

字段名 类型 备注
uid int 游戏里的UID
queryTime int 当前查询的时间,标准的格林威治时间戳.
limit int 最大查询返回结果 ,默认50

返回:标准格式返回

{
    "code":0,
    "msg":[
        {"orderId":11122,"userId":12,"gameId":1,...},
        ...
    ]
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
orderId| int | 100001 | 订单号
payTime| int | 1458662400 | 充值时间
uid| int | 1 | UID
money| int | 100| 充值金额
payText | json | [{"name":"钻石","count":50},...] | 充值内容 name=充值对象,count=充值数量
status| int | 0 | 是否付款 0=未付款,1=已付款

4.22 活动设置

接口名:Middleware.updateActivity
说明: 更新游戏中的活动项,比如开启动状态,开启时间,持续天数等,当活动不存在的时候会进行插入,存在进行更新。
入参说明:

字段名 类型 备注
defId int 活动的定义ID
startTime int 活动开启时间
endTime int 活动结束时间
awardSTime int 活动领奖开始时间
awardETime int 活动领奖结束时间
icon string 活动icon,预留在客户端内
desrc string 活动描述
tabOrder int 活动在客户端列表显示的顺序
tabName string 活动的在客户端显示的标签名
linkText string 活动按纽文字
loopDays int 循环活动间隔天数,为0表示不循环,为其他值表示循环。
status init 活动状态 0=未开启,1=进行中,2=已结束,3=强制关闭

返回:

{
    "msg":  
     {
        "defId": 1,"status":1
    },  
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
defId| int | 1 | 引导定义的id
status| int | 0 | 1=更新成功,0=更新失败

4.23 道具检查

接口名: Middleware.checkItem
说明:提供给对外平台检查道具是否已经配置在游戏中.
入参说明:

字段名 类型 备注
items json 具体的道具内容,[{ "itemDefId":11111},....]

返回:标准格式返回

{
    "code": 0,
    "msg": 
    [
        {"itemDefId":11111,"status":0},
        {"itemDefId":22222,"status":1}, 
        .....
    ]
}  

status 会有2种状态值,0 不存在 1 已存在

4.24 获取用户的所有道具

接口名: Middleware.fetchUserItems
说明:获取用户在游戏里的所有道具。
入参说明:如下:

字段名 类型 备注
uid int 游戏里的UID

返回:标准格式返回

{
    "code":0,
    "msg":[
        {"defId":11122,"name:12,...},
        ...
    ]
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
defId| int | 100001 | 道具定义id
name| int | 小卡片 | 道具名称
count| int | 10 | 道具数量

4.25 道具派发

接口名: Middleware.deliverItem
说明:给用户派发道具.
入参说明:

字段名 类型 备注
uid json 游戏的uid,ex:[1,2,3,....]
deliverId int 派发请求id,游戏方要做保存
items json 具体的道具内容,[{ "itemDefId":11111, " count":123},....]

返回:标准格式返回

{
    "code": 0,
    "msg": 
    [
        {
        "deliverId":121212,
        "deliverStatus":0
        }
    ]
}  

deliverStatus 会有3种状态值,-1 派发失败,0 已提交 1 已派发

4.26 登录公告设置

接口名:Middleware.updateLoginNotice
说明: 设置游戏登录强制弹出公告。
入参说明:

字段名 类型 备注
noticeId int 公告id,为0的时候表示新增加,为其他值表示更新对应的公告设置
minLev int 最低用户等级
maxLev int 最高用户等级
isForce int 是否强制弹出
title string 公告标题
content string 公告内容
startTime int 弹出开始时间
endTime string 弹出结束时间

返回:

{
    "msg":  
     {
        "status":1
    }, 
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
status| int | 0 | 1=接收成功,0=写入失败

4.27 手机消息推送设置

接口名:Middleware.updatePushNotice
说明: 设置游戏手机推送,类似游戏中的通知信息,由游戏方实现展示内容。
入参说明:

字段名 类型 备注
pushId int 消息id,为0的时候表示新增加,为其他值表示更新对应的公告设置
minLev int 最低用户等级
maxLev int 最高用户等级
type int 弹出类型, 1=每日回访提醒, 2=流失召回提醒
nologinDay int 当类型为流失召回的时候需要填写未登录天数进行配合推送
content string 公告内容
startTime int 推送开始时间
endTime int 推送结束时间
showTime string 显示时间 推送消息的显示时间,ex: 12:00

返回:

{
    "msg":  
     {
        "status":1
    }, 
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
status| int | 0 | 1=接收成功,0=写入失败

4.28 系统广播设置

接口名:Middleware.updateSysNotice
说明: 系统广播设置,游戏打开时的展示。
入参说明:

字段名 类型 备注
sysId int 系统广播id,为0的时候表示新增加,为其他值表示更新对应的设置
type int 公告类型,游戏方需要预先定义
interval int 间隔时间,单位:秒,为0表示不间隔
content string 广播内容
startTime int 开始时间
endTime int 结束时间

返回:

{
    "msg":  
     {
        "status":1
    },
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
status| int | 0 | 1=接收成功,0=写入失败

4.29 loading界面管理

接口名:Middleware.updateLoadingPage
说明: 更新loading界面信息,要更新的界面必须事先存在包中。
入参说明:

字段名 类型 备注
loadingId int loading信息id,为0的时候表示新增加,为其他值表示更新对应的设置
imageDefId int 图片id,预先在客户端包内
status int 0=闲置,1=使用,当使用时,会将前面使用的图片置为0

返回:

{
    "msg":  
     {
        "status":1
    },
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
status| int | 0 | 1=接收成功,0=写入失败

4.30 获取排行榜查询

接口名: Middleware.fetchRankingList
说明:获取游戏服里有关数据后,根据选择的进行排序。
入参说明:如下:

字段名 类型 备注
limit int 要显示的条数,大于1000,不被接受

返回:标准格式返回

{
    "code":0,
    "msg":[
        {"uid":11122,"uname":"青龙",...},
        ...
    ]
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
uid| int | 1000 | 用户id号,查看用户详情时需要传入
uname| string | 青龙 | 用户角色名
lev| int | 8 | 角色等级
fighting| int | 1000 | 战斗力
guild|string | 大公会 | 所属公会
totalPay | int | 1000 | 累计充值额
lastLoginTime | int | 1458662400 | 最后登录时间

4.31 公会查询

接口名: Middleware.fetchGuildList
说明:获取游戏服的公会信息。
入参说明:如下:

字段名 类型 备注
keyword string 公会关键字

返回:标准格式返回

{
    "code":0,
    "msg":[
        {"guildId",1000,"areaName":"英雄传说","name":"大公会"...},
        ...
    ]
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
guildId| int | 1000 | 公会id号,查看详情时需要传入
areaName| string | 英雄传说 | 游戏服名称
uid| int | 1 | 游戏创建人UID
uname| string | 青龙 | 游戏创建人角色名
lev| int | 8 | 公会等级
createTime|int | 1458662400 | 创建时间

4.32 公会详情查询

接口名: Middleware.fetchGuildDetail
说明:获取游戏服的公会详细信息,主要是公会里的一些用户角色信息。
入参说明:如下:

字段名 类型 备注
guildId int 公会id号

返回:标准格式返回

{
    "code":0,
    "msg":[
        {"uid",1000,"uname":"青龙",...},
        ...
    ]
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
uid| int | 1000 | 用户id号,查看用户详情时需要传入
uname| string | 青龙 | 用户角色名
lev| int | 8 | 角色等级
fighting| int | 1000 | 战斗力
captain|string | 成员,长老等 | 公会头衔

4.33 内部邮件发送

接口名:Middleware.updatePushMail
说明: 发送内部邮件,但带有奖励字段的时候,客户端获取信息后需要有一定效果展现。
入参说明:

字段名 类型 备注
mailId int 邮件id,为0的时候表示新增加,为其他值表示更新对应的公告设置
minLev int 最低用户等级
maxLev int 最高用户等级
title string 标题
content string 内容
sendTime int 发送时间
award json 奖励json格式 [{"defId":1210011,"count":1},...],为空时表示不奖励。

返回:

{
    "msg":  
     {
        "status":1
    },
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
status| int | 0 | 1=接收成功,0=写入失败

4.34 实时补偿

接口名:Middleware.appendUserGameData
说明: 实时补偿操作。
入参说明:

字段名 类型 备注
uid json 要发放用户的uid,ex [1,2,3,4],不填写的时候表示所选游戏服的所有用户
lev int 控制可看到该补偿玩家等级
award json 元宝,金币之类的奖励字段,依据游戏不同,这里运营平台做配置传入 [{"field":token,"count":1},{"field":gem,"count":5},...]
item json 奖励json格式 [{"defId":1210011,"count":1},...]
startTime int 补偿按钮icon出现时间
endTime int 补偿按钮icon消失时间

返回:

{
    "msg":  
     {
        "status":1
    }, 
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
status| int | 0 | 1=接收成功,0=写入失败

4.35 邮件补偿

接口名:Middleware.appendUserGameDataByEmail
说明: 邮件补偿操作,需要客户端设置相应的邮件规则,比如点了后要能进行补偿发放。
入参说明:

字段名 类型 备注
uid json 要发放用户的uid,ex [1,2,3,4],不填写的时候表示所选游戏服的所有用户
lev int 控制可看到该补偿玩家等级
award json 元宝,金币之类的奖励字段,依据游戏不同,这里运营平台做配置传入 [{"field":token,"count":1},{"field":gem,"count":5},...]
item json 奖励json格式 [{"defId":1210011,"count":1},...]
startTime int 出现时间
endTime int 消失时间

返回:

{
    "msg":  
     {
        "status":1
    }, 
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
status| int | 0 | 1=接收成功,0=写入失败

4.36 调查问卷管理/游戏答题

接口名:Middleware.updateSurveyOrQuestion
说明: 发送内部邮件,但带有奖励字段的时候,客户端获取信息后需要有一定效果展现。
入参说明:

字段名 类型 备注
surveyId int 问卷id,为0的时候表示新增加,为其他值表示更新对应的公告设置,游戏方需要保存此id,便于后面取调查结果
minLev int 最低用户等级
maxLev int 最高用户等级
startTime int 问卷开始时间
endTime int 问卷结束时间
title string 调查标题
content string 调查说明
items json 调查内容项,json格式,具体说明见后面描述
award json 元宝,金币之类的奖励字段,依据游戏不同,这里运营平台做配置传入 ex: [{"field":token,"count":1},{"field":gem,"count":5},...]
awardItem json 奖励道具之类,填写defid和数量,json格式 ex: [{"defId":1210011,"count":1},...]
awardCondition int 领奖条件 1=答完领取 2=答对才领取

items 调查内容项返回参考:

    [  
         {
            "order": 1
            ...
        },
        ...
    ],  

items具体字典说明如下:

字段名 | 类型 | 备注 | 样列
--- | --- | ---
questionId| int | 问题号 | 1
title| string | 问题 | 你从哪得知我们的游戏
options| json | 调查选项目 | [{"option":1,"content":"从网络上下载","isRight":1},.....] option=选项序号,content=调查具体项,isRight=是否正确答案,0=不是,1是

接口返回:

{
    "msg":  
     {
        "status":1
    },
    "code": 0  
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
status| int | 0 | 1=接收成功,0=写入失败

4.37 获取问卷调查结果

接口名: Middleware.fetchSurveyList
说明:获取用户的调查问卷结果。
入参说明:如下:

字段名 类型 备注
surveyId int 问卷id
startTime int 查询开始时间
endTime int 查询结束时间

返回:标准格式返回

{
    "code":0,
    "msg":
        {
            "areaId",1,
            "surveyId":101,
            "results":[
                [
                    {"questionId":1,"option":1},
                    ...
                ],
                ....
            ]
        },
    
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
areaId| int | 1 | 游戏服id
surveyId| int | 101 | 问卷id
results| json | [[{"questionId":1,"option":1},...],...] | 结果列表

  • status为-1=获取失败。

4.38 获取游戏里所有道具

接口名: Middleware.fetchItemList
说明:获取游戏服中所有道具接口。
入参说明:如下:

字段名 类型 备注
gameId int 基本参数
areaId int 基本参数

返回:标准格式返回

{
    "code":0,
    "msg":[
        {"itemDefId",10001101,"itemName":"装饰物"},
        ...
    ]
}

返回msg字典说明

字段名 | 类型 | 样列 | 备注
--- | --- | ---
itemDefId| int | 10001101 | 道具定义的id
itemName| string | 装饰物 | 道具名称

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,635评论 0 9
  • # 一度蜜v3.0协议 --- # 交互协议 [TOC] ## 协议说明 ### 请求参数 下表列出了v3.0版协...
    c5e350bc5b40阅读 620评论 0 0
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,152评论 0 4
  • 1.注册 url: http://123.207.15.239/PosShare/Register 传入的参数: ...
    JMP_712c阅读 453评论 0 0
  • 科室最近建立了图书角,里面的书都进行了分类,有提升专业知识的书,有课外阅读的书,以及一些杂志等等。 之所以建立这个...
    girl挥着翅膀的女孩阅读 1,037评论 0 6