Public Macros I have Seen the New World of NEtBots (plugin)
Reply
I have Seen the New World of NEtBots (plugin)
I was playing around, researching and trying to learn more about MQ2 and different plugins and how they work.
That is when I discovered the NetBots plugin. This is a fricken AWSOME plugin.
Before you use it you need to make sure you have it.
You need to turn it on on "Each" on of your toons that you are using.
Macro
More +

/netbots on
/netbots grab on
/netbots send on

You can also log all of your toons on and /bca it to all you toons and just turn it on, on all of them at the same time.
Anyway, I did use the MQ2 Wiki to find out all the different things it can do. I thought I would post a few macros I have worked it into for those who would be interested. These are only example and a I haven't tested all of them yet, just a couple of them.
I am using it so far in these examples to have my toons check buffs on the other toons I'm running. Even if the macro ends and restarts, they won't recast the buff if it is already there. Plus you can set up conditions that have to be met before the buffs are casted. AND! I figured out how to use netbots with the /for command to be able to cycle through them. Pritty cool if you ask me hehe...

Example (low LVL Wiz Macro using NetBots for self buff):
Macro
More +

#include Spell_routines.inc
#turbo 10
#chat group
#chat tell



|===============================
|             Events            
|===============================
#event death       "#*#You have been slain#*#"







Sub Main

|====================================================
|                     Spells                        
|       Main                         Secondary      
|____________________________________________________
|1. Blast of Cold
|2.
|3.
|4.
|5.
|6.
|7.
|8. Minor Shielding
|====================================================

  /declare Nuke1           string outer Blast of Cold
  /declare Shielding       string outer Minor Shielding
  /declare ShieldingID        string outer
  /varset ShieldingID ${Me.Book[${Me.Book[Minor Shielding]}].ID}
 
  /declare sn2timer          timer outer
  /declare shieldtimer       timer outer

  /declare MA string outer Brel
  /declare VerifySpell    string outer
 
 
:start
  /if (!${Me.Casting.ID} && ${Me.State.Equal[STAND]} && ${Me.PctMana}<98) /sit
  /doevents
  /delay 10
  /if (${Me.PctMana}>20) /goto :Buff
  /goto :start

:Buff
  /varset VerifySpell " ${NetBots[Natia].Buff} "
  /if (${Me.PctMana}>40 && !${NetBots[${MA}].Attacking} && !${VerifySpell.Find[ ${ShieldingID} ]}) {
     /target id ${Me.ID}
     /call cast "${Shielding}" gem8 3s
     /delay 3s !${Me.Casting.ID}
  }
  /goto :next
   
 
:next
  /assist ${MA}
  /delay 1s
  /if (${Target.PctHPs}>10 && ${Target.PctHPs}<95 && ${Target.Type.NotEqual[CORPSE]} && ${Target.Type.Equal["NPC"]} && ${sn2timer}==0) {
     /call cast "${Nuke1}" gem1 3s
     /delay 3s !${Me.Casting.ID}
     /varset sn2timer 5s
  }
  /if (${Target.Type.Equal["NPC"]} && ${Target.Type.Equal[CORPSE]}) /varset sn2timer 0
  /goto :start
  /return
 
Sub Event_death(line)
/endmacro


This one is the more complex one. It uses the /for to cycle through the netbots and check for buffs. I have tested the snippet and worked great. I finished working into the main shaman macro and expanded on it a little, but haven't teste it fully.

Example (low LVL Shaman macro - full):
Macro
More +

#include Spell_routines.inc
#chat group
#chat tell






Sub Main
|====================================================
|                     Spells                        
|       Main                         Secondary      
|____________________________________________________
|1. Frost Rift ..................................
|2. Drowsy ......................................
|3. Dexterous Aura ( 27m / 266 ) ................
|4. Feet like Cat ( 36m / 269 ) .................
|5. Spirit of Bear ( 36m / 279 ) ................
|6. Talisman of the Beast ( 27m / 2521 ) ........
|7. Fleeting Fury ( 20s / 271 ) .................
|8. Minor Healing ...............................
|====================================================
  /declare MA             string outer Brel
  /declare ToonName       string outer
  /declare VerifySpell    string outer
 
  /declare Nuke           string outer Frost Rift
  /declare Heal           string outer Minor Heal
  /declare Slow           string outer Drowsy

 
  /declare STR            string outer Talisman of the Beast
  /declare STRID          string outer
  /varset STRID ${Me.Book[${Me.Book[Talisman of the Beast]}].ID}
 
  /declare DEX            string outer Dexterous Aura
  /declare DEXID          string outer
  /varset DEXID ${Me.Book[${Me.Book[Dexterous Aura]}].ID}
 
  /declare STA            string outer Spirit of Bear
  /declare STAID          string outer
  /varset STAID ${Me.Book[${Me.Book[Spirit of Bear]}].ID}
 
  /declare AGI            string outer Feet like Cat
  /declare AGIID          string outer
  /varset AGIID ${Me.Book[${Me.Book[Feet like Cat]}].ID}
 
  /declare TempBuff       string outer Fleeting Fury
  /declare TempBuffID     string outer
  /varset TempBuffID ${Me.Book[${Me.Book[Fleeting Fury]}].ID}
 
  /declare x int local
  /declare y int local
  /declare nuketimer      timer outer
  /declare SlowTimer      timer outer


:start
  /if (!${Me.Casting.ID} && ${Me.State.Equal[STAND]} && ${Me.PctMana}<98) /sit
  /doevents
  /delay 10
  /if (${Me.PctMana}>20) /goto :Buffs
  /goto :start
 
 
:Buffs

  /if (${Me.PctMana}>40) {
     /for x 1 to ${NetBots.Counts}
         
         /varset ToonName ${NetBots.Client.Token[${x}, ]}
         /varset VerifySpell " ${NetBots[${ToonName}].Buff} "
         
|Temp buff
         /if (!${VerifySpell.Find[ ${TempBuffID} ]} && ${NetBots[${ToonName}].TargetID} && ${NetBots[${ToonName}].Attacking}) {
             /target ${ToonName}
             /if (${Select[${Target.Class.ShortName},SHD,PAL,WAR,MNK,BRD,BER]}) /call cast "${TempBuff}" gem7 3s
             /delay 4s !${Me.Casting.ID}
         }

     /next x
  }


  /if (${Me.PctMana}>60) {
     /for y 1 to ${NetBots.Counts}
         
         /varset ToonName ${NetBots.Client.Token[${y}, ]}
         /varset VerifySpell " ${NetBots[${ToonName}].Buff} "
         
|STR buff
         /if (!${VerifySpell.Find[ ${STRID} ]} && !${NetBots[${ToonName}].Attacking}) {
             /target ${ToonName}
             /if (${Select[${Target.Class.ShortName},SHD,PAL,WAR,MNK,BRD,BER]}) /call cast "${STR}" gem6 3s
             /delay 4s !${Me.Casting.ID}
          }
         
|DEX buff
         /if (!${VerifySpell.Find[ ${DEXID} ]} && !${NetBots[${ToonName}].Attacking}) {
             /target ${ToonName}
             /if (${Select[${Target.Class.ShortName},SHD,PAL,WAR,MNK,BRD,BER]}) /call cast "${DEX}" gem3 3s
             /delay 4s !${Me.Casting.ID}
         }
         
|STA buff
         /if (!${VerifySpell.Find[ ${STAID} ]} && !${NetBots[${ToonName}].Attacking}) {
             /target ${ToonName}
             /if (${Select[${Target.Class.ShortName},SHD,PAL,WAR,MNK,BRD,BER]}) /call cast "${STA}" gem5 3s
             /delay 4s !${Me.Casting.ID}
         }
         
|AGI buff
         /if (!${VerifySpell.Find[ ${AGIID} ]} && !${NetBots[${ToonName}].Attacking}) {
             /target ${ToonName}
             /if (${Select[${Target.Class.ShortName},SHD,PAL,WAR,MNK,BRD,BER]}) /call cast "${AGI}" gem4 3s
             /delay 4s !${Me.Casting.ID}
         }
         
         
     /next y
  }

   
:next
  /assist ${MA}
  /delay 1s
  /if (${Target.PctHPs}>25 && ${Target.PctHPs}<85 && ${Target.Type.NotEqual[CORPSE]} && ${Target.Type.Equal["NPC"]} && ${SlowTimer}==0) {
      /call cast "${Slow}" gem2 4s
      /delay 3s !${Me.Casting.ID}
      /varset SlowTimer 25s
      }
     
  /if (${Target.PctHPs}>25 && ${Target.PctHPs}<75 && ${Target.Type.NotEqual[CORPSE]} && ${Target.Type.Equal["NPC"]} && ${nuketimer}==0) {
      /call cast "${Nuke}" gem1 4s
      /delay 3s !${Me.Casting.ID}
      /varset nuketimer 10s
      }  
  /if (${Target.Type.Equal["NPC"]} && ${Target.Type.Equal[CORPSE]}) {
      /varset nuketimer 0
      /varset SlowTimer 0
      }
       
  /goto :start
  /return


Now those are examples...
This is just the basic snippet if you just want to look at it. I have tested this:
Macro
More +

#include Spell_routines.inc
#chat group
#chat tell




Sub Main
/declare x int local

/declare tempbuff string outer Fleeting Fury
/declare 1SpellID string outer
/varset 1SpellID ${Me.Book[${Me.Book[Fleeting Fury]}].ID}


/declare TOONNAME string outer
/declare sTemp string outer


:start
   /for x 1 to ${NetBots.Counts}
   /varset TOONNAME ${NetBots.Client.Token[${x}, ]}
   /varset sTemp " ${NetBots[${TOONNAME}].Buff} "
   /if (!${sTemp.Find[ ${1SpellID} ]}) {
     /target ${TOONNAME}
     /call cast "${tempbuff}" gem7 3s
     /delay 4s !${Me.Casting.ID}
    }
/next x


    /goto :start
    /return


Hope you enjoy this and it comes in handy =)
Fri Jun 22, 2012 8:45 am
ok so just as a note (which I learned something new today) DO NOT put a note with
" | " unless you do it at the beginning of a line.. it doesn't work properly if there are any space between it and the begining of that line.
Never thought about it and usualy just have it at the begining of the line. I didn't this time and it kept making my macro stop dead in it's tracks and couldn't figure out why for a couple of hours because it was giving me the line right before it.

On a brighter note, once I fixed the code.... it worked like a charm.. LOVE netbots..
Fri Jun 22, 2012 4:10 pm
the [ syntax ] parser on here does not like a comment | with nothing after it.

if you get in the habit of always using a space after it, then it works fine.
_________________
Sorvani
Sat Jun 23, 2012 4:06 pm
Senior Project Member
I have a few small bits here and there in my macro that you might like.
I have not worked on it in some time but its some basic stuff you can easily expand on. Love netbots.
Thu Jun 28, 2012 3:51 am
Listen to This Guy
Public Macros I have Seen the New World of NEtBots (plugin)
Reply