Looking for a conversion of this bard mac

For questions regarding conversion of scripts from the old, parm style to the new MQ2Data format. Conversion questions only!

Moderator: MacroQuest Developers

Xondar
decaying skeleton
decaying skeleton
Posts: 6
Joined: Fri Apr 23, 2004 2:32 am

Looking for a conversion of this bard mac

Post by Xondar » Fri May 07, 2004 6:28 am

#turbo
#chat tell

#event Zoned "You have entered"
#event StatusReport "status report"
#event GainExp "You gain"

Sub Main
/zapvars

| These variables are related to movement and AI control.
/declare RubberX global
/declare RubberY global
/declare CirX global
/declare CirY global
/declare CirR global
/declare StopMe global
/declare StopTimer timer
/declare ProximityTimer timer
/varset RubberX @Param1
/varset RubberY @Param0
/varset CirX @Param0
/varset CirY @Param1
/varset CirR @Param2
/varset StopMe 0
/varset ProximityTimer 1m

| These variables are related to song-twisting.
/declare SongTimer timer
/declare Songs array
/declare CurSong global
/declare PrevSong global
/declare nSongs global
/declare EachSong local

| Experience & Time Variables
/declare CurrentExp global
/declare CurrentAAXP global
/declare CurrentTime global
/varset CurrentExp ${Me.PctExp}
/varset CurrentAAXP ${Me.PctAAExp}
/varset CurrentTime ${Math.Calc[${Macro.RunTime}/60]}

| This block of code checks for proper arguments and echos error or initialization messages.
/if (!${Defined[Param4]}) {
/echo Usage: /mac circle <Y> <X> <Radius> <Song list> <TooClose>
/echo <Y> -- Y-coordinate of the center point.
/echo <X> -- X-coordinate of the center point.
/echo <Radius> -- Radius from center point to kite.
/echo <Song list> -- List of songs to be sung, include Selo's if needed.
/echo <TooClose -- Distance at which non-friendly players halt kiting.
/endmacro
}



| This block of code sorts out the list of songs to be twisted while running.
/varset nSongs ${String[@Param3].Length}
/for EachSong 1 to @nSongs
/varset Songs(@EachSong) ${String[@Param3].Mid[${Math.Calc[@EachSong]},1]}
/echo Song @EachSong: ${Me.Gem[@Songs(@EachSong)]}
/next EachSong
/varset CurSong 1
/call Event_Timer
/echo Running a Circle with center at @RubberY, @RubberX and chant-kiting mobs.



| The main loop, this iterates unless some AI warning is reached.
/keypress autorun
:ChantLoop
| Maintain distance from centerpoint, given character's current position.
/if (${Math.Distance[@CirX,@CirY]}<${Math.Calc[@CirR/2]}) {
/face heading ${Math.Calc[${Heading[@CirX,@CirY].DegreesCCW}+180]}
} else {
/face heading

${Math.Calc[${Heading[@CirX,@CirY].DegreesCCW}+${Math.Calc[90*${Math.Calc[@CirR/${Math.Distance[@

CirX,@CirY]}]}]}]}
}

| Do stuff if not in a holding phase.
/if (@StopMe==0) {
/doevents
/if (!${Me.Casting.ID}) {
/varset CurSong @PrevSong
/call Event_Timer
}
| If a GM zones in, shut down for 30 minutes.
/if (${Spawn[gm].ID}) {
/echo GM detected in zone, going into standby at $time(h):$time(m):$time(s).
/g GM detected in zone, going into standby at $time(h):$time(m):$time(s).
/stopsong
/varset StopMe 1
/varSet StopTimer 200
}

/if (@ProximityTimer<100) {
| If an ungrouped PC comes within specified range, shut down until they leave.
/if (${Spawn[pc noalert 1 radius @Param4].ID}) {
/echo ${Spawn[pc noalert 1 radius @Param4].CleanName} is inside @Param4 ft., going

into standby at ${Time.Time12}.
/g ${Spawn[pc noalert 1 radius @Param4].CleanName} is inside @Param4 ft., going into

standby at ${Time.Time12}.
/stopsong
/varset StopMe 2
/varset StopTimer 200
}
/varadd ProximityTimer 1m
}

| Get a new target if the current one is no good.
/if (!${Target.ID}) /call GetTarget
/if (${Target.Name.Find[corpse]}) /call GetTarget
/if (${Target.Type.Equal[PC]}) /call GetTarget
}

| Quit the ChantLoop and go into a holding phase if criteria are met.
/if (@StopTimer<10 && @StopMe>0) /goto :StopStuff
/goto :ChantLoop



| This block of code is operations to perform before going into the standby loop.
:StopStuff
| Face the far corner, stop moving and Fade Memories.
/stopsong
/face fast heading 135
/delay 10
/keypress back
/alt activate 212

| If a GM is in zone, set a timer for 30 minutes.
/if (@StopMe==1) {
/varset StopTimer 18000
}
| If someone came within specified range, set a timer for 5 minutes.
/if (@StopMe==2) {
/varset StopTimer 1m
}



| This loop (StopLoop) waits for 30 minutes after a GM zones in to restart
| or until no ungrouped PCs are within specified range.
:StopLoop
/if (@StopMe==1) {
/if (@StopTimer==0) {
/echo It's been 30 minutes since a GM was sighted, resuming chant-kiting at

${Time.Time12}.
/g It's been 30 minutes since a GM was sighted, resuming chant-kiting at ${Time.Time12}.
/varset StopMe 0
/keypress autorun
/goto :ChantLoop
}
}
/if (@StopMe==2) {
/if (@StopTimer>0 && ${Me.CurrentMana}>1000) {
/if (!${Spawn[pc noalert 1 radius @Param4].ID}) {
/echo No PCs within @Param4 ft., resuming chant-kiting at ${Time.Time12}.
/g No PCs within @Param4 ft., resuming chant-kiting at ${Time.Time12}.
/varset StopMe 0
/keypress autorun
/goto :ChantLoop
} else {
/varset StopTimer 1m
}
}
}
/goto :StopLoop
/return

Sub Event_Chat(ChatType,Sender,ChatText)
/declare MyMob local
/varset MyMob $target(id)
/if (${String[@ChatText].Lower.Equal[group me]}) {
/target range 1 22000 @Sender
/if (${Group}<6) {
/tell @Sender I'm kiting at ${Me.Y}, ${Me.X} -- come join me.
/invite
/alert add 1 pc @Sender
} else {
/tell @Sender My group is full right now, try back later!
/alert add 1 pc @Sender
}
}
/if (${String[@ChatText].Lower.Equal[status report]}) {
/tell @Sender TARGET: ${Target.CleanName} (${Target.PctHPs}%) SELF: ${Me.Name}

(${Me.PctHPs}%) EXP: ${Me.Level} (${Me.PctExp}%) AAXP: ${Me.AAPoints} (${Me.PctAAExp}%)
}

/target npc range 1 200 id @MyMob
/return

Sub Event_Timer(TimerName)
/delay 2
/alt activate 199
/stopsong
/cast @Songs(@CurSong)
/varset PrevSong @CurSong
/varset SongTimer 31
/varadd CurSong 1
/if (@CurSong>@nSongs) /varset CurSong 1
/return

Sub GetTarget
/if (${Spawn[npc radius 200].ID}) /target npc radius 200
/if (${Target.Level}<7) /keypress esc
/if (${Target.Distance}>200) /keypress esc
/return

Sub Event_Zoned
/sit
/camp desktop
/endmacro
/return

Sub Event_StatusReport
/declare LoopCounter local
/declare GroupMembers local
/varset GroupMembers ""

/for LoopCounter 0 to ${Math.Calc[${Group}-1]}
/varcat GroupMembers ${Group[@LoopCounter].Name}
/varcat GroupMembers " "
/next LoopCounter

/echo TARGET: ${Target.CleanName} (${Target.PctHPs}%)
/echo SELF: ${Me.Name} (${Me.PctHPs}%)
/echo EXP: ${Me.Level} (${Me.PctExp}%)
/echo AAXP: ${Me.AAPoints} (${Me.PctAAExp}%)
/echo GROUP: @GroupMembers
/echo RUNTIME: ${Math.Calc[${Macro.RunTime}/60]}
/return

Sub Event_GainExp
/varset CurrentExp ${Math.Calc[${Me.PctExp}-@CurrentExp]}
/varset CurrentAAXP ${Math.Calc[${Me.PctAAExp}-@CurrentAAXP]}
/varset CurrentTime ${Math.Calc[${Math.Calc[${Macro.RunTime}/60]}-@CurrentTime]}

/echo EXP: ${Me.PctExp}% (@CurrentExp%) AAXP: ${Me.PctAAExp}% (@CurrentAAXP%) TIME:

${Math.Calc[${Macro.RunTime}/60]} (@CurrentTime)

/varset CurrentExp ${Me.PctExp}
/varset CurrentAAXP ${Me.PctAAExp}
/varset CurrentTime ${Math.Calc[${Macro.RunTime}/60]}
/popup I am at : ${Me.PctExp} You Gained : @CurrentExp
/return

Preocts
a snow griffon
a snow griffon
Posts: 312
Joined: Thu Jan 29, 2004 1:02 pm

Post by Preocts » Fri May 07, 2004 8:39 am

No.

Reasons:
1) You didn't post it in code brackets
2) You didn't post it in code brackets
3) You didn't even ATTEMPT doing ANYTHING yourself
4) see 1-3
5) Did I mention there are about seven converted versions of this in the depot? Please see number 3 again.

Oid
a snow griffon
a snow griffon
Posts: 416
Joined: Thu Oct 17, 2002 3:26 am
Contact:

Post by Oid » Fri May 07, 2004 9:37 am

And this is what gets bards watched, fuck tards like this make it to where i cant do insanely bullshit shit on my bard, i hope you die. Give me your in game name. =D
Smokey the Lax says only you can prevent reproduction.

Preocts
a snow griffon
a snow griffon
Posts: 312
Joined: Thu Jan 29, 2004 1:02 pm

Post by Preocts » Fri May 07, 2004 10:19 am

I have to agree with you Oid but I honestly don't know what pisses me off more. The fact that scripts like this just scream "I'm macro'ing" or the fact that this macro IS fucking converted over execpt for the @'s. Two fucking minutes spent with notepad would change them all.

/rant off

Oid
a snow griffon
a snow griffon
Posts: 416
Joined: Thu Oct 17, 2002 3:26 am
Contact:

Post by Oid » Fri May 07, 2004 10:22 am

Not as bad as diamond.... diamond with its instant 90+ degree turns................
Smokey the Lax says only you can prevent reproduction.

Preocts
a snow griffon
a snow griffon
Posts: 312
Joined: Thu Jan 29, 2004 1:02 pm

Post by Preocts » Fri May 07, 2004 10:27 am

::sigh::
It is prolly because of one of these scripts that I was introduced to MQ in the first place. Was send a tell one day while doing my normal 20+ mob killing spree bard-style that blamed me of 'macroing' and 'doing the impossible' by twisting four songs and running in a lop-sided circle.

After I responded with all due anger toward the monkey that accused me and had actually /petitioned against me I looked up this 'macro' stuff and ironically enough, fell in love. Course, I like enhancements not automations.....

Oid
a snow griffon
a snow griffon
Posts: 416
Joined: Thu Oct 17, 2002 3:26 am
Contact:

Post by Oid » Fri May 07, 2004 11:10 am

Oh ive been full on macroing for about 6 hours now... .but ive also been about 3 feet from that pc the whole time.
Smokey the Lax says only you can prevent reproduction.

Preocts
a snow griffon
a snow griffon
Posts: 312
Joined: Thu Jan 29, 2004 1:02 pm

Post by Preocts » Fri May 07, 2004 11:18 am

::picks up the thread and puts it back on the tracks:: Damn, hate it when that happens.

Xondar: If you look in the depot section you will find what you want. For future reference the two 'help' forums are just that... HELP. Not, 'slaved convertion labor' or anything like that. We help you if you help yourself get started. :roll:

Oid:
::pulls up EQ and checks if the character is out of bait:: I know exactly what you mean.