Ativa o menu
Toggle preferences menu
Alternar menu pessoal
Não autenticado(a)
Your IP address will be publicly visible if you make any edits.

ClassicAssist: Mining Minoc: mudanças entre as edições

De Imperial Wiki
Matthews (discussão | contribs)
Sem resumo de edição
Matthews (discussão | contribs)
Sem resumo de edição
 
Linha 2: Linha 2:




# Shard: Imperial Shard
# Macro: Mineração em Minoc, minera, funde e guarda os minérios no banco.
  ####    ##  ##  #####    ######  #####    ####      ##    ##
  ##    ### ###  ##  ##  ##      ##  ##    ##      ####    ##
  ##    #######  ##  ##  ##      ##  ##    ##    ##  ##  ##
  ##    ## # ##  #####    ####    #####      ##    ######  ##
  ##    ##  ##  ##      ##      ####      ##    ##  ##  ##
  ##    ##  ##  ##      ##      ## ##      ##    ##  ##  ##
  ####    ##  ##  ##      ######  ##  ##    ####    ##  ##  ######
 
  ##      ####    ######
  ####    ##  ##  ##
##  ##  ##      ##
######  ## ###  ####
##  ##  ##  ##  ##
##  ##  ##  ##  ##
##  ##    ####    ######
  ####    ##  ##    ##    #####    ####
##  ##  ##  ##    ####    ##  ##  ## ##
##      ##  ##  ##  ##  ##  ##  ##  ##
  ####    ######  ######  #####    ##  ##
    ##  ##  ##  ##  ##  ####    ##  ##
##  ##  ##  ##  ##  ##  ## ##    ## ##
  ####    ##  ##  ##  ##  ##  ##  ####
# Instruções para uso do macro de mineração:
# 1. Coloque um baú ou mochila no banco e anote o ID dele usando o Classic Assist.
#  -> Clique em Object Inspector, selecione a mochila ou bau, anote o seu serial e substitua o código na linha 'storeIngots'.
#  -> Coloque 0 se não quiser ir ao banco.
#
# 2. Na primeira execução, escolha a forja quando solicitado.
#
# 3. Deixe a picareta na mochila do personagem. O macro pegará a picareta automaticamente quando necessário.
#
# 4. O macro minerará priorizando os minérios coloridos e levará ao banco de acordo com a configuração.
#
# 5. Altere "maxWeightBeforeSmelt" para definir o peso máximo antes de fundir os minérios.
#
# 6. Altere a linha "if Weight() > (maxWeightBeforeSmelt * 0.8)" para ajustar o percentual de peso que deseja levar ao banco.
import clr
import System
clr.AddReference('System.Core')
clr.ImportExtensions(System.Linq)
from Assistant import Engine
from System import Random
# Configurações para mineração no Imperial Shard
miningToolName = "Picareta"
maxWeightBeforeSmelt = 300  # Peso máximo antes de fundir o minério -> Aqui você coloca o peso máximo do seu personagem para o momento de fundir.
forgeDistance = 2  # Distância máxima para acessar a forja
storeIngots = 0x4003133a  # ID do baú de lingotes - > Aqui você altera para a id da bag dentro do seu banco! (coloque 0 se não quiser ir ao banco)
miningTool = 0
def GetSelfItems(filter=None):
    if Engine.Player == None:
        return []
   
    if Engine.Player.Backpack.Container == None:
        UseObject('backpack')
        WaitForContents('backpack', 5000)
    items = Engine.Player.Backpack.Container.SelectEntities(lambda i: filter == None or i.Name.Contains(filter))
    if items == None:
        return []
    return items.Select(lambda i: i.Serial)
def GetFirst(l):
    for item in l:
        return item
    return 0
def GetPickaxe():
    if FindLayer("OneHanded"):
        if miningToolName in Name(GetAlias('found')):
            return
        ClearHands()
        Pause(1500)
   
    miningToolList = GetSelfItems(miningToolName)
    if miningToolList == []:
        SysMessage("SEM PICARETA", 39)
    else:
        miningTool = GetFirst(miningToolList)
        SysMessage("PICARETA: " + hex(miningTool), 64)
        EquipItem(miningTool, "OneHanded")
        Pause(2000)
def Mine():
    ClearJournal()
    while Weight() < maxWeightBeforeSmelt:
        for ore in [0x9caa, 0x9cab, 0x9cac]:
            if FindType(ore, 20):
               
                if Z('found') != Z() or X('found') < 2555 or X('found') > 2581 or Y('found') > 495 or Y('found') < 474:
                    IgnoreObject('found')
                else:
                    WalkTo('found', 1)
                   
                    while Weight() < maxWeightBeforeSmelt and FindObject('found', 2) and not InJournal("Voce precisaria de ", 'system'):
                        if not UseLayer("OneHanded"):
                            break
                       
                        WaitForTarget(5000)
                        Target('found')
                        if WaitForJournal("Voce precisaria de ", 5000, 'system'):
                            IgnoreObject('found')
                   
                    ClearJournal()
       
        if not UseLayer("OneHanded"):
            break
       
        WaitForTarget(5000)
        Target('self')
         
        if WaitForJournal("nao tem minerio aqui", 1500, 'system') or WaitForJournal("Você não pode minerar isto.", 2000, 'system'):
            WalkRandom()
            ClearJournal()
def WalkRandom():
    rand = ['East', 'West', 'North', 'South', 'Northeast', 'Southeast', 'Southwest', 'Northwest']
    rando = Random()
    Run(rand[rando.Next(8)])
    Pause(500)
    Run(Direction('self'))
    Run(Direction('self'))
    Run(Direction('self'))
    while Y() > 495:
        Pause(100)
        Run('North')
def WalkTo(alias, distance):
    walkfail = 0
    while Distance(alias) > distance:
        x = X()
        y = Y()
        if walkfail < 3:
            Run(DirectionTo(alias))
        else:
            WalkRandom()
        Pause(100)
        if x == X() and y == Y():
            walkfail += 1
        else:
            walkfail = 0
def Smelt():
    oreTypes = [0x19b7, 0x19b8, 0x19b9, 0x19ba]
   
    WalkTo('forge', forgeDistance)
    ClearIgnoreList()
    for ore in oreTypes:
        while FindType(ore, -1, 'backpack'):
            if Graphic('found') == 0x19b7:
                item = Engine.Items.GetItem(GetAlias('found'))
                if item.Count <= 1:
                    IgnoreObject('found')
                    continue
            UseObject('found')
            WaitForTarget(5000)
            Target('forge')
            Pause(1000)
            IgnoreObject('found')
def StoreInBank():
    if storeIngots <= 0:
        return
    gobank = [(2564, 487), (2559, 497), (2559, 502), (2548, 501), (2527, 501), (2527, 516), (2509, 516), (2509, 541)]
   
    for (x, y) in gobank:
        Pathfind(x, y, Z())
        while Pathfinding():
            Pause(3000)
    if X() == gobank[-1][0] and Y() == gobank[-1][1]:
        Msg("banco")
        Pause(1000)
    else:
        return
    ClearIgnoreList()
    FindObject(storeIngots, -1, 'self')
    SetAlias('ore chest', 'found')
    while FindType(0x1bf2, -1, 'backpack'):
        MoveItem('found', 'ore chest')
        Pause(1500)
        IgnoreObject('found')
    gobank.reverse()
    for (x, y) in gobank:
        Pathfind(x, y, Z())
        while Pathfinding():
            Pause(100)
if not FindObject('forge'):
    PromptAlias('forge')  # Solicita ao usuário que defina a forja se ainda não estiver definida
ClearIgnoreList()
GetPickaxe()
while FindLayer("OneHanded"):
    WalkRandom()
    Mine()
    Smelt()
    if Weight() > (maxWeightBeforeSmelt * 0.8):
        StoreInBank()
    GetPickaxe()
Smelt()
if FindType(0x1bf2, -1, 'backpack'):  # Armazena os lingotes restantes, se houver
    StoreInBank()






</pre>
</pre>

Edição atual tal como às 19h41min de 25 de fevereiro de 2025




# Shard: Imperial Shard

# Macro: Mineração em Minoc, minera, funde e guarda os minérios no banco.

  ####    ##   ##  #####    ######   #####     ####      ##     ##
   ##     ### ###  ##  ##   ##       ##  ##     ##      ####    ##
   ##     #######  ##  ##   ##       ##  ##     ##     ##  ##   ##
   ##     ## # ##  #####    ####     #####      ##     ######   ##
   ##     ##   ##  ##       ##       ####       ##     ##  ##   ##
   ##     ##   ##  ##       ##       ## ##      ##     ##  ##   ##
  ####    ##   ##  ##       ######   ##  ##    ####    ##  ##   ######
  
   ##      ####    ######
  ####    ##  ##   ##
 ##  ##   ##       ##
 ######   ## ###   ####
 ##  ##   ##  ##   ##
 ##  ##   ##  ##   ##
 ##  ##    ####    ######
 
  ####    ##  ##     ##     #####    ####
 ##  ##   ##  ##    ####    ##  ##   ## ##
 ##       ##  ##   ##  ##   ##  ##   ##  ##
  ####    ######   ######   #####    ##  ##
     ##   ##  ##   ##  ##   ####     ##  ##
 ##  ##   ##  ##   ##  ##   ## ##    ## ##
  ####    ##  ##   ##  ##   ##  ##   #### 
 
 
 
 # Instruções para uso do macro de mineração:
 
# 1. Coloque um baú ou mochila no banco e anote o ID dele usando o Classic Assist.
#   -> Clique em Object Inspector, selecione a mochila ou bau, anote o seu serial e substitua o código na linha 'storeIngots'.
#   -> Coloque 0 se não quiser ir ao banco.
#
# 2. Na primeira execução, escolha a forja quando solicitado.
#
# 3. Deixe a picareta na mochila do personagem. O macro pegará a picareta automaticamente quando necessário.
#
# 4. O macro minerará priorizando os minérios coloridos e levará ao banco de acordo com a configuração.
#
# 5. Altere "maxWeightBeforeSmelt" para definir o peso máximo antes de fundir os minérios.
#
# 6. Altere a linha "if Weight() > (maxWeightBeforeSmelt * 0.8)" para ajustar o percentual de peso que deseja levar ao banco.


import clr
import System
clr.AddReference('System.Core')
clr.ImportExtensions(System.Linq)
from Assistant import Engine
from System import Random

# Configurações para mineração no Imperial Shard
miningToolName = "Picareta"
maxWeightBeforeSmelt = 300  # Peso máximo antes de fundir o minério -> Aqui você coloca o peso máximo do seu personagem para o momento de fundir.
forgeDistance = 2  # Distância máxima para acessar a forja
storeIngots = 0x4003133a  # ID do baú de lingotes - > Aqui você altera para a id da bag dentro do seu banco! (coloque 0 se não quiser ir ao banco)

miningTool = 0

def GetSelfItems(filter=None):
    if Engine.Player == None:
        return []
    
    if Engine.Player.Backpack.Container == None:
        UseObject('backpack')
        WaitForContents('backpack', 5000)

    items = Engine.Player.Backpack.Container.SelectEntities(lambda i: filter == None or i.Name.Contains(filter))

    if items == None:
        return []

    return items.Select(lambda i: i.Serial)

def GetFirst(l):
    for item in l:
        return item
    return 0

def GetPickaxe():
    if FindLayer("OneHanded"):
        if miningToolName in Name(GetAlias('found')):
            return
        ClearHands()
        Pause(1500)
    
    miningToolList = GetSelfItems(miningToolName)
    if miningToolList == []:
        SysMessage("SEM PICARETA", 39)
    else:
        miningTool = GetFirst(miningToolList)
        SysMessage("PICARETA: " + hex(miningTool), 64)
        EquipItem(miningTool, "OneHanded")
        Pause(2000)

def Mine():
    ClearJournal()

    while Weight() < maxWeightBeforeSmelt:
        for ore in [0x9caa, 0x9cab, 0x9cac]:
            if FindType(ore, 20):
                
                if Z('found') != Z() or X('found') < 2555 or X('found') > 2581 or Y('found') > 495 or Y('found') < 474:
                    IgnoreObject('found')
                else:
                    WalkTo('found', 1)
                    
                    while Weight() < maxWeightBeforeSmelt and FindObject('found', 2) and not InJournal("Voce precisaria de ", 'system'):
                        if not UseLayer("OneHanded"):
                            break
                        
                        WaitForTarget(5000)
                        Target('found')

                        if WaitForJournal("Voce precisaria de ", 5000, 'system'):
                            IgnoreObject('found')
                    
                    ClearJournal()
        
        if not UseLayer("OneHanded"):
            break
        
        WaitForTarget(5000)
        Target('self')
          
        if WaitForJournal("nao tem minerio aqui", 1500, 'system') or WaitForJournal("Você não pode minerar isto.", 2000, 'system'):
            WalkRandom()
            ClearJournal()

def WalkRandom():
    rand = ['East', 'West', 'North', 'South', 'Northeast', 'Southeast', 'Southwest', 'Northwest']
    rando = Random()
    Run(rand[rando.Next(8)])
    Pause(500)
    Run(Direction('self'))
    Run(Direction('self'))
    Run(Direction('self'))
    while Y() > 495:
        Pause(100)
        Run('North')

def WalkTo(alias, distance):
    walkfail = 0
    while Distance(alias) > distance:
        x = X()
        y = Y()
        if walkfail < 3:
            Run(DirectionTo(alias))
        else:
            WalkRandom()
        Pause(100)
        if x == X() and y == Y():
            walkfail += 1
        else:
            walkfail = 0

def Smelt():
    oreTypes = [0x19b7, 0x19b8, 0x19b9, 0x19ba]
    
    WalkTo('forge', forgeDistance)
    ClearIgnoreList()

    for ore in oreTypes:
        while FindType(ore, -1, 'backpack'):
            if Graphic('found') == 0x19b7:
                item = Engine.Items.GetItem(GetAlias('found'))
                if item.Count <= 1:
                    IgnoreObject('found')
                    continue
            UseObject('found')
            WaitForTarget(5000)
            Target('forge')
            Pause(1000)
            IgnoreObject('found')

def StoreInBank():
    if storeIngots <= 0:
        return

    gobank = [(2564, 487), (2559, 497), (2559, 502), (2548, 501), (2527, 501), (2527, 516), (2509, 516), (2509, 541)]
    
    for (x, y) in gobank:
        Pathfind(x, y, Z())
        while Pathfinding():
            Pause(3000)

    if X() == gobank[-1][0] and Y() == gobank[-1][1]:
        Msg("banco")
        Pause(1000)
    else:
        return

    ClearIgnoreList()
    FindObject(storeIngots, -1, 'self')
    SetAlias('ore chest', 'found')

    while FindType(0x1bf2, -1, 'backpack'):
        MoveItem('found', 'ore chest')
        Pause(1500)
        IgnoreObject('found')

    gobank.reverse()
    for (x, y) in gobank:
        Pathfind(x, y, Z())
        while Pathfinding():
            Pause(100)

if not FindObject('forge'):
    PromptAlias('forge')  # Solicita ao usuário que defina a forja se ainda não estiver definida

ClearIgnoreList()
GetPickaxe()
while FindLayer("OneHanded"):
    WalkRandom()
    Mine()
    Smelt()
    if Weight() > (maxWeightBeforeSmelt * 0.8):
        StoreInBank()
    GetPickaxe()

Smelt()
if FindType(0x1bf2, -1, 'backpack'):  # Armazena os lingotes restantes, se houver
    StoreInBank()