Has this script been tested on SQL 2012. I found I had to change this code:
select count(*) '+
' from '+@database+'..sysmembers z , '+@database+'..sysusers su '+
' where z.memberuid = su.uid and su.name = '''+convert(varchar(255),@newuidname)+''' ) = 0
to this in order to script out the roles:
select count(*) '+
' from '+@database+'..sysmembers z , '+@database+'..sysusers su '+
' where z.memberuid = su.uid and su.name = '''+convert(varchar(255),@newuidname)+''' ) > 0