Advertisement
podoko_Lua

Palette RGB [v1.0]

Aug 23rd, 2014
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.74 KB | None | 0 0
  1. --[[    Palette RGB [v1.0]
  2.    
  3.     Ce module permet de sélectionner une couleur via le système RGB et est codé pour être facile à intégrer à un module plus grand.
  4.     Ci dessous se trouvent les informations utiles pour éviter que la palette ne soit incompatible avec le reste de votre module
  5.         La palette utilise les id de textArea 5641 à 5650
  6.         Les variables globales utilisées par le module sont palette_mod et paletteShow (ne pas réutiliser ces noms de variables)
  7.         Le traitement des messages dans la fonction eventTextArea suppose que les trois paramètres reçus se nomment id, name, call
  8.     La dernière couleur sélectionnée par un joueur est sauvegardée dans la variable palette_mod[nom_du_joueur].lastSelect
  9.    
  10. ]]
  11.  
  12.  
  13. palette_mod = {}
  14.  
  15. function paletteShow ( name, x, y ) -- name est le nom du joueur, x et y les coordonnées où doit être affichée la palette (335 et 100 par défaut)
  16.     x, y = x or 335, y or 100
  17.    
  18.     palette_mod[name] = palette_mod[name] or { color={R=60, G=60, B=60}, default={"FF0000", "FF7F00", "FFFF00", "7FFF00", "00FF00", "00FF7F", "00FFFF", "007FFF", "0000FF", "7F00FF", "FF00FF", "FF007F", "000001", "FFFFFF" } }
  19.     ui.addTextArea(5641, '', name, x, y, 155, 150, 0x324650, 0x27373F, 1, true)
  20.     ui.addTextArea(5642, "<R>R : "..palette_mod[name].color.R, name, x+50, y, 50, 20, 0, 0, 0, true)
  21.     ui.addTextArea(5643, "<VP>G : "..palette_mod[name].color.G, name, x+50, y+20, 50, 20, 0, 0, 0, true)
  22.     ui.addTextArea(5644, "<BV>B : "..palette_mod[name].color.B, name, x+50, y+40, 50, 20, 0, 0, 0, true)
  23.     ui.addTextArea(5645, "<a href='event:palette R -10'>-10</a> <a href='event:palette R -1'>-1</a> \t\t\t <a href='event:palette R +1'>+1</a> <a href='event:palette R +10'>+10</a>", name, x, y, 200, 20, 0, 0, 0, true)
  24.     ui.addTextArea(5646, "<a href='event:palette G -10'>-10</a> <a href='event:palette G -1'>-1</a> \t\t\t <a href='event:palette G +1'>+1</a> <a href='event:palette G +10'>+10</a>", name, x, y+20, 200, 20, 0, 0, 0, true)
  25.     ui.addTextArea(5647, "<a href='event:palette B -10'>-10</a> <a href='event:palette B -1'>-1</a> \t\t\t <a href='event:palette B +1'>+1</a> <a href='event:palette B +10'>+10</a>", name, x, y+40, 200, 20, 0, 0, 0, true)
  26.     ui.addTextArea(5648, "", name, x, y+60, 100, 20, 0, 0, 0, true)
  27.    
  28.    
  29.    
  30.     local sFav = ""
  31.     for _, val in pairs(palette_mod[name].default) do
  32.         sFav = sFav.."<font color='#"..val.."'><a href='event:palette select "..val.."'>■</a></font> "
  33.     end
  34.     ui.addTextArea(5649, sFav, name, x, y+80, 100, 80, 0, 0, 0, true)
  35.     ui.addTextArea(5650, "<a href='event:palette close'><b>X</b></a>", name, x+130, y+130, 13, 20, 0, 0, 0, true) -- Supprimez cette ligne si vous ne voulez pas que les joueurs puissent fermer la palette eux-même
  36.    
  37. end
  38.  
  39. function eventTextAreaCallback(id, name, call)
  40.  
  41.     if call:sub(1,7) == "palette" then
  42.         if call:sub(9,14) == "select" then -- Traitement une fois une couleur sélectionnée
  43.             local color = call:sub(16)
  44.             palette_mod[name].lastSelect = color -- Sauvegarde de la dernière couleur sélectionnée.
  45.             if id == 5648 then table.insert(palette_mod[name].default, color) end -- Ajout de la couleur aux favoris
  46.             tfm.exec.setNameColor(name, tonumber(color, 16)) -- Remplacez cette ligne par ce que voulez faire une fois qu'une couleur a été sélectionnée
  47.         elseif call:sub(9,13) == "close" then -- Fermeture de la palette
  48.             for id=5641, 5650 do ui.removeTextArea(id, name) end -- Supprimez ce bloc si vous ne voulez pas que les joueurs puissent activer eux-même la palette.
  49.             ui.addTextArea(5641, "<a href='event:palette show'>Afficher</a>", name, 740, 25, 50, 20, 0x324650, 0x27373F, 1, true)
  50.         elseif call:sub(9,12) == "show" then -- Affichage de la palette
  51.             paletteShow(name)
  52.         else -- Traitement pour la sélection des couleurs par le système RGB
  53.             local c = call:sub(9,9)
  54.             local nVal = palette_mod[name].color[c]+tonumber(call:sub(11))
  55.             nVal = nVal<=255 and nVal>=0 and nVal or nVal<=255 and 0 or 255
  56.             palette_mod[name].color[c] = nVal
  57.            
  58.             ui.updateTextArea(id, "<a href='event:palette "..c.." -10'>-10</a> <a href='event:palette "..c.." -1'>-1</a> \t\t\t <a href='event:palette "..c.." +1'>+1</a> <a href='event:palette "..c.." +10'>+10</a>", name)
  59.             ui.updateTextArea(id-3, "<"..(c=="R" and "R" or c=="G" and "VP" or "BV")..">"..c.." : "..nVal, name)
  60.             local color =string.format('%x', palette_mod[name].color.R*0x10000 + palette_mod[name].color.G*0x100 + palette_mod[name].color.B)
  61.             ui.updateTextArea(5648, "<b><font color='#"..color.."'>"..color.."</font></b> <a href='event:palette select "..color.."'>valider</a>", name)
  62.         end
  63.     end
  64.    
  65. end
  66.  
  67.  
  68.  
  69. -- La ligne suivante sert juste à afficher la palette au lancement du module et n'est pas utile si vous voulez l'intégrer à un module
  70. for name in pairs(tfm.get.room.playerList) do paletteShow(name) end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement