Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    Serial check - how ?

    Scheduled Pinned Locked Moved PYTHON Development
    13 Posts 0 Posters 1.1k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H Offline
      Helper
      last edited by

      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

      On 18/10/2012 at 08:35, xxxxxxxx wrote:

      Scripts (expressions and Commands) cannot be protected. You need to make plugins of them to -somewhat- protect
      them using the Scripts ->"Source Protector..." command in Cinema.

      1 Reply Last reply Reply Quote 0
      • H Offline
        Helper
        last edited by

        THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

        On 18/10/2012 at 10:26, xxxxxxxx wrote:

        Das muss gehe!

        import c4d
        from c4d import gui
        #Welcome to the world of Python

        def main() :
            gui.MessageDialog('Hello World!')

        si = c4d.GeGetSerialInfo(c4d.SERIALINFO_MULTILICENSE)
            if len(si['nr']) > 0:
                # Multi-license, do something
                print "Multi-license"
                print si
            else:
                si = c4d.GeGetSerialInfo(c4d.SERIALINFO_CINEMA4D)
                print "Single-license"
                print si
                # Single-license, do something

        if __name__=='__main__':
            main()

        Thit code works fine!
        But:
        I need te eleven digits from the right
        like in EXCEL "right(si,11)".
        This could be compaired with something.
        If the result is "true" the Phyton-Script would be executet.

        With the Souce-protector the Script should be protected.
        Kind regards
        Ronald

        1 Reply Last reply Reply Quote 0
        • H Offline
          Helper
          last edited by

          THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

          On 18/10/2012 at 10:46, xxxxxxxx wrote:

          Hi, as tcastudios said only Python Plugins can be protected. Scripts can not be encrypted.

          Cheers, Sebastian

          1 Reply Last reply Reply Quote 0
          • H Offline
            Helper
            last edited by

            THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

            On 18/10/2012 at 10:51, xxxxxxxx wrote:

            Ok,
            Thanks a lot.
            This ist the reason why it dosen't work!

            So I have to translate my Script to a Plugin.

            I think questions will follow

            1 Reply Last reply Reply Quote 0
            • H Offline
              Helper
              last edited by

              THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

              On 22/10/2012 at 06:09, xxxxxxxx wrote:

              Everything in my plugin works greate
              Only on last Problem:

              The serialchek never turns to the ok???
              I've filtert the serialnumber,only the 11 numbers to a varriable.
              Then i Compare it with a number.
              But it never runs through the "true" - part
              Could it be that I compare a sting with a number?
              How can I solve the problem?

              Thanks to all here

              ------------------------------------------------

              import c4d
              import math
              import os

              from c4d import documents, plugins, bitmaps

              PLUGIN_ID = 1000000
              SERIENNUMMER = 'hier muss zum Testen die eigene Seriennummer eingegebenwerden'

              def check_serialinfo() :
                  si = c4d.GeGetSerialInfo(c4d.SERIALINFO_CINEMA4D)
                  print "Single-license"
                  sn = si['nr']
                  print sn
                  print SERIENNUMMER
                  if (sn == SERIENNUMMER) :# !!! here is the problem!!!
                      print 'ok'
                  else:
                      print 'not ok'
                  # Single-license, do something
                  print 'Seriennummerncheck beendet'

              class MYPLUGIN(plugins.CommandData) :

              pass

              def Execute(self, doc) :
                      check_serialinfo()
                      return True

              #----------------------------------------------------------------------------

              if __name__ == "__main__":
                  # load icon.tif from res into bmp
                  bmp = bitmaps.BaseBitmap()
                  dir, file = os.path.split(__file__)
                  fn = os.path.join(dir, "res", "icon.tif")
                  bmp.InitWith(fn)
                  # register the plugin
                  okyn = plugins.RegisterCommandPlugin(id=PLUGIN_ID, str="V4D-Seriennummerncheck", info=c4d.PLUGINFLAG_COMMAND_HOTKEY, icon=bmp, help="", dat=MYPLUGIN())
                  print " "
                  print "----------------------------------"
                  print "Seriennummernchek ", okyn
                  print "----------------------------------"

              1 Reply Last reply Reply Quote 0
              • H Offline
                Helper
                last edited by

                THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                On 22/10/2012 at 06:19, xxxxxxxx wrote:

                Well, according to how I read your code, you're comparing the variable 'sn' which is a string to the string constant 'SERIENNUMMER' which is a different string. So it will always fail.

                What you should be doing is taking the plugin serial number your user entered and somehow getting the C4D serial out of that so you can compare it to 'sn'. How you do that depends on how you generated the serial number in the first place, and only you know that. But you would normally generate a plugin serial from the 11 digits of the user's C4D serial which they send you when they buy a licence.

                Of course, f you are going to give this plugin away then you don't need to do any serial checking at all.

                1 Reply Last reply Reply Quote 0
                • H Offline
                  Helper
                  last edited by

                  THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                  On 22/10/2012 at 06:27, xxxxxxxx wrote:

                  Hi Spedler,
                  you are wright.
                  I want to type my serial number in the variable at the beginning.
                  Then ich want to compare it with the serialnumber of my license.
                  The print sn and print SERIENNUMMER shows the same values in the console.
                  But: the compare (sn == SERIENNUMMER) retuns a false!!!
                  Do you know why?

                  Thanks a lot

                  1 Reply Last reply Reply Quote 0
                  • H Offline
                    Helper
                    last edited by

                    THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                    On 22/10/2012 at 06:37, xxxxxxxx wrote:

                    Beats me then, sorry. I don't use Python but I would have thought that your code should work.

                    1 Reply Last reply Reply Quote 0
                    • H Offline
                      Helper
                      last edited by

                      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                      On 22/10/2012 at 06:41, xxxxxxxx wrote:

                      Hi spedler,

                      thats the problem
                      Beleave me! It dosn't work
                      But why???

                      1 Reply Last reply Reply Quote 0
                      • H Offline
                        Helper
                        last edited by

                        THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                        On 22/10/2012 at 07:11, xxxxxxxx wrote:

                        Ok, i found something:
                        one is string and one is long!
                        So: how can I check the type of a varriable and how can I convert it.

                        Thanks a lot

                        1 Reply Last reply Reply Quote 0
                        • H Offline
                          Helper
                          last edited by

                          THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                          On 22/10/2012 at 09:34, xxxxxxxx wrote:

                          The serial number returned by GeGetSerialInfo returns a string, so you either have to declare the SERIENNUMMER variable as a string (by putting the digits in quotes) or you can typecast sn to an integer with int(sn).
                          I recommend the latter.

                            
                            
                          SERIENNUMMER = 14300012345   
                            
                          def check_serialinfo() :   
                              si = c4d.GeGetSerialInfo(c4d.SERIALINFO_CINEMA4D)   
                              print "Single-license"   
                              sn = si['nr']   
                              print sn   
                              print SERIENNUMMER   
                              if (int(sn) == SERIENNUMMER) :# !!! here was the problem!!!   
                                  print 'ok'   
                              else:   
                                  print 'not ok'   
                              # Single-license, do something   
                              print 'Seriennummerncheck beendet'   
                            
                          
                          1 Reply Last reply Reply Quote 0
                          • H Offline
                            Helper
                            last edited by

                            THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                            On 23/10/2012 at 00:12, xxxxxxxx wrote:

                            Thanks to Sparkle,

                            it works now greate.

                            slowly but shurly I will learn how to use Phyton in C4D.

                            Thanks a lot again

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post