Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[ Palette RGB [v1.0]
- 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.
- Ci dessous se trouvent les informations utiles pour éviter que la palette ne soit incompatible avec le reste de votre module
- La palette utilise les id de textArea 5641 à 5650
- Les variables globales utilisées par le module sont palette_mod et paletteShow (ne pas réutiliser ces noms de variables)
- Le traitement des messages dans la fonction eventTextArea suppose que les trois paramètres reçus se nomment id, name, call
- La dernière couleur sélectionnée par un joueur est sauvegardée dans la variable palette_mod[nom_du_joueur].lastSelect
- ]]
- palette_mod = {}
- 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)
- x, y = x or 335, y or 100
- 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" } }
- ui.addTextArea(5641, '', name, x, y, 155, 150, 0x324650, 0x27373F, 1, true)
- ui.addTextArea(5642, "<R>R : "..palette_mod[name].color.R, name, x+50, y, 50, 20, 0, 0, 0, true)
- ui.addTextArea(5643, "<VP>G : "..palette_mod[name].color.G, name, x+50, y+20, 50, 20, 0, 0, 0, true)
- ui.addTextArea(5644, "<BV>B : "..palette_mod[name].color.B, name, x+50, y+40, 50, 20, 0, 0, 0, true)
- 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)
- 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)
- 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)
- ui.addTextArea(5648, "", name, x, y+60, 100, 20, 0, 0, 0, true)
- local sFav = ""
- for _, val in pairs(palette_mod[name].default) do
- sFav = sFav.."<font color='#"..val.."'><a href='event:palette select "..val.."'>■</a></font> "
- end
- ui.addTextArea(5649, sFav, name, x, y+80, 100, 80, 0, 0, 0, true)
- 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
- end
- function eventTextAreaCallback(id, name, call)
- if call:sub(1,7) == "palette" then
- if call:sub(9,14) == "select" then -- Traitement une fois une couleur sélectionnée
- local color = call:sub(16)
- palette_mod[name].lastSelect = color -- Sauvegarde de la dernière couleur sélectionnée.
- if id == 5648 then table.insert(palette_mod[name].default, color) end -- Ajout de la couleur aux favoris
- 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
- elseif call:sub(9,13) == "close" then -- Fermeture de la palette
- 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.
- ui.addTextArea(5641, "<a href='event:palette show'>Afficher</a>", name, 740, 25, 50, 20, 0x324650, 0x27373F, 1, true)
- elseif call:sub(9,12) == "show" then -- Affichage de la palette
- paletteShow(name)
- else -- Traitement pour la sélection des couleurs par le système RGB
- local c = call:sub(9,9)
- local nVal = palette_mod[name].color[c]+tonumber(call:sub(11))
- nVal = nVal<=255 and nVal>=0 and nVal or nVal<=255 and 0 or 255
- palette_mod[name].color[c] = nVal
- 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)
- ui.updateTextArea(id-3, "<"..(c=="R" and "R" or c=="G" and "VP" or "BV")..">"..c.." : "..nVal, name)
- local color =string.format('%x', palette_mod[name].color.R*0x10000 + palette_mod[name].color.G*0x100 + palette_mod[name].color.B)
- ui.updateTextArea(5648, "<b><font color='#"..color.."'>"..color.."</font></b> <a href='event:palette select "..color.."'>valider</a>", name)
- end
- end
- end
- -- 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
- for name in pairs(tfm.get.room.playerList) do paletteShow(name) end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement