1000;1000;1000;1000;1000;1000 is 6 groups of 4 characters plus 5 separators, for a total of 29 characters.
if (Serial.available()){
delay(30); //wait for full input
At 9600 baud, that will require more than 30 milliseconds to arrive. Delaying, in the hope that all the data magically shows up while you are twiddling your thumbs, is not a good idea. Sending an end-of-packet marker, and reading and storing serial data until that end of packet marker arrives is a much better idea.
SerialInput.concat(char(Serial.read())); //Here I got my full string received from serial
Wrong. Here you get one byte at a time, until all the data that has arrived SO FAR has been read.
//How can I split my string into 6 seperate array entries here?
Using the strtok function.
I've tried many stuff like
Who ever suggested that you use the strtok_r function was sadly misinformed. The _r version is the thread-safe, re-entrant version of strtok. Since the Arduino is not a multi-threaded platform, there is no reason to drag in all the overhead of thread safe code.
Still, the strtok function usage requires two steps. The first call to strtok defines the char array to process, not the String object, along with the delimiter(s) to use. The output is a pointer to the first token, which is a null-terminated array of characters. Whether that is appropriate to store in the array, or not, is unknown, because we don't know what type arrayx is. If it is of type pointer to char, then the pointer returned by strtok can be stored there. If arrayx is of type int, then the pointer to char that strtok returns can not. You'd need to pass the pointer to atoi(), and store atoi()'s output in the array.
Subsequent calls to strtok are made in a while loop, typically, with NULL as the first argument, to tell strtok to get the next token from the same string, rather than the first token from a new string.
So, you need to fix how you send data, and how you receive it.
Then, you need to extract the character array from the String object (toCharArray() will be useful). Or, even better, dispense with the String object, and simply store the incoming character data in a char array.
Finally, you need to call the correct function (strtok) with the correct input (the char array or NULL, depending on which token you want), and process the output correctly.