Hi guys! I've been wanting to teach myself a bit more about writing macros, and decided the easiest way to do that would be to pick a project and teach myself how to do it. At the same time, I wanted to farm up massive amounts of mid-level tradeskill materials for maxing out tradeskills on my SK. What I eventually landed on was this - a macro to run around certain zones and melee mobs to death. I wanted it to be as modular as possible and to be dependent on as few plugins as possible. I like to think I've done a pretty good job of that - it should work for any high level melee dependent character, and the only plugins it requires are MQ2Melee, and MQ2MoveUtils. At the moment, it is compatible with Halls of Honor and Crypt of Decay, though I plan to add more zones in the future. I've tested it in both zones overnight on a 105 warrior in T1 TDS gear and woken up to find the macro still plugging away with no issues.
Essentially, it works thusly: It detects what zone you're in and runs your toon through a set of waypoints for that zone, stopping to melee mobs to death as it picks up aggro. If your HP drops below 90%, it'll sit down and med. It's probably not the most efficient way to farm tradeskill items, but it is easy and requires almost no setup. Just click off any damage shields you may have, and create two bandolier slots - One named "Tome" with a Tome of the Heroes Journey in your primary slot and no other weapons (Any non-weapon you can put in your primary would work, the tome is just convenient since every character can summon one right to them) and one named "Kill" with your weapons. This is to prevent you from being summoned and getting stuck.
As you move from place to place, it'll echo the destination it's moving to as well as when it gets there. If you don't want to see that, change the line "/declare debug int outer 1" to "/declare debug int outer 0"
Anyways, I hope you guys enjoy this and are able to use it. I'm always open to suggestions, criticism, and requests (if they're in my power - I'm still a complete novice to writing macros)
To do:
The macro:
(available below as a direct download as well)
EDIT: I just use advloot to loot, so you'll want to watch it run the first lap or two in each zone and set up what to loot vs ignore.
And as always, running a bot fully AFK is always a risk. I highly recommend using MQ2Posse, and not being a dick. I take no responsibility if you get yourself banned.
Essentially, it works thusly: It detects what zone you're in and runs your toon through a set of waypoints for that zone, stopping to melee mobs to death as it picks up aggro. If your HP drops below 90%, it'll sit down and med. It's probably not the most efficient way to farm tradeskill items, but it is easy and requires almost no setup. Just click off any damage shields you may have, and create two bandolier slots - One named "Tome" with a Tome of the Heroes Journey in your primary slot and no other weapons (Any non-weapon you can put in your primary would work, the tome is just convenient since every character can summon one right to them) and one named "Kill" with your weapons. This is to prevent you from being summoned and getting stuck.
As you move from place to place, it'll echo the destination it's moving to as well as when it gets there. If you don't want to see that, change the line "/declare debug int outer 1" to "/declare debug int outer 0"
Anyways, I hope you guys enjoy this and are able to use it. I'm always open to suggestions, criticism, and requests (if they're in my power - I'm still a complete novice to writing macros)
To do:
Rich (BB code):
-Add new zones
-Refine the waypoints in Crypt of decay, it likes to briefly run into walls
-Set it up to pull waypoints from an .ini file rather than being hardcoded in
-Come up with an easier way to copy waypoints over than MQ2Log
The macro:
(available below as a direct download as well)
Rich (BB code):
|***********
ZoneFarm.mac
By 1everdude
***********|
sub main
/bandolier activate Tome
/call welcomeMessage
/if (${Zone.ShortName.Equal[hohonora]}) {
/call hohonora
}
/if (${Zone.ShortName.Equal[Codecay]}) {
/call codecay
}
/echo Uh-oh! Looks like the zone you're currently in isn't supported. If you'd like it to be feel free to request it on the thread for this macro on Redguides. I make no promises though.
/return
Sub welcomeMessage
/echo ZoneFarm.mac 1.0 by 1everdude
/delay 2s
/echo If you want this to actually work for you, make sure you read the thread on RedGuides.
/delay 2s
/echo If things aren't working as planned, please make sure the zone you're trying to use is supported, you have your bandoliers set up, and your toon can actually handle the zone.
/delay 2s
/return
Sub hohonora
/echo Your zone was detected as: Halls of Honor. Have fun!
/delay 2s
:hohLoop
/call Moving -4 -2613
/call Moving -4 -2613
/call Moving 4 -2418
/call Moving 4 -2418
/call Moving 95 -2389
/call Moving 95 -2389
/call Moving 82 -2234
/call Moving 82 -2234
/call Moving -76 -2226
/call Moving -76 -2226
/call Moving -79 -2404
/call Moving -79 -2404
/call Moving 3 -2319
/call Moving 3 -2319
/call Moving 329 -2322
/call Moving 329 -2322
/call Moving 299 -2226
/call Moving 299 -2226
/call Moving 198 -2136
/call Moving 198 -2136
/call Moving 299 -2226
/call Moving 299 -2226
/call Moving 387 -2197
/call Moving 387 -2197
/call Moving 393 -1965
/call Moving 393 -1965
/call Moving 277 -1928
/call Moving 277 -1928
/call Moving 43 -1949
/call Moving 43 -1949
/call Moving 12 -1973
/call Moving 12 -1973
/call Moving -87 -1936
/call Moving -87 -1936
/call Moving -264 -1928
/call Moving -264 -1928
/call Moving -392 -2008
/call Moving -392 -2008
/call Moving -399 -2193
/call Moving -399 -2193
/call Moving -341 -2245
/call Moving -341 -2245
/call Moving -362 -2275
/call Moving -362 -2275
/call Moving -388 -2189
/call Moving -388 -2189
/call Moving -392 -1628
/call Moving -392 -1628
/call Moving -397 -1425
/call Moving -397 -1425
/call Moving -301 -1501
/call Moving -301 -1501
/call Moving -291 -1613
/call Moving -291 -1613
/call Moving -209 -1697
/call Moving -209 -1697
/call Moving -364 -1556
/call Moving -364 -1556
/call Moving -363 -1508
/call Moving -363 -1508
/call Moving 282 -1519
/call Moving 282 -1519
/call Moving 314 -1598
/call Moving 314 -1598
/call Moving 207 -1701
/call Moving 207 -1701
/call Moving 322 -1601
/call Moving 322 -1601
/call Moving 395 -1424
/call Moving 395 -1424
/call Moving 399 -1046
/call Moving 399 -1046
/call Moving 12 -1025
/call Moving 12 -1025
/call Moving 8 -749
/call Moving 8 -749
/call Moving 11 -361
/call Moving 11 -361
/call Moving 105 -272
/call Moving 105 -272
/call Moving 3 -155
/call Moving 3 -155
/call Moving -4 56
/call Moving -4 56
/call Moving -6 -160
/call Moving -6 -160
/call Moving -114 -251
/call Moving -114 -251
/call Moving -656 -259
/call Moving -656 -259
/call Moving -1032 -269
/call Moving -1032 -269
/call Moving -1033 -508
/call Moving -1033 -508
/call Moving -1033 -315
/call Moving -1033 -315
/call Moving -1050 -11
/call Moving -1050 -11
/call Moving -1051 -213
/call Moving -1051 -213
/call Moving -1144 -249
/call Moving -1144 -249
/call Moving -1343 -258
/call Moving -1343 -258
/call Moving -1537 -260
/call Moving -1537 -260
/call Moving -1700 -234
/call Moving -1700 -234
/call Moving -1703 -303
/call Moving -1703 -303
/call Moving -1789 -397
/call Moving -1789 -397
/call Moving -1847 -261
/call Moving -1847 -261
/call Moving -1810 -119
/call Moving -1810 -119
/call Moving -1961 -254
/call Moving -1961 -254
/call Moving -2261 -263
/call Moving -2261 -263
/call Moving -2413 -133
/call Moving -2413 -133
/call Moving -2541 -108
/call Moving -2541 -108
/call Moving -2489 -408
/call Moving -2489 -408
/call Moving -2494 -701
/call Moving -2494 -701
/call Moving -2538 -1001
/call Moving -2538 -1001
/call Moving -2445 -998
/call Moving -2445 -998
/call Moving -2262 -853
/call Moving -2262 -853
/call Moving -1967 -852
/call Moving -1967 -852
/call Moving -1666 -860
/call Moving -1666 -860
/echo Returning to beginning.
/call Moving -2352 -855
/call Moving -2352 -855
/call Moving -2489 -688
/call Moving -2489 -688
/call Moving -2495 -245
/call Moving -2495 -245
/call Moving -2225 -258
/call Moving -2225 -258
/call Moving -1945 -261
/call Moving -1945 -261
/call Moving -1725 -368
/call Moving -1725 -368
/call Moving -1555 -260
/call Moving -1555 -260
/call Moving -33 -266
/call Moving -33 -266
/call Moving 0 -362
/call Moving 0 -362
/call Moving 1 -930
/call Moving 1 -930
/call Moving -131 -1025
/call Moving -131 -1025
/call Moving -397 -1019
/call Moving -397 -1019
/call Moving -402 -2276
/call Moving -402 -2276
/call Moving -275 -2319
/call Moving -275 -2319
/call Moving -17 -2322
/call Moving -17 -2322
/call Moving -1 -2608
/call Moving -1 -2608
/echo Reached the entrance starting over!
/goto :hohLoop
/return
Sub codecay
/echo Your zone was detected as: Crypt of Decay. Have fun!
:codecayLoop
/call Moving -65 -123
/call Moving -65 -123
/call Moving -64 -12
/call Moving -64 -12
/call Moving -65 53
/call Moving -65 53
/call Moving -100 69
/call Moving -100 69
/call Moving 75 69
/call Moving 75 69
/call Moving 74 -13
/call Moving 74 -13
/call Moving -31 -8
/call Moving -31 -8
/call Moving 177 -10
/call Moving 177 -10
/call Moving 177 71
/call Moving 177 71
/call Moving 99 72
/call Moving 99 72
/call Moving 175 69
/call Moving 175 69
/call Moving 175 -12
/call Moving 175 -12
/call Moving 306 -13
/call Moving 306 -13
/call Moving 367 -22
/call Moving 367 -22
/call Moving 449 -21
/call Moving 449 -21
/call Moving 445 -45
/call Moving 445 -45
/call Moving 413 -91
/call Moving 413 -91
/call Moving 399 -160
/call Moving 399 -160
/call Moving 429 -201
/call Moving 429 -201
/call Moving 394 -258
/call Moving 394 -258
/call Moving 389 -195
/call Moving 438 -54
/call Moving 438 -54
/call Moving 456 -12
/call Moving 456 -12
/call Moving 484 -8
/call Moving 484 -8
/call Moving 497 -97
/call Moving 497 -97
/call Moving 552 -83
/call Moving 552 -83
/call Moving 533 -138
/call Moving 533 -138
/call Moving 537 -182
/call Moving 537 -182
/call Moving 569 -211
/call Moving 569 -211
/call Moving 519 -218
/call Moving 519 -218
/call Moving 532 -185
/call Moving 532 -185
/call Moving 532 -133
/call Moving 532 -133
/call Moving 550 -123
/call Moving 550 -123
/call Moving 596 -130
/call Moving 596 -130
/call Moving 660 -131
/call Moving 660 -131
/call Moving 639 -81
/call Moving 639 -81
/call Moving 673 -51
/call Moving 673 -51
/call Moving 681 -90
/call Moving 681 -90
/call Moving 720 -92
/call Moving 720 -92
/call Moving 789 -95
/call Moving 789 -95
/call Moving 797 -126
/call Moving 797 -126
/call Moving 726 -141
/call Moving 726 -141
/call Moving 722 -91
/call Moving 722 -91
/call Moving 675 -87
/call Moving 675 -87
/call Moving 673 -15
/call Moving 673 -15
/call Moving 699 66
/call Moving 699 66
/call Moving 700 197
/call Moving 700 197
/call Moving 626 192
/call Moving 626 192
/call Moving 635 135
/call Moving 635 135
/call Moving 661 211
/call Moving 661 211
/call Moving 650 276
/call Moving 650 276
/call Moving 646 297
/call Moving 646 297
/call Moving 615 323
/call Moving 615 323
/call Moving 538 335
/call Moving 538 335
/call Moving 522 380
/call Moving 522 380
/call Moving 405 362
/call Moving 405 362
/call Moving 475 282
/call Moving 475 282
/call Moving 441 283
/call Moving 441 283
/call Moving 444 217
/call Moving 444 217
/call Moving 471 172
/call Moving 471 172
/call Moving 405 128
/call Moving 405 128
/call Moving 396 156
/call Moving 396 156
/call Moving 428 154
/call Moving 428 154
/call Moving 449 204
/call Moving 449 204
/call Moving 437 261
/call Moving 437 261
/call Moving 439 286
/call Moving 439 286
/call Moving 377 297
/call Moving 377 297
/call Moving 311 276
/call Moving 311 276
/call Moving 181 299
/call Moving 181 299
/call Moving 177 347
/call Moving 177 347
/call Moving 127 360
/call Moving 127 360
/call Moving 129 415
/call Moving 129 415
/call Moving 235 434
/call Moving 235 434
/call Moving 244 411
/call Moving 244 411
/call Moving 212 383
/call Moving 212 383
/call Moving 210 358
/call Moving 210 358
/call Moving 183 343
/call Moving 183 343
/call Moving 186 304
/call Moving 186 304
/call Moving 251 272
/call Moving 251 272
/call Moving 285 322
/call Moving 285 322
/call Moving 325 273
/call Moving 325 273
/call Moving 388 294
/call Moving 388 294
/call Moving 419 279
/call Moving 419 279
/call Moving 496 333
/call Moving 496 333
/call Moving 618 322
/call Moving 618 322
/call Moving 656 276
/call Moving 656 276
/call Moving 662 206
/call Moving 662 206
/call Moving 692 70
/call Moving 692 70
/call Moving 675 6
/call Moving 675 6
/call Moving 666 -26
/call Moving 666 -26
/call Moving 610 -15
/call Moving 610 -15
/call Moving 532 -7
/call Moving 532 -7
/call Moving 469 -10
/call Moving 469 -10
/call Moving 432 -19
/call Moving 432 -19
/call Moving 347 -19
/call Moving 347 -19
/call Moving 281 -13
/call Moving 281 -13
/call Moving 223 -11
/call Moving 223 -11
/call Moving -65 -8
/call Moving -65 -8
/call Moving -65 75
/call Moving -65 75
/call Moving -66 151
/call Moving -66 151
/call Moving -79.86 168.52
/call Moving -79.86 168.52
/call Moving -84.47 200
/call Moving -84.47 200
/call Moving -24.46 203.96
/call Moving -24.46 203.96
/call Moving -22 228
/call Moving -42.12 231.22
/call Moving -42.12 231.22
/call Moving -43.08 270.63
/call Moving -43.08 270.63
/call Moving -21.44 272.50
/call Moving -21.44 272.50
/call Moving -27.01 339.43
/call Moving -27.01 339.43
/call Moving -103.78 347.01
/call Moving -103.78 347.01
/call Moving -105.76 267.67
/call Moving -105.76 267.67
/call Moving -106.85 312.14
/call Moving -106.85 312.14
/call Moving -144.90 358.61
/call Moving -144.90 358.61
/call Moving -84.45 384.23
/call Moving -84.45 384.23
/call Moving -114.05 376.53
/call Moving -114.05 376.53
/call Moving -119.94 420.69
/call Moving -119.94 420.69
/call Moving -156.30 449.26
/call Moving -156.30 449.26
/call Moving -133.04 484.18
/call Moving -133.04 484.18
/call Moving -74.69 468.32
/call Moving -74.69 468.32
/call Moving -25.00 484.56
/call Moving -25.00 484.56
/call Moving 17.56 446.64
/call Moving 17.56 446.64
/call Moving -22.32 411.12
/call Moving -22.32 411.12
/call Moving 26.48 391.27
/call Moving 26.48 391.27
/call Moving 54.16 394.99
/call Moving 54.16 394.99
/call Moving 113.65 369.03
/call Moving 113.65 369.03
/call Moving 162.50 381.81
/call Moving 162.50 381.81
/call Moving 176.42 407.17
/call Moving 176.42 407.17
/call Moving 140.04 446.90
/call Moving 140.04 446.90
/call Moving 112.49 449.73
/call Moving 112.49 449.73
/call Moving 133.06 420.45
/call Moving 133.06 420.45
/call Moving 135.92 343.97
/call Moving 135.92 343.97
/call Moving 138.09 299.33
/call Moving 138.09 299.33
/call Moving 87.83 260.07
/call Moving 87.83 260.07
/call Moving 131.61 231.55
/call Moving 131.61 231.55
/call Moving 170.94 218.54
/call Moving 170.94 218.54
/call Moving 175.38 190.97
/call Moving 175.38 190.97
/call Moving 221.92 179.46
/call Moving 221.92 179.46
/call Moving 176.19 195.19
/call Moving 176.19 195.19
/call Moving 176.94 303.99
/call Moving 176.94 303.99
/call Moving 175.11 266.72
/call Moving 175.11 266.72
/call Moving 207.68 272.37
/call Moving 207.68 272.37
/call Moving 219.63 302.14
/call Moving 219.63 302.14
/call Moving 245.09 313.86
/call Moving 245.09 313.86
/call Moving 318.51 281.80
/call Moving 318.51 281.80
/call Moving 317.05 344.79
/call Moving 317.05 344.79
/call Moving 297.69 388.39
/call Moving 297.69 388.39
/call Moving 293.41 431.81
/call Moving 293.41 431.81
/call Moving 251.77 444.77
/call Moving 251.77 444.77
/call Moving 215.19 483.09
/call Moving 215.19 483.09
/call Moving 246.26 520.31
/call Moving 246.26 520.31
/call Moving 268.63 456.35
/call Moving 293.44 440.21
/call Moving 295.51 398.01
/call Moving 308.31 284.77
/call Moving 294.10 279.08
/call Moving 296.67 174.79
/call Moving 295.46 282.92
/call Moving 204.14 265.31
/call Moving 136.19 271.15
/call Moving 140.02 390.55
/call Moving 17.82 386.29
/call Moving -41.00 460.75
/call Moving -51.55 473.98
/call Moving -110.60 468.92
/call Moving -128.84 388.14
/call Moving -88.21 272.24
/call Moving -42.07 272.76
/call Moving -44.05 230.76
/call Moving -23.87 217.44
/call Moving -39.67 176.92
/call Moving -60.08 138.64
/call Moving -59.23 68.60
/call Moving -64.37 -11.74
/call Moving -138.44 -9.98
/call Moving -183.88 7.52
/call Moving -248.86 9.12
/call Moving -351.59 11.63
/call Moving -360.40 46.80
/call Moving -407.95 25.01
/call Moving -410.49 60.69
/call Moving -409.59 125.91
/call Moving -440.81 140.92
/echo Returning to the beginning.
/call Moving -427.59 134.14
/call Moving -415.97 97.70
/call Moving -410.71 26.54
/call Moving -328.68 11.27
/call Moving -259.27 11.74
/call Moving -189.76 12.59
/call Moving -145.82 -1.92
/call Moving -75.05 -8.69
/call Moving -66.07 -46.53
/call Moving -66.24 -154.55
/goto :codecayLoop
/return
Sub combat
/echo Enemies detected, killing until my XTarget window is empty.
/bandolier activate Kill
:combatStart
/if (${Me.XTarget[1].ID}) {
/target id ${Me.XTarget[1].ID}
/killthis
/delay 10
/goto :combatStart
}
/if (${Me.PctHPs}<90) {
/call medUp
}
/bandolier activate Tome
/cleanup
/return
Sub moving(int YVal, int XVal)
/if (!${Defined[debug]}) {
/declare debug int outer 1
/if (${debug}>0) /echo You have debug comments on. If you would like to turn them off change the line "/declare debug int outer 1" to "/declare debug int outer 0"
}
/if (${debug}>0) {
/echo Moving to location: ${YVal}, ${XVal}
}
:moveStart
|Something I'm testing - adding combat checks while moving rather than just upon reaching the destination.
/if (${Me.XTarget[1].ID}) {
/call Combat
}
|Repeatedly check if distance is less than 10 while moving to the waypoint. When it gets within 10 units returns.
/if (${Math.Distance[${Me.Y},${Me.X}:${YVal},${XVal}]}>=10) {
/moveto loc ${YVal} ${XVal}
/delay 5
/goto :moveStart
}
/if (${debug}>0) {
/echo Reached destination: ${YVal}, ${XVal}
}
/if (${Me.XTarget[1].ID}) {
/call Combat
}
/if (${Me.PctHPs}<90) {
/call medUp
}
/return
sub medUp
/echo My health has dropped below 90%. Medding up.
:medStart
/if (${Me.PctHPs}<90) {
/if (!${Me.Sitting}) {
/sit
}
/if (${Me.XTarget[1].ID}) {
/call combat
}
/delay 5s
/goto :medStart
}
/return
EDIT: I just use advloot to loot, so you'll want to watch it run the first lap or two in each zone and set up what to loot vs ignore.
And as always, running a bot fully AFK is always a risk. I highly recommend using MQ2Posse, and not being a dick. I take no responsibility if you get yourself banned.
Attachments
Last edited:

