roll.mac (Automatic roll (/ran) tracker) - *New Parm Ready*

A forum for you to dump all the macros you create, allowing users to use, modify, and comment on your work.

Moderator: MacroQuest Developers

ml2517
a grimling bloodguard
a grimling bloodguard
Posts: 1216
Joined: Wed Nov 12, 2003 1:12 am

roll.mac (Automatic roll (/ran) tracker) - *New Parm Ready*

Post by ml2517 » Mon Mar 15, 2004 9:51 pm

Code: Select all

|
| roll.mac  Automatic roll (/ran) tracker.
|
| Version 1.14 
| Date:4/22/2004 7:00am 
|    
|  Usage:
|    /macro roll.mac [low end roll] [high end roll]  (If you don't specify a low and high roll it uses 0 to 1000)
|    
|    Begins tracking your group members rolls:
|    /echo start
|
|    Stops tracking your group members rolls and tells you the winner:
|    /echo stop
|


#Event WhoRolled "**A Magic Die is rolled by"
#Event Roll "**It could have been any number from"

#Event Start "[MQ2] start"
#Event Stop "[MQ2] stop"

#turbo 50

| -------------------------------
Sub Main
/zapvars
/declare Low global
/declare High global
/if (${Defined[Param0]}) {
    /varset Low @Param0
} else {
    /varset Low 0
}
/if (${Defined[Param1]}) {
    /varset High @Param1
} else {
    /varset High 1000
}
/declare Started global
/varset Started 0
/declare ParseName global
/declare RollArray array
/declare PlayerArray array

/doevents flush

:MainLoop
/delay 0
/doevents WhoRolled
/doevents Start
/doevents Stop
/goto :MainLoop
/return

| -------------------------------
Sub Event_WhoRolled(EvtText)
/declare a local
/declare Flag local
/varset Flag -1
/varset ParseName "${String["@EvtText"].Arg[7].Left[${Math.Calc[${String["@EvtText"].Arg[7].Length}-1]}]}"
/for a 1 to 6
    /if (${String["@ParseName"].Equal["${Group[${Math.Calc[@a-1]}]}"]}) /goto :Check1
    /if (${String["@ParseName"].Equal["${Me.Name}"]}) /if (${Math.Calc[@a-1].Int}==0) /goto :Check1
    /goto :Check2
    :Check1
    /if (@Started==1) {
        /varset Flag 1
        /goto :Check3
    }
    :Check2
/next a
:Check3
/if (@Flag==-1) {
    /doevents flush
} else {
    /doevents Roll
}
/return

| -------------------------------
Sub Event_Roll(EvtText)
/declare ParseLow local
/declare ParseHigh local
/declare RollResult local
/declare a local
/declare b local
/declare Flag local

/varset ParseLow ${String["@EvtText"].Arg[8]}
/varset ParseHigh ${String["@EvtText"].Arg[10].Left[${Math.Calc[${String["@EvtText"].Arg[10].Length}-1]}]}
/varset RollResult ${String["@EvtText"].Arg[18].Left[${Math.Calc[${String["@EvtText"].Arg[18].Length}-1]}]}

/varset Flag 0
/for a 1 to 6
    /if (${String["@ParseName"].Equal["${Group[${Math.Calc[@a-1]}]}"]}) /goto :Check1
    /if (${String["@ParseName"].Equal["${Me.Name}"]}) /if (${Math.Calc[@a-1].Int}==0) /goto :Check1
    /goto :Check2
    :Check1
    /if (@ParseLow==@Low) /if (@ParseHigh==@High) {
        /for b 1 to 6          
            /if (${String["@PlayerArray(@b)"].Equal["@ParseName"]}) /varset Flag 1
        /next b
        /if (@Flag==0) {
            /varset PlayerArray(@a) @ParseName
            /varset RollArray(@a) @RollResult
            /echo Player:@PlayerArray(@a) rolled a @RollArray(@a).
            /goto :GetOut
        } else {
            /echo Player:@ParseName had already rolled, ignoring this roll.
            /goto :GetOut
        }
    } else {
        /echo Player:@ParseName rolled improperly. Low:@ParseLow High:@ParseHigh Roll:@RollResult, ignoring this roll.
        /goto :GetOut
    }
    :Check2
/next a
:GetOut
/return

| -------------------------------
Sub Event_Start
/varset Started 1
/echo Roll tracking started.  Please have your group roll with: /ran @Low @High
/doevents flush
/return

| -------------------------------
Sub Event_Stop
/echo Roll tracking stopped.
/varset Started 0
/declare Winner local
/declare WinnerRoll local
/declare a local
/varset Winner ""
/varset WinnerRoll -1

/for a 1 to 6
    /if (${String["@PlayerArray(@a)"].NotEqual["UNDEFINED-ARRAY-ELEMENT"]}) {
        /if (@RollArray(@a)>@WinnerRoll) {
            /varset Winner @PlayerArray(@a)
            /varset WinnerRoll @RollArray(@a)
        }
        /varset PlayerArray(@a) "UNDEFINED-ARRAY-ELEMENT"
        /varset RollArray(@a) -1
    }
/next a
/if (${String["@Winner"].Length}>0) {
    /echo The Winner is: [ @Winner ] with a roll of @WinnerRoll
    /doevents flush
}
/return
| -------------------------------
Last edited by ml2517 on Thu Apr 22, 2004 8:18 am, edited 7 times in total.

Lane
a hill giant
a hill giant
Posts: 201
Joined: Fri Dec 06, 2002 11:57 am

Post by Lane » Mon Mar 15, 2004 10:50 pm

You must do a bunch of ldons to have written this..

Kinda cool.

-Lane

ml2517
a grimling bloodguard
a grimling bloodguard
Posts: 1216
Joined: Wed Nov 12, 2003 1:12 am

Post by ml2517 » Mon Mar 15, 2004 11:01 pm

Nah someone was asking how to do it and I was bored. :lol:

JimJohnson
a grimling bloodguard
a grimling bloodguard
Posts: 1299
Joined: Sat Oct 11, 2003 6:00 am

Post by JimJohnson » Tue Mar 16, 2004 2:43 am

Another fine peice of work ml2517

Ogre_Luvr
a lesser mummy
a lesser mummy
Posts: 52
Joined: Thu Dec 18, 2003 10:11 pm
Location: DC

macro

Post by Ogre_Luvr » Tue Mar 16, 2004 4:06 pm

This looks awsome .. thanks exactly what i wanted. can't wait to use it

ml2517
a grimling bloodguard
a grimling bloodguard
Posts: 1216
Joined: Wed Nov 12, 2003 1:12 am

Post by ml2517 » Fri Apr 02, 2004 7:05 pm

Updated:
Now requires the new MQ2DATATYPES to be turned on. This is my first conversion so there might be better ways to do things, but I had to muddle my way through it just to get /newif to work properly for me.

ml2517
a grimling bloodguard
a grimling bloodguard
Posts: 1216
Joined: Wed Nov 12, 2003 1:12 am

Post by ml2517 » Thu Apr 08, 2004 10:06 pm

Update:
Made some changes to the code to make it a bit more efficient.

ml2517
a grimling bloodguard
a grimling bloodguard
Posts: 1216
Joined: Wed Nov 12, 2003 1:12 am

Post by ml2517 » Sat Apr 10, 2004 1:20 am

Update:
Cleaned up a bit.

ml2517
a grimling bloodguard
a grimling bloodguard
Posts: 1216
Joined: Wed Nov 12, 2003 1:12 am

Post by ml2517 » Tue Apr 20, 2004 8:04 pm

Update:
Updated all /newif's to have parenthesis around them in prep for the change.

ml2517
a grimling bloodguard
a grimling bloodguard
Posts: 1216
Joined: Wed Nov 12, 2003 1:12 am

Post by ml2517 » Thu Apr 22, 2004 8:19 am

Updated:
roll.mac

Just updating ${String lines to be more efficient.