コード例 #1
0
ファイル: chess.py プロジェクト: appletails/modian_game
def battlelist(user_id=False, reDict=False):  # 攻击列表
    msg = "请先招募"
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    if not len(userAll):
        return msg
    userAll = levelProtect(userAll)  # 计算战斗力
    setting.writejson(userAll, 'chess/user')
    if user_id:
        # 判断用户在不在
        user = list(filter(lambda item: item['user_id'] == user_id, userAll))
        if not len(user):
            return msg
        # 判断退游
        user = user[0]
        if user["uninstall"]:
            return "你已卸载退游"
        power = user["power"]
        users = userAll[:4]
        userAll = list(filter(lambda x: power - x["power"] < 300, userAll))
        # 至少允许攻击后三位
        if len(userAll) < 4:
            userAll = users
        if reDict:
            return userAll
    msg = ''
    for item in userAll:
        msg += '%s[%s]  %d\n' % (item["nickname"][0], item["nickname"][-1],
                                 item["power"])
    return msg
コード例 #2
0
def intDraw(QQnum):
    DrawType = setting.openjson('ini')["DrawType"]
    msg = ""
    if not DrawType:
        msg = "抽卡系统未开启"
        return msg
    # 判断用户是否绑定
    QQnum = str(QQnum)
    if QQnum in binds:
        user_id = binds[QQnum]
        userAll = setting.openjson("user/user")
        userCard = list(
            filter(lambda item: item["user_id"] == user_id, userAll))
        if len(userCard):
            userCard = userCard[0]
            # 计算抽奖次数
            DrawNum = int(userCard["integral"] / 100)
            # 积分够不够
            if DrawNum:
                userCard["integral"] -= DrawNum * 100
                arr = card(DrawNum, userCard)
                # userCard 用户抽卡信息
                # msg 返回的文案
                userCard = arr[0]
                msg = arr[1]
                setting.writejson(userAll, 'user/user')
            else:
                msg = '积分不足'
        else:
            msg = '发生错误,请检查绑定的user_id'

    else:
        msg = "未查到" + str(QQnum) + "信息"
    return msg
コード例 #3
0
def treatment(user_id, nickname):  # 治疗
    msg = "请先招募"
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    # 玩家在不在
    user = list(filter(lambda item: item['user_id'] == user_id, userAll))
    if len(user):
        user = user[0]
        if user["uninstall"]:
            return "你已卸载退游"
        userAllIdol = user["idol"] + user["otherIdol"]
        # 角色在不在
        has = list(
            filter(lambda item: item['nickname'] == nickname, userAllIdol))
        if not len(has):
            return "你没有%s" % nickname
        # 角色是不是残血
        hasIdol = has[0]
        if hasIdol["life"] >= hasIdol["alllife"] or hasIdol["life"] <= 0:
            return "你的%s已死亡或不需要治疗" % nickname
        # 判断道具在不在或者够不够
        hasProp = list(
            filter(lambda item: item['name'] == "治疗药水", user["package"]))
        if not len(hasProp):
            return "你没有治疗药水"
        hasProp[0]["num"] -= 1
        if hasProp[0]["num"] <= 0:
            user["package"].remove(hasProp[0])
        # 开始复活
        hasIdol["life"] = hasIdol["alllife"]
        msg = "你的【%s】已恢复生命值" % nickname
        setting.writejson(userAll, 'chess/user')
    return msg
コード例 #4
0
def addDraw(QQnum, num):
    DrawType = setting.openjson('ini')["DrawType"]
    msg = ""
    if not DrawType:
        msg = "抽卡系统未开启"
        return msg
    # 判断用户是否绑定了
    if QQnum in binds:
        user_id = binds[QQnum]
        cardAll = setting.openjson('user/user')  # 打开本地userCard缓存到 cardAll
        # 过滤出含有 QQnum 的用户
        user = list(filter(lambda item: item["user_id"] == user_id, cardAll))
        if len(user):
            try:
                user = user[0]
                user["integral"] += int(num)
                setting.writejson(cardAll, 'user/user')
                msg = "补偿成功"
            except:
                msg = "积分错误"
        else:
            msg = '发生错误,请检查绑定的user_id'
    else:
        msg = "未查到" + str(QQnum) + "信息"
    return msg
コード例 #5
0
ファイル: chess.py プロジェクト: appletails/modian_game
def reset():  # 重置
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    for item in userAll:
        item["gold"] = 6
        for idol in item['idol']:
            idol['battle'] = 1
    setting.writejson(userAll, 'chess/user')
    return "已经重置"
コード例 #6
0
def addAtc():
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    for item in userAll:
      for idol in item['idol']:
          idol['battle'] = 1
      for idol in item['otherIdol']:
          idol['battle'] = 1
    setting.writejson(userAll,'chess/user')
コード例 #7
0
ファイル: chess.py プロジェクト: appletails/modian_game
def changeBattle(user_id, idolList):  # 替换角色
    msg = "请先招募"
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    # 判断用户在不在
    user = list(filter(lambda item: item['user_id'] == user_id, userAll))
    if len(user):
        user = user[0]
        if user["uninstall"]:
            return "你已卸载退游"
        # 判断角色是否拥有
        idolList = list(set(idolList.split(" ")))
        if len(idolList) != 2:
            return "角色不可重复且数量必须为2"
        userAllIdol = user["idol"] + user["otherIdol"]
        for idol in idolList:
            has = list(
                filter(lambda item: item['nickname'] == idol, userAllIdol))
            if not len(has):
                return "你没有%s" % idol
            # 判断血量
            for i in has:
                if i["life"] <= 0:
                    return "你的%s已经阵亡,重选" % idol
        # 判断第一个在不在
        hasGo = list(
            filter(lambda item: item['nickname'] == idolList[0], user["idol"]))
        if len(hasGo):
            hasGo = hasGo[0]
            hasT = list(
                filter(lambda item: item['nickname'] == idolList[1],
                       user["otherIdol"]))[0]
        else:
            hasGo = list(
                filter(lambda item: item['nickname'] == idolList[1],
                       user["idol"]))[0]
            hasT = list(
                filter(lambda item: item['nickname'] == idolList[0],
                       user["otherIdol"]))[0]
        user["otherIdol"].remove(hasT)
        user["otherIdol"].append(hasGo)
        user["idol"].remove(hasGo)
        user["idol"].append(hasT)
        user["idol"] = sorted(user["idol"],
                              key=lambda x: x['attack'],
                              reverse=True)
        user["otherIdol"] = sorted(user["otherIdol"],
                                   key=lambda x: x['attack'],
                                   reverse=True)
        msg = "%s的当前阵容:" % user["nickname"][0]
        for item in user["idol"]:
            msg += "\n【%s】%s %s %s %s [CQ:emoji,id=9876]️%s [CQ:emoji,id=128737]️%s [CQ:emoji,id=9829]%s/%s" % (
                item["battle"], setting.levelN(
                    item["star"]), item["level"], item["nickname"],
                "*" + item["skill"] + "*" if item["skill"] != "未知" else '',
                item["attack"], item["defense"], item["life"], item["alllife"])
        setting.writejson(userAll, 'chess/user')
    return msg
コード例 #8
0
ファイル: chess.py プロジェクト: appletails/modian_game
def nchange(user_id, m="N"):  # 融化
    if m == "N":
        n = 10
    elif m == "R":
        n = 5
    elif m == "SR":
        n = 2
    else:
        return ''
    msg = "\n请先招募"
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    # 判断用户在不在
    user = list(filter(lambda item: item['user_id'] == user_id, userAll))
    if len(user):
        user = user[0]
        if user["uninstall"]:
            return "\n你已卸载退游"
        nCard = list(
            filter(lambda x: x["level"] == m and not x["lock"],
                   user["otherIdol"]))
        user["otherIdol"] = list(
            filter(lambda x: x["level"] != m or x["lock"], user["otherIdol"]))
        nCard = sorted(nCard, key=lambda x: x['num'], reverse=True)
        # 开始计算
        alln = sum([(i["num"]) for i in nCard])
        if alln < n:
            return "\n不足%d个%s不可融合" % (n, m)
        num = int(alln / n)
        ind = alln % n
        user["gold"] += num
        # 获取剩余的
        surplus = []
        if ind:
            i = 0
            while ind:
                if nCard[i]["num"] >= ind:
                    nCard[i]["num"] = ind
                    surplus.append(nCard[i])
                    ind = 0
                else:
                    surplus.append(nCard[i])
                    ind -= nCard[i]["num"]
                    i += 1

        user["otherIdol"] += surplus
        # print([i["nickname"] for i in user["otherIdol"]])
        # print(ind)
        # return
        setting.writejson(userAll, 'chess/user')
        msg = "\n获得%s点招募值" % str(num)
    return msg
コード例 #9
0
def lvUp(user_id, nickname):  # 小星星
    msg = "请先招募"
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    # 玩家在不在
    user = list(filter(lambda item: item['user_id'] == user_id, userAll))
    if len(user):
        user = user[0]
        if user["uninstall"]:
            return "你已卸载退游"
        userAllIdol = user["idol"] + user["otherIdol"]
        # 角色在不在
        has = list(
            filter(lambda item: item['nickname'] == nickname, userAllIdol))
        if not len(has):
            return "你没有%s" % nickname
        # 判断道具在不在或者够不够
        hasProp = list(
            filter(lambda item: item['name'] == "小星星", user["package"]))
        if not len(hasProp):
            return "你没有小星星"
        hasIdol = has[0]
        # 根据等级扣除小星星,最多四个
        need = {"N": 1, "R": 2, "SR": 3, "SSR": 4, "UR": 4}
        needStar = need[hasIdol["level"]]
        if hasProp[0]["num"] < needStar:
            return "小星星数量不够"
        hasProp[0]["num"] -= needStar
        if hasProp[0]["num"] <= 0:
            user["package"].remove(hasProp[0])
        # 开始升级
        hasIdol["star"] += 1
        [attack, defense, life] = setting.dataUp(hasIdol["level"])
        hasIdol["attack"] += attack
        hasIdol["life"] += life
        hasIdol["alllife"] += life
        hasIdol["defense"] += defense
        if hasIdol["level"] in ["R", "N"]:
            hasIdol["lock"] = True
        msg = "【%s】升星!\n星级:%s \n[CQ:emoji,id=9876]️%s ↑ %s\n[CQ:emoji,id=128737]️%s ↑ %s\n[CQ:emoji,id=9829]%s ↑ %s" % (
            hasIdol["nickname"], setting.levelN(
                hasIdol["star"]), hasIdol["attack"], attack,
            hasIdol["defense"], defense, hasIdol["life"], life)
        if hasIdol["level"] in [
                "N", "R", "SR"
        ] and hasIdol["star"] >= 4 and hasIdol["skill"] == "未知":  # 获得技能
            skill = setting.openjson("chess/skill")
            hasIdol["skill"] = random.choice(skill)["name"]
            msg += '\n获得技能:%s' % hasIdol["skill"]
        setting.writejson(userAll, 'chess/user')
    return msg
コード例 #10
0
def addAdmin(QQnum):
    msg = ''
    try:
        Admin_id = int(QQnum)
        data = setting.openjson('ini')
        if Admin_id in data['admin']:
            msg = '该管理员已经存在'
        else:
            data['admin'].append(int(Admin_id))
            setting.writejson(data, 'ini')
            msg = '追加成功'
    except Exception:
        msg = '发生错误,请检查输入格式是否正确'
    return msg
コード例 #11
0
def delAdmin(QQnum):
    msg = ''
    try:
        Admin_id = int(QQnum)
        data = setting.openjson('ini')
        if Admin_id in data['admin']:
            data['admin'].remove(int(Admin_id))
            setting.writejson(data, 'ini')
            msg = '删除成功'
        else:
            msg = '该管理员不存在'
    except Exception:
        msg = '发生错误,请检查输入格式是否正确'
    return msg
コード例 #12
0
ファイル: chess.py プロジェクト: appletails/modian_game
def alllockOn(user_id):  # 上锁
    msg = "请先招募"
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    # 判断用户在不在
    user = list(filter(lambda item: item['user_id'] == user_id, userAll))
    if len(user):
        if user[0]["uninstall"]:
            return "你已卸载退游"
        for item in user[0]["idol"]:
            item["lock"] = False
        for item in user[0]["otherIdol"]:
            item["lock"] = False
        msg = "已全部解锁"
    setting.writejson(userAll, "chess/user")
    return msg
コード例 #13
0
def addPk(cont):
    msg = "添加pk项目成功"
    pkList = cont[5:].split(" ")
    # 将pidlist合并成可执行变量
    hasList = ",".join(pkList)
    pkData = getDetail(hasList)
    if pkData["status"] == "2":
        msg = pkData['message']
    else:
        data = setting.openjson("ini")
        data["pk"]["list"] = []
        for item in pkList:
            data["pk"]["list"].append(item.split(","))
        setting.writejson(data, "ini")
    return msg
コード例 #14
0
def reset():
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    for user in userAll:
      user["revenge"] = []
      for item in user['idol']:
        if item["life"] < item['alllife']:
          item["life"] = item['alllife']
          
      for item in user['otherIdol']:
        if item["life"] < item['alllife']:
          item["life"] = item['alllife']
      addUser = 6 - len(user['idol'])
      if addUser:
          user['idol'] = user['idol']+user['otherIdol'][:addUser]
          user['otherIdol'] = user['otherIdol'][addUser:]
    setting.writejson(userAll,'chess/user')
コード例 #15
0
def changeDraw(types):
    msg = ""
    iniData = setting.openjson("ini")
    if types:
        if iniData["DrawType"]:
            msg = "不可重复开启"
        else:
            iniData["DrawType"] = True
            msg = "开启成功"
    else:
        if iniData["DrawType"]:
            iniData["DrawType"] = False
            msg = "关闭成功"
        else:
            msg = "不可重复关闭"
    setting.writejson(iniData, "ini")
    return msg
コード例 #16
0
def DrawCard(user_id, nick_name, backer_money):
    msg = ''
    # 不管金额多少都要入库,首先判断是否入库
    userAll = setting.openjson('user/user')  # 打开本地user缓存到 userAll
    user = list(filter(lambda item: item['user_id'] == int(user_id),
                       userAll))  # 过滤出含有 user_id的对象数组
    # 计算抽卡次数
    DrawNum = int(backer_money / oneCard)
    # 查看一下抽卡系统的状态
    DrawType = setting.openjson('ini')["DrawType"]
    if len(user):  # 判断是否存在对象 长度为0则不存在
        # 用户存在
        user = user[0]
        # 打开用户抽卡文件并过滤出当前用户
        user = list(
            filter(lambda item: item['user_id'] == int(user_id), userAll))[0]
        # 修改用户基本信息
        user['nick_name'] = nick_name
        user['all_money'] = round(backer_money + user['all_money'], 2)
        user['nick_name'] = nick_name
        if DrawNum and DrawType:
            # 开始抽卡
            arr = card(DrawNum, user)
            # arr = [user,msg]
            # userCard 用户抽卡信息
            # msg 返回的文案
            user = arr[0]
            msg = arr[1]

    else:
        # 用户不存在
        # 新建用户 DrawNum 为可抽卡次数
        dataList = addUser(user_id, nick_name, backer_money, DrawNum, DrawType)
        # dataList = [user,userCard,msg]
        # user 用户基本信息
        # userCard 用户抽卡信息
        # msg 返回的文案
        user = dataList[0]
        msg += dataList[1]
        # 新用户添加到缓存的数据里去
        userAll.append(user)
    # 按集资总额排序
    userAll = sorted(userAll, key=lambda item: item["all_money"], reverse=True)
    setting.writejson(userAll, 'user/user')
    return msg
コード例 #17
0
def todayShow(cont):
    msg = ''
    todayType = setting.openjson('ini')
    if cont == '开启每日播报':
        if todayType['todayType']:
            msg = '不可重复开启'
        else:
            todayType['todayType'] = True
            setting.writejson(todayType, 'ini')
            msg = '开启成功'
    else:
        if todayType['todayType']:
            todayType['todayType'] = False
            setting.writejson(todayType, 'ini')
            msg = '关闭成功'
        else:
            msg = '不可重复关闭'
    return msg
コード例 #18
0
def changePK(cont):
    msg = ""
    data = setting.openjson("ini")
    if data["pk"]["status"]:
        if cont == "开启pk":
            msg = "开启状态不可重复开启"
        elif cont == "关闭pk":
            data["pk"]["status"] = False
            data["pk"]["list"] = []
            data["modian"]["pk"] = ''
            msg = "已关闭并清除pk项目列表"
    else:
        if cont == "开启pk":
            data["pk"]["status"] = True
            msg = "开启成功,通过【pkid Pro_id】设置pkid\n通过【pk项目 Pro_id,Pro_id Pro_id,Pro_id Pro_id,Pro_id ...】设置pk列表"
        elif cont == "关闭pk":
            msg = "关闭状态不可关闭"
    setting.writejson(data, "ini")
    return msg
コード例 #19
0
ファイル: chess.py プロジェクト: appletails/modian_game
def lockOn(user_id, nickname, m):  # 上锁
    msg = "请先招募"
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    # 判断用户在不在
    user = list(filter(lambda item: item['user_id'] == user_id, userAll))
    if len(user):
        if user[0]["uninstall"]:
            return "你已卸载退游"
        userAllIdol = user[0]["idol"] + user[0]["otherIdol"]
        nCard = list(filter(lambda x: x["nickname"] == nickname, userAllIdol))
        if not len(nCard):
            return "你没有【%s】" % nickname
        nCard = nCard[0]
        nCard["lock"] = True
        msg = "【%s】已上锁" % nickname
        if m:
            nCard["lock"] = False
            msg = "【%s】已解锁" % nickname
    setting.writejson(userAll, "chess/user")
    return msg
コード例 #20
0
ファイル: chess.py プロジェクト: appletails/modian_game
def suoha(user_id):  # 梭哈
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    # 过滤出含有 user_id的对象数组
    user = list(filter(lambda item: item['user_id'] == int(user_id), userAll))
    if not len(user):
        return "请先招募一次"
    user = user[0]
    if user["uninstall"]:
        return "你已卸载退游"
    msg = "梭哈信息如下:"
    if not user['gold']:
        return "招募次数不足"
    while user['gold']:
        user['gold'] -= 1
        msgArr = card(user)
        user = msgArr["user"]
        msg += '\n%s' % msgArr["msg"]
    # 新用户添加到缓存的数据里去
    userAll = levelProtect(userAll)  # 计算战斗力
    setting.writejson(userAll, 'chess/user')
    return msg
コード例 #21
0
ファイル: chess.py プロジェクト: appletails/modian_game
def DrawCard(user_id, nickname):  # 最终调用的招募函数
    # 不管金额多少都要入库,首先判断是否入库
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    # 过滤出含有 user_id的对象数组
    user = list(filter(lambda item: item['user_id'] == int(user_id), userAll))
    if len(user):  # 判断是否存在对象 长度为0则不存在
        # 用户存在
        user = user[0]
        if user["uninstall"]:
            return "你已卸载退游"
        msg = "次数已耗尽,等待恢复。"
        if "nickname" not in user:
            user["nickname"] = [nickname]
        if user["gold"]:
            msgArr = card(user)
            msg = msgArr['msg']
            user = msgArr['user']
            user["gold"] -= 1
    else:
        # 用户不存在
        data = setting.openjson('chess/idol/ssr')  # 打开本地user缓存到 userAll
        idol = random.choice(
            list(filter(lambda item: item['level'] == "SSR", data)))
        user = {
            "user_id": user_id,
            "nickname": [nickname],
            "gold": 5,
            "uninstall": False,
            "power": 0,
            "package": [],
            "revenge": [],
            "idol": [idol],
            "otherIdol": []
        }
        userAll.append(user)
        msg = "恭喜你招募到了【SSR】的新角色【%s】!\n初次招募必得SSR,后续招募看脸。" % idol["nickname"]
    userAll = levelProtect(userAll)  # 计算战斗力
    # 新用户添加到缓存的数据里去
    setting.writejson(userAll, 'chess/user')
    return msg
コード例 #22
0
def studySkill(user_id, cont):  # 学技能
    msg = "请先招募"
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    # 玩家在不在
    user = list(filter(lambda item: item['user_id'] == user_id, userAll))
    if len(user):
        [skill, nickname] = cont.split(" ")
        user = user[0]
        if user["uninstall"]:
            return "你已卸载退游"
        userAllIdol = user["idol"] + user["otherIdol"]
        # 角色在不在
        has = list(
            filter(lambda item: item['nickname'] == nickname, userAllIdol))
        if not len(has):
            return "你没有%s" % nickname
        # 判断道具在不在或者够不够
        hasProp = list(
            filter(lambda item: item['name'] == "技能书", user["package"]))
        if not len(hasProp):
            return "你没有技能书"
        # 技能在不在
        hasSkill = list(
            filter(lambda item: item['name'] == skill,
                   setting.openjson('chess/skill')))
        if not len(hasSkill):
            return "【%s】不存在" % skill
        elif not hasSkill[0]["study"]:
            return "【%s】不可学习" % skill

        hasIdol = has[0]
        hasProp[0]["num"] -= 1
        if hasProp[0]["num"] <= 0:
            user["package"].remove(hasProp[0])
        # 开始复活
        hasIdol["skill"] = skill
        msg = "你的【%s】已学会【%s】" % (nickname, skill)
        setting.writejson(userAll, 'chess/user')
    return msg
コード例 #23
0
ファイル: chess.py プロジェクト: appletails/modian_game
def levelProtect(userAll):  # 排名
    for item in userAll:
        allIdol = item["idol"] + item["otherIdol"]
        allIdol = sorted(list(filter(lambda x: x["life"] > 0, allIdol)),
                         key=lambda x: x['attack'],
                         reverse=True)
        if len(allIdol) < 6:
            item["power"] = 0
        else:
            item["power"] = int(
                sum([
                    allIdol[i]["attack"] / 0.15 +
                    allIdol[i]["defense"] / 0.15 + allIdol[i]["alllife"] * 0.7
                    for i in range(6)
                ]))
    userAll = sorted(userAll, key=lambda i: i["power"], reverse=True)
    for i in range(len(userAll)):
        userAll[i]['KO'] = i + 1
    ini = setting.openjson('ini')
    ini['allUser'] = userAll[-1]['KO']
    setting.writejson(ini, 'ini')
    return userAll
コード例 #24
0
ファイル: chess.py プロジェクト: appletails/modian_game
def attack(user_id, typs=False):  # 攻击阵容 typs 防御阵容
    msg = "请先招募"
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    # 判断用户在不在
    user = list(filter(lambda item: item['user_id'] == user_id, userAll))
    if len(user):
        user = user[0]
        if user["uninstall"]:
            return "你已卸载退游"
        userAllIdol = user["idol"] + user["otherIdol"]
        if typs:  # 防御姿态
            userAllIdols = sorted(list(
                filter(lambda x: x["life"] > 0, userAllIdol)),
                                  key=lambda x: x['defense'],
                                  reverse=True)
        else:  # 攻击姿态
            userAllIdols = sorted(list(
                filter(lambda x: x["life"] > 0, userAllIdol)),
                                  key=lambda x: x['attack'],
                                  reverse=True)
        if len(userAllIdols) < 6:  # 存活角色不足6个时候的操作
            user["idol"] = userAllIdols
            user["otherIdol"] = list(
                filter(lambda x: x["life"] <= 0, userAllIdol))
        else:
            # 将0血角色滞后
            userAllIdol = userAllIdols + list(
                filter(lambda x: x["life"] <= 0, userAllIdol))
            user["idol"] = userAllIdol[:6]
            user["otherIdol"] = userAllIdol[6:]
        msg = "当前阵容(%d):" % len(user["idol"])
        for item in user["idol"]:
            msg += "\n【%s】%s %s %s %s [CQ:emoji,id=9876]️%s [CQ:emoji,id=128737]️%s [CQ:emoji,id=9829]%s/%s" % (
                item["battle"], setting.levelN(
                    item["star"]), item["level"], item["nickname"],
                "*" + item["skill"] + "*" if item["skill"] != "未知" else '',
                item["attack"], item["defense"], item["life"], item["alllife"])
        setting.writejson(userAll, 'chess/user')
    return msg
コード例 #25
0
ファイル: chess.py プロジェクト: appletails/modian_game
def goSkill(user_id, name):  # 按技能出战
    msg = "请先招募"
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    # 判断用户在不在
    user = list(filter(lambda item: item['user_id'] == user_id, userAll))
    if len(user):
        user = user[0]
        if user["uninstall"]:
            return "你已卸载退游"
        userAllIdol = user["idol"] + user["otherIdol"]
        # 活着的角色
        userAllIdols = list(filter(lambda x: x["life"] > 0, userAllIdol))
        # 活着的角色里有技能的
        hasName = sorted(list(
            filter(lambda x: x["skill"] == name, userAllIdols)),
                         key=lambda i: i['attack'],
                         reverse=True)
        # 活着的角色里么有技能的
        noName = sorted(list(filter(lambda x: x["skill"] != name,
                                    userAllIdols)),
                        key=lambda i: i['attack'],
                        reverse=True)

        userAllIdolDead = list(filter(lambda x: x["life"] <= 0, userAllIdol))
        # 拼接全部角色
        userAllIdol = hasName + noName + userAllIdolDead
        user["idol"] = userAllIdol[:6]
        user["otherIdol"] = userAllIdol[6:]
        msg = "当前阵容(%d):" % len(user["idol"])
        for item in user["idol"]:
            msg += "\n【%s】%s %s %s %s [CQ:emoji,id=9876]️%s [CQ:emoji,id=128737]️%s [CQ:emoji,id=9829]%s/%s" % (
                item["battle"], setting.levelN(
                    item["star"]), item["level"], item["nickname"],
                "*" + item["skill"] + "*" if item["skill"] != "未知" else '',
                item["attack"], item["defense"], item["life"], item["alllife"])
        setting.writejson(userAll, 'chess/user')
    return msg
コード例 #26
0
def changeProid(cont, pk=False):
    msg = ''
    try:
        # 获取新的proid
        pro_id = int(cont[5:])
        # 获取项目信息
        orderDict = modian.getDetail(pro_id)
        # 判断proid是否是有误
        if int(orderDict['status']) == 2:
            msg = 'pro_id有误,请核实后重试'
        else:
            # 获取本地库配置
            ini = setting.openjson('ini')
            # 在这里判断是换了日常还是pk
            if pk:
                ini['modian']['pk'] = pro_id
            else:
                # 配置好新的proid
                ini['modian']['pro_id'] = [pro_id]
            # 获取摩点order数据
            orderData = modian.sorted_orders(pro_id, 1)
            # 判断当前项目是否存在数据
            if int(orderData['status']) == 2:
                # 不存在数据
                data = []
                # 保存本地order文件
                setting.writejson(data, "order/" + str(pro_id))
            else:
                page = 1
                data = []
                while True:
                    orderData = modian.sorted_orders(pro_id, page)
                    # print(orderData["data"])
                    if orderData["data"] == None:
                        break
                    page += 1
                    data += orderData["data"]

                # for item in data:
                #     card.DrawCard(item["user_id"],item["nickname"],item["backer_money"])
                # 保存本地order文件
                setting.writejson(data, "order/" + str(pro_id))
            # resetRank(pro_id)
            # 保存配置文件
            setting.writejson(ini, 'ini')
            # 设置返回文案
            # 在这里判断是换了日常还是pk
            if pk:
                msg = '更换成功,当前pk项目为: ' + orderDict['data'][0]['pro_name']
            else:
                msg = '更换成功,当前项目为: ' + orderDict['data'][0]['pro_name']
    except Exception:
        msg = '发生错误,请检查输入格式是否正确'
    return msg
コード例 #27
0
def addGold():
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    for item in userAll:
        item["gold"] = item["gold"]+1 if item["gold"]<6 else item["gold"]
    setting.writejson(userAll,'chess/user')
コード例 #28
0
def newOrder(stamp10, secondsDelay):
    msgDict_array = []
    pro_id_array = md_init(setting.pro_id(0))
    for pro_id_dict in pro_id_array:
        newOrders = []
        # 获取一次订单信息,返回一个dictionary
        orderDict = sorted_orders(pro_id_dict['pro_id'], 1)
        # 查询失败则返回错误信息
        if int(orderDict['status']) == 2:
            WARN("modian newOrder error", "获取订单错误", orderDict['message'])
            print(orderDict['message'])
            return msgDict_array
        # 20180319,防止空订单,循环查询五次
        retry = 0
        while not len(orderDict['data']):
            INFO("modian newOrder info", "疑似空订单")
            orderDict = sorted_orders(pro_id_dict['pro_id'], 1)
            retry += 1
            if retry > 5:
                INFO("modian newOrder info", "订单5次为空,判断为无人集资")
                break

        # 不具备本地order.josn的写法  查询成功,遍历摩点库
        # for data in orderDict['data']:
        #     pay_success_time = data['pay_success_time']
        #     # 将字符串时间转换为unix时间戳
        #     data['pay_success_time'] = int(time.mktime(time.strptime(pay_success_time, '%Y-%m-%d %H:%M:%S')))
        #     # 筛选订单时间在查询时间前的设定时间段之间的订单
        #     if data['pay_success_time'] >= stamp10 - secondsDelay and data['pay_success_time'] < stamp10:
        #         newOrders.append(data)

        # ------ 20180723具备本地order.json的写法 ------
        # 获得本地库
        data = setting.openjson("order/" + str(pro_id_dict['pro_id']))
        # 判断本地库是都为空
        if data == []:
            newOrders = orderDict["data"]
        else:
            # 获得摩点库
            alldata = orderDict["data"]
            # 对摩点库进行排序
            alldata = setting.sortOrder(alldata)
            # 与本地库对比
            if alldata[0]["pay_success_time"] == data[0]["pay_success_time"]:
                pass
            else:
                print("发现遗漏订单" + str(pro_id_dict['pro_id']))
                # 获取本地库第一个订单的时间转换为时间戳
                oneTime = int(
                    time.mktime(
                        time.strptime(data[0]["pay_success_time"],
                                      '%Y-%m-%d %H:%M:%S')))
                # 循环摩点接口所有订单
                for i in range(len(alldata)):
                    # 将摩点订单时间转换为时间戳
                    iTime = int(
                        time.mktime(
                            time.strptime(alldata[i]["pay_success_time"],
                                          '%Y-%m-%d %H:%M:%S')))
                    # 在摩点库中找到本地最新的那一个订单
                    if iTime == oneTime:
                        for j in range(i):
                            newOrders.append(alldata[j])
        data = newOrders + data
        setting.writejson(data, "order/" + str(pro_id_dict['pro_id']))

        # 有新订单
        msgDict = []
        if newOrders:
            # 获取项目信息
            detail = getDetail(pro_id_dict['pro_id'])
            # 查询失败则返回错误信息
            if int(detail['status']) == 2:
                WARN("modian newOrder error", "获取项目信息错误", detail['message'])
                # return detail['message']
            # 查询成功,初始化消息
            msg = ''
            for newOrder in newOrders:
                msg = "ID:" + newOrder['nickname'] + "\n" +\
                    "金额:¥ " + str(newOrder['backer_money']) + '\n' +\
                    "项目:" + pro_id_dict['name'] + "\n" +\
                    "链接:" + pro_id_dict['url_short'] + "\n" +\
                    "感谢"+newOrder['nickname']+"对" + setting.idol_name() + "的支持呦~" + \
                    tool.relay(newOrder['backer_money']) +\
                    card.DrawCard(newOrder["user_id"],newOrder["nickname"],newOrder["backer_money"])
                if str(pro_id_dict['pro_id']) == str(
                        setting.openjson('ini')['modian']['pk']) or (
                            setting.openjson('ini')['pk']['status']
                            and not (setting.openjson('ini')['modian']['pk'])):
                    msg += tool.showPk("\n\npk实况:")

                msgDict.append(msg)
        msgDict_array.append(msgDict)
    return msgDict_array
コード例 #29
0
ファイル: chess.py プロジェクト: appletails/modian_game
def battle(user_id, nickname, types=False, re=True):  # 进攻 types为True时全军出击
    msg = "请先招募"
    userAll = setting.openjson('chess/user')  # 打开本地user缓存到 userAll
    # 判断用户在不在
    user = list(filter(lambda item: item['user_id'] == user_id, userAll))
    if len(user):
        user = user[0]
        if user["uninstall"]:
            return False
        if nickname in user["nickname"]:
            return False
        # 过滤出对手
        otherUser = list(
            filter(lambda item: nickname in item['nickname'], userAll))
        if not len(otherUser):
            return False
        # 判断对手是否弱小
        # 1.获取进攻列表 2.看看对手在不在列表
        otherUser = otherUser[0]
        # otherUsers = battlelist(user_id,True)
        # if otherUser not in otherUsers:
        #     return "禁止欺负弱小!"

        # 过滤出一个可进攻角色
        # 进攻
        if re:
            atc = list(filter(lambda item: item['battle'], user['idol']))
        else:
            atc = copy.deepcopy(user['idol'])
        if not len(atc):
            return "没有可攻击的角色"
        # 这里开始是战斗片段
        msg = "【%s】对战【%s】:\n" % (user["nickname"][0], nickname)
        num = 1
        if types:
            num = len(atc)
        while num:
            # 如果是进攻的话
            if re:
                # 开始计数
                revenge = list(
                    filter(lambda item: item['user_id'] == user_id,
                           otherUser["revenge"]))
                if len(revenge):
                    if revenge[0]["num"] >= 6:
                        msg = "仇恨值已满,不可进攻"
                        break
                    else:
                        revenge[0]["num"] += 1
                else:
                    otherUser["revenge"].append({
                        "user_id": user_id,
                        "nickname": user["nickname"],
                        "num": 1,
                        "revenge": 0
                    })
            else:
                # 开始计数
                revenge = list(
                    filter(lambda item: nickname in item["nickname"],
                           user["revenge"]))
                if len(revenge):
                    if revenge[0]["revenge"] >= revenge[0]["num"]:
                        msg += "\n已完成复仇"
                        break
                    else:
                        revenge[0]["revenge"] += 1
                else:
                    return "没有仇怨"
            [msgs, atc, user, otherUser] = sBattle(atc, user, otherUser)
            msg += msgs
            num -= 1
        userAll = levelProtect(userAll)  # 计算战斗力
        setting.writejson(userAll, "chess/user")
    return msg
コード例 #30
0
def bind(QQnum, user_id):
    binds[QQnum] = int(user_id)
    setting.writejson(binds, 'user/bind')
    msg = "绑定成功"
    return msg