Перейти к содержанию
Форум шарда Middle-Earth
Авторизация  
nepret

[Stealth] Fishing с берега(свежий)

Рекомендуемые сообщения

stealth version 8.11.4

Фишинг с берега. Новый!

Как запустить:  читать тут

Что делает:

  • ловит рыбу удочкой
  • ничего не скидываем (карты, соски, обувь остаётся в паке)
  • жрёт
  • авто реконект (советую не включать встроенный столсовский реконектор, так как он имеет неприятную особенность зависать при длительных падениях сервака, да и на скрипты это влияет так себе...)

 

Инструкция по применению:

  • кидаем чару в пак удочки и еду(если надо, меняем на свой тип)
FOOD = 0x097B  # Type еды, сейчас фишстейки
  • ставим возле берега
  • запускаем скрипт
  • следим за появлением капчи и появлением красно\серых упырей
from datetime import datetime, timedelta
from py_stealth import *
"""
в бекпак еду, удочки
встаём возле берега и запускаем скрипт
"""
POLE = 0x0DBF
RANGE = 6
FOOD = 0x097B  # Type еды, сейчас фишстейки


def msg(Message):
    print(Message)
    ClientPrintEx(0, 60, 2, Message)


def DCC(message, TimeWait=15000):
    if Dead() or not Connected() or not CheckLag(TimeWait):
        print(f"{message}: You dead, or something else!")
        return False
    return True


def CheckConnect(WaitTime=15000):
    if Connected() and Hidden():
        for i in range(0, 10):
            if Hidden():
                UOSay(' ')
                Wait(500)
            else:
                break
    if Connected() and not Hidden() and not CheckLag(WaitTime):
        Disconnect()
        Wait(5000)
    if not Connected():
        print('CheckConnect.py : Not connected to server!')
        print('CheckConnect.py : Reconnected...')
        while not Connected():
            Connect()
            for i in range(0, 10):
                if Hidden():
                    UOSay(' ')
                    Wait(500)
                else:
                    break
            CheckLag(5000)
            if Connected() and not Hidden() and not CheckLag(8000):
                Disconnect()
        print('CheckConnect.py : Server connection restored.')
        return False
    return True


def CheckSave():
    Time = datetime.now() - timedelta(0, 30)
    if InJournalBetweenTimes('Saving World State', Time, datetime.now()) >= 0:
        Wait(30000)


def OpenPack(Container=Backpack()):
    while LastContainer() != Container:
        if DCC(OpenPack):
            break
        CheckSave()
        UseObject(Container)
        end = 0
        while end >= 5:
            if LastContainer() == Backpack():
                break
            Wait(1000)
            end += 1


def Hungry(food=0x097B, place=Backpack()):  # food default "fish steaks", search in you backpack
    while True:
        if Dead() or not Connected() or not CheckLag():
            print("Hungry: You dead, or not connected or hard lags!")
            return False
        if f := FindType(food, place):
            ct = datetime.now()
            UseObject(f)
            Wait(1000)
            if WaitJournalLine(ct, 'Я объелся', 700):
                return True
        else:
            print("Hungry: not found food!")
            return False


def CheckPole():
    if not CheckConnect() or Dead():
        return False
    CheckSave()
    if LastContainer() != Backpack():
        OpenPack()
    if GetType(ObjAtLayer(RhandLayer())):
        Disarm()
    if GetType(ObjAtLayer(LhandLayer())) == POLE:
        return ObjAtLayer(LhandLayer())
    if FindType(POLE, Backpack()):
        return FindItem()
    else:
        print('ERROR: у меня нет инструмента')
        return False


def CheckTile(x, y):
    tile = [0, 6038, 6039, 6040, 6041, 6042, 6043, 13422, 13423, 13424, 13425, 13426, 13427, 13428,
            13429, 13430, 13431, 13432, 13433, 13434, 13435, 13436, 13437, 13438, 13439, 13440,
            13441, 13442, 13443, 13444, 13456, 13457, 13458, 13459, 13460, 13461, 13462, 13463,
            13464, 13465, 13466, 13467, 13468, 13469, 13470, 13471, 13472, 13473, 13474, 13475,
            13476, 13477, 13478, 13479, 13480, 13481, 13482, 13493, 13494, 13495, 13496, 13497,
            13498, 13499, 13500, 13501, 13502, 13503, 13504, 13505, 13506, 13507, 13508, 13509,
            13510, 13511, 13512, 13513, 13514, 13515, 13516, 13517, 13518, 13519, 13520, 13521,
            13522, 13523, 13524, 168, 169, 170, 310, 16368, 16369, 16370, 168, 169, 170, 171, 310, 311]
    r = ReadStaticsXY(x, y, WorldNum())
    for i in tile:
        if len(r) <= 0:
            return False
        if r[len(r) - 1].get('Tile') == i:
            return r[len(r)-1]
    return False


def CheckCaptcha(pole):
    while IsGump():
        g = GetGumpInfo(GetGumpsCount() - 1)
        if g.get('Text')[0][0].find("капча"):
            msg(">>>>>>>> Нужно ввести капчу!\n"
                "если клиент был закрыт и при заходе клиентом капчи нет, просто юзани удочку...")
            while IsGump():
                Wait(1000)
            msg(">>>>>>>> отлично продолжаем...")
        if not TargetPresent():
            UseObject(pole)
            Wait(1000)


def Fishing(x, y, z, tile):
    while True:
        CheckConnect()
        if Dead():
            msg('Чар мёртв')
            return False
        if pole := CheckPole():
            Hungry()
            if TargetPresent():
                CancelTarget()
            ct = datetime.now()
            while not TargetPresent():
                CheckSave()
                CheckLag()
                UseObject(pole)
                CheckCaptcha(pole)
                WaitForTarget(2500)
            if WaitForTarget(2500):
                WaitTargetTile(tile, x, y, z)
                if WaitJournalLineSystem(ct, "Fishing шанс на успех|There doesn't", 15000):
                    if InJournalBetweenTimes("There doesn't", ct, datetime.now()) != -1:
                        return True
        else:
            return False


def main():
    while True:
        CheckConnect()
        if Dead():
            msg('Чар мёртв')
            return
        ct = 0
        for x in range(GetX(Self())-RANGE, GetX(Self())+RANGE):
            for y in range(GetY(Self())-RANGE, GetY(Self())+RANGE):
                if CheckTile(x, y):
                    ct += 1
        if ct <= 0:
            msg(f'ERROR: Не вижи тайлов для ловли в радиусе: {RANGE}')
            return
        for x in range(GetX(Self())-RANGE, GetX(Self())+RANGE):
            for y in range(GetY(Self())-RANGE, GetY(Self())+RANGE):
                if coord := CheckTile(x, y):
                    if not Fishing(coord.get('X'), coord.get('Y'), coord.get('Z'), coord.get('Tile')):
                        return False


if __name__ == '__main__':
    main()
    if Connected():
        Disconnect()
    msg('END SCRIPT!')

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Авторизация  

×
×
  • Создать...