Paint Script | Spray
import random from PIL import Image, ImageDraw def spray_paint(image_path, center_x, center_y, radius, color, intensity=100): """ Apply digital spray paint effect. intensity: 1-255 (higher = more opaque) """ img = Image.open(image_path).convert("RGBA") pixels = img.load()
(just pen & paper logic):
-- Raycast from camera center local mouse = player:GetMouse() local ray = Ray.new(camera.CFrame.Position, (mouse.Hit.p - camera.CFrame.Position).Unit * SPRAY_DISTANCE) local hit, pos = workspace:FindPartOnRay(ray, character) spray paint script
tool.Activated:Connect(function() local player = game.Players:GetPlayerFromCharacter(tool.Parent) if not player then return end import random from PIL import Image, ImageDraw def
-- Place inside a Tool (SprayCan) local tool = script.Parent local debris = game:GetService("Debris") local SPRAY_DISTANCE = 8 -- studs local SPRAY_SIZE = 1.2 -- stud radius local PAINT_COLOR = Color3.new(1, 0.2, 0.3) -- hot pink for _ in range(intensity * 50): # number
I’ve written it as a general, practical tutorial that covers all three possibilities, so you can apply the logic to your actual project. Whether you’re a graffiti artist planning a complex mural, a game developer adding a spray can tool in Roblox, or a coder automating digital spray effects in Python, having a “spray paint script” saves time and improves results.
for _ in range(intensity * 50): # number of droplets # Random scatter within radius (normal distribution looks best) angle = random.uniform(0, 3.14159 * 2) r = radius * (random.random() ** 1.5) # more dense in center x = int(center_x + r * math.cos(angle)) y = int(center_y + r * math.sin(angle)) if 0 <= x < img.width and 0 <= y < img.height: old = pixels[x, y] # Blend with existing color (alpha composite) alpha = random.randint(40, 100) / 255.0 new_r = int(old[0] * (1-alpha) + color[0] * alpha) new_g = int(old[1] * (1-alpha) + color[1] * alpha) new_b = int(old[2] * (1-alpha) + color[2] * alpha) pixels[x, y] = (new_r, new_g, new_b, 255)