리콜럼버
페이지 정보
작성자 LastEnvoy 작성일 24-02-14 22:17 조회 348 댓글 9본문
from ClassicAssist.UO.Data import Statics
from ClassicAssist.UO import UOMath
from Assistant import Engine
from System import Convert
import clr
clr.AddReference('System.Core')
runebooks = [0x42206250, 0x42206252, 0x4220624f, 0x42206251] #Replace this with your own runebooks
homebook = 0x4220624e #Replace this with your own runebook with dropoff location
resChest = 0x41cd779e #Replace this with your resource container
recallbuttons = list(range(10,26))
lumberresources = [0xeed, 0x1bd7, 0x1bdd, 0x3199, 0x318f, 0x2f5f, 0x3190, 0x3191, 0x5738]
craftGumpId = 0x38920abd
def GetRunebookEntries(serial):
entries = []
SysMessage(str(serial))
UseObject(serial)
if WaitForGump(0x59, 5000):
res,gump = Engine.Gumps.GetGump(0x59)
y = 60
while y <= 165:
element = gump.Pages[1].GetElementByXY(145, y)
if element != None and element.Hue != 0:
entries.append(element.Text)
y = y + 15
y = 60
while y <= 165:
element = gump.Pages[1].GetElementByXY(305, y)
if element != None and element.Hue != 0:
entries.append(element.Text)
y = y + 15
return entries
def GetNearestTree():
trees = []
for x in range(Engine.Player.X-2, Engine.Player.X+3):
for y in range(Engine.Player.Y-2, Engine.Player.Y+3):
statics = Statics.GetStatics(Convert.ChangeType(Engine.Player.Map, int), x, y)
if statics == None:
continue
for s in statics:
if s.Name.Contains("tree"):
trees.append({'X': (s.X - Engine.Player.X), 'Y': (s.Y - Engine.Player.Y), 'Z': s.Z})
return trees
def Lumber():
Trees = GetNearestTree()
if len(Trees) > 0:
TotalTrees = len(Trees)
SysMessage(str(TotalTrees) + " total trees in queue")
for tree in Trees:
ClearJournal()
while not InJournal("not enough") and not InJournal("can't use an axe"):
UseLayer("TwoHanded")
WaitForTarget(1000)
TargetTileOffsetResource(tree['X'], tree['Y'], tree['Z'])
Pause(1100)
def DropResources(runebook):
while not FindObject(resChest):
UseObject(runebook)
WaitForGump(0x59, 5000)
ReplyGump(0x59, 10)
Pause(5000)
for item in lumberresources:
while FindType(item, -1, "backpack"):
MoveItem("found", resChest)
Pause(1000)
def DropResourcesToBank(runebook):
while not FindObject(0x220):
UseObject(runebook)
WaitForGump(0x59, 5000)
ReplyGump(0x59, 15)
Pause(2000)
while FindType(0x1bd7, -1, 'backpack'):
Msg("bank")
FindObject(0x220)
Pause(1000)
WaitForContext('found', 5, 5000)
WaitForGump(0x9bade6ea, 5000)
ReplyGump(0x9bade6ea, 1)
Pause(3000)
for item in lumberresources:
while FindType(item, -1, "backpack"):
MoveItem("found", resChest)
Pause(1000)
def CutLogs():
while FindType(0x1bdd, -1, "backpack"):
UseLayer("TwoHanded")
WaitForTarget(5000)
Target("found")
Pause(1000)
while True:
for y in range(len(runebooks)):
currentbook = runebooks[y]
entries = GetRunebookEntries(currentbook)
for x in range(len(entries)):
if GetEnemy(['Criminal', 'Gray','Murderer'], 'any', 'closest', 'any', 1):
Target("enemy") # 타겟 잡기
HeadMsg("▼", "enemy", 33)
while not InRange("enemy", 2):
Pause(300)
Attack("enemy")
if Poisoned("self"): #독 푸는 부분
Cast("Arch Cure")
WaitForTarget(2000)
Target("self")
elif DiffHits('self') > 20: #캐릭터 피 숫자 바꾸시면 됩니다
Cast("Greater Heal")
WaitForTarget(2200)
Target("self")
UseObject(currentbook)
WaitForGump(0x59, 5000)
ReplyGump(0x59, recallbuttons[x])
Pause(5000)
ClearJournal()
Lumber()
if Weight() >= (MaxWeight() - 80):
CutLogs()
if Weight() >= (MaxWeight() - 80):
DropResourcesToBank(homebook)
UseObject(currentbook)
WaitForGump(0x59, 5000)
ReplyGump(0x59, recallbuttons[x])
Pause(5000)
Resync()
댓글목록 9
mrgoora님의 댓글
mrgoora 작성일
runebooks = [0x419be90e, 0x419be909, 0x419be90c, 0x419be90a] #Replace this with your own runebooks
homebook = 0x419be90b #Replace this with your own runebook with dropoff location
resChest = 0x40d8713e #Replace this with your resource container
럼젝 실행까지 다 잘 되는데 집에 갈려고 하면..책의 이곳은 비어 있습니다 라고 나오네요.;;
잠이보약님의 댓글의 댓글
잠이보약 작성일
제가 볼때 집에 있는 상자를 이용하신다면
대략 133번째줄에있는 DropResourcesToBank(homebook)를
DropResources(homebook) 로 바꿔주시면 될꺼같습니다
하얀악녀님의 댓글
하얀악녀 작성일
이거 무게 얼마에 돌아 가는지 알수 있을려나요?
바닥에 나무 다 떨어 지는데
조정 할려면 어디를 수정 해야 하는지?
잠이보약님의 댓글의 댓글
잠이보약 작성일
if Weight() >= (MaxWeight() - 80):
이걸로 무게를 체크하는데
대략적으로 설명드리면
현재 무게가 최대무게 - 80 인 값보다 크다면 입니다
넉넉하게 조정하고 싶으시면 80을 좀더 키우시면 될듯합니다
하얀악녀님의 댓글의 댓글
하얀악녀 작성일200으로 조정을 했는데도 집으로 귀환을 안하네요
훔바바님의 댓글
훔바바 작성일
if GetEnemy(['Criminal', 'Gray','Murderer'], 'any', 'closest', 'any', 1):
Target("enemy") # 타겟 잡기
HeadMsg("▼", "enemy", 33)
while not InRange("enemy", 2):
Pause(300)
Attack("enemy")
if Poisoned("self"): #독 푸는 부분
Cast("Arch Cure")
WaitForTarget(2000)
Target("self")
elif DiffHits('self') > 20: #캐릭터 피 숫자 바꾸시면 됩니다
Cast("Greater Heal")
WaitForTarget(2200)
Target("self")
이부분이 잘못 들어 갔는거 같네요 이부분 없애고 하니까 집에 가네요
판자 무게가 가벼워서 무게도 조정해서 하는게 좋을거 같네요
메크로 올려주신 덕분에 편하게 게임 하고 있습니다 감사합니다 ㅎ
김기말님의 댓글
김기말 작성일
if Weight() >= (MaxWeight() - 80):
CutLogs()
if Weight() >= (MaxWeight() - 80):
DropResourcesToBank(homebook)
UseObject(currentbook)
WaitForGump(0x59, 5000)
ReplyGump(0x59, recallbuttons[x])
Pause(5000)
1. 집상자 이용하고 싶다 : 저 맥스웨이트로 비교하는 if문 아래에 DropResourcesToBank(homebook) -> DropResources(homebook)으로 변경
2. 뱅크 이용하고 싶다 : 그대로
3. 책이 비어있다고 뜬다 -> DropResourcesToBank(homebook)나 DropResources(homebook) 함수선언 부분 밑의
while not FindObject(0x220):
UseObject(runebook)
WaitForGump(0x59, 5000)
ReplyGump(0x59, 15)
Pause(2000)
에서 밑에 WaitForGump(0x59, 5000)
ReplyGump(0x59, 15) 이 부분이 정해진 룬북 위치 클릭하는 곳인데(사람마다 다르겠죠?) 이걸 룬북눌러서 자기 집이나 은행으로 리콜하는걸 다른 매크로에서 녹화 하신후 자기 룬북에 맞게 교체해주시면 됨
당연하겠지만 룬위치는 리소스상자 or bank 명령어가 바로 먹힐 정도로 가까워야 됨
잘사용하겠습니다 고맙습니다!
fisherH님의 댓글의 댓글
fisherH 작성일엇 저는 집 상자를 이용하는거고 저 함수로 변경하니까 너무 잘됬습니다 감사합니다 김기말님
마스터골드님의 댓글
마스터골드 작성일좋은자료 감사합니다!