It's a string, not an array. The number means it can have 18 characters max. It looks exactly like an array because it works similiar to this:
Code:
new string[ 2 ]
format( string, 1 /* max characters - 1 */, "oh" ) // we're copying "oh" into variable string
string[ 0 ] = 'o'
string[ 1 ] = 'h'
For a name, you should put 32 there, because 18 will not be enough if the player's nick reaches 18 characters and part of it will be cut off.
For the second question, id is the player index. It starts from 1 and ends with 32. It is passed in forwards like client_connect(
id ). In your example, it means you're getting the name of player with index
id.
name means you're copying the user's name into
name string.
It is 17 because every string starts from 0 (not 1, see my example above), thus it's always
max characters - 1.
For the third question, see above.