From: someone
The only value I can pass in the llRezObject-command, is an integer, so I won't be able to pass a vector (for the color)
You only have 256 * 256 * 256 possible values, which is 16777216, and that will fit in an integer. So yes, you can't directly pass a vector, but you could come up with a simple encoding scheme to convert 3 numbers in the 0-255 range into a single large integer, and then decode it back in the rezzed object to get back the 3 values.
In fact, the encoding is probably as simple as converting to hex. Take the values of the 3 colors, convert them to hex, line them up (either using string concatenation or numeric addition offset by the appropriate power of 256), and there's your big integer.
Or even just string concatenate the decimal values. Your values will be in the range of 0 (000000000) through 255255255, which will also fit in a 32 bit integer. On the receive side, pad out any leading 0s that would have been stripped off to get back your 9 digits, strip them down into the 3-digit sets, and there's your 3 color values again.
And finally, a floating point division by 255.0 will give you the color values in the 0-1 range needed by SL.
Example: Maybe something like this (untested, so probably buggy):
integer Rn = whatever; // Decimal value for red, in the 0-255 range
string Rs = (string)Rn;
while (llGetStringLength(Rs) < 3) {
Rs = "0" + Rs;
}
// Now Rs should be a "3-digit string"
string Colors = Rs + Gs + Bs;
integer rezParam = (integer)Colors;
And on the decode side:
on_rez (integer param) {
string params = (string)param;
// May be less than 9 digits, if there are any leading 0s
while (llGetStringLength(params) < 9) {
params = "0" + params;
}
// Now we have a 9-digit string
integer Rn = (integer)llGetSubString(params, 0, 2);
integer Gn = (integer)llGetSubString(params, 3, 5);
integer Bn = (integer)llGetSubString(params, 6,

;
Like I said, untested and probably buggy