Macros for Grief Resolving

From MinecraftOnline
Jump to navigation Jump to search

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.
GriefCheckDisplay.png

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