I made an autosoup script in 1.8 that does not work in 1.10. It involves using the PICK() function. I cannot seem to get it to pick anything, possibly due to it being broken or a change in naming conventions.
Just checking, but you *are* using string ID's right?
the whole "every item has a number for ID" business was changed a while ago.., now items are identified by names (though for backwards compatibility many things still work with the numbers too...)
So I want to make a bot that will basically mine for you. So this is what I was thinking on how to set it up. The mine resets every 10 minutes and if you are in the mine when it resets, it will teleport you to the top at YPOS of 64. This means that the bot needs to resets and go to cords 0,64,0 to reset the mining program. So once the player is at 0,64,0 the bot will make the player mine 3 blocks down and then start mining within the specific cords to mine.
Here's the area:
And once the inventory is full, the program would stop mining.
Is the mine guaranteed to be solid blocks? Are there any dangers such as mobs, lava, or empty spaces?
Does anyone know why PICK("String Name"); isnt working? Is it just 1.10? If it is working in 1.10 can someone give me a working PICK line so I can debug?
Is the mine guaranteed to be solid blocks? Are there any dangers such as mobs, lava, or empty spaces?
Completely solid, but there are other players on the server so they might be empty spaces if they mine in front of me. Also no pvp and no damage can be taken.
Can someone help me by telling me the format for onChat I want it to send a message when someone says "back" in chat.
onChat?, format?
It's just an event
the format of the chat itself depends on the server, and the game has no knowledge of that.., you need to write your own interpreting logic for the specific server you're on
First step would be to gather sample data, run around with $${LogTo(%CHAT%,chatlog.txt)}$$ for a while, then see the contents of that file
I just want it to say like "welcome back" when someone says "back"
But how do you know when someone says "back"?
On one server it might look like <player> back§r
On another it might be §8§l[§r§aMember§r§8]§r §ap§bl§ca§dy§ee§2r§r§8§l§r :§r§fback§r§r
and there's thousands of others
The server just sends you the entire, raw message.., with no information about how you should understand it
It might be easy for you as a human, because this is what we do.., we are exceptionally good at finding patterns and making assumptions - but imagine having to teach someone who has never seen written text before how to underline the names of players in the chat logs of random servers
how?, there's nothing special about the name when you think about it - how are they supposed to be able to tell?
This is why i need to know the format your server uses before i can make a script...
if i know the format, i can come up with a set of instructions that work for that format - for example
<player> back§r
The start of the message
followed by <
followed by letters, numbers, and/or underscores, 1 or more. Also, all of these together make up the "name"
followed by >
followed by a space
followed by 1 or more of any character that isn't §. Also, these characters together make up the "message"
followed by §r
followed by the end of the message
Now with these instructions i can compare anything the server sends and tell if it is chat (if the instructions match)
and if it is, i know which characters make up the name and message parts
The reason this was possible was because i only tackled a specific format.., trying to come up with instructions that work for any server is practically impossible
Not that i recall, no
you can use $$u though to be able to select from a list of players
If you really need it it would be possible to use onSendChatMessage and use the actual chat for inputting your values.., but this is A LOT MORE COMPLICATED and i do not recommend trying it until you have a good handle on scripting
I'm wondering if someone can help me out with setting up a quarry program. You would enter how far you want to get in the x, y, and z. Then the player would just start mining out the area until it's finished. I'm wondering if this could be done.
I'm wondering if someone can help me out with setting up a quarry program. You would enter how far you want to get in the x, y, and z. Then the player would just start mining out the area until it's finished. I'm wondering if this could be done.
Didn't someone just ask for this?
It depends on the specifics..., what's in the area?, is it solid with a single block?, different blocks?
are there dangers such as lava/fire/mobs?
What assumptions can we make to make it simpler (since writing a full AI is out of the question)?
It depends on the specifics..., what's in the area?, is it solid with a single block?, different blocks?
are there dangers such as lava/fire/mobs?
What assumptions can we make to make it simpler (since writing a full AI is out of the question)?
No damage will be taken.
No Mobs.
It is stone, with different ores.
You have diamond pickaxe, Once duribility < 10 do /fixall command
The goal is to mine the blocks within specific length, width and depth. (x,y,z)
All it wants to do it mine this area out and then it will stop.
No damage will be taken.
No Mobs.
It is stone, with different ores.
You have diamond pickaxe, Once duribility < 10 do /fixall command
The goal is to mine the blocks within specific length, width and depth. (x,y,z)
All it wants to do it mine this area out and then it will stop.
Just checking, but you *are* using string ID's right?
the whole "every item has a number for ID" business was changed a while ago.., now items are identified by names (though for backwards compatibility many things still work with the numbers too...)
'Cause tomorrow spring is here
I had an issue with Pick() as well in 1.10. It broke an auto switch tool script. I had to use SLOT() instead. I did use string IDS as well
Is the mine guaranteed to be solid blocks? Are there any dangers such as mobs, lava, or empty spaces?
'Cause tomorrow spring is here
Does anyone know why PICK("String Name"); isnt working? Is it just 1.10? If it is working in 1.10 can someone give me a working PICK line so I can debug?
Completely solid, but there are other players on the server so they might be empty spaces if they mine in front of me. Also no pvp and no damage can be taken.
Can someone help me by telling me the format for onChat I want it to send a message when someone says "back" in chat.
onChat?, format?
It's just an event
the format of the chat itself depends on the server, and the game has no knowledge of that.., you need to write your own interpreting logic for the specific server you're on
First step would be to gather sample data, run around with $${LogTo(%CHAT%,chatlog.txt)}$$ for a while, then see the contents of that file
'Cause tomorrow spring is here
I just want it to say like "welcome back" when someone says "back"
But how do you know when someone says "back"?
On one server it might look like <player> back§r
On another it might be §8§l[§r§aMember§r§8]§r §ap§bl§ca§dy§ee§2r§r§8§l§r :§r§fback§r§r
and there's thousands of others
The server just sends you the entire, raw message.., with no information about how you should understand it
It might be easy for you as a human, because this is what we do.., we are exceptionally good at finding patterns and making assumptions - but imagine having to teach someone who has never seen written text before how to underline the names of players in the chat logs of random servers
how?, there's nothing special about the name when you think about it - how are they supposed to be able to tell?
This is why i need to know the format your server uses before i can make a script...
if i know the format, i can come up with a set of instructions that work for that format - for example
<player> back§r
The start of the message
followed by <
followed by letters, numbers, and/or underscores, 1 or more. Also, all of these together make up the "name"
followed by >
followed by a space
followed by 1 or more of any character that isn't §. Also, these characters together make up the "message"
followed by §r
followed by the end of the message
Now with these instructions i can compare anything the server sends and tell if it is chat (if the instructions match)
and if it is, i know which characters make up the name and message parts
The reason this was possible was because i only tackled a specific format.., trying to come up with instructions that work for any server is practically impossible
'Cause tomorrow spring is here
Yes, I previously used PICK(mushroom_soup) to get the soup, and now it doesn't work in 1.10 but I downgraded to 1.8 again and it works.
Can Macros check its surroundings like say i'm mining and I don't see iron ore above me, it will notify me of the ore block's position.
Probably GetIDRel, so you don't have to physically look up all the time
Not that i recall, no
you can use $$u though to be able to select from a list of players
If you really need it it would be possible to use onSendChatMessage and use the actual chat for inputting your values.., but this is A LOT MORE COMPLICATED and i do not recommend trying it until you have a good handle on scripting
'Cause tomorrow spring is here
I'm wondering if someone can help me out with setting up a quarry program. You would enter how far you want to get in the x, y, and z. Then the player would just start mining out the area until it's finished. I'm wondering if this could be done.
Didn't someone just ask for this?
It depends on the specifics..., what's in the area?, is it solid with a single block?, different blocks?
are there dangers such as lava/fire/mobs?
What assumptions can we make to make it simpler (since writing a full AI is out of the question)?
'Cause tomorrow spring is here
No damage will be taken.
No Mobs.
It is stone, with different ores.
You have diamond pickaxe, Once duribility < 10 do /fixall command
The goal is to mine the blocks within specific length, width and depth. (x,y,z)
All it wants to do it mine this area out and then it will stop.
Replace the numbers as necessary
#x[0] = -2
#y[0] = 63
#z[0] = -2
#x[1] = 2
#y[1] = 60
#z[1] = 2
For(#y,%#y[0]%,%#y[1]%);
#total = #y[0] - #y[1];
Inc(#current);Inc(#total);
Log("Next layer: layer %#current% of %#total%");
Log(" > Going to start corner");
// Go to corner
#distance = 9999;
KeyDown(forward);
DO;
Inc(#yaw,180);
Look(%#yaw%,+0);
KeyUp(forward);
Log(" > Mining corner");
// Break block underneath
Look(0,90);
Wait(2t);
Do();Key(attack);While(HITY >= #y);
For(#z,%#z[0]%,%#z[1]%);
#total = #z[1] - #z[0];
Inc(#current);Inc(#total);
Log(" > Doing row %#current% of %#total%");
Log(" > > Going to start (part 1)")
Keydown(forward);
DO();Look(270,0);Until(XPOS=#x[0]);
KeyUp(forward)
Log(" > > Going to start (part 2)")
Look(180,40);
Wait(2t);
Do();Key(attack);WHILE((HITZ = #z) && (HITY = #y));
KeyDown(forward);
DO();Until(ZPOS = #z);
Log(" > > Carving row");
// Break row
KeyDown(forward);
Do();
IF(HITY=#y);Key(attack);ENDIF;
KeyUp(forward);
Log(" > > Row carved");
Next;
Definitely lots of room for improvement here, but it's 2AM..., it works - that's good enough for now
'Cause tomorrow spring is here
Great, I'm starting to tweak it an little and I'll post what I changed.
For anyone trying to use this, make sure your starting position is facing EAST. The way Mart3323 set this up was facing EAST.
Also instead of going down one block, how do I make it go down 2 block every time?
Is there going to be a 1.10.2 version? The 1.10 version doesn't work with 1.10.2.
Whats wrong with this? MIne.txt doesn't stop.
$${
IF(DURABILITY > 1525);
Exec("Mine.txt");
Wait(1);
Do;
IF(DURABILITY < 1525);
Stop("Mine.txt");
Log("&4Pickaxe needs to be repaired");
ENDIF;
Until(DURABILITY < 1525);
Else;
Log("Sorry, it looks like you need to repair your item");
ENDIF;
}$$
Stop() stops a process by name
in Exec(), you can use the second parameter to specify the name
so try Exec("mine.txt","mine-loop") and Stop("mine-loop")
----
Also, this part:
Do;
IF(DURABILITY < 1525);
Stop("Mine.txt");
Log("&4Pickaxe needs to be repaired");
ENDIF;
Until(DURABILITY < 1525);
The IF and UNTIL have the same condition, meaning it does nothing until the condition becomes true, then does something once
I believe it would be easier to read like this
DO();Until(DURABILITY < 1525); // Essentially "wait until condition"
Stop("mine-loop");
Log("...")
'Cause tomorrow spring is here