Code: Select all
|
| roll.mac Automatic roll (/ran) tracker.
|
| Version 1.16
| Date:5/11/2004 4: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#*#"
| -------------------------------
Sub Main
/declare Low int outer
/declare High int outer
/if (${Defined[Param0]}) {
/varset Low ${Param0}
} else {
/varset Low 0
}
/if (${Defined[Param1]}) {
/varset High ${Param1}
} else {
/varset High 1000
}
/declare Started int outer
/varset Started 0
/declare ParseName string outer
/declare RollArray[6] int outer UNDEFINED-ARRAY-ELEMENT
/declare PlayerArray[6] string outer UNDEFINED-ARRAY-ELEMENT
/doevents flush
:MainLoop
/doevents WhoRolled
/doevents Start
/doevents Stop
/goto :MainLoop
/return
| -------------------------------
Sub Event_WhoRolled(EvtText)
/declare a int local
/declare Flag int 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
/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 int local
/declare ParseHigh int local
/declare RollResult int local
/declare a int local
/declare b int local
/declare Flag int 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
/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 string local
/declare WinnerRoll int local
/declare a int local
/varset Winner No One
/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
| -------------------------------
