You are canceling the event after the outputChatBox function, it won't cancel anything, so use cancelEvent before.
So it will look like
function vipMessage( message, messageType )
if PlayerVIP[source] == 1 then
if messageType == 0 then
cancelEvent()
local r,g,b = getPlayerNametagColor ( source )
outputChatBox ( getPlayerName ( source ) .. ": (VIP) #FFFFFF" .. message, source,r,g,b,true )
outputServerLog( "CHAT: " .. getPlayerName ( source ).. ": " .. message )
return
end
end
end
addEventHandler( "onPlayerChat", getRootElement(), vipMessage )