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
| -------------------------------


