So, write_long works. I thought after looking at the source code it could not work. Don't know why I have not even tried before.
EDIT : Actually here the source code of write_float :
void MSG_WriteLong (sizebuf_t *sb, int c)
buf = (byte *)SZ_GetSpace (sb, 4);
buf = c&0xff;
buf = (c>>8)&0xff;
buf = (c>>16)&0xff;
buf = c>>24;
So, the same like I've done before. Though I'm not sure to see well the difference between MSG_WriteLong and MSG_WriteFloat.
It was planned to post today such stock since someone requests it. I guess I will attach the file on the first post.
EDIT : done.