Advertisement
XpoZzA

ColorlistID

Oct 25th, 2016
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.61 KB | None | 0 0
  1. enum ColorFormat {
  2.     RGBA,
  3.     ARGB,
  4.     RGB
  5. }
  6.  
  7. // %0 means src and %1 byte number (starting from zero)
  8. #define getByteN(%0,%1) ((%0 >> (%1*8)) & 0xFF)
  9.  
  10. stock getR(color, ColorFormat:format) {
  11.     switch(format) {
  12.         case RGBA: {
  13.             return getByteN(color,3);
  14.         }
  15.         case ARGB: {
  16.             return getByteN(color,2);
  17.         }
  18.         case RGB: {
  19.             return getByteN(color,2);
  20.         }
  21.     }
  22.     return 0;
  23. }
  24.  
  25. stock getG(color, ColorFormat:format) {
  26.     switch(format) {
  27.         case RGBA: {
  28.             return getByteN(color,2);
  29.         }
  30.         case ARGB: {
  31.             return getByteN(color,1);
  32.         }
  33.         case RGB: {
  34.             return getByteN(color,1);
  35.         }
  36.     }
  37.     return 0; // unknown format
  38. }
  39.  
  40. stock getB(color, ColorFormat:format) {
  41.     switch(format) {
  42.         case RGBA: {
  43.             return getByteN(color,1);
  44.         }
  45.         case ARGB: {
  46.             return getByteN(color,0);
  47.         }
  48.         case RGB: {
  49.             return getByteN(color,0);
  50.         }
  51.     }
  52.     return 0;
  53. }
  54.  
  55. new VehicleColoursTableRGBA[256] =
  56. {
  57.     // The existing colours from San Andreas
  58.     0x000000FF, 0xF5F5F5FF, 0x2A77A1FF, 0x840410FF, 0x263739FF, 0x86446EFF, 0xD78E10FF, 0x4C75B7FF, 0xBDBEC6FF, 0x5E7072FF,
  59.     0x46597AFF, 0x656A79FF, 0x5D7E8DFF, 0x58595AFF, 0xD6DAD6FF, 0x9CA1A3FF, 0x335F3FFF, 0x730E1AFF, 0x7B0A2AFF, 0x9F9D94FF,
  60.     0x3B4E78FF, 0x732E3EFF, 0x691E3BFF, 0x96918CFF, 0x515459FF, 0x3F3E45FF, 0xA5A9A7FF, 0x635C5AFF, 0x3D4A68FF, 0x979592FF,
  61.     0x421F21FF, 0x5F272BFF, 0x8494ABFF, 0x767B7CFF, 0x646464FF, 0x5A5752FF, 0x252527FF, 0x2D3A35FF, 0x93A396FF, 0x6D7A88FF,
  62.     0x221918FF, 0x6F675FFF, 0x7C1C2AFF, 0x5F0A15FF, 0x193826FF, 0x5D1B20FF, 0x9D9872FF, 0x7A7560FF, 0x989586FF, 0xADB0B0FF,
  63.     0x848988FF, 0x304F45FF, 0x4D6268FF, 0x162248FF, 0x272F4BFF, 0x7D6256FF, 0x9EA4ABFF, 0x9C8D71FF, 0x6D1822FF, 0x4E6881FF,
  64.     0x9C9C98FF, 0x917347FF, 0x661C26FF, 0x949D9FFF, 0xA4A7A5FF, 0x8E8C46FF, 0x341A1EFF, 0x6A7A8CFF, 0xAAAD8EFF, 0xAB988FFF,
  65.     0x851F2EFF, 0x6F8297FF, 0x585853FF, 0x9AA790FF, 0x601A23FF, 0x20202CFF, 0xA4A096FF, 0xAA9D84FF, 0x78222BFF, 0x0E316DFF,
  66.     0x722A3FFF, 0x7B715EFF, 0x741D28FF, 0x1E2E32FF, 0x4D322FFF, 0x7C1B44FF, 0x2E5B20FF, 0x395A83FF, 0x6D2837FF, 0xA7A28FFF,
  67.     0xAFB1B1FF, 0x364155FF, 0x6D6C6EFF, 0x0F6A89FF, 0x204B6BFF, 0x2B3E57FF, 0x9B9F9DFF, 0x6C8495FF, 0x4D8495FF, 0xAE9B7FFF,
  68.     0x406C8FFF, 0x1F253BFF, 0xAB9276FF, 0x134573FF, 0x96816CFF, 0x64686AFF, 0x105082FF, 0xA19983FF, 0x385694FF, 0x525661FF,
  69.     0x7F6956FF, 0x8C929AFF, 0x596E87FF, 0x473532FF, 0x44624FFF, 0x730A27FF, 0x223457FF, 0x640D1BFF, 0xA3ADC6FF, 0x695853FF,
  70.     0x9B8B80FF, 0x620B1CFF, 0x5B5D5EFF, 0x624428FF, 0x731827FF, 0x1B376DFF, 0xEC6AAEFF, 0x000000FF,
  71.     // SA-MP extended colours (0.3x)
  72.     0x177517FF, 0x210606FF, 0x125478FF, 0x452A0DFF, 0x571E1EFF, 0x010701FF, 0x25225AFF, 0x2C89AAFF, 0x8A4DBDFF, 0x35963AFF,
  73.     0xB7B7B7FF, 0x464C8DFF, 0x84888CFF, 0x817867FF, 0x817A26FF, 0x6A506FFF, 0x583E6FFF, 0x8CB972FF, 0x824F78FF, 0x6D276AFF,
  74.     0x1E1D13FF, 0x1E1306FF, 0x1F2518FF, 0x2C4531FF, 0x1E4C99FF, 0x2E5F43FF, 0x1E9948FF, 0x1E9999FF, 0x999976FF, 0x7C8499FF,
  75.     0x992E1EFF, 0x2C1E08FF, 0x142407FF, 0x993E4DFF, 0x1E4C99FF, 0x198181FF, 0x1A292AFF, 0x16616FFF, 0x1B6687FF, 0x6C3F99FF,
  76.     0x481A0EFF, 0x7A7399FF, 0x746D99FF, 0x53387EFF, 0x222407FF, 0x3E190CFF, 0x46210EFF, 0x991E1EFF, 0x8D4C8DFF, 0x805B80FF,
  77.     0x7B3E7EFF, 0x3C1737FF, 0x733517FF, 0x781818FF, 0x83341AFF, 0x8E2F1CFF, 0x7E3E53FF, 0x7C6D7CFF, 0x020C02FF, 0x072407FF,
  78.     0x163012FF, 0x16301BFF, 0x642B4FFF, 0x368452FF, 0x999590FF, 0x818D96FF, 0x99991EFF, 0x7F994CFF, 0x839292FF, 0x788222FF,
  79.     0x2B3C99FF, 0x3A3A0BFF, 0x8A794EFF, 0x0E1F49FF, 0x15371CFF, 0x15273AFF, 0x375775FF, 0x060820FF, 0x071326FF, 0x20394BFF,
  80.     0x2C5089FF, 0x15426CFF, 0x103250FF, 0x241663FF, 0x692015FF, 0x8C8D94FF, 0x516013FF, 0x090F02FF, 0x8C573AFF, 0x52888EFF,
  81.     0x995C52FF, 0x99581EFF, 0x993A63FF, 0x998F4EFF, 0x99311EFF, 0x0D1842FF, 0x521E1EFF, 0x42420DFF, 0x4C991EFF, 0x082A1DFF,
  82.     0x96821DFF, 0x197F19FF, 0x3B141FFF, 0x745217FF, 0x893F8DFF, 0x7E1A6CFF, 0x0B370BFF, 0x27450DFF, 0x071F24FF, 0x784573FF,
  83.     0x8A653AFF, 0x732617FF, 0x319490FF, 0x56941DFF, 0x59163DFF, 0x1B8A2FFF, 0x38160BFF, 0x041804FF, 0x355D8EFF, 0x2E3F5BFF,
  84.     0x561A28FF, 0x4E0E27FF, 0x706C67FF, 0x3B3E42FF, 0x2E2D33FF, 0x7B7E7DFF, 0x4A4442FF, 0x28344EFF
  85. };
  86.  
  87. stock HexColorToVehColor(color, ColorFormat:format = RGBA) {
  88.     new srcR = getR(color,format), srcG = getG(color,format), srcB = getB(color,format);
  89.     new closerColorIdx = 0;
  90.     new minTotal = 0xFFFFFF;
  91.  
  92.     for (new i; i < sizeof(VehicleColoursTableRGBA); i++) {
  93.         new iR = getR(VehicleColoursTableRGBA[i], RGBA);
  94.         new iG = getG(VehicleColoursTableRGBA[i], RGBA);
  95.         new iB = getB(VehicleColoursTableRGBA[i], RGBA);
  96.  
  97.         new rDiff = floatround(floatabs(iR - srcR)),
  98.             gDiff = floatround(floatabs(iG - srcG)),
  99.             bDiff = floatround(floatabs(iB - srcB));
  100.  
  101.         new total = rDiff + gDiff + bDiff;
  102.  
  103.         if (total < minTotal) {
  104.             minTotal = total;
  105.             closerColorIdx = i;
  106.         }
  107.     }
  108.     return closerColorIdx;
  109. }
  110. COMMAND:colorlist(playerid, params[])
  111. {
  112.     new string[3328], sep[4];
  113.     for(new k = 0; k < sizeof(VehicleColoursTableRGBA); k ++)
  114.     {
  115.         if(k != 0 && (k % 16 == 0)) sep = "\n";
  116.         else sep = k == 0 ? ("") : (" ");
  117.         format(string, sizeof string, "%s%s{%06x}#%03i", string, sep, VehicleColoursTableRGBA[k] >>> 8, HexColorToVehColor(VehicleColoursTableRGBA[k]));
  118.     }
  119.     ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "Vehicle Colour IDs", string, ">>>", "");
  120.     return 1;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement