Macros for Grief Resolving
On this page, I ( Krenath) plan on documenting the MacroMod macros that I use for more easily resolving grief reports so that other admins can streamline the process
These macros were made for a QWERTY keyboard.
Screen Buttons
I have a number of panels and buttons configured for displaying data scraped from chat so I don't lose track of what the /grcheck
command told me about a grief report.
These display both on the INCHAT and INGAME layers of the MacroMod GUI editor so I can see them whether I'm in chat or not.
Across the top, it tells me:
- whether or not the Prism Inspect tool is enable or disabled so that I can avoid punching holes in builds while checking grief,
- The Greport number
- The Greport author name
- The blocktype the author was facing when reporting
- The count of remaining grief reports
Below that, I have the text of the greport itself so I can refer back to it easily.
Down the right side of the screen, I have macro buttons which are also bound to hotkeys so I can easily resolve the report with one click.
These only display on the INCHAT layer of the screen so they don't clutter the screen all the time, and only appear when my cursor is enabled so I can click them.
- F7: Go to the current grief report and load its data into the onscreen panels. This does not increment the report counter, so if you're called away, you can easily return to this report.
- F8: Mark the current grief report as FIXED and automatically go on to the next grief report
- F9: Mark the current grief report as NOT FIXED and move on.
- F10: Mark the current grief report as NOT GRIEF and move on.
- F11: Mark the current grief report as UNCLEAR and move on.
- F12: Mark the current grief report as a DUPLICATE of a previous report and move on.
Events
I have a series of macro text files for handling chat events, which I use to capture the data from the /grcheck
command to be displayed on the screen for easy reference.
In Macro Bindings:Events section of Macromod's GUI Editor, I select OnChat and bind it to $${$$<onchat.txt>}$$
which selects the Onchat textfile to be executed whenever chat arrives. This file is then used to scrape the chat for data to be displayed.
Keybinds
- Z
/pr near
- F7
/grcheck next
- F8
${$$<greport-resolve-fixed.txt>}$$
- F9
${$$<greport-resolve-notfixed.txt>}$$
- F10
${$$<greport-resolve-notgrief.txt>}$$
- F11
${$$<greport-resolve-duplicate.txt>}$$
- F12
${$$<greport-resolve-unclear.txt>}$$
- Keypad -
/grcheck next
- Keypad +
/pr i
- PgUp
/minecraft:gamemode creative
- PgDn
/minecraft:gamemode spectator
Files
These are the macro files I created for handling the above features
onchat.txt
In the MacroMod Text Editor, I created an onchat.txt file that matches the pattern of the /grcheck and /gresolve commands' output and extracts various pieces of data into variable which are then used to update the display:
SET(&greportpattern,Teleporting to greport ([0-9]*) by (.*)\, facing (.*)\.); IFMATCHES(%CHATCLEAN%,%&greportpattern%,@#greportnumber,1); MATCH(%CHATCLEAN%,%&greportpattern%,@&greportplayer,2); MATCH(%CHATCLEAN%,%&greportpattern%,@&greportblock,3); //log(&9Checking greport #&f%@#greportnumber%&9 by &f%@&greportplayer%&9 facing &f%@&greportblock%&9.&f); LOGTO(debug,%CHAT%); EXEC(greportcurrent.txt); FILTER(); ENDIF; IFMATCHES(%CHATCLEAN%,"Grief report ([0-9]*) marked as resolved."); //log(&9Greport #%@#greportnumber% saved.); echo(/grcheck count); echo(/grcheck next); ENDIF; IFMATCHES(%CHATCLEAN%,"(.*) just submitted a new grief report."); echo(/grcheck count); ENDIF; IFMATCHES(%CHATCLEAN%," \"(.*)\"",@&greportdetails,1); \\log(&9found description line: &f"%@&greportdetails%&9"); exec(greportdetails.txt); ENDIF; IFMATCHES(%CHATCLEAN%,"There are ([0-9]*) unresolved grief reports.",@#greportcount,1); LOGTO(debug,%CHAT%); exec(greportcount.txt); ENDIF; IFMATCHES(%CHATCLEAN%,"Prism // Inspection wand enabled."); LOGTO(debug,%CHAT%); SETPROPERTY(Prism,text,&4Enabled); SETPROPERTY(Prism2,text,&4Enabled); FILTER(); ENDIF; IFMATCHES(%CHATCLEAN%,"Prism // Inspection wand disabled."); LOGTO(debug,%CHAT%); SETPROPERTY(Prism,text,&3Disabled); SETPROPERTY(Prism2,text,&3Disabled); FILTER(); ENDIF; IFMATCHES(%CHATCLEAN%,"\(Staff\) .*"); LOGTO(debug,&f%CHAT%); ENDIF; IFMATCHES(%CHATCLEAN%,"/* \(...\) \[.*\]"); FILTER(); LOGTO(debug,&f%CHAT%); ENDIF; IFMATCHES(%CHATCLEAN%,"There are no outstanding grief reports left."); LOGTO(debug,%CHAT%); SETPROPERTY(LABEL 264,text, ) SETPROPERTY(LABEL 265,text, ) SETPROPERTY(LABEL 266,text, ) SETPROPERTY(LABEL 267,text, ) SETPROPERTY(LABEL 268,text, ) SETPROPERTY(LABEL 269,text, ) SETPROPERTY(LABEL 270,text, ) SETPROPERTY(LABEL 271,text, ) SETPROPERTY(LABEL 473,text, ) SETPROPERTY(LABEL 474,text, ) SETPROPERTY(LABEL 475,text, ) SETPROPERTY(LABEL 476,text, ) SETPROPERTY(LABEL 477,text, ) SETPROPERTY(LABEL 478,text, ) SETPROPERTY(LABEL 479,text, ) FILTER(); ENDIF; SET(&banevaderpattern,WARNING: (.*) is connecting from the same address as banned accounts: (.*)); IFMATCHES(%CHATCLEAN%,%&banevaderpattern%,&banevader,1); MATCH(%CHATCLEAN%,%&banevaderpattern%,&bannedaccounts,2); LOGTO(debug,%CHAT%); ECHO(%&banevader%, you were already banned as %&bannedaccounts%.); ECHO(/ban %&banevader% Ban evasion - %&bannedaccounts%); ENDIF;
greportcurrent.txt
This file takes the variables that were set in the OnChat file above and populates the onscreen display panels in both the INGAME and INCHAT layers
I have this file set to handle most of the appearance of these buttons as well so I don't have to go to the GUI editor to update them if I choose:
//greportcurrent.txt //Grepair Display Current Number //Grepair REPORTER Label INGAME SET(#labelnumber,265); //Update label 265. Change this to match your label ID SETPROPERTY(LABEL %#labelnumber%,align,middle center); SETPROPERTY(LABEL %#labelnumber%,background,#80000000); //Transparent SETPROPERTY(LABEL %#labelnumber%,colour,#ff0000); //Red SETPROPERTY(LABEL %#labelnumber%,shadow,1); SETPROPERTY(LABEL %#labelnumber%,text,&bby:\n&c%@&greportplayer%); SETPROPERTY(LABEL %#labelnumber%,visible,true); WAIT(5t); UNSET(#labelnumber); //Grepair REPORTER Label INGAME SET(#labelnumber,268); //Update label 268. Change this to match your label ID SETPROPERTY(LABEL %#labelnumber%,align,middle center); SETPROPERTY(LABEL %#labelnumber%,background,#80000000); //Transparent SETPROPERTY(LABEL %#labelnumber%,colour,#ff0000); //Red SETPROPERTY(LABEL %#labelnumber%,shadow,1); SETPROPERTY(LABEL %#labelnumber%,text,&bby:\n&c%@&greportplayer%); SETPROPERTY(LABEL %#labelnumber%,visible,true); WAIT(5t); UNSET(#labelnumber); //Grepair BLOCK Label INGAME SET(#labelnumber,264); //Update label 264. Change this to match your label ID SETPROPERTY(LABEL %#labelnumber%,align,middle center); SETPROPERTY(LABEL %#labelnumber%,background,#80000000); //Transparent SETPROPERTY(LABEL %#labelnumber%,colour,#ff0000); //Red SETPROPERTY(LABEL %#labelnumber%,shadow,1); SETPROPERTY(LABEL %#labelnumber%,text,&bfacing:\n&c%@&greportblock%); SETPROPERTY(LABEL %#labelnumber%,visible,true); WAIT(5t); UNSET(#labelnumber); //Grepair BLOCK Label INGAME SET(#labelnumber,267); //Update label 267. Change this to match your label ID SETPROPERTY(LABEL %#labelnumber%,align,middle center); SETPROPERTY(LABEL %#labelnumber%,background,#80000000); //Transparent SETPROPERTY(LABEL %#labelnumber%,colour,#ff0000); //Red SETPROPERTY(LABEL %#labelnumber%,shadow,1); SETPROPERTY(LABEL %#labelnumber%,text,&bfacing:\n&c%@&greportblock%); SETPROPERTY(LABEL %#labelnumber%,visible,true); WAIT(5t); UNSET(#labelnumber); //Grepair CURRENT # Label INGAME SET(#labelnumber,474); //Update label 474. Change this to match your label ID SETPROPERTY(LABEL %#labelnumber%,align,middle center); SETPROPERTY(LABEL %#labelnumber%,background,#80000000); //Transparent SETPROPERTY(LABEL %#labelnumber%,colour,#ff0000); //Red SETPROPERTY(LABEL %#labelnumber%,shadow,1); SETPROPERTY(LABEL %#labelnumber%,text,&bGReport #:\n&c%@#greportnumber%); SETPROPERTY(LABEL %#labelnumber%,visible,true); //SETPROPERTY(LABEL %#labelnumber%,binding); WAIT(5t); UNSET(#labelnumber); //Grepair CURRENT # Label INCHAT SET(#labelnumber,473); //Update label 473. Change this to match your label ID SETPROPERTY(LABEL %#labelnumber%,align,middle center); SETPROPERTY(LABEL %#labelnumber%,background,#80000000); //Transparent SETPROPERTY(LABEL %#labelnumber%,colour,#ff0000); //Red SETPROPERTY(LABEL %#labelnumber%,shadow,1); SETPROPERTY(LABEL %#labelnumber%,text,&bGReport #:\n&c%@#greportnumber%); SETPROPERTY(LABEL %#labelnumber%,visible,true); WAIT(5t); UNSET(#labelnumber); //FIXED Button SET(#buttonnumber,475); //Update label 475. Change this to match your label ID SETPROPERTY(BUTTON %#buttonnumber%,align,middle center); SETPROPERTY(BUTTON %#buttonnumber%,background,#40800000; //Transparent SETPROPERTY(BUTTON %#buttonnumber%,colour,#ff0000); //Red SETPROPERTY(BUTTON %#buttonnumber%,shadow,1); SETPROPERTY(BUTTON %#buttonnumber%,text,&cF8\n&bFixed); SETPROPERTY(BUTTON %#buttonnumber%,visible,true); WAIT(5t); UNSET(#buttonnumber); //NOT FIXED Button SET(#buttonnumber,476); //Update label 476. Change this to match your label ID SETPROPERTY(BUTTON %#buttonnumber%,align,middle center); SETPROPERTY(BUTTON %#buttonnumber%,background,#40800000); //Transparent SETPROPERTY(BUTTON %#buttonnumber%,colour,#ff0000); //Red SETPROPERTY(BUTTON %#buttonnumber%,shadow,1); SETPROPERTY(BUTTON %#buttonnumber%,text,&cF9\n&bNot Fixed); SETPROPERTY(BUTTON %#buttonnumber%,visible,true); WAIT(5t); UNSET(#buttonnumber); //NOT GRIEF Button SET(#buttonnumber,477); //Update label 477. Change this to match your label ID SETPROPERTY(BUTTON %#buttonnumber%,align,middle center); SETPROPERTY(BUTTON %#buttonnumber%,background,#40800000); //Transparent SETPROPERTY(BUTTON %#buttonnumber%,colour,#ff0000); //Red SETPROPERTY(BUTTON %#buttonnumber%,shadow,1); SETPROPERTY(BUTTON %#buttonnumber%,text,&cF10\n&bNot Grief); SETPROPERTY(BUTTON %#buttonnumber%,visible,true); WAIT(5t); UNSET(#buttonnumber); //UNCLEAR Button SET(#buttonnumber,478); //Update label 478. Change this to match your label ID SETPROPERTY(BUTTON %#buttonnumber%,align,middle center); SETPROPERTY(BUTTON %#buttonnumber%,background,#40800000); //Transparent SETPROPERTY(BUTTON %#buttonnumber%,colour,#ff0000); //Red SETPROPERTY(BUTTON %#buttonnumber%,shadow,1); SETPROPERTY(BUTTON %#buttonnumber%,text,&cF11\n&bUnclear); SETPROPERTY(BUTTON %#buttonnumber%,visible,true); WAIT(5t); UNSET(#buttonnumber); //DUPLICATE Button SET(#buttonnumber,479); //Update label 479. Change this to match your label ID SETPROPERTY(BUTTON %#buttonnumber%,align,middle center); SETPROPERTY(BUTTON %#buttonnumber%,background,#40800000); //Transparent SETPROPERTY(BUTTON %#buttonnumber%,colour,#ff0000); //Red SETPROPERTY(BUTTON %#buttonnumber%,shadow,1); SETPROPERTY(BUTTON %#buttonnumber%,text,&cF12\n&bDuplicate); SETPROPERTY(BUTTON %#buttonnumber%,visible,true); WAIT(5t); UNSET(#buttonnumber); STOP;
greport-resolve-fixed.txt
Now that I have buttons for resolving grief, I want a neat display when I mark grief as resolved.
These scripts are bound (I did this manually during setup) in each of the buttons created above.
This file is manually bound to the F8 key as well as to the onscreen button
log(Resolving Grepair number: %@#greportnumber%); echo(/grcheck resolve %@#greportnumber% fixed); WAIT(5t);
greport-resolve-notfixed.txt
This file is manually bound to the F9 key as well as to the onscreen button
log(Resolving Grepair number: %@#greportnumber%); echo(/grcheck resolve %@#greportnumber% notfixed); WAIT(5t);
greport-resolve-notgrief.txt
This file is manually bound to the F10 key as well as to the onscreen button
log(Resolving Grepair number: %@#greportnumber%); echo(/grcheck resolve %@#greportnumber% notgrief); WAIT(5t);
greport-resolve-duplicate.txt
This file is manually bound to the F11 key as well as to the onscreen button
log(Resolving Grepair number: %@#greportnumber%); echo(/grcheck resolve %@#greportnumber% fixed nomail); wait(5t);
greport-resolve-unclear.txt
This file is manually bound to the F12 button as well as to the onscreen button
log(Resolving Grepair number: %@#greportnumber%); echo(/grcheck resolve %@#greportnumber% unclear); WAIT(5t);
greportdetails.txt
Update the onscreen display of grief report details when the grcheck command is used.
LOG(GreportDetails); //Grepair DETAILS Label INGAME SET(#labelnumber,266); //Update label 266. Change this to match your label ID SETPROPERTY(LABEL %#labelnumber%,align,middle center); SETPROPERTY(LABEL %#labelnumber%,background,#80000000); //Transparent SETPROPERTY(LABEL %#labelnumber%,colour,#ff0000); //Red SETPROPERTY(LABEL %#labelnumber%,shadow,1); SETPROPERTY(LABEL %#labelnumber%,text,&3%@&greportdetails%); SETPROPERTY(LABEL %#labelnumber%,visible,true); WAIT(5t); UNSET(#labelnumber); //Grepair DETAILS Label INchat SET(#labelnumber,269); //Update label 269. Change this to match your label ID SETPROPERTY(LABEL %#labelnumber%,align,middle center); SETPROPERTY(LABEL %#labelnumber%,background,#80000000); //Transparent SETPROPERTY(LABEL %#labelnumber%,colour,#ff0000); //Red SETPROPERTY(LABEL %#labelnumber%,shadow,1); SETPROPERTY(LABEL %#labelnumber%,text,&3%@&greportdetails%); SETPROPERTY(LABEL %#labelnumber%,visible,true); WAIT(5t); UNSET(#labelnumber);
greportcount.txt
Update the onscreen display of the remaining count of reports when a report is resolved or another report is created
LOG(greportcount &3%@#greportcount%); SET(&greporttext,&3Remaining:\n&b%@#greportcount%); //Grepair COUNT Label INGAME SET(#labelnumber,270); //Update label 270. Change this to match your label ID SETPROPERTY(LABEL %#labelnumber%,align,middle center); SETPROPERTY(LABEL %#labelnumber%,background,#80000000); //Transparent SETPROPERTY(LABEL %#labelnumber%,colour,#ff0000); //Red SETPROPERTY(LABEL %#labelnumber%,shadow,1); SETPROPERTY(LABEL %#labelnumber%,text,%&greporttext%); SETPROPERTY(LABEL %#labelnumber%,visible,true); WAIT(5t); UNSET(#labelnumber); //Grepair COUNT Label INchat SET(#labelnumber,271); //Update label 271. Change this to match your label ID SETPROPERTY(LABEL %#labelnumber%,align,middle center); SETPROPERTY(LABEL %#labelnumber%,background,#80000000); //Transparent SETPROPERTY(LABEL %#labelnumber%,colour,#ff0000); //Red SETPROPERTY(LABEL %#labelnumber%,shadow,1); SETPROPERTY(LABEL %#labelnumber%,text,%&greporttext%); SETPROPERTY(LABEL %#labelnumber%,visible,true); WAIT(5t); UNSET(#labelnumber);