Serial System
2 Beiträge
• Seite 1 von 1
Das Script ist gut geeignet für Games die man verscherbeln will.
Author: Dark_Phoenix
Scene_Serial:
Window_Base (NICHT DAS ORIGINAL ÜBERSCHREIBEN):
Scene_SerialDeleter
Ersetzt Main mit:
[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]
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]
-

MagicMaker - Moderator
- Beiträge: 2411
- Registriert: 28. Aug 2007 16:06
Re: Serial System
Fehlermeldung:
Script'Game_System' line 156: NoMethodError occured.
undefined method 'windowskin_name' for nil:NilClass
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
2 Beiträge
• Seite 1 von 1
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
