OS Detection via Ruby

Discussion in 'RGSS Scripts (RMXP)' started by DerVVulfman, Sep 9, 2019.

  1. DerVVulfman

    DerVVulfman Resident Werewolf Veteran

    Messages:
    314
    Likes Received:
    150
    First Language:
    English
    Primarily Uses:
    RMXP
    OS Detection via Ruby
    Version 1.2



    Description
    While most RPGMaker games are designed for users of the Windows Platform, not everyone who plays games are Windows users. So what of those custom scripts that use the Win32DLL? They won't work on their PCs! This scriptette will determine what OS the player is using. And if used properly, a scripter/coder can write something to turn off those custom Win32API dll systems (if possible for their game).



    Script
    Code:
    #==============================================================================
    # ** OS Detection via Ruby  v 1.2
    #------------------------------------------------------------------------------
    #    by DerVVulfman (09/09/2019) MM/DD/YYYY
    #    based on the work of Thomas Enebo (11/27/2012) MM/DD/YYYY
    #==============================================================================
    
    
    
    #==============================================================================
    # ** Operating System Detection
    #------------------------------------------------------------------------------
    #  This module actively uses the RbConfig system to detect what operating
    #  system is in use.  The below code is sound, the RbConfig used above is
    #  merely a snippet of the whole.
    #
    #  Refer to OS_Detect.execute to perform detection operation
    #  Refer to OS_Detect.version to acquire OS after generation
    #==============================================================================
    
    module OS_Detect
      #--------------------------------------------------------------------------
      # * Methods/Functions Executable From Outside Call
      #--------------------------------------------------------------------------
      module_function  
      #--------------------------------------------------------------------------
      # * Object Execution
      #--------------------------------------------------------------------------
      def execute
        # Only perform if not F12 Reset
        if $@.nil?
          # Set Default
          @version = :unknown
          @os ||= (
            host_os = RUBY_PLATFORM
            case host_os
            when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
              @version = :windows
            when /darwin|mac os/
              @version = :macosx
            when /linux/
              @version = :linux
            when /solaris|bsd/
              @version = :unix
            end
          )
        end
      end
      #--------------------------------------------------------------------------
      # * Get OS version (:windows, :macosz, :linux, :unix, :unknown)
      #--------------------------------------------------------------------------
      def version
        return @version
      end  
    end
    



    Example Calls
    OS_Detect.execute to generate it.
    p OS_Detect.version to print it after generating.
    This generates the result of :windows for most users



    Notes
    Normally, if you run RUBY_PLATFORM while using Java, your response would always be 'Java'.... even if running Mac or Windows. This version instead demands a comparison and should distinguish even if running Java as well.



    Compatability
    Since it contains no modules or classes, it should work with all Ruby-Based RPGMaker Engines.



    Credits and Thanks
    Well, to enough people at stackoverflow that said not to use the RUBY_PLATFORM command. But specific thanks to Thomas Enebo at Stack Overflow that wrote the basis for this script. Not that he helped me figure out the RbConfig file.



    Terms of Use
    Free for use, even within commercial products. But due credit to both myself and Thomas Enebo is required.
     
    Last edited: Sep 10, 2019
    #1
    Kvothe likes this.
  2. DerVVulfman

    DerVVulfman Resident Werewolf Veteran

    Messages:
    314
    Likes Received:
    150
    First Language:
    English
    Primarily Uses:
    RMXP
    BUMP
    to 1.1

    Took care of an issue that notified users their OS was 'windows' regardless of the system.
     
    #2
  3. DerVVulfman

    DerVVulfman Resident Werewolf Veteran

    Messages:
    314
    Likes Received:
    150
    First Language:
    English
    Primarily Uses:
    RMXP
    BUMP
    to Version 1.2

    The system has gone through a subtle change, requiring TWO separate calls now. The first executes the system that determines which OS you are running. The second acquires the value for use in whatever script that requires it.

    And what's extra special? It has been set up so it only allows you to generate the value ONCE! Meant to only execute once when the game engine starts, hitting the F12 key would force it to execute a second time and it would generate an 'unknown OS' error. This new version prevents that.
     
    #3

Share This Page