双端交互

签到优化双端交互

  • 当前签到奖励都是累计签到的奖励
  • 使用原有的协议交互

累计签到奖励领取类型

  • 新增俸禄至尊领取双倍奖励
    enum LoginBigPrizeType
    {
      LBPT_NONE        = 0,       // 没有领取
      LBPT_COMMON        = 0x01,    // 普通领取
      LBPT_VIP        = 0x02,    // 累计几天的奖励领取
      LBPT_VIP_DOUBLE = 0x04,    // 俸禄至尊领取双倍奖励
    };
    
  • 注意:当某个奖励为俸禄至尊可领取双倍时:
    (1)未达到俸禄至尊,签到领取单份奖励,类型为LBPT_COMMON;后面达到俸禄至尊,可再补领取单份奖励,类型为LBPT_COMMON|LBPT_VIP_DOUBLE;
    (2)达到俸禄至尊,签到领取双份奖励,类型为LBPT_COMMON|LBPT_VIP_DOUBLE;

签到信息查询

CLIENT_LOGIN_CHECKIN_INFO_REQ=20321,            //签到登录情况
CLIENT_LOGIN_CHECKIN_INFO_REP=20322,

struct ClientLoginCheckInInfoRep_Mobile : public PacketBase
        {
            static const unsigned int sc_max_month_days_cnt = 31;

            struct Patch
            {
                unsigned char daycntpatch;
                unsigned char month;
                unsigned char mday;
                unsigned char remain_patch_cnt;
                unsigned char patch_cost;
                unsigned char items[sc_max_month_days_cnt];
            };

            // 俸禄至尊补领取补丁
            struct Patch_VIP
            {
                unsigned char vip_patch_cnt;    // 可以补领取的天数
                unsigned char items[sc_max_month_days_cnt];   // 那几天可以补领取
            };


            unsigned char daycnt;            // 签到天数
            unsigned char bigprizes;        // 累计签到奖励

            unsigned char turncnt;            // 7天一轮奖励
            unsigned char bigprizes_vip;    // 累计签到奖励VIP

            unsigned char items[sc_max_month_days_cnt*4];    // 具体数据

            //Patch patch;

            ClientLoginCheckInInfoRep_Mobile() : PacketBase(CLIENT_LOGIN_CHECKIN_INFO_REP,sizeof(ClientLoginCheckInInfoRep_Mobile))
            {
                daycnt = 0;
                bigprizes = 0;
                memset(items,0,sizeof(items));
            }
        };

普通签到奖励(单份)

  • 客户端根据之前的逻辑处理即可

俸禄至尊签到奖励(双份)

未达到俸禄至尊

  • 如果没有签到就不用特殊处理;
  • 如果已签到,类型应该是LBPT_COMMON,则根据策划要求是否进行特殊提示:俸禄至尊可再领取一份?

达到俸禄至尊

  • 如果没有签到,需要提示可领取双倍;
  • 如果之前已经签到,如果类型是LBPT_COMMON,则提示可补领取;如果类型是LBPT_COMMON|LBPT_VIP_DOUBLE,则表示已领取双倍;

补签到次数的提示

  • 没有配置俸禄至尊特权,则按照原先的逻辑提示;
  • 配置了俸禄至尊特权,如果达到了等级要求,则提示可以不限制次数补签,否则提示剩余补签次数;

签到与补签到

CLIENT_LOGIN_CHECKIN_PRIZE_REQ=20323,            //签到登录奖励
CLIENT_LOGIN_CHECKIN_PRIZE_REP=20324,

//签到登录奖励
struct ClientLoginCheckInPrizeReq : public PacketBase
{
    enum emreqtype 
    {
        em_login_prize_lit = 0,        // 每天登陆签到
        em_login_prize_big,            // 累计签到 
        em_login_prize_big_vip,        // vip累计签到
        em_login_prize_turn,        // 一周一轮签到
        // 新增
        em_login_prize_double_pack,    // 俸禄至尊双倍奖励补领取
    };

    unsigned char reqtype;
    unsigned char bigdays;
    ClientLoginCheckInPrizeReq() : PacketBase(CLIENT_LOGIN_CHECKIN_PRIZE_REQ,sizeof(ClientLoginCheckInPrizeReq))
    {
        reqtype = em_login_prize_lit;
        bigdays = 0;
    }
};

签到

  • 与原先的逻辑基本一样,如果达到了俸禄至尊,服务端会根据配置发放双倍奖励

普通补签到

  • 需要消耗补签卡;
  • 如果配置了俸禄至尊特权且满足等级要求,可不限制次数补签;
  • 如果达到了俸禄至尊,服务端会根据配置发放双倍奖励

俸禄至尊补领取

  • 之前已签到,后面达到俸禄至尊。可根据配置再领取一份奖励;
  • 客户端请求ClientLoginCheckInPrizeReq的reqtype为em_login_prize_double_pack,bigdays:等于0表示一键领取所有可补领取的,大于0表示补领取的是第几天的