Ejemplo n.º 1
0
def resource_return(bot, job):
    cursor = conn.cursor()
    if job.context[1].get("status") not in ["sawmill", "quarry"]:
        logging.warning(
            "Status not in  [\"sawmill\", \"quarry\"], status = {}".format(
                job.context[1].get("status")))
        return
    statuses_to_res = {"sawmill": "wood", "quarry": "stone"}
    res = statuses_to_res.get(job.context[1].get("status"))
    count = 1
    throne = Location.get_location(2)
    throne.treasury.change_resource(res, count)
    player = Player.get_player(job.context[0])
    player.reputation += 3
    player.update_to_database()
    job.context[1].update({"status": "castle_gates"})
    buttons = get_general_buttons(job.context[1], player)
    if job.context[0] in construction_jobs:
        try:
            construction_jobs.pop(job.context[0])
        except Exception:
            logging.error(traceback.format_exc())
    request = "insert into castle_logs(player_id, action, result, additional_info, date) values (%s, %s, %s, %s, %s)"
    cursor.execute(
        request,
        (player.id, "collect_resources", 1,
         json.dumps({
             "resource": res,
             "count": count
         }), datetime.datetime.now(tz=moscow_tz).replace(tzinfo=None)))
    bot.send_message(chat_id=job.context[0],
                     text="Вы успешно добыли {}. Казна обновлена. Получено 3 🔘"
                     "".format("дерево" if res == "wood" else "камень"),
                     reply_markup=buttons)
    on_resource_return(player, res)
Ejemplo n.º 2
0
def construction_return(bot, job):
    cursor = conn.cursor()
    player_id = job.context[0]
    user_data = job.context[1]
    if user_data.get("status") not in ["construction"]:
        return
    location_id = user_data.get("construction_id")
    if location_id is None:
        bot.send_message(chat_id=player_id, text="Ошибка поиска локации.")
        return
    location = Location.get_location(location_id)
    if location is None:
        bot.send_message(chat_id=player_id, text="Ошибка поиска локации.")
        return
    print(location.name, location.state, location.building_process)
    if location.state is True or location.building_process < 0:
        bot.send_message(
            chat_id=player_id,
            text=
            "Локация уже построена или стройка не начиналась. Возможно, локацию "
            "построили в то время, пока вы добирались до стройки.")
        return
    location.building_process += 3
    player = Player.get_player(job.context[0])
    if location.building_process >= location.need_clicks_to_construct:
        location.state = True
        bot.send_message(
            chat_id=player_id,
            text="Локация успешно построена! Вы положили последний камень!")
        player.reputation += 50 - CONSTRUCTION_REPUTATION
    player.reputation += CONSTRUCTION_REPUTATION
    player.update_to_database()
    location.update_location_to_database()
    user_data.update({"status": "central_square"})
    if "construction_id" in user_data:
        user_data.pop("construction_id")
    if job.context[0] in construction_jobs:
        try:
            construction_jobs.pop(job.context[0])
        except Exception:
            logging.error(traceback.format_exc())
    buttons = get_general_buttons(user_data, player)
    request = "insert into castle_logs(player_id, action, result, additional_info, date) values (%s, %s, %s, %s, %s)"
    cursor.execute(request,
                   (player.id, "construction", 1,
                    json.dumps({"location_id": location_id}),
                    datetime.datetime.now(tz=moscow_tz).replace(tzinfo=None)))
    bot.send_message(
        chat_id=job.context[0],
        text="Вы вернулись со стройки. Получено <code>{}</code> 🔘".format(
            CONSTRUCTION_REPUTATION),
        reply_markup=buttons,
        parse_mode='HTML')
Ejemplo n.º 3
0
def return_from_quest(player_id, user_data):
    with quest_lock:
        for lst in list(quest_players.values()):
            try:
                lst.remove(player_id)
            except ValueError:
                pass
    delete_list = ["quest", "quest_pressed", "quest_id", "pair_id", "quest_name"]
    for string in delete_list:
        if string in user_data:
            user_data.pop(string)
    user_data.update({"status": "tea_party"})
    j = construction_jobs.get(player_id)
    try:
        j.job.schedule_removal()
        construction_jobs.pop(player_id)
    except Exception:
        logging.error(traceback.format_exc())
        pass