Example #1
0
def items_menu(chat_id):
    items = Item_list.itemlist
    data = datahandler.get_current(chat_id)[1]
    if data is not None:
        data = data.split(',')
        keyboard = types.InlineKeyboardMarkup()
        for item in items:
            matched_items = 0
            if item.id in data:
                matched_items += 1
                callback_button = types.InlineKeyboardButton(
                    text=(item.name + u'\U00002714'),
                    callback_data='delete_item' + item.id)
                keyboard.add(callback_button)
            else:
                callback_button = types.InlineKeyboardButton(
                    text=item.name, callback_data='add_item' + item.id)
                keyboard.add(callback_button)
    else:
        keyboard = types.InlineKeyboardMarkup()
        for item in items:
            callback_button = types.InlineKeyboardButton(
                text=item.name, callback_data='add_item' + item.id)
            keyboard.add(callback_button)
    callback_button = types.InlineKeyboardButton(text='Qabul qilindi',
                                                 callback_data='accept_player')
    keyboard.add(callback_button)
    return ('Jihozni tanlang', keyboard)
Example #2
0
def skills_menu(chat_id):
    skills = special_abilities.usual_abilities
    data = datahandler.get_current(chat_id)[2]
    if data is not None:
        data = data.split(',')
        keyboard = types.InlineKeyboardMarkup()
        for skill in skills:
            matched_skills = 0
            if skill.name in data:
                matched_skills += 1
                callback_button = types.InlineKeyboardButton(
                    text=skill.name + u'\U00002714',
                    callback_data='delete_skill' + skill.name)
                keyboard.add(callback_button)
            else:
                callback_button = types.InlineKeyboardButton(
                    text=skill.name, callback_data='add_skill' + skill.name)
                keyboard.add(callback_button)
    else:
        keyboard = types.InlineKeyboardMarkup()
        for skill in skills:
            callback_button = types.InlineKeyboardButton(
                text=skill.name, callback_data='add_skill' + skill.name)
            keyboard.add(callback_button)
    callback_button = types.InlineKeyboardButton(text='Qabul qilindi',
                                                 callback_data='accept_player')
    keyboard.add(callback_button)
    return ('Qobiliyatlar tanlandi', keyboard)
def skills_menu(chat_id):
    skills = special_abilities.usual_abilities
    data = datahandler.get_current(chat_id)[2]
    if data is not None:
        data = data.split(',')
        keyboard = types.InlineKeyboardMarkup()
        for skill in skills:
            matched_skills = 0
            if skill.name in data:
                matched_skills += 1
                callback_button = types.InlineKeyboardButton(
                    text=skill.name + u'\U00002714', callback_data='delete_skill' + skill.name)
                keyboard.add(callback_button)
            else:
                callback_button = types.InlineKeyboardButton(
                    text=skill.name, callback_data='add_skill' + skill.name)
                keyboard.add(callback_button)
    else:
        keyboard = types.InlineKeyboardMarkup()
        for skill in skills:
            callback_button = types.InlineKeyboardButton(
                text=skill.name, callback_data='add_skill' + skill.name)
            keyboard.add(callback_button)
    callback_button = types.InlineKeyboardButton(
        text='Принято', callback_data='accept_player')
    keyboard.add(callback_button)
    return ('Выберите навыки', keyboard)
def items_menu(chat_id):
    items = Item_list.itemlist
    data = datahandler.get_current(chat_id)[1]
    if data is not None:
        data = data.split(',')
        keyboard = types.InlineKeyboardMarkup()
        for item in items:
            matched_items = 0
            if item.id in data:
                matched_items += 1
                callback_button = types.InlineKeyboardButton(
                    text=(item.name + u'\U00002714'), callback_data='delete_item' + item.id)
                keyboard.add(callback_button)
            else:
                callback_button = types.InlineKeyboardButton(
                    text=item.name, callback_data='add_item' + item.id)
                keyboard.add(callback_button)
    else:
        keyboard = types.InlineKeyboardMarkup()
        for item in items:
            callback_button = types.InlineKeyboardButton(
                text=item.name, callback_data='add_item' + item.id)
            keyboard.add(callback_button)
    callback_button = types.InlineKeyboardButton(
        text='Принято', callback_data='accept_player')
    keyboard.add(callback_button)
    return ('Выберите предметы', keyboard)
Example #5
0
def player_menu(name, cid):
    data = list(datahandler.get_current(cid))
    itemnames = []
    skills = []
    private_string = None
    if datahandler.get_private_string(cid) == '1':
        print(str(datahandler.get_private_string(cid)))
        private_string = '|yes'
    if data[0] is None:
        data[0] = ' '
    if data[1] is None:
        data[1] = ' '
    elif data[1] == '':
        data[1] = ' '
    else:
        items = data[1].split(',')
        for item in items:
            if item == '':
                items.remove(item)
        for item in items:
            itemnames.append(Item_list.items[item].name)
    if data[2] is None:
        data[2] = ' '
    elif data[2] == '':
        data[2] = ' '
    else:
        skills = data[2].split(',')
    message = name + '\n Qurollar: ' + data[0] + '\n Jihozlar: ' + ', '.join(
        itemnames) + '\n Qobiliyatlar: ' + ', '.join(skills)
    keyboard = types.InlineKeyboardMarkup()
    callback_button1 = types.InlineKeyboardButton(
        text="Qurolni o`zgartirish", callback_data='change_weapon')
    callback_button2 = types.InlineKeyboardButton(
        text="Jihozlarni o`zgartirish", callback_data='change_items')
    callback_button3 = types.InlineKeyboardButton(
        text="Qobiliyatlarni o`zgartirish", callback_data='change_skills')
    if private_string is not None:
        callback_button4 = types.InlineKeyboardButton(
            text="Shaxsiy ma`lumotlar" + private_string,
            callback_data='change_string')
    else:
        callback_button4 = types.InlineKeyboardButton(
            text="Shaxsiy ma`lumotlar", callback_data='change_string')
    keyboard.add(callback_button1, callback_button2)
    keyboard.add(callback_button3)
    keyboard.add(callback_button4)
    return (message, keyboard)
Example #6
0
def player_menu(name, cid):
    data = list(datahandler.get_current(cid))
    itemnames = []
    skills = []
    private_string = None
    if datahandler.get_private_string(cid) == '1':
        print(str(datahandler.get_private_string(cid)))
        private_string = '|yes'
    if data[0] is None:
        data[0] = ' '
    if data[1] is None:
        data[1] = ' '
    elif data[1] == '':
        data[1] = ' '
    else:
        items = data[1].split(',')
        for item in items:
            if item == '':
                items.remove(item)
        for item in items:
            itemnames.append(Item_list.items[item].name)
    if data[2] is None:
        data[2] = ' '
    elif data[2] == '':
        data[2] = ' '
    else:
        skills = data[2].split(',')
    message = name + '\n Оружие: ' + data[0] + '\n Предметы: ' + ', '.join(
        itemnames) + '\n Навыки: ' + ', '.join(skills)
    keyboard = types.InlineKeyboardMarkup()
    callback_button1 = types.InlineKeyboardButton(
        text="Изменить оружие", callback_data='change_weapon')
    callback_button2 = types.InlineKeyboardButton(text="Изменить предметы",
                                                  callback_data='change_items')
    callback_button3 = types.InlineKeyboardButton(
        text="Изменить навыки", callback_data='change_skills')
    if private_string is not None:
        callback_button4 = types.InlineKeyboardButton(
            text="Отчеты в личку" + private_string,
            callback_data='change_string')
    else:
        callback_button4 = types.InlineKeyboardButton(
            text="Отчеты в личку", callback_data='change_string')
    keyboard.add(callback_button1, callback_button2)
    keyboard.add(callback_button3)
    keyboard.add(callback_button4)
    return (message, keyboard)
def player_menu(name, cid):
    data = list(datahandler.get_current(cid))
    itemnames = []
    skills = []
    private_string = None
    if datahandler.get_private_string(cid) == '1':
        print(str(datahandler.get_private_string(cid)))
        private_string = '|yes'
    if data[0] is None:
        data[0] = ' '
    if data[1] is None:
        data[1] = ' '
    elif data[1] == '':
        data[1] = ' '
    else:
        items = data[1].split(',')
        for item in items:
            if item == '':
                items.remove(item)
        for item in items:
            itemnames.append(Item_list.items[item].name)
    if data[2] is None:
        data[2] = ' '
    elif data[2] == '':
        data[2] = ' '
    else:
        skills = data[2].split(',')
    message = name + '\n Оружие: ' + data[0] + '\n Предметы: ' + ', '.join(itemnames) + '\n Навыки: ' + ', '.join(skills)
    keyboard = types.InlineKeyboardMarkup()
    callback_button1 = types.InlineKeyboardButton(
        text="Изменить оружие", callback_data='change_weapon')
    callback_button2 = types.InlineKeyboardButton(
        text="Изменить предметы", callback_data='change_items')
    callback_button3 = types.InlineKeyboardButton(
        text="Изменить навыки", callback_data='change_skills')
    if private_string is not None:
        callback_button4 = types.InlineKeyboardButton(
            text="Отчеты в личку" + private_string, callback_data='change_string')
    else:
        callback_button4 = types.InlineKeyboardButton(
            text="Отчеты в личку", callback_data='change_string')
    keyboard.add(callback_button1, callback_button2)
    keyboard.add(callback_button3)
    keyboard.add(callback_button4)
    return (message, keyboard)
Example #8
0
def prepare_custom_fight(game):
    # Организация словаря
    game.player_dict = {p.chat_id: p for p in game.players}
    game.gamestate = 'weapon'
    bot.send_message(game.cid, 'Diqqat jang boshlanmoqda!!!')

    # Список активных игроков и раздача итемов
    for p in game.players:
        game.fight.activeplayers.append(p)
        p.team.actors.append(p)
        data = datahandler.get_current(p.chat_id)
        weapon_name = data[0]
        for weapon in Weapon_list.fullweaponlist:
            if weapon.name == weapon_name:
                p.weapon = weapon
                break
        item_ids = data[1].split(',')
        print(', '.join(item_ids))
        for item_id in item_ids:
            p.itemlist.append(Item_list.items[item_id])
        skill_names = data[2].split(',')
        for skill_name in skill_names:
            for skill in special_abilities.abilities:
                if skill.name == skill_name:
                    p.abilities.append(skill)
                    break
    # Подключение ai-противников
    if game.gametype == 'rhino':
        boss = ai.Rhino('Karkidon ' + '|' + u'\U0001F98F', game, game.team2, len(game.team1.players))
        game.team2.actors.append(boss)
        game.fight.aiplayers.append(game.team2.actors[-1])
        game.aiplayers.append(game.team2.actors[-1])
        game.player_dict[game.fight.aiplayers[-1].chat_id] = game.fight.aiplayers[-1]
        game.abilitycounter = len(game.players)
        game.fight.Withbots = True
    elif game.gametype == 'master':
        boss = ai.Master('Master ' + '|' + '☯️', game, game.team2,
                      len(game.team1.players))
        game.team2.actors.append(boss)
        game.fight.aiplayers.append(game.team2.actors[-1])
        game.aiplayers.append(game.team2.actors[-1])
        game.player_dict[game.fight.aiplayers[-1].chat_id] = game.fight.aiplayers[-1]
        game.abilitycounter = len(game.players)
        game.fight.Withbots = True              
    elif game.gametype == 'wolfs':
        boss = ai.DogLeader('Karkidon ' + '|' + u'\U0001F43A', game, game.team2, len(game.team1.players))
        game.team2.actors.append(boss)
        game.fight.aiplayers.append(game.team2.actors[-1])
        game.aiplayers.append(game.team2.actors[-1])
        game.player_dict[game.fight.aiplayers[-1].chat_id] = game.fight.aiplayers[-1]
        for x in range(0, len(game.team1.players)):
            game.team2.actors.append(ai.Dog('Kuchuk ' + str(x + 1) + '|' + u'\U0001F436', game, game.team2))
            game.fight.aiplayers.append(game.team2.actors[-1])
            game.aiplayers.append(game.team2.actors[-1])
            game.player_dict[game.fight.aiplayers[-1].chat_id] = game.fight.aiplayers[-1]
        game.fight.Withbots = True
    game.gamestate = 'fight'

    # Последняя подготовка
    for p in game.players:
        if datahandler.get_private_string(p.chat_id) == '1':
            p.private_string = True

        if p.weapon is None:
            p.weapon = Weapon_list.fists
        p.fight.string.add('Qurol ' + p.name + ' - ' + p.weapon.name)
        for a in p.abilities:
            a.aquare(a, p)
            a.aquareonce(a, p)
        if p.weapon.Melee:
            p.Inmelee = False
        p.weapon.aquare(p)
    for p in game.fight.aiplayers:
        for a in p.abilities:
            a.aquare(a, p)
            a.aquareonce(a, p)
        if p.weapon.Melee:
            p.Inmelee = False
        p.weapon.aquare(p)
    print('1-Guruh - ' + ', '.join([p.name for p in game.team1.players]))
    print('2-Guruh - ' + ', '.join([p.name for p in game.team2.players]))
    game.fight.string.post(bot, 'Qurol tanlovi')
    try:
        game.startfight()
    except:
        bot.send_message(game.cid, 'Qandaydir xatolik. O`yin qayta boshlanadi.')
        delete_game(game)
Example #9
0
def add_player(message):
    game = utils.get_game_from_chat(message.chat.id)
    if message.from_user.id in Main_classes.dict_players:
        pass
    elif game is not None:
        try:
            no = 0
            for ids in message.from_user.first_name:
                if ids.lower() not in symbols:
                    no = 1
            if no == 0:
                name = message.from_user.first_name.split(' ')[0][:12]
            else:
                name = message.from_user.username
            bot.send_message(message.from_user.id,
                             'Вы присоединились к игре.',
                             parse_mode='markdown')
            if game.gametype == game.gametypes[0] and message.from_user.id not in game.marked_id \
                    and message.chat.id == game.cid and game.gamestate == game.gamestates[0]:
                player = Main_classes.Player(message.from_user.id, name,
                                             Weapon_list.fists, game,
                                             message.from_user.username)
                game.pending_players.append(player)
                game.marked_id.append(player.chat_id)
                Main_classes.dict_players[player.chat_id] = game
                game.gamers = game.gamers + 1
                bot.send_message(
                    game.cid,
                    name + ' успешно присоединился. Всего игроков: ' +
                    str(game.gamers))
                if not game.pending_team1:
                    game.pending_team1.append(player)
                    datahandler.get_player(message.from_user.id,
                                           message.from_user.username, name)
                elif not game.pending_team2:
                    game.pending_team2.append(player)
                    datahandler.get_player(message.from_user.id,
                                           message.from_user.username, name)
                elif len(game.pending_players) >= 3:
                    keyboard = types.InlineKeyboardMarkup()
                    callback_button1 = types.InlineKeyboardButton(
                        text=str(len(game.pending_team1)) + ' - ' +
                        game.pending_team1[0].name,
                        callback_data='team1')
                    callback_button2 = types.InlineKeyboardButton(
                        text=str(len(game.pending_team2)) + ' - ' +
                        game.pending_team2[0].name,
                        callback_data='team2')
                    keyboard.add(callback_button1, callback_button2)
                    bot.send_message(message.from_user.id,
                                     name +
                                     ' Выберите, кому вы поможете в этом '
                                     'бою.',
                                     reply_markup=keyboard)
                    datahandler.get_player(message.from_user.id,
                                           message.from_user.username, name)
            elif game.gametype == game.gametypes[3] and message.from_user.id not in game.marked_id \
                    and message.chat.id == game.cid and game.gamestate == game.gamestates[0]:
                datahandler.get_player(message.from_user.id,
                                       message.from_user.username, name)
                data = datahandler.get_current(message.from_user.id)
                bot.send_message(
                    game.cid,
                    name + ' успешно присоединился к кастомной игре.')
                if data[0] is not None and data[1] is not None and data[
                        2] is not None:
                    player = Main_classes.Player(message.from_user.id,
                                                 name.split(' ')[0][:12],
                                                 Weapon_list.fists, game,
                                                 message.from_user.username)
                    game.pending_players.append(player)
                    game.marked_id.append(player.chat_id)
                    Main_classes.dict_players[player.chat_id] = game
                    if not game.pending_team1:
                        game.pending_team1.append(player)
                        datahandler.get_player(message.from_user.id,
                                               message.from_user.username,
                                               name)
                    elif not game.pending_team2:
                        game.pending_team2.append(player)
                        datahandler.get_player(message.from_user.id,
                                               message.from_user.username,
                                               name)
                    elif len(game.pending_players) >= 3:
                        keyboard = types.InlineKeyboardMarkup()
                        callback_button1 = types.InlineKeyboardButton(
                            text=str(len(game.pending_team1)) + ' - ' +
                            game.pending_team1[0].name,
                            callback_data='team1')
                        callback_button2 = types.InlineKeyboardButton(
                            text=str(len(game.pending_team2)) + ' - ' +
                            game.pending_team2[0].name,
                            callback_data='team2')
                        keyboard.add(callback_button1, callback_button2)
                        bot.send_message(message.from_user.id,
                                         message.from_user.first_name +
                                         ' Выберите, кому вы поможете в этом '
                                         'бою.',
                                         reply_markup=keyboard)
                else:
                    bot.send_message(message.chat.id, 'Заполните лист /player')

            elif message.from_user.id not in game.marked_id and message.chat.id == game.cid and \
                            game.gamestate == game.gamestates[0]:
                if game.gametype == game.gametypes[1] and len(
                        game.pending_players) > 2:
                    pass
                else:
                    game.gamers = game.gamers + 1
                    bot.send_message(
                        game.cid,
                        name + ' успешно присоединился. Всего игроков: ' +
                        str(game.gamers))
                    datahandler.get_player(message.from_user.id,
                                           message.from_user.username, name)
                    player = Main_classes.Player(message.from_user.id,
                                                 name.split(' ')[0][:12], None,
                                                 game,
                                                 message.from_user.username)
                    game.pending_players.append(player)
                    game.pending_team1.append(player)

                    Main_classes.dict_players[player.chat_id] = game
                    game.marked_id.append(player.chat_id)
            elif game.gamestate != game.gamestates[0]:
                bot.send_message(message.chat.id,
                                 'Нет запущенной игры или игра уже началась.')
        except:
            bot.send_message(
                message.chat.id,
                'Что-то пошло не так. Возможно, стоит начать разговор с ботом @'
                + config.username)

    time.sleep(3)
Example #10
0
def add_player(message):
    game = utils.get_game_from_chat(message.chat.id)
    if message.from_user.id in Main_classes.dict_players:
        pass
    elif game is not None:
        try:
            bot.send_message(message.from_user.id,
                             "Siz o'yinga omadli qo'shildingiz.",
                             parse_mode='markdown')
            if game.gametype == game.gametypes[0] and message.from_user.id not in game.marked_id \
                    and message.chat.id == game.cid and game.gamestate == game.gamestates[0]:
                player = Main_classes.Player(
                    message.from_user.id,
                    message.from_user.first_name.split(' ')[0][:12],
                    Weapon_list.fists, game, message.from_user.username)
                game.pending_players.append(player)
                game.marked_id.append(player.chat_id)
                Main_classes.dict_players[player.chat_id] = game
                bot.send_message(
                    game.cid,
                    message.from_user.first_name + ' o`yinga qo`shildi.')
                if not game.pending_team1:
                    game.pending_team1.append(player)
                    datahandler.get_player(message.from_user.id,
                                           message.from_user.username,
                                           message.from_user.first_name)
                elif not game.pending_team2:
                    game.pending_team2.append(player)
                    datahandler.get_player(message.from_user.id,
                                           message.from_user.username,
                                           message.from_user.first_name)
                elif len(game.pending_players) >= 3:
                    keyboard = types.InlineKeyboardMarkup()
                    callback_button1 = types.InlineKeyboardButton(
                        text=str(len(game.pending_team1)) + ' - ' +
                        game.pending_team1[0].name,
                        callback_data='team1')
                    callback_button2 = types.InlineKeyboardButton(
                        text=str(len(game.pending_team2)) + ' - ' +
                        game.pending_team2[0].name,
                        callback_data='team2')
                    keyboard.add(callback_button1, callback_button2)
                    bot.send_message(message.from_user.id,
                                     message.from_user.first_name +
                                     ' Kimga yordam berishingizni '
                                     'tanlang.',
                                     reply_markup=keyboard)
                    datahandler.get_player(message.from_user.id,
                                           message.from_user.username,
                                           message.from_user.first_name)
            elif game.gametype == game.gametypes[3] and message.from_user.id not in game.marked_id \
                    and message.chat.id == game.cid and game.gamestate == game.gamestates[0]:
                datahandler.get_player(message.from_user.id,
                                       message.from_user.username,
                                       message.from_user.first_name)
                data = datahandler.get_current(message.from_user.id)
                bot.send_message(
                    game.cid, message.from_user.first_name +
                    ' sozlangan janga omadli qo`shildi.')
                if data[0] is not None and data[1] is not None and data[
                        2] is not None:
                    player = Main_classes.Player(
                        message.from_user.id,
                        message.from_user.first_name.split(' ')[0][:12],
                        Weapon_list.fists, game, message.from_user.username)
                    game.pending_players.append(player)
                    game.marked_id.append(player.chat_id)
                    Main_classes.dict_players[player.chat_id] = game
                    if not game.pending_team1:
                        game.pending_team1.append(player)
                        datahandler.get_player(message.from_user.id,
                                               message.from_user.username,
                                               message.from_user.first_name)
                    elif not game.pending_team2:
                        game.pending_team2.append(player)
                        datahandler.get_player(message.from_user.id,
                                               message.from_user.username,
                                               message.from_user.first_name)
                    elif len(game.pending_players) >= 3:
                        keyboard = types.InlineKeyboardMarkup()
                        callback_button1 = types.InlineKeyboardButton(
                            text=str(len(game.pending_team1)) + ' - ' +
                            game.pending_team1[0].name,
                            callback_data='team1')
                        callback_button2 = types.InlineKeyboardButton(
                            text=str(len(game.pending_team2)) + ' - ' +
                            game.pending_team2[0].name,
                            callback_data='team2')
                        keyboard.add(callback_button1, callback_button2)
                        bot.send_message(message.from_user.id,
                                         message.from_user.first_name +
                                         ' Kimga jangda yordam berishingizni '
                                         'tanlang.',
                                         reply_markup=keyboard)
                else:
                    bot.send_message(message.chat.id,
                                     '/player jadvalini to`ldiring')

            elif message.from_user.id not in game.marked_id and message.chat.id == game.cid and \
                            game.gamestate == game.gamestates[0]:
                if game.gametype == game.gametypes[1] and len(
                        game.pending_players) > 2:
                    pass
                else:
                    bot.send_message(
                        game.cid,
                        message.from_user.first_name + ' o`yinga qo`shildi.')
                    datahandler.get_player(message.from_user.id,
                                           message.from_user.username,
                                           message.from_user.first_name)
                    player = Main_classes.Player(
                        message.from_user.id,
                        message.from_user.first_name.split(' ')[0][:12], None,
                        game, message.from_user.username)
                    game.pending_players.append(player)
                    game.pending_team1.append(player)

                    Main_classes.dict_players[player.chat_id] = game
                    game.marked_id.append(player.chat_id)
            elif game.gamestate != game.gamestates[0]:
                bot.send_message(
                    message.chat.id,
                    'O`yin boshlanmagan yoki allaqachon bo`layabdi.')
        except:
            bot.send_message(
                message.chat.id,
                'O`yinga qo`shilish uchun @HuntUzBot bilan bog`laning.')

    time.sleep(3)
Example #11
0
def prepare_custom_fight(game):
    # Организация словаря
    game.player_dict = {p.chat_id: p for p in game.players}
    game.gamestate = 'weapon'
    bot.send_message(game.cid, 'Бой начинается!')

    # Список активных игроков и раздача итемов
    for p in game.players:
        game.fight.activeplayers.append(p)
        p.team.actors.append(p)
        data = datahandler.get_current(p.chat_id)
        weapon_name = data[0]
        for weapon in Weapon_list.fullweaponlist:
            if weapon.name == weapon_name:
                p.weapon = weapon
                break
        item_ids = data[1].split(',')
        print(', '.join(item_ids))
        for item_id in item_ids:
            p.itemlist.append(Item_list.items[item_id])
        skill_names = data[2].split(',')
        for skill_name in skill_names:
            for skill in special_abilities.abilities:
                if skill.name == skill_name:
                    p.abilities.append(skill)
                    break
    # Подключение ai-противников
    if game.gametype == 'rhino':
        boss = ai.Rhino('Носорог ' + '|' + u'\U0001F98F', game, game.team2,
                        len(game.team1.players))
        game.team2.actors.append(boss)
        game.fight.aiplayers.append(game.team2.actors[-1])
        game.aiplayers.append(game.team2.actors[-1])
        game.player_dict[
            game.fight.aiplayers[-1].chat_id] = game.fight.aiplayers[-1]
        game.abilitycounter = len(game.players)
        game.fight.Withbots = True
    elif game.gametype == 'wolfs':
        boss = ai.DogLeader('Вожак ' + '|' + u'\U0001F43A', game, game.team2,
                            len(game.team1.players))
        game.team2.actors.append(boss)
        game.fight.aiplayers.append(game.team2.actors[-1])
        game.aiplayers.append(game.team2.actors[-1])
        game.player_dict[
            game.fight.aiplayers[-1].chat_id] = game.fight.aiplayers[-1]
        for x in range(0, len(game.team1.players)):
            game.team2.actors.append(
                ai.Dog('Собака ' + str(x + 1) + '|' + u'\U0001F436', game,
                       game.team2))
            game.fight.aiplayers.append(game.team2.actors[-1])
            game.aiplayers.append(game.team2.actors[-1])
            game.player_dict[
                game.fight.aiplayers[-1].chat_id] = game.fight.aiplayers[-1]
        game.fight.Withbots = True
    game.gamestate = 'fight'

    # Последняя подготовка
    for p in game.players:
        if datahandler.get_private_string(p.chat_id) == '1':
            p.private_string = True

        if p.weapon is None:
            p.weapon = Weapon_list.fists
        p.fight.string.add('Оружие ' + p.name + ' - ' + p.weapon.name)
        for a in p.abilities:
            a.aquare(a, p)
            a.aquareonce(a, p)
        if p.weapon.Melee:
            p.Inmelee = False
        p.weapon.aquare(p)
    for p in game.fight.aiplayers:
        for a in p.abilities:
            a.aquare(a, p)
            a.aquareonce(a, p)
        if p.weapon.Melee:
            p.Inmelee = False
        p.weapon.aquare(p)
    print('Команда 1 - ' + ', '.join([p.name for p in game.team1.players]))
    print('Команда 2 - ' + ', '.join([p.name for p in game.team2.players]))
    game.fight.string.post(bot, 'Выбор оружия')
    try:
        game.startfight()
    except:
        bot.send_message(game.cid, 'Какая-то ошибка. Игра будет сброшена.')
        delete_game(game)
Example #12
0
def add_player(message):
    game = utils.get_game_from_chat(message.chat.id)
    if message.from_user.id in Main_classes.dict_players:
        pass
    elif game is not None:
        try:
            bot.send_message(message.from_user.id, 'Вы присоединились к игре.', parse_mode='markdown')
            if game.gametype == game.gametypes[0] and message.from_user.id not in game.marked_id \
                    and message.chat.id == game.cid and game.gamestate == game.gamestates[0]:
                player = Main_classes.Player(message.from_user.id, message.from_user.first_name.split(' ')[0][:12], Weapon_list.fists,
                                         game, message.from_user.username)
                game.pending_players.append(player)
                game.marked_id.append(player.chat_id)
                Main_classes.dict_players[player.chat_id] = game
                bot.send_message(game.cid, message.from_user.first_name + ' успешно присоединился.')
                if not game.pending_team1:
                    game.pending_team1.append(player)
                    datahandler.get_player(message.from_user.id, message.from_user.username, message.from_user.first_name)
                elif not game.pending_team2:
                    game.pending_team2.append(player)
                    datahandler.get_player(message.from_user.id, message.from_user.username, message.from_user.first_name)
                elif len(game.pending_players) >= 3:
                    keyboard = types.InlineKeyboardMarkup()
                    callback_button1 = types.InlineKeyboardButton(
                        text=str(len(game.pending_team1)) + ' - ' + game.pending_team1[0].name, callback_data='team1')
                    callback_button2 = types.InlineKeyboardButton(
                        text=str(len(game.pending_team2)) + ' - ' + game.pending_team2[0].name, callback_data='team2')
                    keyboard.add(callback_button1, callback_button2)
                    bot.send_message(message.from_user.id,
                                 message.from_user.first_name + ' Выберите, кому вы поможете в этом '
                                                                'бою.', reply_markup=keyboard)
                    datahandler.get_player(message.from_user.id, message.from_user.username, message.from_user.first_name)
            elif game.gametype == game.gametypes[3] and message.from_user.id not in game.marked_id \
                    and message.chat.id == game.cid and game.gamestate == game.gamestates[0]:
                datahandler.get_player(message.from_user.id, message.from_user.username, message.from_user.first_name)
                data = datahandler.get_current(message.from_user.id)
                bot.send_message(game.cid, message.from_user.first_name + ' успешно присоединился к кастомной игре.')
                if data[0] is not None and data[1] is not None and data[2] is not None:
                    player = Main_classes.Player(message.from_user.id, message.from_user.first_name.split(' ')[0][:12],
                                                 Weapon_list.fists, game, message.from_user.username)
                    game.pending_players.append(player)
                    game.marked_id.append(player.chat_id)
                    Main_classes.dict_players[player.chat_id] = game
                    if not game.pending_team1:
                        game.pending_team1.append(player)
                        datahandler.get_player(message.from_user.id, message.from_user.username, message.from_user.first_name)
                    elif not game.pending_team2:
                        game.pending_team2.append(player)
                        datahandler.get_player(message.from_user.id, message.from_user.username, message.from_user.first_name)
                    elif len(game.pending_players) >= 3:
                        keyboard = types.InlineKeyboardMarkup()
                        callback_button1 = types.InlineKeyboardButton(
                            text=str(len(game.pending_team1)) + ' - ' + game.pending_team1[0].name, callback_data='team1')
                        callback_button2 = types.InlineKeyboardButton(
                            text=str(len(game.pending_team2)) + ' - ' + game.pending_team2[0].name, callback_data='team2')
                        keyboard.add(callback_button1, callback_button2)
                        bot.send_message(message.from_user.id,
                                 message.from_user.first_name + ' Выберите, кому вы поможете в этом '
                                                                'бою.', reply_markup=keyboard)
                else:
                    bot.send_message(message.chat.id, 'Заполните лист /player')

            elif message.from_user.id not in game.marked_id and message.chat.id == game.cid and \
                            game.gamestate == game.gamestates[0]:
                if game.gametype == game.gametypes[1] and len(game.pending_players) > 2:
                    pass
                else:
                    bot.send_message(game.cid, message.from_user.first_name + ' успешно присоединился.')
                    datahandler.get_player(message.from_user.id, message.from_user.username, message.from_user.first_name)
                    player = Main_classes.Player(message.from_user.id, message.from_user.first_name.split(' ')[0][:12],
                                                 None, game, message.from_user.username)
                    game.pending_players.append(player)
                    game.pending_team1.append(player)

                    Main_classes.dict_players[player.chat_id] = game
                    game.marked_id.append(player.chat_id)
            elif game.gamestate != game.gamestates[0]:
                bot.send_message(message.chat.id, 'Нет запущенной игры или игра уже началась.')
        except:
            bot.send_message(message.chat.id, 'Что-то пошло не так. Возможно, стоит начать разговор с ботом @veganwarsbot.')

    time.sleep(3)