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

[Stealth] Изготовление удочек в НьюбиГороде

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

stealts v. 8.11.4

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

 

Собственно сабж

Чар берёт из банка нужное кол-во логов для 1 крафта - крафтит вещь, если не получилось, добирает логов, если получилось скидывает удочку\ки в банк
сам жрёт, сам реконектится

Никаких счётчиков на кол-во скрафченных вещей нет! Будет пилить эти палки пока есть из чего!


Оставить чара в Ньюби Городе, в пак ему кинуть щипцы тинкертулса, в банк закинуть жареной рыбки
если хотите что бы чар с начало кидал удочки в контейнер в банке, указать ID контейнера в:

CONTAINER = 0x69F8D06A  # указать ID контейнера в банке иначе будет кидать в банк

После того как контейнер заполнится, будет складывать всё в банк под завязку, ну или пока не кончатся логи.

Логи должны быть ПРОСТЫЕ!

 

from py_stealth import *
from datetime import datetime as dt
from datetime import timedelta

CONTAINER = 0x69F8D06A  # указать ID контейнера в банке иначе будет кидать в банк


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


def Hungry(food=0x097B, place=Backpack()):  # food default "fish steaks", search in you backpack
    while True:
        if Dead() or not Connected() or not CheckLag(15000):
            print("Hungry: You dead, or not connected or hard lags!")
            return False
        FindType(food, place)
        if FindCount() <= 0:
            print("Hungry: not food!")
            return
        ct = dt.now()
        UseObject(FindItem())
        Wait(1000)
        if InJournalBetweenTimes('Я объелся', ct, dt.now()) != -1:
            return True


def OpenPack(Container=Backpack()):
    while LastContainer() != Container:
        if Dead() or not Connected() or not CheckLag():
            print("OpenPack: You dead, or something else!")
            break
        CheckSave()
        UseObject(Container)
        end = 0
        while end >= 5:
            if LastContainer() == Backpack():
                break
            Wait(1000)
            end += 1


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


def CheckConnect(WaitTime=15000):
    for i in range(0, 10):
        if Hidden():
            UOSay(' ')
            Wait(500)
        else:
            break
    if Connected() 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()
            CheckLag(5000)
            if Connected() and not CheckLag(8000):
                Disconnect()
        print('CheckConnect.py : Server connection restored.')
        return False
    return True


def GetTool():
    if f := FindType(0x1EBC, Backpack()):
        return f
    else:
        msg("ERROR: в бекпаке нет tinker's tools")
        return False


def GetWood():
    FindTypeEx(0x1BDD, 0xffff, Backpack(), False)
    if FindQuantity() >= 5:
        return True
    count = abs(5 - FindQuantity())
    if count == 0:
        return True
    FindTypeEx(0x1BDD, 0xffff, ObjAtLayer(BankLayer()), False)
    if FindQuantity() >= count:
        MoveItem(FindItem(), count, Backpack(), 0, 0, 0)
        return True
    return False


def CraftPole(tool):
    AutoMenu("Select", "Tools")
    AutoMenu("Select", "Pole")
    cTime = dt.now()
    if TargetPresent():
        CancelTarget()
    UseObject(tool)
    if WaitForTarget(5000):
        if f := FindType(0x1BDD, Backpack()):
            WaitTargetObject(f)
            msg1 = "You don't have enough material to make this!"
            msg2 = "You destroy some material."
            msg3 = "You create"
            if WaitJournalLine(cTime, f"{msg1}|{msg2}|{msg3}", 15000):
                if InJournalBetweenTimes(msg3, cTime, dt.now()) != -1:
                    return True
    Wait(100)
    return False


def MovePoleInBank():
    if GetType(CONTAINER) > 0:
        cont = CONTAINER
    else:
        cont = ObjAtLayer(BankLayer())
    while f := FindType(0x0DBF, Backpack()):
        bTime = dt.now()
        MoveItem(f, 1, cont, 0, 0, 0)
        Wait(100)
        if InJournalBetweenTimes("full", bTime, dt.now()) != -1:
            if cont == ObjAtLayer(BankLayer()):
                msg("Все контейнеры заполнены!")
                return False
            cont = ObjAtLayer(BankLayer())
    return True


def main():
    while True:
        if not CheckConnect():
            OpenPack()
        if Dead():
            msg('ERROR: Я мёртв')
            return False
        if Dist(GetX(Self()), GetY(Self()), 3031, 3370) < 1:
            if not newMoveXY(3031, 3370, 0, 1, True):
                msg('ERROR: не могу дойти до банка')
                return False
        t = 0
        while LastContainer() != ObjAtLayer(BankLayer()):
            if t > 4:
                msg('ERROR: Не могу открыть банк')
                return False
            t += 1
            UOSay('bank')
            Wait(5000)
        Hungry(place=ObjAtLayer(BankLayer()))
        tool = GetTool()
        if not GetWood():
            return False
        if CraftPole(tool):
            if not MovePoleInBank():
                return False


if __name__ == '__main__':
    main()
    SetARStatus(False)
    Disconnect()
    msg('END SCRIPT')

 

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


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

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