help converting this please

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

Moderator: MacroQuest Developers

ifritx
decaying skeleton
decaying skeleton
Posts: 8
Joined: Fri Apr 23, 2004 9:35 am

help converting this please

Post by ifritx » 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 

newb-n-training
a lesser mummy
a lesser mummy
Posts: 39
Joined: Mon Apr 19, 2004 8:51 pm

Post by newb-n-training » Sat May 01, 2004 3:16 pm

First, try readin up on the new var system (last time I did this link it didnt work so here's hopin !)

http://macroquest2.com/phpBB2/viewtopic.php?t=6616