Search Unity

Bad Word Filter PRO - Solution against profanity and obscenity

Discussion in 'Assets and Asset Store' started by Stefan-Laubenberger, Jan 9, 2015.

  1. chaosmaker

    chaosmaker

    Joined:
    Jul 21, 2013
    Posts:
    29
    Hi,

    Is it Unity 4.6 compatible? We have multiple projects running on 5.x and 4.x so I would like to use the asset for the both ones without any problem.

    Thanks.
     
  2. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi chaosmaker

    Thank you very much for your interest in our "Bad Word Filter"!

    I can assure you that it runs under Unity 4 without any problems.
    The main reason we dropped the official support for Unity 4 is: we created the new demo-scenes with Unity 5 and unfortunately, this demo-scenes won't run under U4 (since U5-projects aren't backward compatible).

    If you don't need the demo-scenes under U4, there's no problem using BWF. The documentation also explains everything and we're here to help ;-)

    After you bought BWF, you can send me your invoice and I send you a zip-file with the asset for U4.

    Cheers
    Stefan
     
    Last edited: Oct 20, 2015
  3. chaosmaker

    chaosmaker

    Joined:
    Jul 21, 2013
    Posts:
    29
    Hi Stefan,

    I get a message:

    Error while importing package: Package has unknown format
    UnityEditor.AssetStoreContext:OpenPackage(String)

    When importing package. Can the reason be that I am using Unity 4.6.x?
    What is the reason that you don't support 4.6.x version? I bought your package and for some serious reasons I can't really upgrade to Unity 5.x, now I have a huge disappointment here.

    I can convert the project to Unity 4.6.x also but if you could do it for me, it would be appreciated.

    Thanks.
     
  4. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981

    Hello again :)

    I wrote this:

    Please send me your invoice and you get the zip-file: email
     
    Last edited: Mar 13, 2017
  5. chaosmaker

    chaosmaker

    Joined:
    Jul 21, 2013
    Posts:
    29
    Yes Stefan, I just seen your previous post after I send the post here.

    It was very easy to port to Unity 4.6 though, I just took all the necessary scripts and put them under BadWordFilter folder and it worked!

    Thanks.
     
  6. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi chaosmaker

    I'm glad it worked ;-)
    If you have any questions or suggestions, just contact me.

    Cheers
    Stefan
     
  7. PatrickKa

    PatrickKa

    Joined:
    Apr 30, 2014
    Posts:
    245
    I'm interested but could you create a Unity 4.x compatible package? Should not be so hard because it should be only scripts, I guess.
     
  8. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi PatrickKa

    Thank you for your interest in BWF!
    As I wrote, our asset is Unity 4-compatible, but the demo scenes aren't :-(
    Since Unity 4 support ends by the end of this year, we won't recreate the scenes...
    But as with "chaosmaker", just send me the invoice and I give you a zip-file which you can extract inside your U4-project.

    I hope this is fine with you.


    Cheers
    Stefan
     
  9. ventis

    ventis

    Joined:
    Dec 16, 2015
    Posts:
    2
    Hi,

    Please may I inquire if your solution (Bad Words Filter) is compatible with developing mobile applications with/on codenameone java netbeans (i.e. for java native applications).

    Also, can I use it to develop c# applications WPF and Windows.

    If your answers for both platforms is positive, can you please provide some how tos & examples.

    When are you considering another Promotional Sale on your solution, i could think you should one during this festive Christmas and ENd of the year period to usher in a new Year.

    Thank you.
     
  10. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi Ventis

    BWF is written in C# (with some Unity-stuff, like "MonoBehaviour") but can easily be ported to plain C#.
    Since C# and Java are very similar, it's no problem to "take a look" at the BWF code and implement it in Java (or any other language).

    But: this isn't relevant for most of my Unity costumers, since they use Unity. ;-)
    I could do it for you, but this would be a custom solution and must be outside of the asset-scope...
    If you consider this, please send me an email.

    About the sale: unfortunately, it's not in my hands, when Unity puts my assets on sale :)
    But probably I do some kind of promotion.

    I hope this helps!


    Cheers
    Stefan
     
    Last edited: Mar 13, 2017
  11. ventis

    ventis

    Joined:
    Dec 16, 2015
    Posts:
    2
    Hi Stefan,

    I have sent you an email and am still awaiting your reply.

    Thanks
     
  12. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi Ventis

    I answered your mail.
    Have a nice day!


    Cheers
    Stefan
     
  13. FlyingSquirrels

    FlyingSquirrels

    Joined:
    Sep 18, 2015
    Posts:
    83
    Hey,

    I bought this plugin a few months ago (can send you invoice on request).

    I have a project which could use this tool but unfortunately its running on Unity 4. Can you share an older Unity 4 package with me please?

    I've sent you a couple requests on welcome@crosstales.com but I got no response yet.

    Regards,
     
  14. FlyingSquirrels

    FlyingSquirrels

    Joined:
    Sep 18, 2015
    Posts:
    83
    FYI - I exported this manually from Unity 5 to Unity 4 and it works just fine.
     
  15. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Tutorials:






    Have fun!
     
  16. ChikiGames

    ChikiGames

    Joined:
    Nov 29, 2015
    Posts:
    4
    @Stefan-Laubenberger

    Hi Stefan!

    I am using your plugin, but it seems the filter stopped working on Android device when upgrading to 2.6.2 (on Unity 5.3.6). I do not know for now whether it is working on an iOS device.

    On the editor it does seem to work though I am getting weird script missing messages even though I do not find such missing scripts. e.g. "The referenced script on this Behaviour (Game Object 'RTL') is missing!"

    Thanks!
     
  17. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi

    We made many changes in the last few versions, so please follow this steps in your project:
    1. Inside Unity, go to menu "File" => "New Scene"
    2. Delete the "crosstales\BadWordFilter" folder from the Project-view
    3. Import the latest version from the "Asset Store"
    I hope this helps.
    If not, please send me an email with some details like OS of your development machine and a screenshot from the console with the errors/warnings.

    So long,
    Stefan
     
  18. dmax9

    dmax9

    Joined:
    Jun 10, 2015
    Posts:
    6
    Hello,

    I installed PlayMaker actions for BadWord (v2.7.0). PlayMaker is version 1.8.3.f4. After installation, I got errors from all scripts:
    I correct this by replacing:
    Code (CSharp):
    1. using Crosstales.BadWord;
    to:
    Code (CSharp):
    1. using Crosstales.BWF;
    However, I got another error in file BWFActionBase, about "ManagerMask" in line:
    Code (CSharp):
    1. public ManagerMask Filter = ManagerMask.All;
     
  19. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi

    Sorry for the hassle! We forgot to update the PlayMaker-package... :(
    Here is an <REMOVED>.

    I hope this works!


    Cheers
    Stefan


    Edit:
    Link removed since it's fixed in the current release
     
    Last edited: Mar 13, 2017
    dmax9 likes this.
  20. NK-Dmitry

    NK-Dmitry

    Joined:
    Nov 10, 2015
    Posts:
    7
    Hello Stefan,

    We just picked up Bad Filter Pro for out project and was wondering if it feasible to expect support for whitelisting words in the near future?

    Cheers,
    Dmitry
     
  21. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi Dimity

    Since BWF is based on RegEx it's already possible to whitelist words, like for the c-word:

    \b(?!\bscunthorpe\b)\w*[kc]+n[t7]\w*\b

    We also thought about adding an explict whitelist-feature in a future release, but I can't say when it will be ready.

    So long,
    Stefan
     
  22. NK-Dmitry

    NK-Dmitry

    Joined:
    Nov 10, 2015
    Posts:
    7
    Thank you for the reply,

    Regex is great however we are still looking forward to whitelist feature, sometimes it is considerably easier to have it in a separate list. regex rules on its own could quickly become unwieldy :)

    Regards,
    Dmitry
     
  23. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hello again

    We will consider white-lists in a future upgrade.
    I will post it here when it's ready :)


    So long,
    Stefan
     
  24. jGate99

    jGate99

    Joined:
    Oct 22, 2013
    Posts:
    1,945
    Is BWF (Standard) is still on 30% end of year sale?
     
  25. nixter

    nixter

    Joined:
    Mar 17, 2012
    Posts:
    320
    Stefan,

    I've been using BWF Pro with my latest project and I'm impressed how well it works. It is a very comprehensive system.

    I'd like your advice. BWF Pro by default only returns one positive result of a filter search for a word or phrase, even when multiple positives are present. For instance, "@sshole" would only trigger a single positive even though "@sshole" and "@ss" might be two separate entries in the filter. For most uses, this is the expected behavior.

    But for my needs, I would like to capture each positive result. I'm using the source and have already made changes to it. Can you suggest the easiest way to allow that behavior?
     
  26. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi Nixter

    We use regex to catch all variants of bad words (like @ss), which leads to one match per occurrence.
    If you want to have all possible matches, you must edit the bad word files to your liking. These means you have to change the file to catch the words you wanna match, like

    \bass\b
    \basshole\b

    I hope this helps you further.


    Cheers
    Stefan
     
    nixter likes this.
  27. nixter

    nixter

    Joined:
    Mar 17, 2012
    Posts:
    320
    Thanks for responding. I think I wasn't clear. I'm not trying to find multiple occurrences of a filter in a sentence, but multiple filter expressions caught by the same word.

    But I think I found a solution to my problem. I'm creating a loop in the BadWordFilter class that duplicates the badWordRegex, then removes positives as they are found until there are none left. That should handle my unusual need. :)
     
  28. AllanMSmith

    AllanMSmith

    Joined:
    Oct 2, 2012
    Posts:
    180
    Hey Stefan,

    I am developing an iOS game and bought your plugin which is very nice, however now I am unable to build my game anymore. I get the following (enormous) error:

    Failed running /Volumes/1TERA/Applications/Unity 543/Unity 543.app/Contents/il2cpp/build/il2cpp.exe --convert-to-cpp --emit-null-checks --enable-array-bounds-check --enable-symbol-loading --development-mode --extra-types.file="/Volumes/1TERA/Applications/Unity 543/Unity 543.app/Contents/il2cpp/il2cpp_default_extra_types.txt" --assembly="/Users/firehorse/Desktop/Like a Boss/Like a Boss iOS/Temp/StagingArea/Data/Managed/Assembly-CSharp-firstpass.dll" --assembly="/Users/firehorse/Desktop/Like a Boss/Like a Boss iOS/Temp/StagingArea/Data/Managed/Assembly-CSharp.dll" --assembly="/Users/firehorse/Desktop/Like a Boss/Like a Boss iOS/Temp/StagingArea/Data/Managed/Assembly-UnityScript.dll" --assembly="/Users/firehorse/Desktop/Like a Boss/Like a Boss iOS/Temp/StagingArea/Data/Managed/UnityEngine.Advertisements.dll" --assembly="/Users/firehorse/Desktop/Like a Boss/Like a Boss iOS/Temp/StagingArea/Data/Managed/UnityEngine.UI.dll" --assembly="/Users/firehorse/Desktop/Like a Boss/Like a Boss iOS/Temp/StagingArea/Data/Managed/UnityEngine.Analytics.dll" --assembly="/Users/firehorse/Desktop/Like a Boss/Like a Boss iOS/Temp/StagingArea/Data/Managed/DOTween.dll" --assembly="/Users/firehorse/Desktop/Like a Boss/Like a Boss iOS/Temp/StagingArea/Data/Managed/PlayMaker.dll" --assembly="/Users/firehorse/Desktop/Like a Boss/Like a Boss iOS/Temp/StagingArea/Data/Managed/TouchScript.dll" --assembly="/Users/firehorse/Desktop/Like a Boss/Like a Boss iOS/Temp/StagingArea/Data/Managed/UnityEngine.dll" --assembly="/Users/firehorse/Desktop/Like a Boss/Like a Boss iOS/Temp/StagingArea/Data/Managed/System.dll" --assembly="/Users/firehorse/Desktop/Like a Boss/Like a Boss iOS/Temp/StagingArea/Data/Managed/mscorlib.dll" --generatedcppdir="/Users/firehorse/Desktop/Like a Boss/Like a Boss iOS/Temp/il2cppOutput/il2cppOutput"

    stdout:
    IL2CPP error for method 'System.Void <Module>::‎‮‮‫‌‪‍‭‌‬‍‌‌‏‮‬‭‍‌‌‬‌‪‮()' in assembly '/Users/firehorse/Desktop/Like a Boss/Like a Boss iOS/Temp/StagingArea/Data/Managed/BadWordFilter.dll'
    Additional information: Build a development build for more information. Object reference not set to an instance of an object
    il2cpp.exe didn't catch exception: System.NullReferenceException: Object reference not set to an instance of an object
    at Unity.IL2CPP.MethodSignatureWriter.CanDevirtualizeMethodCall (Mono.Cecil.MethodDefinition method) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodSignatureWriter.NeedsHiddenMethodInfo (Mono.Cecil.MethodReference method, MethodCallType callType, Boolean isConstructor) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodBodyWriter.CallExpressionFor (Mono.Cecil.MethodReference callingMethod, Mono.Cecil.MethodReference unresolvedMethodToCall, MethodCallType callType, System.Collections.Generic.List`1 poppedValues, System.Func`2 addUniqueSuffix, Boolean emitNullCheckForInvocation) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodBodyWriter.ProcessInstruction (Unity.IL2CPP.Node node, Unity.IL2CPP.Common.CFG.InstructionBlock block, Mono.Cecil.Cil.Instruction& ins) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodBodyWriter.GenerateCodeRecursive (Unity.IL2CPP.Node node) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodBodyWriter.Generate () [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodWriter.WriteMethodBody (Mono.Cecil.MethodReference method, Unity.IL2CPP.CppCodeWriter methodBodyWriter, IRuntimeMetadataAccess metadataAccess) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodWriter+<WriteMethodDefinition>c__AnonStorey0.<>m__0 (Unity.IL2CPP.CppCodeWriter bodyWriter, Unity.IL2CPP.MetadataUsage metadataUsage, Unity.IL2CPP.MethodUsage methodUsage) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodWriter.WriteMethodWithMetadataInitialization (Unity.IL2CPP.CppCodeWriter writer, System.String methodSignature, System.String methodFullName, System.Action`3 writeMethodBody, System.String uniqueIdentifier) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodWriter.WriteMethodDefinition (Mono.Cecil.MethodReference method, IMethodCollector methodCollector) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodWriter.WriteMethodDefinitions (IMethodCollector methodCollector) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.SourceWriter.WriteMethodSourceFiles (NiceIO.NPath outputDirectory, System.String fileName, IEnumerable`1 typeList, IMethodCollector methodCollector, IMetadataCollection metadataCollection) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.SourceWriter.Write (Mono.Cecil.AssemblyDefinition assemblyDefinition, Unity.IL2CPP.GenericsCollection.InflatedCollectionCollector allGenerics, NiceIO.NPath outputDir, Mono.Cecil.TypeDefinition[] typeList, Unity.IL2CPP.AttributeCollection attributeCollection, Unity.IL2CPP.MethodCollector methodCollector, IMetadataCollection metadataCollection) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.AssemblyConverter.Convert (Mono.Cecil.AssemblyDefinition assemblyDefinition, Unity.IL2CPP.GenericsCollection.InflatedCollectionCollector allGenerics, Unity.IL2CPP.AttributeCollection attributeCollection, Unity.IL2CPP.MethodCollector methodCollector, IMetadataCollection metadataCollection) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.AssemblyConverter.Apply () [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.AssemblyConverter.ConvertAssemblies (NiceIO.NPath[] assemblies, NiceIO.NPath outputDir, NiceIO.NPath dataFolder) [0x00000] in <filename unknown>:0
    stderr:

    Unhandled Exception:
    System.NullReferenceException: Object reference not set to an instance of an object
    at Unity.IL2CPP.MethodSignatureWriter.CanDevirtualizeMethodCall (Mono.Cecil.MethodDefinition method) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodSignatureWriter.NeedsHiddenMethodInfo (Mono.Cecil.MethodReference method, MethodCallType callType, Boolean isConstructor) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodBodyWriter.CallExpressionFor (Mono.Cecil.MethodReference callingMethod, Mono.Cecil.MethodReference unresolvedMethodToCall, MethodCallType callType, System.Collections.Generic.List`1 poppedValues, System.Func`2 addUniqueSuffix, Boolean emitNullCheckForInvocation) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodBodyWriter.ProcessInstruction (Unity.IL2CPP.Node node, Unity.IL2CPP.Common.CFG.InstructionBlock block, Mono.Cecil.Cil.Instruction& ins) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodBodyWriter.GenerateCodeRecursive (Unity.IL2CPP.Node node) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodBodyWriter.Generate () [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodWriter.WriteMethodBody (Mono.Cecil.MethodReference method, Unity.IL2CPP.CppCodeWriter methodBodyWriter, IRuntimeMetadataAccess metadataAccess) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodWriter+<WriteMethodDefinition>c__AnonStorey0.<>m__0 (Unity.IL2CPP.CppCodeWriter bodyWriter, Unity.IL2CPP.MetadataUsage metadataUsage, Unity.IL2CPP.MethodUsage methodUsage) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodWriter.WriteMethodWithMetadataInitialization (Unity.IL2CPP.CppCodeWriter writer, System.String methodSignature, System.String methodFullName, System.Action`3 writeMethodBody, System.String uniqueIdentifier) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodWriter.WriteMethodDefinition (Mono.Cecil.MethodReference method, IMethodCollector methodCollector) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodWriter.WriteMethodDefinitions (IMethodCollector methodCollector) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.SourceWriter.WriteMethodSourceFiles (NiceIO.NPath outputDirectory, System.String fileName, IEnumerable`1 typeList, IMethodCollector methodCollector, IMetadataCollection metadataCollection) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.SourceWriter.Write (Mono.Cecil.AssemblyDefinition assemblyDefinition, Unity.IL2CPP.GenericsCollection.InflatedCollectionCollector allGenerics, NiceIO.NPath outputDir, Mono.Cecil.TypeDefinition[] typeList, Unity.IL2CPP.AttributeCollection attributeCollection, Unity.IL2CPP.MethodCollector methodCollector, IMetadataCollection metadataCollection) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.AssemblyConverter.Convert (Mono.Cecil.AssemblyDefinition assemblyDefinition, Unity.IL2CPP.GenericsCollection.InflatedCollectionCollector allGenerics, Unity.IL2CPP.AttributeCollection attributeCollection, Unity.IL2CPP.MethodCollector methodCollector, IMetadataCollection metadataCollection) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.AssemblyConverter.Apply () [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.AssemblyConverter.ConvertAssemblies (NiceIO.NPath[] assemblies, NiceIO.NPath outputDir, NiceIO.NPath dataFolder) [0x00000] in <filename unknown>:0
    [ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object
    at Unity.IL2CPP.MethodSignatureWriter.CanDevirtualizeMethodCall (Mono.Cecil.MethodDefinition method) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodSignatureWriter.NeedsHiddenMethodInfo (Mono.Cecil.MethodReference method, MethodCallType callType, Boolean isConstructor) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodBodyWriter.CallExpressionFor (Mono.Cecil.MethodReference callingMethod, Mono.Cecil.MethodReference unresolvedMethodToCall, MethodCallType callType, System.Collections.Generic.List`1 poppedValues, System.Func`2 addUniqueSuffix, Boolean emitNullCheckForInvocation) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodBodyWriter.ProcessInstruction (Unity.IL2CPP.Node node, Unity.IL2CPP.Common.CFG.InstructionBlock block, Mono.Cecil.Cil.Instruction& ins) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodBodyWriter.GenerateCodeRecursive (Unity.IL2CPP.Node node) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodBodyWriter.Generate () [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodWriter.WriteMethodBody (Mono.Cecil.MethodReference method, Unity.IL2CPP.CppCodeWriter methodBodyWriter, IRuntimeMetadataAccess metadataAccess) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodWriter+<WriteMethodDefinition>c__AnonStorey0.<>m__0 (Unity.IL2CPP.CppCodeWriter bodyWriter, Unity.IL2CPP.MetadataUsage metadataUsage, Unity.IL2CPP.MethodUsage methodUsage) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodWriter.WriteMethodWithMetadataInitialization (Unity.IL2CPP.CppCodeWriter writer, System.String methodSignature, System.String methodFullName, System.Action`3 writeMethodBody, System.String uniqueIdentifier) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodWriter.WriteMethodDefinition (Mono.Cecil.MethodReference method, IMethodCollector methodCollector) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.MethodWriter.WriteMethodDefinitions (IMethodCollector methodCollector) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.SourceWriter.WriteMethodSourceFiles (NiceIO.NPath outputDirectory, System.String fileName, IEnumerable`1 typeList, IMethodCollector methodCollector, IMetadataCollection metadataCollection) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.SourceWriter.Write (Mono.Cecil.AssemblyDefinition assemblyDefinition, Unity.IL2CPP.GenericsCollection.InflatedCollectionCollector allGenerics, NiceIO.NPath outputDir, Mono.Cecil.TypeDefinition[] typeList, Unity.IL2CPP.AttributeCollection attributeCollection, Unity.IL2CPP.MethodCollector methodCollector, IMetadataCollection metadataCollection) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.AssemblyConverter.Convert (Mono.Cecil.AssemblyDefinition assemblyDefinition, Unity.IL2CPP.GenericsCollection.InflatedCollectionCollector allGenerics, Unity.IL2CPP.AttributeCollection attributeCollection, Unity.IL2CPP.MethodCollector methodCollector, IMetadataCollection metadataCollection) [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.AssemblyConverter.Apply () [0x00000] in <filename unknown>:0
    at Unity.IL2CPP.AssemblyConverter.ConvertAssemblies (NiceIO.NPath[] assemblies, NiceIO.NPath outputDir, NiceIO.NPath dataFolder) [0x00000] in <filename unknown>:0

    UnityEngine.Debug:LogError(Object)
    UnityEditorInternal.Runner:RunManagedProgram(String, String, String, CompilerOutputParserBase, Action`1) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:98)
    UnityEditorInternal.IL2CPPBuilder:RunIl2CppWithArguments(List`1, Action`1, String) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:381)
    UnityEditorInternal.IL2CPPBuilder:ConvertPlayerDlltoCpp(ICollection`1, String, String) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:372)
    UnityEditorInternal.IL2CPPBuilder:Run() (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:226)
    UnityEditorInternal.IL2CPPUtils:RunIl2Cpp(String, String, IIl2CppPlatformProvider, Action`1, RuntimeClassRegistry, Boolean) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:132)
    UnityEditor.HostView:OnGUI()

    Exception: /Volumes/1TERA/Applications/Unity 543/Unity 543.app/Contents/il2cpp/build/il2cpp.exe did not run properly!
    UnityEditorInternal.Runner.RunManagedProgram (System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser, System.Action`1 setupStartInfo) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:100)
    UnityEditorInternal.IL2CPPBuilder.RunIl2CppWithArguments (System.Collections.Generic.List`1 arguments, System.Action`1 setupStartInfo, System.String workingDirectory) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:381)
    UnityEditorInternal.IL2CPPBuilder.ConvertPlayerDlltoCpp (ICollection`1 userAssemblies, System.String outputDirectory, System.String workingDirectory) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:372)
    UnityEditorInternal.IL2CPPBuilder.Run () (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:226)
    UnityEditorInternal.IL2CPPUtils.RunIl2Cpp (System.String tempFolder, System.String stagingAreaData, IIl2CppPlatformProvider platformProvider, System.Action`1 modifyOutputBeforeCompile, UnityEditor.RuntimeClassRegistry runtimeClassRegistry, Boolean developmentBuild) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:132)
    UnityEditor.iOS.PostProcessiPhonePlayer.PostProcess (BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String stagingAreaDataManaged, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry) (at /Users/builduser/buildslave/unity/build/PlatformDependent/iPhonePlayer/Extensions/Common/BuildPostProcessor.cs:475)
    UnityEditor.iOS.iOSBuildPostprocessor.PostProcess (BuildPostProcessArgs args) (at /Users/builduser/buildslave/unity/build/PlatformDependent/iPhonePlayer/Extensions/Common/ExtensionModule.cs:27)
    UnityEditor.PostprocessBuildPlayer.Postprocess (BuildTarget target, System.String installPath, System.String companyName, System.String productName, Int32 width, Int32 height, System.String downloadWebplayerUrl, System.String manualDownloadWebplayerUrl, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:176)
    UnityEditor.HostView:OnGUI()

    I am using Unity 5.4.3, tried using .NET 2.0 Subset and regular, removed strip engine code... still, the same error. I have no idea about where to go to now =/ If you could assist me that would be great!

    Best regards,
    Allan
     
    Last edited: Jan 21, 2017
  29. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hello again

    I'm glad you found a solution! :)
    If you have further questions, just let me know.


    So long,
    Stefan
     
  30. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi Allan

    Are you using the latest version 2.7.3 of BWF? The previous version 2.7.2 had exact this problem...
    Which version are you using - standard or pro?


    Cheers
    Stefan
     
  31. AllanMSmith

    AllanMSmith

    Joined:
    Oct 2, 2012
    Posts:
    180
    Hi Stefan,

    I am using v2.7.3, standard edition. Tried re-downloading from the asset store as well, didn't help. I also tried using Unity 544 and 550, same problem =/

    Any ideas what might be causing this? Anything I can do?

    Thanks!
     
  32. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Please send me an email with your invoice and I can give you a fixed version.


    Cheers
    Stefan
     
  33. AllanMSmith

    AllanMSmith

    Joined:
    Oct 2, 2012
    Posts:
    180
    Hey Stefan,

    I just sent you an e-mail. Thanks for the attention!
     
  34. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hello again

    I've just sent you the new version.

    I hope it helps, please let me know.


    So long,
    Stefan
     
  35. carsenk

    carsenk

    Joined:
    Jan 13, 2016
    Posts:
    85
    How do you set this up as your old video doesnt work as it says there is an issue with the Sources Array

    Just needing to know what to put into the new script I've created that will link to the chat input, the code from the videos doesn't work with latest versoin of BWF and Unity 5.5
     
    Last edited: Jan 24, 2017
  36. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi carsenk

    What exactly do you mean?
    To add BWF to your project, simply go to "Tools\BadWordFilter\Add\BWF" and you're ready to use it from your code.

    So long,
    Stefan
     
  37. carsenk

    carsenk

    Joined:
    Jan 13, 2016
    Posts:
    85
    Yes I have the BWF prefab in my scene, but what do I put into the code for the Update(), as the code you show in your video above, does not work as it says the string cannot be converted to an array?


    Like this code below does not work, the Sources.ToArray () is invalid

    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. using Crosstales.BWF;
    5. using UnityEngine.UI;
    6.  
    7.  
    8. public class ChatRoomFilter : MonoBehaviour {
    9.  
    10.     public List<string> Sources = new List<string>();
    11.     public InputField Input;
    12.  
    13.     // Use this for initialization
    14.     void Start () {
    15.        
    16.     }
    17.    
    18.     // Update is called once per frame
    19.     void Update () {
    20.         if (Time.frameCount % 20 == 0)
    21.         {
    22.             Input.text = BWFManager.ReplaceAll(Input.text, Sources.ToArray ());
    23.         }
    24.     }
    25. }
     
  38. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hello
    Your code is slightly wrong, it must look like this:


    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. using Crosstales.BWF;
    5. using UnityEngine.UI;
    6.  
    7.  
    8. public class ChatRoomFilter : MonoBehaviour {
    9.  
    10.     public List<string> Sources = new List<string>();
    11.     public InputField Input;
    12.  
    13.     // Use this for initialization
    14.     void Start () {
    15.      
    16.     }
    17.  
    18.     // Update is called once per frame
    19.     void Update () {
    20.         if (Time.frameCount % 20 == 0)
    21.         {
    22.             Input.text = BWFManager.ReplaceAll(Input.text, Model.ManagerMask.All, Sources.ToArray ()); //or Model.ManagerMask.BadWord
    23.         }
    24.     }
    25. }


    For more info, please take a look at the API:
    http://www.crosstales.com/en/assets...s_crosstales_1_1_b_w_f_1_1_b_w_f_manager.html

    I hope this helps.
     
    carsenk likes this.
  39. carsenk

    carsenk

    Joined:
    Jan 13, 2016
    Posts:
    85
    Thank you, one last thing, "Model." doesnt exist in the current context, how would I resolve that?

    With?
    Code (CSharp):
    1. Crosstales.BWF.Model.ManagerMask.All
    EDIT: Got it all working, Really easy to setup :) awesome asset!
     
    Last edited: Jan 24, 2017
    Stefan-Laubenberger likes this.
  40. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    I'm glad it's working now!

    Have a nice day!


    Cheers
    Stefan


    P.S: you could also add a "using" directive, like "using Crosstales.BWF.Model;" - then you could simply use "ManagerMask.All"
     
    carsenk likes this.
  41. carsenk

    carsenk

    Joined:
    Jan 13, 2016
    Posts:
    85
    Hey, I am not that great with C#, This is my ChatRoomFilter.cs script im using to call BWF, but im getting a warning I would like to fix, it is working and updating every frame:

    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. using Crosstales.BWF;
    5. using Crosstales.BWF.Model;
    6. using UnityEngine.UI;
    7.  
    8.  
    9. public class ChatRoomFilter : MonoBehaviour
    10. {
    11.  
    12.     public List<string> Sources = new List<string>();
    13.     public InputField Input;
    14.  
    15.     // Use this for initialization
    16.     void Start()
    17.     {
    18.  
    19.     }
    20.  
    21.     // Update is called once per frame
    22.     void Update()
    23.     {
    24.             Input.text = BWFManager.ReplaceAll(Input.text, ManagerMask.All, Sources.ToArray());
    25.     }
    26. }
    Hope you can help, the script above is giving me these warnings:

    Code (CSharp):
    1. Filter is not ready - please wait until 'isReady' returns true.
    2. UnityEngine.Debug:LogWarning(Object)
    3. Crosstales.BWF.Filter.BaseFilter:logFilterNotReady()
    4. Crosstales.BWF.Filter.BadWordFilter:ReplaceAll(String, String[])
    5. Crosstales.BWF.Manager.BadWordManager:ReplaceAll(String, String[])
    6. Crosstales.BWF.BWFManager:ReplaceAll(String, ManagerMask, String[])
    7. ChatRoomFilter:Update() (at Assets/crosstales/BadWordFilter/Prefabs/ChatRoomFilter.cs:24)
    Hope you can help! :) Thanks! Love your asset!
     
  42. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi

    Change your code to this:

    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. using Crosstales.BWF;
    5. using Crosstales.BWF.Model;
    6. using UnityEngine.UI;
    7.  
    8.  
    9. public class ChatRoomFilter : MonoBehaviour
    10. {
    11.  
    12.     public List<string> Sources = new List<string>();
    13.     public InputField Input;
    14.  
    15.     // Use this for initialization
    16.     void Start()
    17.     {
    18.  
    19.     }
    20.  
    21.     // Update is called once per frame
    22.     void Update()
    23.     {
    24.             if (BWFManager.isReady && Time.frameCount % 30 == 0) {
    25.                Input.text = BWFManager.ReplaceAll(Input.text, ManagerMask.All, Sources.ToArray());
    26.             }
    27.     }
    28. }
    That makes the warning go away. It also prevents BWF from checking every frame, since this needs (too) much performance.

    I hope this helps!


    So long,
    Stefan


    P.S: if you love the asset, don't forget to rate it :)
     
    Last edited: Feb 11, 2017
    carsenk likes this.
  43. carsenk

    carsenk

    Joined:
    Jan 13, 2016
    Posts:
    85
    It doesnt serve me any purpose of actually censoring words if I dont have it set to every frame, someone could just simply type fast enough to still type the censored word otherwise....so that is my reasoning for using it every frame, maybe something you could improve upon somehow or is there some kind of work around like to filter the actual chat entry that the input goes to with BWF as well?
     
  44. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    There are many possibilities to solve this issue.

    Imho the easiest way is to check the content of the "InputField" with the "On Edit End"-event.
    Just create a public method and call it instead inside the "Update"-method.
     
    carsenk likes this.
  45. carsenk

    carsenk

    Joined:
    Jan 13, 2016
    Posts:
    85
    Genius, I will try that, I knew purchasing this asset would be worth it. Excellent support, anyone reading this, seriously purchase his asset, it is perfect for beginners or hardened developers :)
     
    Stefan-Laubenberger likes this.
  46. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    I'm always happy to help :)
    Thank you for your kind words!

    Cheers
    Stefan
     
    carsenk likes this.
  47. soaring

    soaring

    Joined:
    Jun 22, 2015
    Posts:
    27
  48. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
  49. soaring

    soaring

    Joined:
    Jun 22, 2015
    Posts:
    27
    Stefan - quick question on the filter. We currently have a multiplayer game where both the server and the client are built using Unity in the same project. We are considering integrating BWF to the server portion of our codebase.

    That said, how do we make sure the BWF code & related assets aren't built & released into the client, but only the server? We want to keep our client build as clean & small as possible.

    Thx!
    Andrew
     
  50. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi Andrew

    There are many ways how you could setup your mp-game, so the answer isn't easy...
    Personally, I would use two different git-branches (for client and server) of the same code-base.
    That makes it easy to separate the code etc.

    I hope this helps you further.


    Cheers
    Stefan