From 638085fc6e0cda8aa7d624ec9aae004952320eec Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Fri, 5 Jun 2020 15:18:13 +0900 Subject: [PATCH] Added another crafting recipe logic Refined regular long-length crafting rotation and added a quick crafting rotation. --- autocraft.ahk | 201 +++++++++++++++++++++++++++++++++++++++++++++++--- autocraft.exe | Bin 1116160 -> 1119232 bytes 2 files changed, 191 insertions(+), 10 deletions(-) diff --git a/autocraft.ahk b/autocraft.ahk index 49a1e4a..9a37e9a 100644 --- a/autocraft.ahk +++ b/autocraft.ahk @@ -112,6 +112,7 @@ WinActivate, FINAL FANTASY XIV ;100% Quality - 0x60DC97 336 269 WaitForCraftingWindow() { + global toggle Stdout("Waiting for Crafting Window...") sleep, 500 loop { @@ -119,7 +120,7 @@ WaitForCraftingWindow() { PixelGetColor,color,%MouseX%,%MouseY% Stdout(color . " " . MouseX . " " . MouseY) sleep, 50 - } until CraftingWindowOpen() + } until (CraftingWindowOpen() or !toggle) send, {Numpad0} sleep, 50 send, {Numpad0} @@ -133,10 +134,26 @@ WaitForCraftingWindow() { } } +ChooseBestProgressStep(ByRef step,ByRef cp) { + if (cp >= 32) { + PressKeyWithModifier("Shift","2") + ProgressStep(step,cp,32) + } else + if (cp >= 18) { + send, {2} + ProgressStep(step,cp,16) + } else + { + PressKeyWithModifier("Ctrl","3") + ProgressStep(step,cp,0) + } +} + ProgressStep(ByRef step,ByRef cp,cpcost,stepamt=1) { cp -= cpcost step += stepamt } + WaitForReady() { global toggle loop { @@ -150,18 +167,144 @@ WaitForReady() { } } +CraftingRotationTemplate(ByRef STEP) { + global toggle + CP = 252 + FINALSTEP = 13 + + if (!WaitForReady()) { + return + } + + loop { + if (IsMaxQuality()) { + STEP := FINALSTEP + } + Switch STEP + { + Case 1: + send, {5} + ProgressStep(STEP,CP,18) + Case 2: + if (IsExcellent()) { + send, {2} + ProgressStep(STEP,CP,18,2) + WaitForReady() + PressKeyWithModifier("Ctrl","1") + ProgressStep(STEP,CP,56,0) + } + TricksOfTheTrade(CP) + PressKeyWithModifier("Ctrl","1") + ProgressStep(STEP,CP,56) + Case 3, 4, 5, 6, 7: + if ((IsGood() or IsExcellent()) and CP > 160) { + send, {2} + ProgressStep(STEP,CP,18) + } else { + PressKeyWithModifier("Ctrl","3") + ProgressStep(STEP,CP,0) + } + } + + loop { + Stdout("Waiting for Ready...") + sleep, 250 + } until (ActionReady() or STEP >= FINALSTEP + 1) + Stdout("STEP " . STEP . ": " . CP) + } until (STEP >= FINALSTEP + 1 or !toggle) +} + +QuickCraftRotation(ByRef STEP) { + global toggle + CP = 252 + FINALSTEP = 3 + + GREATSTRIDES = 0 + INNOVATION = 0 + + DURABILITY := 40 + + SIDESTEPS = 0 + ACTIVATESIDESTEP := false + + if (!WaitForReady()) { + return + } + + loop { + if (IsMaxQuality()) { + STEP := FINALSTEP + } + + if (INNOVATION > 0) { + INNOVATION := INNOVATION - 1 + } + if (GREATSTRIDES > 0) { + GREATSTRIDES := GREATSTRIDES - 1 + } + + Switch STEP + { + Case 1: + send, {5} + ProgressStep(STEP,CP,18) + Case 2: + if (DURABILITY = 10) { + STEP := 99 + send, {1} + ProgressStep(STEP,CP,0) + } else { + STEP := 1 + } + if (GREATSTRIDES = 0) { + TricksOfTheTrade(CP) + PressKeyWithModifier("Ctrl","5") + ProgressStep(STEP,CP,32) + GREATSTRIDES := 4 + } else + if (!IsGood() and !IsExcellent() and INNOVATION = 0) { + send, {4} + ProgressStep(STEP,CP,18) + INNOVATION := 4 + } else + if (IsGood() or IsExcellent()) { + ChooseBestProgressStep(STEP,CP) + DURABILITY := DURABILITY - 10 + GREATSTRIDES := 0 + } else { + send, {2} + ProgressStep(STEP,CP,18) + DURABILITY := DURABILITY - 10 + GREATSTRIDES := 0 + } + Case 3: + send, {1} + ProgressStep(STEP,CP,0) + } + + loop { + Stdout("Waiting for Ready...") + sleep, 250 + } until (ActionReady() or STEP >= FINALSTEP + 1) + Stdout("STEP " . STEP . ": " . CP) + } until (STEP >= FINALSTEP + 1 or !toggle) +} + CraftingRotation(ByRef STEP) { global toggle CP = 252 FINALSTEP = 13 + SIDESTEPS = 0 + ACTIVATESIDESTEP := false + if (!WaitForReady()) { return } loop { if (IsMaxQuality()) { - STEP = FINALSTEP + STEP := FINALSTEP } Switch STEP { @@ -188,21 +331,58 @@ CraftingRotation(ByRef STEP) { ProgressStep(STEP,CP,0) } Case 8: + if (CP >= 176) { + ACTIVATESIDESTEP := true + SIDESTEPS = 0 + } TricksOfTheTrade(CP) send, {3} ProgressStep(STEP,CP,88) + sleep, 2000 Case 9: TricksOfTheTrade(CP) - send, {4} - ProgressStep(STEP,CP,18) - Case 10, 11, 12: - if (CP > 54) { - PressKeyWithModifier("Shift","2") - ProgressStep(STEP,CP,32) + if (ACTIVATESIDESTEP) { + Stdout("SIDESTEP " . SIDESTEPS) + SIDESTEPS := SIDESTEPS+1 ;1 + PressKeyWithModifier("Ctrl","3") + ProgressStep(STEP,CP,0) } else { - send, {2} + send, {4} ProgressStep(STEP,CP,18) } + Case 10, 11, 12: + if (ACTIVATESIDESTEP) { + Stdout("SIDESTEP " . SIDESTEPS) + if (SIDESTEPS >= 2) { + ACTIVATESIDESTEP := false + if (CP >= 194) { + send, {2} + ProgressStep(STEP,CP,18) + } else { + PressKeyWithModifier("Ctrl","3") + ProgressStep(STEP,CP,0) + } + STEP = 8 + } else { + SIDESTEPS := SIDESTEPS+1 ;2,3 + PressKeyWithModifier("Ctrl","3") + ProgressStep(STEP,CP,0) + } + } else + { + if (CP > 54) { + PressKeyWithModifier("Shift","2") + ProgressStep(STEP,CP,32) + } else + if (CP >= 18) { + send, {2} + ProgressStep(STEP,CP,18) + } else + { + PressKeyWithModifier("Ctrl","3") + ProgressStep(STEP,CP,0) + } + } Case 13: send, {1} ProgressStep(STEP,CP,0) @@ -302,7 +482,8 @@ loop { Stdout("Crafting is on. Starting craft...") STEP = 1 if (WaitForCraftingWindow()) { - CraftingRotation(STEP) + ;CraftingRotation(STEP) + QuickCraftRotation(STEP) } else { toggle = false Stdout("Toggle4: " . toggle) diff --git a/autocraft.exe b/autocraft.exe index dc82bb8bd21cb91dbe0f21fbbfadf9d7b81b0441..43eb4f5ed547465a009f7957a37c60ea7b0eeb9f 100644 GIT binary patch delta 1591 zcmbVMUr19?7{7P<_p0>`!=%iP(jQkd?>18>%$jrB4bkaVVD!+M*Ak~2-btY@1%uu~ z=;1_2)SC}hg2dh=B0`9w*WP>UA+U5_De60OcbyH3Xz<(kef!S$@BF?qJKr(8*s*LA z#nt`Sbh;MIef*ENFhDGy`f$GTz`Wc)Sw73BLl9?ju*a`=NBzJ&a{_&eU> z3$ySIa~bi=g|>ua0Ui!Wo*R*frnakEjK13d0v0kQ4G)pJP?WT}h{H~w>fkt{#nh-Z z6tz0+7Aa2Du%>cOwify*35UuJCtFj-i9Xk%l72}-A^o}qX321oEs3=aC=iPR>S#0^ zjH&efCfqD-b&*b`$KCA@czsk!!gOLS35qDj>Df&TAzm3RjVw?s2IaW_>=|fpnrjKRW@L(3-IZC^e;62W@ z;3BqEO4a}?)#;Qpb!^Z|rfl?w4hI@!WBOQ^;k0WJI4Z22R&0SoJVQU|P}Q4N00wX5 zZ@Wg(x+0OmItvMo4H9JDTOlxv#6W4b-_NWd=4|3+5ko5KzRP{}9BJ_<%u8*sl z=10NRvFfcJpGD%@#|Rw58OhoAkN?Z`vkvvmoZG(~!fWybHI-1Z4Ik<1CU{R6iuf0u z?5^ED(aDy{<73NYYi?p%*-dY;@d-6YmT_9CgR?{ntGIf^F3U3Y=}_%s@p413u>RO! zWFl5qYZOgt$!TH`zlDpA)5zFQ+2}HgCbOc43sc*TvS3$-i#M-B#mxWYV|8ZIu=eeL zYCg4Wsl`gq$=S$U)2g<|CAyTv65nn?=gE|yU8E(gOV)R0ng7;Tby51+nxap1=quyX krJk>2#m3r5*^gFrqH-HT`P{pcnEMIwB6_vZ{Fr^gFOX>57XSbN delta 358 zcmZoz;nFa{WrHCjH3PA=DB)$R~-vo{CfyR#k^8YX*%!^nh$nXVd7tDNN2D|OXa|C8ZZa?-- zfRS-}@qYo+=`244oLFoX42`GC3Dz(h7#M6n_d~#wk