Serial System

Unsere RGSS Skripte für den RPG Maker XP.

Beitragvon MagicMaker » 21. Dez 2007 13:39

Das Script ist gut geeignet für Games die man verscherbeln will.

Author: Dark_Phoenix

Scene_Serial:

Code: Alles auswählen
class Scene_Serial
  def initialize
    @productnum = "0bp4560365"
    @productnumreal = "0gd58q1g32"
  end
  def main
    if $BTEST
      battle_test
      return
    end
    $game_system = Game_System.new
    @bar = Window_Bar.new
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    @bar.dispose
  end
  def update
    @bar.update
    @bar.refresh
    # Locate Database
    if not FileTest.exist?(@productnum + ".txt")
      if not FileTest.exist?(@productnumreal + ".txt")
        # Show error if script not found
        print ('Serial Key Not Valid, Please purchase one')
        # Quit game
        exit
      else
        @bar.load += 1
      end
    else
      @bar.load += 1
    end
    if @bar.load == @bar.max
      toscene
    end
  end
  def toscene
    $game_system = nil
    $scene = Scene_Title.new
  end
  def exit
    $scene = nil
  end
end

class Window_Bar < Window_Base
  attr_accessor :load
  attr_accessor :max
  def initialize
    super(0,0,640,480)
    @load = 0
    @max = 300
    self.contents = Bitmap.new(width - 32, height - 32)
  end
  def refresh
    self.contents.clear
    draw_load(0,235)
  end
  def draw_load(x, y, width = 600)
    rate = @load / @max.to_f
    plus_x = 0
    rate_x = 0
    plus_y = 25
    plus_width = 0
    rate_width = 100
    height = 10
    align1 = 1
    align2 = 2
    align3 = 0
    grade1 = 1
    grade2 = 0
    color1 = Color.new(0, 0, 0, 192)
    color2 = Color.new(255, 255, 192, 192)
    color3 = Color.new(0, 0, 0, 192)
    color4 = Color.new(64, 0, 0, 192)
    color5 = Color.new(80 - 24 * rate, 80 * rate, 14 * rate, 192)
    color6 = Color.new(240 - 72 * rate, 240 * rate, 62 * rate, 192)
    od = (width + plus_width) * @load * rate_width / 100 /
    @max
    gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
    width, plus_width + width * rate_width / 100,
    height, od, align1, align2, align3,
    color1, color2, color3, color4, color5, color6, grade1, grade2)
    self.contents.font.color = system_color
    self.contents.font.size = 30
    self.contents.draw_text(120, 40 + 4, 600, 32, "Game Name")#Enter your game name here
    self.contents.font.color = system_color
    self.contents.font.size = 12
    self.contents.draw_text(x, y + 4, 600, 32, " Serial Key Valid     Loading...") # Text to appear on the Loading bar
  end
end


Window_Base (NICHT DAS ORIGINAL ÜBERSCHREIBEN):

Code: Alles auswählen
class Window_Base < Window
  #--------------------------------------------------------------------------
  # * Drawing of gauge
  #--------------------------------------------------------------------------
  def gauge_rect(x, y, rect_width, width, height, gauge, align1, align2, align3,
    color1, color2, color3, color4, color5, color6, grade1, grade2)
    case align1
    when 1
      x += (rect_width - width) / 2
    when 2
      x += rect_width - width
    end
    case align2
    when 1
      y -= height / 2
    when 2
      y -= height
    end
    # Framework Drawing
    self.contents.fill_rect(x, y, width, height, color1)
    self.contents.fill_rect(x + 1, y + 1, width - 2, height - 2, color2)
    if align3 == 0
      if grade1 == 2
        grade1 = 3
      end
      if grade2 == 2
        grade2 = 3
      end
    end
    if (align3 == 1 and grade1 == 0) or grade1 > 0
      color = color3
      color3 = color4
      color4 = color
    end
    if (align3 == 1 and grade2 == 0) or grade2 > 0
      color = color5
      color5 = color6
      color6 = color
    end
    # Drawing of empty gauge
    self.contents.gradation_rect(x + 2, y + 2, width - 4, height - 4,
    color3, color4, grade1)
    if align3 == 1
      x += width - gauge
    end
    # Drawing of actual gauge
    self.contents.gradation_rect(x + 2, y + 2, gauge - 4, height - 4,
    color5, color6, grade2)
  end
end

#------------------------------------------------------------------------------
# New routine added to the Bitmap class.
#------------------------------------------------------------------------------

class Bitmap
  #--------------------------------------------------------------------------
  # * Rectangle Gradation Indicator
  # color1: Start color
  # color2: Ending color
  # align: 0: On side gradation
  # 1: Vertically gradation
  # 2: The gradation (intense concerning slantedly heavily note)
  #--------------------------------------------------------------------------
  def gradation_rect(x, y, width, height, color1, color2, align = 0)
    if align == 0
      for i in x...x + width
        red = color1.red + (color2.red - color1.red) * (i - x) / (width - 1)
        green = color1.green +
        (color2.green - color1.green) * (i - x) / (width - 1)
        blue = color1.blue +
        (color2.blue - color1.blue) * (i - x) / (width - 1)
        alpha = color1.alpha +
        (color2.alpha - color1.alpha) * (i - x) / (width - 1)
        color = Color.new(red, green, blue, alpha)
        fill_rect(i, y, 1, height, color)
      end
    elsif align == 1
      for i in y...y + height
        red = color1.red +
        (color2.red - color1.red) * (i - y) / (height - 1)
        green = color1.green +
        (color2.green - color1.green) * (i - y) / (height - 1)
        blue = color1.blue +
        (color2.blue - color1.blue) * (i - y) / (height - 1)
        alpha = color1.alpha +
        (color2.alpha - color1.alpha) * (i - y) / (height - 1)
        color = Color.new(red, green, blue, alpha)
        fill_rect(x, i, width, 1, color)
      end
    elsif align == 2
      for i in x...x + width
        for j in y...y + height
          red = color1.red + (color2.red - color1.red) *
          ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
          green = color1.green + (color2.green - color1.green) *
          ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
          blue = color1.blue + (color2.blue - color1.blue) *
          ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
          alpha = color1.alpha + (color2.alpha - color1.alpha) *
          ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
          color = Color.new(red, green, blue, alpha)
          set_pixel(i, j, color)
        end
      end
    elsif align == 3
      for i in x...x + width
        for j in y...y + height
          red = color1.red + (color2.red - color1.red) *
          ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
          green = color1.green + (color2.green - color1.green) *
          ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
          blue = color1.blue + (color2.blue - color1.blue) *
          ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
          alpha = color1.alpha + (color2.alpha - color1.alpha) *
          ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
          color = Color.new(red, green, blue, alpha)
          set_pixel(i, j, color)
        end
      end
    end
  end
end


Scene_SerialDeleter

Code: Alles auswählen
class Scene_SerialDeleter
  def initialize
    @productnum = "0bp4560365" #Enter the name of your 'Trial' Serial Key
  end
  def main      # }
    if $BTEST      #  }
      battle_test      # } not sure what this does....
      return         #  }
    end
    if not FileTest.exist?("0bp4560356.txt")
      File.delete("0bp4560365.txt")
      p "Demo Expired, please purchase a licence key"
    exit
    end
  end
end


Ersetzt Main mit:

Code: Alles auswählen
#==============================================================================
# ** Main
#------------------------------------------------------------------------------
#  After defining each class, actual processing begins here.
#==============================================================================

begin
  # Prepare for transition
  Graphics.freeze
  # Make scene object (title screen)
  $scene = Scene_Serial.new
  # Call main method as long as $scene is effective
  while $scene != nil
    $scene.main
  end
  # Fade out
  Graphics.transition(20)
rescue Errno::ENOENT
  # Supplement Errno::ENOENT exception
  # If unable to open file, display message and end
  filename = $!.message.sub("No such file or directory - ", "")
  print("Unable to find file #{filename}.")
end


[QUOTE=Dark_Phoenix]

Hey,
I was playing around with a Serial key system with loading of CA and I came up with this:
Now you can have a 'trial' serial number that gets deleted after a certain number of days.(I couldn't get the script to do that, if you can, you are free to edit it and post it here, but you must credit me)

OPTIONAL :
If you want a in-Game timer put this in a commonevent:
Conditional Branch : Timer 0min 0sec less
script : $scene = Scene_SerialDeleter.new
end

Compatibility
No compatibility issues are known except the script sometimes doesn't work.

Creating a Serial Key
TRIAL
In Scene_Serial edit $productnum to whatever you want the trial key to be and then put a text file with the same name as that in the Game Folder.

Purchased Key
In Scene_Serial edit $productnumreal to whatever you want the purchased serial key to be and then put a text file with the same name as that in the Game Folder.[/QUOTE]
Bild

SSBB FCode: 2579-2525-4997
Watchingアニメ: 「スクールランブル二学期」、「とある科学のレールガン」、「流星のロックマン」、
「星のカービィ」、「バカとテストと召喚獣」、「空の境界」、「名探偵コナンM」、「ソニックX」

--- Synchro-Requests closed ---
Benutzeravatar
MagicMaker
Moderator
 
Beiträge: 2411
Registriert: 28. Aug 2007 16:06

Re: Serial System

Beitragvon melly » 22. Jan 2012 13:14

Fehlermeldung:
Script'Game_System' line 156: NoMethodError occured.
undefined method 'windowskin_name' for nil:NilClass
melly
Mitglied
 
Beiträge: 5
Registriert: 22. Jan 2012 11:06


Zurück zu RGSS Skripte

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

Persönlicher Bereich

Anmelden

Wer ist online?

Insgesamt ist 1 Besucher online: 0 registrierte, 0 unsichtbare und 1 Gast (basierend auf den aktiven Besuchern der letzten 15 Minuten)
Der Besucherrekord liegt bei 52 Besuchern, die am 10. Nov 2011 06:33 gleichzeitig online waren.

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
w e r b u n g