help converting this please
Posted: Sat May 01, 2004 12:27 pm
Can you please tell me what i am doing wrong?
Code: Select all
#turbo
#chat tell
#event Zoned "You have entered"
#event StatusReport "status report"
#event GainExp "You gain"
Sub Main
/cleanup
/zapvars
| These variables are related to movement and AI control.
/declare RubberX global
/declare RubberY global
/declare StopMe global
/declare StopTimer timer
/declare ProximityTimer timer
/varset RubberX ${Param1}
/varset RubberY ${Param0}
/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[Param7]}) {
/echo Usage: /mac Chant <Y> <X> <North> <South> <East> <West> <Song list> <TooClose>
/echo <Y> -- Y-coordinate of the center point.
/echo <X> -- X-coordinate of the center point.
/echo <North> -- Maximum distance north of the center point to travel.
/echo <South> -- Maximum distance south of the center point to travel.
/echo <East> -- Maximum distance east of the center point to travel.
/echo <West> -- Maximum distance west of the center point to travel.
/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[${Param6}].Length}
/for EachSong 1 to ${nSongs{
/varset Songs[${EachSong}] ${String[${Param6}].Mid[${Math.Calc[${EachSong}]},1]}
/echo Song ${EachSong: ${Me.Gem[${Songs[${EachSong}]}]}}
/next EachSong
/varset CurSong 1
/call Event_Timer
/echo Running a diamond path with center at ${RubberY}, ${RubberX} and chant-kiting mobs.
| The main loop, this iterates unless some AI warning is reached.
/keypress autorun
:ChantLoop
| Face the correct corner of the diamond, given character's current position.
/if (${Me.X}<${RubberX} && ${Me.Y}>${RubberY}) /face fast loc ${RubberY},${Math.Calc[${RubberX}-${Param4}]}
/look -90
/if (${Me.X}<${RubberX} && ${Me.Y}<${RubberY}) /face fast loc ${Math.Calc[${RubberY}-${Param3}]},${RubberX}
/look -90
/if (${Me.X}>${RubberX} && ${Me.Y}<${RubberY}) /face fast loc ${RubberY},${Math.Calc[${RubberX}+${Param5}]}
/look -90
/if (${Me.X}>${RubberX} && ${Me.Y}>${RubberY}) /face fast loc ${Math.Calc[${RubberY}+${Param2}]},${RubberX}
/look -90
| 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 ${Param7}].ID}) {
/echo ${Spawn[pc noalert 1 radius ${Param7}].CleanName} is inside ${Param7} ft., going into standby at ${Time.Time12}.
/g ${Spawn[pc noalert 1 radius ${Param7}].CleanName} is inside ${Param7} 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 ${Param7}].ID}) {
/echo No PCs within ${Param7} ft., resuming chant-kiting at ${Time.Time12}.
/g No PCs within ${Param7} 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
/stopsong
/cast ${Songs[${CurSong}]}
/varset PrevSong ${CurSong}
/varset SongTimer 30
/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]}
/return