How can i filter messages? They should disappear :/
But i still don't get it.
When a chat message is received, it is attached to a process that runs the ChatFilter script
If the process encounters Modify(text), it replaces the chat attached to it with the text in the command, and continues on with the rest of the script
If it encounters a Filter() command, it stops the process and destroys the message
And if it encounters a Pass(), or the end of the script, the process stops and the message is passed on to your chat
By default, you have no script attached to your ChatFilter, meaning as soon as the process is created and the message attached to it, it will have reached the end of the script and the message is released into your chat
----
What have you tried?, what are you expecting it to do?, and what is it doing instead?
i've figured out how to do a lot with this mod, but one thing i don't understand is how to grab information, like for example your current coords, and display them in a chat message in a formatted way
--
Also another thing I don't quite understand how to do is to "nest" macros..
Example:
I have one macro setup up to request information in an input field, and I have another macro which when ran can provide that information, however I can't run that macro when in my input field.
i've figured out how to do a lot with this mod, but one thing i don't understand is how to grab information, like for example your current coords, and display them in a chat message in a formatted way
--
Also another thing I don't quite understand how to do is to "nest" macros..
Example:
I have one macro setup up to request information in an input field, and I have another macro which when ran can provide that information, however I can't run that macro when in my input field.
If you mean parameters like $$? or the Prompt() command then it pauses the script while it waits for your answer
otherwise there'd be no point in asking since the script would finish before you could start typing
If it's not that then i'm not quite sure what you mean, could you give me an example of what you tried
edit: Oh, um, in GUI's that block macros, usually you can hold macro override and press the key to trigger it anyway, but again i'm not sure if that would work in a Prompt/Parameter input screen
As for displaying information, i have no idea where the confusion lies so have an example
$${
Log(&cx&by&az: &c%XPOS% &b%YPOS% &a%ZPOS%)
}$$
What exactly do you mean by formatted? Please give an example
anyone able to help with a macro, just need it to hold down left mouse, and when my inventory is full I would like it to type "/sell all" then repeat. would also be nice if I could tab out of the game and the macro keeps on working
attack for 10 seconds
shift-click inside the inventory, then inside the hotbar (assuming inv. full of only one thing, this will try to free up a slot)
check if the slot was freed up, if it still contains 64 items, assume you're full and say /sell all,
whatever the if is true or false, every $$ will be ask.
I think it can be modify to the code that execute.
if it is false, only the $$4 will be prompt.
So guys, is there any way to make a Label always visible? I wanted to add a label to show the TOTALXP and sure it is possible to see the number there by just adding %% to the label and TOTALXP to the binding, but thing is how annoying having to press the key to see the labels/buttons is, instead of just having the number floating there in the screen. Is that possible?
Every $$ parameter will be evaluated before the script even runs. To avoid this, use the PROMPT(<&target>,<paramstring>,[prompt],[override],[default]) command, which will only ask you for the parameter when the script reaches the command.
Your script would be:
PROMPT(&cmd,"$$[cmd]","Enter the command");
IF(&cmd = "mvm set");
PROMPT(&property,"$$[property]","Which property do you want to set?");
PROMPT(&value,"$$[value[true,false]]","Select the value");
PROMPT(&world,"$$[world]","Which world dou you want to modify?");
ECHO("/%&cmd% %&property% %&value% %&world%");
ELSE;
PROMPT(&args,"$$[args]","Enter the command arguments");
ECHO("/%&cmd% %&args%");
ENDIF;
OK, I know what you mean, thanks.
I still has problem. prompt can not be interrupt when you choose wrong. any suggestion ?
For some reason the LOOK() command is not working for me - It always gets one coordinate right, either pitch or yaw, but for some reason, it changes the other coordinate. Do you have any idea this would be?
90, 30 turns into 270, 30
270,30 turns into 90,30
sometimes I change both coordinates and the position it goes to stays the same as the last time I did the command.
EDIT: It seems I have found out how to (sort of) fix this - you make it look one way, then you LOG the pitch and yaw of where it sent you, and then you enter that into look, and it goes to where it should. Weird.
there are a suggestion for the script.
I think you can designed a simple syntax check.
because your command need ; in the end, if i did not add the ';', it does not show any error.
I think that will be better if there are syntax check, and show the syntax error.
there are a suggestion for the script.
I think you can designed a simple syntax check.
because your command need ; in the end, if i did not add the ';', it does not show any error.
I think that will be better if there are syntax check, and show the syntax error.
You don't need a ';' at the end of every command. If you separate them with a new line it will also work.
How do I make a command be typed in chat multiple times every few seconds and make it loop? I do not know how to script or do stuff within the file editor so I am happy to gain any information I can.
How do I make a command be typed in chat multiple times every few seconds and make it loop? I do not know how to script or do stuff within the file editor so I am happy to gain any information I can.
Assuming you know how to add bindings...
In order to bind a script rather than a single message or command, you need to surround your binding with script tags $${ }$$
Inside the script tags you need one or more commands, following eachother, separated by semicolons (or line breaks)
a single command always follows this pattern
Command(parameters)
or if parameters are optional (or it doesn't have any)
Command()
or
Command
(your choice, both work fine)
Keep in mind that commands are not case sensitive, it's up to you
Personally i find it useful to do blocks in uppercase, regular commands in leading case, for example
$${IF(HEALTH < 4);Set(panic);ENDIF}$$
the alternative to writing it all on that one short line is to use a file include
File includes are checked for before the script is run and replaced by the contents of a file (and this is how you can have line breaks in a script that's bound through a single-row input)
for example i could instead have used
$${$$<file.txt>}$$
where file.txt contains
IF(condition)
Set(panic)
ENDIF
And just in case i wasn't clear, the commands are simply executed one at a time in the order they appear, though command flow commands can kinda change things up (like IF makes some commands ignored and DO marks a point to jump back to)
Basically, unless you're using a command that claims otherwise, they all happen in order
with the health example before,i could have expanded it to use
IF(HEALTH < 3)
Set(panic)
ELSE
UnSet(panic)
ENDIF
There's two actual commands here, Set() and Unset()
and three command flow commands
IF() checks the condition and remembers if it was true or not
if it was, it will wait for an ELSE and then start ignoring commands
if it wasn't, it will ignore until it reaches an ELSE
in either case, an ENDIF makes it forget and start executing again
Or, in other words, if you have an IF;ENDIF, then it runs the first block inside if the condition is true
and if you have an IF;ELSE;ENDIF, then it runs the first block if true, and the second block if false
Aanyway, getting off topic.., the commands relevant to what you want to do are as follows
Echo(string) - sends string as a chat message to the server, doesn't actually open the chat to do it, just sends a packet
Do(n);[other commands];Loop - Command flow commands, a Do();Loop makes all the commands between them repeat n times (instead of just being executed once), or forever if not specified (there are other ways to stop an infinite loop)
You can think of it as Loop decrements the n in it's matching Do, and if n is still larger than 0 (or doesn't exist), it jumps back to the Do and the script keeps executing from there again
Wait(t) - Waits for a time of t before moving on to the next command. t can be an integer (number), in which case it will assume seconds
it can also be in ms (milliseconds) or t (ticks (1/20'th of a second, 50ms))
Also please don't use this mod for cheating, especially not in a competitive setting (PvP)
In order to bind a script rather than a single message or command, you need to surround your binding with script tags $${ }$$
Inside the script tags you need one or more commands, following eachother, separated by semicolons (or line breaks)
a single command always follows this pattern
Command(parameters)
or if parameters are optional (or it doesn't have any)
Command()
or
Command
(your choice, both work fine)
Keep in mind that commands are not case sensitive, it's up to you
Personally i find it useful to do blocks in uppercase, regular commands in leading case, for example
$${IF(HEALTH < 4);Set(panic);ENDIF}$$
the alternative to writing it all on that one short line is to use a file include
File includes are checked for before the script is run and replaced by the contents of a file (and this is how you can have line breaks in a script that's bound through a single-row input)
for example i could instead have used
$${$$<file.txt>}$$
where file.txt contains
IF(condition)
Set(panic)
ENDIF
And just in case i wasn't clear, the commands are simply executed one at a time in the order they appear, though command flow commands can kinda change things up (like IF makes some commands ignored and DO marks a point to jump back to)
Basically, unless you're using a command that claims otherwise, they all happen in order
with the health example before,i could have expanded it to use
IF(HEALTH < 3)
Set(panic)
ELSE
UnSet(panic)
ENDIF
There's two actual commands here, Set() and Unset()
and three command flow commands
IF() checks the condition and remembers if it was true or not
if it was, it will wait for an ELSE and then start ignoring commands
if it wasn't, it will ignore until it reaches an ELSE
in either case, an ENDIF makes it forget and start executing again
Or, in other words, if you have an IF;ENDIF, then it runs the first block inside if the condition is true
and if you have an IF;ELSE;ENDIF, then it runs the first block if true, and the second block if false
Aanyway, getting off topic.., the commands relevant to what you want to do are as follows
Echo(string) - sends string as a chat message to the server, doesn't actually open the chat to do it, just sends a packet
Do(n);[other commands];Loop - Command flow commands, a Do();Loop makes all the commands between them repeat n times (instead of just being executed once), or forever if not specified (there are other ways to stop an infinite loop)
You can think of it as Loop decrements the n in it's matching Do, and if n is still larger than 0 (or doesn't exist), it jumps back to the Do and the script keeps executing from there again
Wait(t) - Waits for a time of t before moving on to the next command. t can be an integer (number), in which case it will assume seconds
it can also be in ms (milliseconds) or t (ticks (1/20'th of a second, 50ms))
Also please don't use this mod for cheating, especially not in a competitive setting (PvP)
it is it's own language inspired by basic but not strictly following it's rules
Can you help me directly? I understand some of this but I do not get how to make it repeat it without putting the whole script in the chat.
I need to type the command in chat: "/sbuy wool 200" every 1.5 seconds then every 5 seconds say: "/ssell wool all"
Thank you though for all that information and I will continue to try and make it work!
ALSO Can It be a toggle for a button? Idk how to do that
Can you help me directly? I understand some of this but I do not get how to make it repeat it without putting the whole script in the chat.
I need to type the command in chat: "/sbuy wool 200" every 1.5 seconds then every 5 seconds say: "/ssell wool all"
Thank you though for all that information and I will continue to try and make it work!
ALSO Can It be a toggle for a button? Idk how to do that
After me trying to make the file a bunch of times it just types what ever I have in the txt file in the chat.
Macro/Keybind mod Wiki
When a chat message is received, it is attached to a process that runs the ChatFilter script
If the process encounters Modify(text), it replaces the chat attached to it with the text in the command, and continues on with the rest of the script
If it encounters a Filter() command, it stops the process and destroys the message
And if it encounters a Pass(), or the end of the script, the process stops and the message is passed on to your chat
By default, you have no script attached to your ChatFilter, meaning as soon as the process is created and the message attached to it, it will have reached the end of the script and the message is released into your chat
----
What have you tried?, what are you expecting it to do?, and what is it doing instead?
'Cause tomorrow spring is here
--
Also another thing I don't quite understand how to do is to "nest" macros..
Example:
I have one macro setup up to request information in an input field, and I have another macro which when ran can provide that information, however I can't run that macro when in my input field.
If you mean parameters like $$? or the Prompt() command then it pauses the script while it waits for your answer
otherwise there'd be no point in asking since the script would finish before you could start typing
If it's not that then i'm not quite sure what you mean, could you give me an example of what you tried
edit: Oh, um, in GUI's that block macros, usually you can hold macro override and press the key to trigger it anyway, but again i'm not sure if that would work in a Prompt/Parameter input screen
As for displaying information, i have no idea where the confusion lies so have an example
$${
Log(&cx&by&az: &c%XPOS% &b%YPOS% &a%ZPOS%)
}$$
What exactly do you mean by formatted? Please give an example
'Cause tomorrow spring is here
DO
Gui(inventory);SlotClick(9,l,true);SlotClick(36,l,true);GetSlotItem(36,&item,#amount);Gui()
IF(#amount = 64);Echo(/sell all);ENDIF
in other words...
Repeat forever:
shift-click inside the inventory, then inside the hotbar (assuming inv. full of only one thing, this will try to free up a slot)
check if the slot was freed up, if it still contains 64 items, assume you're full and say /sell all,
'Cause tomorrow spring is here
if i using this script
whatever the if is true or false, every $$ will be ask.
I think it can be modify to the code that execute.
if it is false, only the $$4 will be prompt.
OK, I know what you mean, thanks.
I still has problem. prompt can not be interrupt when you choose wrong. any suggestion ?
90, 30 turns into 270, 30
270,30 turns into 90,30
sometimes I change both coordinates and the position it goes to stays the same as the last time I did the command.
EDIT: It seems I have found out how to (sort of) fix this - you make it look one way, then you LOG the pitch and yaw of where it sent you, and then you enter that into look, and it goes to where it should. Weird.
I think you can designed a simple syntax check.
because your command need ; in the end, if i did not add the ';', it does not show any error.
I think that will be better if there are syntax check, and show the syntax error.
You don't need a ';' at the end of every command. If you separate them with a new line it will also work.
Macro/Keybind mod Wiki
I have the following code in a ChatFilter script, and I don't seem to be able to write information to my "debug" panel...
SET(&chatUser, "Wh1rledPeas");
SET(&debug, "User: %&chatUser%");
LOGTO(debug, %&debug%);
Expected ouptut: "User: Wh1rledPeas"
Actual output: "User: "
EDIT: Nevermind. v_v Too many hours using camelCase. Forgot I could only use lower case variable names...
Assuming you know how to add bindings...
In order to bind a script rather than a single message or command, you need to surround your binding with script tags $${ }$$
Inside the script tags you need one or more commands, following eachother, separated by semicolons (or line breaks)
a single command always follows this pattern
Command(parameters)
or if parameters are optional (or it doesn't have any)
Command()
or
Command
(your choice, both work fine)
Keep in mind that commands are not case sensitive, it's up to you
Personally i find it useful to do blocks in uppercase, regular commands in leading case, for example
$${IF(HEALTH < 4);Set(panic);ENDIF}$$
the alternative to writing it all on that one short line is to use a file include
File includes are checked for before the script is run and replaced by the contents of a file (and this is how you can have line breaks in a script that's bound through a single-row input)
for example i could instead have used
$${$$<file.txt>}$$
where file.txt contains
IF(condition)
And just in case i wasn't clear, the commands are simply executed one at a time in the order they appear, though command flow commands can kinda change things up (like IF makes some commands ignored and DO marks a point to jump back to)
Basically, unless you're using a command that claims otherwise, they all happen in order
with the health example before,i could have expanded it to use
IF(HEALTH < 3)
There's two actual commands here, Set() and Unset()
and three command flow commands
IF() checks the condition and remembers if it was true or not
if it was, it will wait for an ELSE and then start ignoring commands
if it wasn't, it will ignore until it reaches an ELSE
in either case, an ENDIF makes it forget and start executing again
Or, in other words, if you have an IF;ENDIF, then it runs the first block inside if the condition is true
and if you have an IF;ELSE;ENDIF, then it runs the first block if true, and the second block if false
Echo(string) - sends string as a chat message to the server, doesn't actually open the chat to do it, just sends a packet
Do(n);[other commands];Loop - Command flow commands, a Do();Loop makes all the commands between them repeat n times (instead of just being executed once), or forever if not specified (there are other ways to stop an infinite loop)
You can think of it as Loop decrements the n in it's matching Do, and if n is still larger than 0 (or doesn't exist), it jumps back to the Do and the script keeps executing from there again
Wait(t) - Waits for a time of t before moving on to the next command. t can be an integer (number), in which case it will assume seconds
it can also be in ms (milliseconds) or t (ticks (1/20'th of a second, 50ms))
Also please don't use this mod for cheating, especially not in a competitive setting (PvP)
it is it's own language inspired by basic but not strictly following it's rules
'Cause tomorrow spring is here
Can you help me directly? I understand some of this but I do not get how to make it repeat it without putting the whole script in the chat.
I need to type the command in chat: "/sbuy wool 200" every 1.5 seconds then every 5 seconds say: "/ssell wool all"
Thank you though for all that information and I will continue to try and make it work!
ALSO Can It be a toggle for a button? Idk how to do that
After me trying to make the file a bunch of times it just types what ever I have in the txt file in the chat.
to run the scrip inside a file you have to bind it to a key, and it should look like
$${$$<name-of-file.txt>$$}$$