TapSwapBot icon indicating copy to clipboard operation
TapSwapBot copied to clipboard

Up town

Open tww1e opened this issue 1 year ago • 7 comments

Реализовать прокачку городов

tww1e avatar Aug 12 '24 13:08 tww1e

Yes, Sir!

prognt avatar Aug 12 '24 17:08 prognt

Было бы весьма неплохо реализовать город. Спасибо!

shelllshock avatar Aug 13 '24 06:08 shelllshock

+1 c клаймом видосиков (мб тех кто без кода, но можно и потжерживать key=>value кодов базу из открытых источников наполнив), без этого город заглохнет. Если у кого есть что, можете пожелится, моё пока не рабочее.

dmitryGolikov avatar Aug 13 '24 07:08 dmitryGolikov

Никидал за 10 минут:

    async def upgrade_building(self, http_client: aiohttp.ClientSession, building_id: str) -> bool:
        response_text = ''
        try:
            response = await http_client.post(url='https://api.tapswap.club/api/town/upgrade_building',
                                            json={'building_id': building_id})
            response_text = await response.text()
            response.raise_for_status()

            return True
        except Exception as error:
            logger.error(f"{self.session_name} | Unknown error when Upgrade Building: {escape_html(error)} | "
                        f"Response text: {escape_html(response_text)[:128]}...")
            await asyncio.sleep(delay=3)

            return False
                account = profile_data['player']
                town = account['town']
                buildings = town['buildings']
                confTown = profile_data['conf']['town']
                confBuildings = confTown['buildings']
                confBuildingsMapById = {data['id']: data for data in confBuildings}

                for building in buildings:
                    current_level = building['level']
                    id = building['id']
                    upgrade_building = await self.upgrade_building(http_client=http_client,
                                                                                  building_id=id)
                    if upgrade_building is True:
                        logger.success(f"{self.session_name} | "
                                        f"Building <m>{id}</m> upgraded to <m>{current_level + 1}</m>!")                        
                    # current_conf = confBuildingsMapById[id]
                    # if current_conf['levels'][current_level + 1] is not None:
                    #     required_building = current_conf['levels'][current_level + 1]['required']
                    #     logger.debug(f"{self.session_name} | required_building: {required_building}")

                    #     if required_building is not None:
                    #         required_id = required_building['id']
                    #         required_level = required_building['level']
                    #         if required_id in buildings and buildings[required_id]['level'] >= required_level:
                    #             upgrade_building = await self.upgrade_building(http_client=http_client,
                    #                                                               building_id=id)
                    #             if upgrade_building is True:
                    #                 logger.success(f"{self.session_name} | "
                    #                               f"Building <m>{id}</m> upgraded to <m>{current_level + 1}</m>!")

В комментариях не рабочая логика, по пониманию какой лвл можно строить или нет, с верху просто пробежатся по всем зданиям и строить, работает, ддос наше всё. Если кто осилит их json и логику , велком, + нужно сравнивать по времени сколько рабочих сейчас свободно.
image

dmitryGolikov avatar Aug 14 '24 12:08 dmitryGolikov

Мой код проработал день, да он работает, но

  1. косяк нужно поменять на confBuildings, а он только достраивает от того что уже есть в данный момент, а новые не начинает строить
  2. ддос это ужас, нужно хоть базовые проверки что строители загружены, и что здание нельзя строить.

dmitryGolikov avatar Aug 15 '24 15:08 dmitryGolikov

Мой код проработал день, да он работает, но

  1. косяк нужно поменять на confBuildings, а он только достраивает от того что уже есть в данный момент, а новые не начинает строить
  2. ддос это ужас, нужно хоть базовые проверки что строители загружены, и что здание нельзя строить.

Как вообще отснифать запросы игры в тг!? Как это делают?

slonce70 avatar Aug 23 '24 22:08 slonce70

Как вообще отснифать запросы игры в тг!? Как это делают?

Вот: https://core.telegram.org/bots/webapps#debug-mode-for-mini-apps P.S. Если у вас нет андроида, эмулятор + Chrome тоже работает.

Alexell avatar Sep 04 '24 18:09 Alexell