Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware 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

    User plugin serial number issue

    SDK Help
    0
    35
    15.9k
    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
      Helper
      last edited by

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

      On 28/10/2010 at 06:36, xxxxxxxx wrote:

      yep, looks right to me. Did he provide you with the license server serial number?

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

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

        On 28/10/2010 at 06:45, xxxxxxxx wrote:

        Howdy,

        He provided the normal Cinema 4D serial number, BUT in my routine for checking the Cinema 4D serial number I use this:

        SerialInfo si;
        GeGetSerialInfo(SERIAL_CINEMA4D,&si);

        So, the previous code I posted is simply using

        GeGetSerialInfo(SERIAL_MULTILICENSE, &si);

        to check if it's a mult license or single license and then calling the appropriate c4d function to fill the buffer.

        Adios,
        Cactus Dan

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

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

          On 28/10/2010 at 07:21, xxxxxxxx wrote:

          Well, that might be the problem. If the c4d license is in a license server environment then afaik you should use the license server serial number (as not the c4d serial number is used for running that c4d license in that case) which at the same time means you must license the amount of seats to them and you cannot license individual seats or a limited number of seats. So if they have 20 seats they must buy 20 licenses from you (of course you could trust them that they will only use your plugin with that one c4d seat but well...really?).

          But I think only Matthias can give you an official answer on this.

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

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

            On 28/10/2010 at 07:42, xxxxxxxx wrote:

            Howdy,

            I've sent Matthias a private message asking him to look at this thread.

            This whole multi license thing has been confusing to me. I never really cared to make a customer pay for using the plugin on each seat in their multi license, so I thought if I just left the old code as is, looking for the Rx.0 number, everything would be fine. Up until now, everything has been fine (no customers with multi licenses), but it looks like it has turned around and bitten me in the upholstery. :frowning2:

            Adios,
            Cactus Dan

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

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

              On 28/10/2010 at 08:14, xxxxxxxx wrote:

              Don't know if this helps but from earlier threads I use
              SysGetUserInfo(6) for MLS and
              SysGetUserInfo(0) for main app running local number.

              I've asked the MLS users I have with R12, and it seems to be ok.

              Cheers
              Lennart

                
              var eleven; // the app serials   
              var licensetype;   
                
              if(SysGetUserInfo(6) && sizeof(SysGetUserInfo(6)) > 0 )   
              {   
              eleven = SysGetUserInfo(6);   
              licensetype = "LICENSE SERVER";   
              }   
                
              if(SysGetUserInfo(0) && sizeof(SysGetUserInfo(0)) > 0 )   
              {   
              eleven = SysGetUserInfo(0);   
              licensetype = "Cinema R12";   
              }
              
              1 Reply Last reply Reply Quote 0
              • H
                Helper
                last edited by

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

                On 28/10/2010 at 08:22, xxxxxxxx wrote:

                Howdy,

                But that is coffee code. 😕

                Adios,
                Cactus Dan

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

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

                  On 28/10/2010 at 08:39, xxxxxxxx wrote:

                  Yup, but I just wondered if SysGetUserInfo() might be useful / available for C++ as well,
                  but that I can't tell....

                  Cheers
                  Lennart

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

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

                    On 28/10/2010 at 09:20, xxxxxxxx wrote:

                    Howdy,

                    Well, no that function isn't in the C++ SDK.

                    The code I posted was based on the example code in the R11.5 C++ SDK documentation:

                    void GeGetSerialInfo(LONG type, SerialInfo[URL-REMOVED]* si)_<_h4_>_

                    Get the registration information for CINEMA 4D.

                    A multi-license has the following formating:
                    201 **[100]** 00519-ABCDEF

                    The third, fourth and fifth digits equal the number of licenses, in the above example it's 100 licenses.

                    Example:
                    `  
                    SerialInfo si;
                    GeGetSerialInfo(SERIAL_MULTILICENSE, &si);

                    if(si.nr.Content())
                    {
                      //multi-license, do something
                    }
                    else
                    {
                      GeGetSerialInfo(SERIAL_CINEMA4D, &si);

                    //single-license, do something
                    }
                    `

                    That's basically what I was doing in my code, except that my code was only using that to find out whether to call Read/WritePluginInfo() or Read/WriteRegInfo().

                    Edit:
                    Well, I reckon the problem is that I don't have a beta tester who is on a multi license, who can check to see if it's working. 😠

                    Adios,
                    Cactus Dan


                    [URL-REMOVED] @maxon: This section contained a non-resolving link which has been removed.

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

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

                      On 03/11/2010 at 03:12, xxxxxxxx wrote:

                      Your code seems to work fine here. I tested it with and without license server.

                      I only slightly modified the code.

                        
                      Bool myReadPluginInfo(LONG pluginid, void *buffer, LONG size)  
                      {  
                        SerialInfo si;  
                        GeGetSerialInfo(SERIAL_MULTILICENSE, &si);  
                        if(si.nr.Content())  
                            return ReadRegInfo(pluginid,buffer,size); // multi license  
                        else  
                        {  
                            GeGetSerialInfo(SERIAL_CINEMA4D, &si);  
                            if(si.nr.Content())  
                                return ReadPluginInfo(pluginid,buffer,size); // single license  
                        }  
                        
                        return FALSE;  
                      }  
                        
                      Bool myWritePluginInfo(LONG pluginid, void *buffer, LONG size)  
                      {  
                        SerialInfo si;  
                        GeGetSerialInfo(SERIAL_MULTILICENSE, &si);  
                        if(si.nr.Content())  
                            return WriteRegInfo(pluginid,buffer,size); // multi license  
                        else  
                        {  
                            GeGetSerialInfo(SERIAL_CINEMA4D, &si);  
                            if(si.nr.Content())  
                                return WritePluginInfo(pluginid,buffer,size); // single license  
                        }  
                        
                        return FALSE;  
                      }  
                      

                      cheers,
                      Matthias

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

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

                        On 03/11/2010 at 06:40, xxxxxxxx wrote:

                        Howdy,

                        Thanks Matthias.

                        But the question in my mind is if the user is under a multi license,  is the main Cinema 4D license number still accessable?

                        The code I posted only decides where to read and write the plugin info, but then in the calling function, it's comparing the plugin serial number to the main Cinema 4D license with:

                        GeGetSerailInfo(SERIAL_CINEMA4D, &si);
                        

                        Under a multi license, does the above code still get the 101xxxxxxxx license?

                        Adios,
                        Cactus Dan

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

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

                          On 03/11/2010 at 07:04, xxxxxxxx wrote:

                          Calling GeGetSerialInfo(SERIAL_CINEMA4D, &si) with a multi license will return the license server client number. On the other hand if you call GeGetSerialInfo(SERIAL_MULTILICENSE, &si) with a single license will result in an empty string. This way you can differenciate between multi and single license.

                          hope that helps

                          cheers,
                          Matthias

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

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

                            On 03/11/2010 at 07:12, xxxxxxxx wrote:

                            Howdy,

                            Originally posted by xxxxxxxx

                            ...Calling GeGetSerialInfo(SERIAL_CINEMA4D, &si) with a multi license will return the license server client number...

                            So, is that the 201xxxxxxxx or the 101xxxxxxxx number? I'm only really interested in the 101xxxxxxxx number.

                            Adios,
                            Cactus Dan

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

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

                              On 03/11/2010 at 07:17, xxxxxxxx wrote:

                              The 101xxxxxxxx is the license server client number. This is different for each of the running licenses of one multi license. GeGetSerialInfo(SERIAL_CINEMA4D, &si) under a multi license will return 101xxxxxxxx.

                              cheers,
                              Matthias

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

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

                                On 03/11/2010 at 07:30, xxxxxxxx wrote:

                                Howdy,

                                Originally posted by xxxxxxxx

                                The 101xxxxxxxx is the license server client number. This is different for each of the running licenses of one multi license. GeGetSerialInfo(SERIAL_CINEMA4D, &si) under a multi license will return 101xxxxxxxx.

                                OK, so does that mean by using:

                                GeGetSerialInfo(SERIAL_CINEMA4D, &si)
                                

                                ... to get the 101xxxxxxxx serial number and comparing it to the plugin serial number retrieved from my posted function code, the plugin will still register, but every seat on the multi license will be able to register and use the same plugin serial number?

                                Adios,
                                Cactus Dan

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

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

                                  On 03/11/2010 at 08:01, xxxxxxxx wrote:

                                  As far as I see it you need no to be concerned about the 101xxx number.

                                  Just check if it's a multi or single license (mulit will result in an empty string).

                                  If multi use the string returned with GeGetSerialInfo(SERIAL_MULTILICENSE, &si) to bind your plugin serial to. This is a 20xxxxxxxxxxx number (201xxxxxxxxxx for <R12, 202xxxxxxxxxx for R12 afaik).

                                  If it's a single license use the string returned by GeGetSerialInfo(SERIAL_CINEMA4D, &si) to bind your plugin serial to.

                                  Make sure to use Read/WriteRegInfo for multi licenses and Read/WritePluginInfo for single licenses.

                                  cheers,
                                  Matthias

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

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

                                    On 03/11/2010 at 08:17, xxxxxxxx wrote:

                                    Howdy,

                                    Well, I wanted to allow 1 plugin serial number to be used for all of the seats in a multi license, instead of making each seat pay for a separate plugin license. That's why I'm so interested in getting the 101xxxxxxxx number from within each seat. 😉

                                    Adios,
                                    Cactus Dan

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

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

                                      On 03/11/2010 at 09:29, xxxxxxxx wrote:

                                      Originally posted by xxxxxxxx

                                      Howdy,

                                      Well, I wanted to allow 1 plugin serial number to be used for all of the seats in a multi license, instead of making each seat pay for a separate plugin license. That's why I'm so interested in getting the 101xxxxxxxx number from within each seat. 😉

                                      Adios,
                                      Cactus Dan

                                      The 20xxxxxxxxxxx stays same for every seat. This is the number your customer is sending you. It tells you how many licenses he owns. What you do with that number is up to you 🙂

                                      cheers,
                                      Matthias

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

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

                                        On 03/11/2010 at 10:36, xxxxxxxx wrote:

                                        Howdy,

                                        OK, let me see if I have this straight.

                                        Say a customer has a 5 seat multi license, then his first 11 digits would be 201005xxxxx, each seat would return that number using:

                                        GeGetSerialInfo(SERIAL_MULTILICENSE,&si);
                                        

                                        ... and the "xxxxx" part of the number would be the same for each seat, so my plugin's serial number needs to be generated from that 201005xxxxx number?

                                        Sorry for all the nit picky questions, but I don't have access to a multi license for testing. Confused

                                        Adios,
                                        Cactus Dan

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

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

                                          On 04/11/2010 at 03:49, xxxxxxxx wrote:

                                          Originally posted by xxxxxxxx

                                          Say a customer has a 5 seat multi license, then his first 11 digits would be 201005xxxxx, each seat would return that number using:

                                          GeGetSerialInfo(SERIAL_MULTILICENSE,&si);
                                          

                                          ... and the "xxxxx" part of the number would be the same for each seat, so my plugin's serial number needs to be generated from that 201005xxxxx number?

                                          Yes, GeGetSerialInfo(SERIAL_MULTILICENSE, &si) returns the same number for each seat of a multi license, for example 201005xxxxx.

                                          cheers,
                                          Matthias

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

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

                                            On 06/11/2010 at 00:02, xxxxxxxx wrote:

                                            Hi Dan,

                                            See this thread.

                                            Cheers,

                                            Keith

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