• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Soultaker Winter's Roar Compile

soultaker

Member
Joined
Feb 2, 2005
RedCents
60¢
This is not tested. I do not pla yon Winter's Roar but was PMed the source file for this and made a compile. Most Custome plugins do not work for this being its from over a year ago, however NOKOS should as well as the reg MQ features.

MQ2PLAYSOUND
Rich (BB code):
/SOUND
you can make an ini to play mp3's

MQ2SETSPELL
Rich (BB code):
/setspell <spellname> <spellslot>
Spellslots are 1-15 for normal buffs, 16-21 for SD buffs

MQ2SPAWNMASTER
Rich (BB code):
needs to be reloaded after zone as callbacks aren't totally fixed yet
Commands: 
/spawnmaster - display usage information

MQNoKos
Rich (BB code):
/nokos
 
Last edited:
0x0040E97A
^^^^
Warp offset

PS Sticky YOUR thread and not mine huh?! Ok I see how it is now...JK
 
lol i was going by how you posted THIS WILL NOT WORK ON WR! lol ill stick ya...
 
That post is for normal eqemu, it works :)
 
This is working now but very basic such as map and basic MQ features, no fancy plugins or macros working atm, they will have to be rewritten for the code formate used on WR which atm date back to 2004. Cade might have time for this atm however I do not, but as long as I am passed the source code i will compile it for ya
 
Last edited:
Big thanks to everyone that put effort into getting the WR members a compile.
 
Here's MQ2Warp MQ2Zone MQ2NoKos and MQ2SumCorpse.

If one of them doesn't work, I don't wanna hear about it =p

EDIT: Just saw soul already had NoKos there, oh well. If his doesn't work, try mine...
 
Warp worked! I've never used mq2sumcorpse, but will test it out.

--Cade Stop reading!--

Neither /nokos Worked, and Soultaker says it sounds like macros will have to be customized. For those trying to use ones from back in early 2004 (source version), those don't work either. I have tested out several, and continuously either get vardata errors or /if condition errors.
 
Try using the macros from Macro Depot 1
 
Forage Macro
Rich (BB code):
| This is an obvious child of the forage.mac.
|
| There are only a couple functional enhancements:
|
|   - This uses no keyboard based commands so it can run without mouse focus.
|   - Some basic detection avoidence is added, based only on second hand information.
|
| The weak points are:
|
|   - Less configurable
|   - less stats maintained.
|

#define INIFile "forage.ini"

#chat tell
#turbo

Sub Main
  /zapvars
  /declare Attempts global
  /declare Stats array2
  /declare Forage timer
  /declare Break timer

  /cleanup

  /call StatsInit
  /varset Forage 1
  /varset Break 35m

  :Continue
     /if "$gm"=="TRUE" {
      /mqlog GM!
      /call CampOut
     }
   /doevents
   /delay 1s

  /goto :Continue

/return

|
| Deal with our two timers
|
Sub Event_Timer(Timer,OrigValue)
   /if "@Timer"=="Forage" /call Forage
   /if "@Timer"=="Break" /call Break
/return

|
| Deal with tells

|
Sub Event_Chat(ChatType,Sender,ChatText)
   /mqlog Tell @Sender says @ChatText
   /delay 10s
   /tell "@Sender" think I doozed off foraging I'm gonna log.
   /call CampOut
/return

|
| Forage sub that gets called when timer even expired
|
Sub Forage
   /varset Forage 101s       | Reset timer
   /varadd Forage $rand(20)    | Add in some randomness might help avoid detection

     /if "$char(state)"=="SIT" /sit
   /varadd Attempts 1
   /echo Foraging, attempt: $int(@Attempts)
   /doability Forage
   /delay 15
   /if "$cursor(name)"=="NULL" {
      /echo Nothing found.
   } else {
                /echo Got a $cursor(name)!
      /call StatsUpdate "$cursor(name)" @Attempts
      /call KeepTest "$cursor(name)"
      /if n $return==1 {
         /echo Keeping it.
         /beep
         /autoinv
      } else {
         /echo Destroying it.
         /destroy
      }
   }
/return

|
| Take a break at least one an hour to avoid hour limit SOE supposedly watches
|
Sub Break
   /varset Break 40m       | Reset timer
   /varadd Break $rand(10)m     | Add in some randomness might help avoid detection
   /varadd Forage 5m       | Stop foraging for a bit  might help avoid detection
   /echo take a brief break
   /sit
/return

|
| Look in the ini file to see if we keep a foraged item
|
Sub KeepTest(Item)
   /declare entry local
   /varset entry $ini("INIFile","$zone","@Item")
   /if "@entry"=="NOTFOUND" {
      /echo @Item is a new item!
      /varset entry 1
      /ini "INIFile" "$zone" "@Item" @entry
   }
/return @entry

|
| Initialize the stats array. The first row of the matrix stores meta data
|
Sub StatsInit
   /varset Stats(0,0) "NULL"    | A value that wont match any foraged item
   /varset Stats(0,1) 0      | Number of unigue items with rows in matrix
   /varset Stats(0,2) 0      | Number of successful forages
/return

|
| Update the statistics
|
Sub StatsUpdate(Item, Attempts)
   /declare x local
   /declare found local

   /varadd Stats(0,2) 1

   /echo Forage Success Rate: $int(@Stats(0,2)/@Attempts*100)%

   /varset found 0
   /for x 0 to @Stats(0,1)
      /if "@Stats(@x,0)"=="@Item" {
         /varset found 1
         /varadd Stats(@x,1) 1
      }
   /next x

   /if n @found==0 {
      /varadd Stats(0,1) 1
      /varset Stats(@Stats(0,1),0) "@Item"
      /varset Stats(@Stats(0,1),1) 1
   }

   /echo ====================================
   /for x 1 to @Stats(0,1)
      /echo @Stats(@x,0): $int(@Stats(@x,1)) [$int($calc(@Stats(@x,1)/@Stats(0,2)*100))%]
   /next x
   /echo ====================================
/return

|
| Camp out
|
Sub CampOut
   /if "$char(state)"=="STAND" /sit
   /camp desktop
   /endmacro
/return

This is a forage macro that I found that works. Use things that are as close to Feb 2004 as possible. Most macros after Summer of 2004 seem to be too advanced or using the wrong commands. I'll post more as I come across them.

Don't forget to edit this macro and remove the paranoid checks (camping out if a GM in zone, camping out if you recieve a tell, random breaks etc.
 
PHP code box? that's a new one =p
 
Working skill up macro. Easily customizable to what skill you want. Currently set for a rogue, just edit for a monk etc.

Rich (BB code):
|lazyrogue2.mac Updated by A9, original by mekaniak.
|Syntax /macro lazyrogue2

Sub Main
/echo I'm a rogue. Fear my skills...In about a few hours.
:start
/call Hide
/delay 1s
/call Sneak
/delay 1s
/call Begging
/delay 1s
/call Disarm
/delay 1s
/call Intimidate
/delay 1s
/call Sense
/delay 2s
/goto :start

Sub Sneak
   /if n $char(ability,"Sneak")!=-2 {
   /doability Sneak
   /doability Sneak
   /doability Sneak
   }
/return

Sub Hide
   /if n $char(ability,"Hide")!=-2 {
   /doability Hide
   /doability Hide
   }
/return

Sub Begging
   /if n $char(ability,"Sneak")!=-2 {
   /doability begging 
   }
/return


Sub Disarm
   /if n $char(ability,"Sneak")!=-2 {
   /doability disarm 
   }
/return

Sub Intimidate
   /if n $char(ability,"Hide")!=-2 {
   /doability Intimidation 
   }
/return

Sub Sense
   /if n $char(ability,"Sense Heading")!=-2 {
   /doability "Sense Heading"
   }
/return
 
Bump (how one can bump one of two stickys I'll never know, but it seemed like the right thing to say...) to say that if anyone wants a macro converted...I'll try to do it for you.
 
Awesome Cade, I have a couple that shouldn't be too too tough, and once I see what needs to be changed I can do some.

Will post tonight
 
Not to be rude...but it's past "tonight" =p
 
I'm in Antartica where "Night" lasts 6 months.

Here is an older style of Rogue Helper, (no where near as nice as modern one, but might be easier to convert), which appears to do things, except move.

Rich (BB code):
Rogue Script
| Program by Jay
| Updated by AP50
|
| Version 1.07   5/MAR/2004
|
| Usage: /macro autorogue &lt;Tank Name&gt;
|
| Changes for 1.02
|   - Added Sneakhide option
|   - Added BehindTarget check during enrage
|   - Added enrage var
|   - Added documentation
|   - Changed, You will not evade when mob is below 20%
| Changes for 1.03
|   - Added target engage delay
|   - Added target range check before engage
|   - Checks to make sure target is not a pet first
|   - Added an assist in the attack loop
| Changes for 1.04
|   - Added death check
| Changes for 1.05
|   - Updated for use with new variable system
| Changes for 1.06
|   - Just fixing the nopredict change
| Changes for 1.07
|   - Changed distance check to use $target(maxrange)
|   -    - changed back, work in progress.
|   - Fixed Counter Clockwise /if "n" statement

#Event Enraged "has become ENRAGED"
#Event Offrage "is no longer enraged"
#Event Slainby "You have been slain by"

#include routines.mac
#turbo @turboamount

Sub main

| ----- Trigger Declares ---------------------
/Declare assisthealth global
/Declare evaderefresh global
/Declare turboamount global
/Declare sneakhide global
/Declare engagedistance global

| ----- Trigger Values -----------------------

/Varset assisthealth   96   | Wait until mob is below this health trigger.
/Varset evaderefresh   105   | How long it takes till evade refreshes.
/Varset turboamount   380   | Turbo Amount, Change at your own risk.
/Varset sneakhide   1   | Sneak Hide between kills; 1 = Yes, 0 = No
/Varset engagedistance   150   | How close mob must be to engage

| ----- Variables ----------------------------
/Declare evadetimer   timer
/Declare checktimer   timer
/declare targetname   global
/Declare targetid   global
/Declare tankname   global
/Declare attacktarget   global
/Declare tempvar   global | Simple tempvar
/Declare behindtarget   global | 1 = True, 0 = False
/Declare targetenrage   global | 1 = True, 0 = False
/Declare prekillxp   global | Exp prior to kill
/Declare postkillxp   global | Exp after kill
/Declare xpdiff      global | Difference in Exp pre/post kill
/Declare xptillding   global | Exp till next level
/Declare prekillaaxp   global | AA Exp prior to kill
/Declare postkillaaxp   global | AA Exp after kill
/Declare aaxpdiff   global | Difference in AA Exp pre/post kill
/Declare mobstillding   global | Approx number of kills of this mob type till next level
/Declare mobtypekilled   global | Number of this mob type killed
/Declare mobdetail   array2 | Mob details array


   /echo "Auto Rogue Version 1.07 Starting"
   /varset tankname @Param0
   /echo "@tankname is assist tank."
   /varset tempvar 0
   /if n @sneakhide==1 {
      /doability "Sneak"
      /doability "Hide"
   }
   /goto :Wait
   /goto :Attack
/return

:Wait
   /assist @tankname
   /delay 5
   /if "$target()"=="FALSE" {
      /target @tankname
      /face
      /goto :Wait
   }
   /if "$target(type)"!="NPC" {
      /face
      /goto :Wait
   }
   /if n @tempvar!="$target(hp,pct)" /echo $target(name,clean) targeted at $target(hp,pct)% at distance $target(distance).
   /varset tempvar "$target(hp,pct)"
   /face

   /if n "$target(hp,pct)"&lt;=@assisthealth /if n "$target(distance,noprodict)&lt;@engagedistance" /if n "$target(pet)==0" /goto :DoubleCheck
   /Attack off
   /DoEvents
/goto :Wait

:DoubleCheck
   /delay 10
   /if n "$target(hp,pct)"&lt;=@assisthealth /if n "$target(distance)&lt;@engagedistance" /if n "$target(pet)==0" /goto :Attack
/goto :Wait

:Attack
   /doability "Sneak"
   /echo Fighting $target(name,clean). It is a level $target(level) $target(race).
   /varset prekillxp $char(exp)
   /varset prekillaaxp $char(aa,exp)
   /varset mobdetail(8,0) "$target(name,clean)"
   /varset mobdetail(1,1) $target(level)
   /varset mobdetail(1,2) $target(name)
   /varset mobdetail(1,3) $target(id)
   /varset targetname $target(name)
   /varset targetid $target(id)
   /varset evadetimer @evaderefresh
   /varset attacktarget 1
   /varset behindtarget 0
   /varset targetenrage 0
   /face
   /sendkey down up
   /if n @attacktarget==1 /attack on
:AttackLoop
   /assist @tankname

   /if "$target()"=="FALSE" /goto :AttackEnd
   /if "$target(id)"!="@targetid" /goto :AttackEnd

   /if n @targetenrage==1 /varset attacktarget @behindtarget
   /if n @attacktarget==1 /if n $target(distance)&lt;$target(maxrange) /doability backstab
   /if n @attacktarget==1 /Attack on
   /if n @attacktarget==0 /Attack off

   /face fast
/if n $target(distance)&gt;18 /sendkey down up |If target is farther then 18 move forward
/if n $target(distance)&lt;8 /sendkey down down |If target is closer then 8 move back
/if n $target(distance)&lt;13 /sendkey up up |If target is closer then 10 stop moving forward
/if n $target(distance)&gt;10 /sendkey up down |If target is farther then 9 stop moving back
   /face fast
   /doevents
   /if n $target(distance)&lt;$target(maxrange) /if n $target(distance)&gt;$target(maxrange)  /goto :rotate
/goto :AttackLoop

:rotate
  | ----- Clockwise Rotate Check -----
   /if n $target(heading)&gt;=180 /if n $calc($target(heading)-180)&lt;=$char(heading) /if n $char(heading)&lt;$calc($target(heading)-22.5) /goto :bsclock
   /if n $target(heading)&gt;=180 /if n $char(heading)&lt;=180 /if n $calc($char(heading)-22.5)&gt;$calc($target(heading)-360) /goto :bscounter
   /if n $target(heading)&lt;=180 /if n $char(heading)&lt;$calc($target(heading)-22.5) /goto :bsclock
  | ----- Counter Clockwise Rotate Check -----
   /if n $char(heading)&gt;=180 /if n $calc($char(heading)-180)&lt;=$target(heading) /if n $char(heading)&gt;$calc($target(heading)+22.5) /goto :bscounter
   /if n $char(heading)&gt;=180 /if n $target(heading)&lt;=180 /if n $calc($char(heading)-157.5)&lt;$calc($target(heading)+180) /goto :bsclock
   /if n $char(heading)&lt;=180 /if n $target(heading)&lt;=180 /if n $char(heading)&gt;$calc($target(heading)+25) /goto :bscounter
   /varset behindtarget 1
/goto :AttackLoop

:AttackEnd
   /echo "@targetname has died"
   /call event_exp
   /sendkey up up
   /sendkey up down
   /sendkey up ctrl
   /varset attacktarget 0
   /varset tempvar 0
   /varset evadetimer 0
   /attack off
   /echo "Waiting for @tankname to select a new target..."
   /delay 10
   /if n @sneakhide==1 {
      /doability "Sneak"
      /doability "Hide"
   }
/goto :Wait

:bsclock
   /sendkey down ctrl
   /sendkey down right
   /sendkey down up
   /sendkey up up
   /sendkey down down
   /sendkey up down
   /sendkey up right
   /sendkey up ctrl
   /press down
   /press ctrl
   /face
   /varset behindtarget 0
/goto :AttackLoop

:bscounter
   /sendkey down ctrl
   /sendkey down left
   /sendkey down up
   /sendkey up up
   /sendkey down down
   /sendkey up down
   /sendkey up left
   /sendkey up ctrl
   /press down
   /press ctrl
   /face
   /varset behindtarget 0
/goto :AttackLoop

| ----- Events called by /DoEvents -----

Sub Event_Enraged
   /if n @behindtarget==0 /varset attacktarget 0
   /varset targetenrage 1
   /attack off
/return

Sub Event_Offrage
   /varset targetenrage 0
   /varset attacktarget 1
   /attack on
/return

Sub Event_Slainby
   /endmacro
/return

Sub Event_Timer
   /if n @Param0==1 /goto :timerEvade
/return

| *** Event Subs ***

:timerEvade
   /if n "$target(hp,pct)"&gt;=30 {
      /sendkey up up
      /sendkey up down
      /attack off
      /delay 3
      /doability Hide
      /if n @attacktarget==1 /attack on
   }
   /varset evadetimer evaderefresh
/return

|#Exp Comparison Event
sub event_exp
/delay 1s

/varset postkillxp $char(exp)
/varset postkillaaxp $char(aa,exp)
/varcalc xpdiff @postkillxp-@prekillxp
/varcalc aaxpdiff @postkillaaxp-@prekillaaxp
/varcalc xptillding 100-$char(exp)
/varcalc mobstillding @xptillding/@xpdiff
  /if n @xpdiff&gt;0 {
  /echo and you've gained @xpdiff% exp and @aaxpdiff% AA exp, bringing your total exp to $char(exp)% and your AA exp to $char(aa,exp)%!!
   |#Read npc.ini for any entries of last target. (comment from here to next !! area to stop INI saving)
   /if n $ini(npc.ini,"$zone","@mobdetail(8,0)")=="notfound" {
    /varset mobtypekilled 0
   } else {
    /varset mobtypekilled $ini(npc.ini,"$zone","@mobdetail(8,0)")
   }
   /varcalc mobtypekilled @mobtypekilled+1
   |#Save the data in npc.ini
   /ini npc.ini "$zone" "@mobdetail(8,0)" @mobtypekilled
   |!!
   /echo Don't forget, @xptillding% left till level, with only @mobstillding of these mobs to kill.
    |#display npc.ini data. (comment from here to next !! area to stop INI saving)
    /if n @mobtypekilled==1.00 {
     /echo This is your first kill of @mobdetail(8,0) in $zone.
    } else {
     /echo You've have killed @mobdetail(8,0) a total of $int(@mobtypekilled) times in $zone.
    }
    |!!
   /varset mobtypekilled 0
  } else {
|# Below handles when you don't get exp or just dinged
  /echo Exp remains at $char(exp)% and AA exp remains at $char(aa,exp)% after kill.
  }
/return


Spams a lot, I have a couple different versions that seem to do the same thing.


Here is a simple "Move Behind" one, that is used in some combo with another macro. I'm posting this one, because it actually moves the character...only 1 step, but I think that has something to do with maxrange? Either way, hopefully the codeing in it will help show what needs to be fixed in the other one in order for it to move.

Rich (BB code):
movebehind.mac
|Movebehind macro to be used in tandem with rogue-assist
|version 2.1

Sub Main
   /declare RangeMin global
   /declare RangeMax global
   /declare FastRange global
   /if "$char(state)=="SIT" /stand
   /varset RangeMin @Param0
   /varset RangeMax @Param1
   /varset FastRange @Param2
   /attack off 
   /if $target()==FALSE {
      /attack off
      /sendkey up up
      /macro rogue-assist @RangeMin @RangeMax @FastRange
   }
   /if n $distance($calc($target(y)-$cos($target(heading))*10),$calc($target(x)-$sin($target(heading))*10))&lt;3 /goto :noneed
   /sendkey down up
   :gotopointloop
   /if $combat=="TRUE" /attack off
   /if $target()==FALSE {
      /attack off
      /sendkey up up
      /macro rogue-assist @RangeMin @RangeMax @FastRange
   }
   /if "$char(state)=="SIT" /stand
   /face nolook fast loc $calc($target(y)-$cos($target(heading))*10),$calc($target(x)-$sin($target(heading))*10)
   /if n $distance($calc($target(y)-$cos($target(heading))*10),$calc($target(x)-$sin($target(heading))*10))&gt;1 /goto :gotopointloop
   /sendkey up up
   /face fast
:noneed
/attack on
/macro rogue-assist @RangeMin @RangeMax @FastRange
/return

I think a true RH is an overkill in most situations. No real need to be able to turn a character on auto, and walk away from the computer. However being able to turn a character on auto, have him/her move behind a mob, attack at a certain hp level, do the various skills (Flying kick, backstab, kick etc) and return to a home point is what is far less risky of being caught using automation.
 
Here is one for the druids/rangers:

Forage macro that does work, uses items based on zones in forage.ini. Adds and keeps new items, change 1 to 0 to destroy the items you do not want.

Rich (BB code):
| - Forage.mac -
|
#turbo
#event Skillup "You have become better at Forage"
#event Failed "You fail to locate any food"
#chat tell

Sub Main
   /cleanup
   /call ClearStats
   /varset v99 0
   /varset t1 10m
   /doevents flush
   :Forage
      /varset l0 $return
      /if n $calc($l0+$v99)&gt;0 /call Event_Timer
      /if n $calc($l0+$v99)&gt;0 /return
      /if $char(ability,Forage)&gt;0 /if $cursor()==NULL /call Looking     
      /if $cursor()==TRUE /call KeepStats "$cursor(name)"
      /if $cursor()==TRUE /call KeepItem
      /doevents
    /goto :Forage
/return

Sub Looking
   /varadd v10 1
   /doability Forage
/return

Sub KeepItem
   /if "$cursor(name)"!="Fish Scales" /call DoLog "foraged up some $cursor(name)..."
   /click left auto
/return

Sub KeepStats
   /if "$p0"~~"Pod of Water" {
      /varadd v0 1
   } else /if "$p0"~~"Roots" {
      /varadd v1 1
   } else /if "$p0"~~"Vegetables" {
      /varadd v2 1
   } else /if "$p0"~~"Berries" {
      /varadd v3 1
   } else /if "$p0"~~"Fruit" {
      /varadd v4 1
   } else /if "$p0"~~"Fishing Grubs" {
      /varadd v5 1
   } else /if "$p0"~~"Rabbit Meat" {
      /varadd v6 1
   } else {
      /varadd v7 1
   }
/return

Sub Event_Skillup
  /varadd v8 1
/return

Sub Event_Timer
   /varcalc v11 $v9/$v10*100
   /call DoLog "Run time: $calc($running/60) min /// Skill ups: $int($v8) /// Fails: $int($v9) /// Total Foraged Atempts: $int($v10) /// Fail Rate: $int($v11)  % "
   /call DoLog "Found: $int($v0) Pods of water - $int($v1) Roots - $int($v2) Vegetables - $int($v3) Berries - $int($v4) Fruits - $int($v5) Fishing Grubs - $int($v6) Rabbit Meat - $int($v7) zone items"
   /varset t$p0 $p1
/return

Sub ClearStats
   /varset v0 0
   /varset v1 0
   /varset v2 0
   /varset v3 0
   /varset v4 0
   /varset v5 0
   /varset v6 0
   /varset v7 0
   /varset v8 0
   /varset v9 0
   /varset v10 0   
/return

Sub Event_Chat
   /mqlog ** $p1: '$p2'
/return

Sub DoLog
   /mqlog $p0
   /echo $p0
/return

Sub Event_Failed   
 /varadd v9 1
/return

I'm still testing various "useful" macros to see which work and can help various classes.
 
Soultaker Winter's Roar Compile

Users who are viewing this thread

Back
Top
Cart