RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
Screenshot

0 Members and 2 Guests are viewing this topic.

*
Rep:
Level 97
2014 Most Unsung Member2014 Best RPG Maker User - Engine2013 Best RPG Maker User (Scripting)2012 Best Member2012 Best RPG Maker User (Scripting)2012 Favorite Staff Member2012 Most Mature MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best RPG Maker User (Scripting)2011 Best Use of Avatar and Signature Space2010 Best RPG Maker User (Scripting)2010 Best Use Of Avatar And Signature Space
Screenshot
Version: 1.0
Author: 66rpg.com & modern algebra
Date: April 5, 2010

Version History


  • <Version 1.0> 04.05.2010 - Original Release

Description


This script allows the player to take a screenshot of any area in the game that he/she wants. Useful for sharing achievements I suppose. I made it for my own nefarious purposes and without thinking whether it would have any real purpose in an actual RM game.

Features

  • Allows the player to take a screenshot at any time by pressing the button of your choice.
  • You can set where the pictures are saved and what preface they have
  • You can force take a screenshot at any time through a simple script line, $scene.take_screenshot

Instructions

Please see the header. It's very simple.

Script


Code: [Select]
#==============================================================================
#  Screenshot
#  Version: 1.0
#  Author: modern algebra (rmrk.net)
#  Date: April 5, 2010
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Description:
#    This script allows the player to take a screenshot of any area in the game
#   that he/she wants. Useful for sharing achievements I suppose.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Instructions:
#    All you need to do is set which button you want to use for taking
#   screenshots with at line 31, and set the destination folder for screenshots
#   at line 33.
#    If you want to force a screenshot, you can put this code in a call script:
#       $scene.take_screenshot
#==============================================================================
#==============================================================================
# ** Scene_Base
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new constant - MA_SCREENSHOT_BUTTON, MA_SCREENSHOT_PATH
#    aliased method - update
#==============================================================================

class Scene_Base
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * CONSTANTS
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  #  MA_SCREENSHOT_BUTTON - the button to press to take a Screenshot
  MA_SCREENSHOT_BUTTON = Input::F5
  #  MA_SCREENSHOT_PATH - the path to save the file
  MA_SCREENSHOT_PATH = "Screenshot "
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Frame Update
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias modag_screenshot_upd_9ik2 update
  def update (*args)
    modag_screenshot_upd_9ik2 (*args) # Run Original Method
    if Input.trigger? (MA_SCREENSHOT_BUTTON)
      take_screenshot
    end
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Take Screenshot
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def take_screenshot
    x = 1
    while FileTest.exist? ("#{MA_SCREENSHOT_PATH}#{x}.png")
      x += 1
    end
    Graphics.snap_to_bitmap.make_png (x.to_s, MA_SCREENSHOT_PATH, 1)
  end
end
#==============================================================================
#  Everything below this point is the PNG Saver script, written by 66rpg.com
#==============================================================================

# PNG Saver by 66rpg.com

module Zlib
  class Png_File < GzipWriter
    def make_png(bitmap, mode = 0)
      @bitmap, @mode = bitmap, mode
      self.write(make_header)
      self.write(make_ihdr)
      self.write(make_idat)
      self.write(make_iend)
    end
    def make_header
      return [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a].pack('C*')
    end
    def make_ihdr
      ih_size               = [13].pack('N')
      ih_sign               = 'IHDR'
      ih_width              = [@bitmap.width].pack('N')
      ih_height             = [@bitmap.height].pack('N')
      ih_bit_depth          = [8].pack('C')
      ih_color_type         = [6].pack('C')
      ih_compression_method = [0].pack('C')
      ih_filter_method      = [0].pack('C')
      ih_interlace_method   = [0].pack('C')
      string = ih_sign + ih_width + ih_height + ih_bit_depth + ih_color_type +
               ih_compression_method + ih_filter_method + ih_interlace_method
      ih_crc = [Zlib.crc32(string)].pack('N')
      return ih_size + string + ih_crc
    end
    def make_idat
      header  = "\x49\x44\x41\x54"
      data    = @mode == 0 ? make_bitmap_data0 : make_bitmap_data1
      data    = Zlib::Deflate.deflate(data, 8)
      crc     = [Zlib.crc32(header + data)].pack('N')
      size    = [data.length].pack('N')
      return size + header + data + crc
    end
    def make_bitmap_data0
      gz = Zlib::GzipWriter.open('png2.tmp')
      t_Fx = 0
      w = @bitmap.width
      h = @bitmap.height
      data = []
      for y in 0...h
        data.push(0)
        for x in 0...w
          t_Fx += 1
          if t_Fx % 10000 == 0
            Graphics.update
            if t_Fx % 100000 == 0
              s = data.pack('C*')
              gz.write(s)
              data.clear
            end
          end
          color = @bitmap.get_pixel(x, y)
          data.push(color.red, color.green, color.blue, color.alpha)
        end
      end
      s = data.pack('C*')
      gz.write(s)
      gz.close  
      data.clear
      gz = Zlib::GzipReader.open('png2.tmp')
      data = gz.read
      gz.close
      File.delete('png2.tmp')
      return data
    end
    def make_bitmap_data1
      w = @bitmap.width
      h = @bitmap.height
      data = []
      for y in 0...h
        data.push(0)
        for x in 0...w
          color = @bitmap.get_pixel(x, y)
          data.push(color.red, color.green, color.blue, color.alpha)
        end
      end
      return data.pack('C*')
    end
    def make_iend
      ie_size = [0].pack('N')
      ie_sign = 'IEND'
      ie_crc  = [Zlib.crc32(ie_sign)].pack('N')
      return ie_size + ie_sign + ie_crc
    end
  end
end

#=============================================================================
# ** Bitmap
#=============================================================================
class Bitmap
  def make_png(name = 'like', path = '', mode = 0)
    Zlib::Png_File.open('png.tmp')   { |gz| gz.make_png(self, mode) }
    Zlib::GzipReader.open('png.tmp') { |gz| $read = gz.read }
    f = File.open(path + name + '.png', 'wb')
    f.write($read)
    f.close
    File.delete('png.tmp')
  end
end

Credit


  • 66rpg.com, for the PNG Saver which allowed me to export the screenshots into a PNG file
  • modern algebra

Support


Please post in this topic at RMRK for support.

Known Compatibility Issues

No currently known compatibility issues. The script will be unable to take screenshots in any custom script that makes a scene that does not inherit the update method from Scene_Base however.
« Last Edit: April 11, 2010, 01:51:58 AM by modern algebra »

********
Resource Artist
Rep:
Level 94
\\\\\
Project of the Month winner for June 2009
this is badass and way more useful than you think. is there a way to take a screenshot of areas of the map that aren't within the window of VX? Specifically, can you make this puppy screenshot the entire map? If you dig through our guild game, you'll notice an XP version of what i'm talking about. We're using it to build our maps in XP, screenshot the whole map, use the image as a background image in VX and build the game on top of that from VX. Complex, but very cool effect. Curious if this could do the same, but for VX.

*
Rep:
Level 97
2014 Most Unsung Member2014 Best RPG Maker User - Engine2013 Best RPG Maker User (Scripting)2012 Best Member2012 Best RPG Maker User (Scripting)2012 Favorite Staff Member2012 Most Mature MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best RPG Maker User (Scripting)2011 Best Use of Avatar and Signature Space2010 Best RPG Maker User (Scripting)2010 Best Use Of Avatar And Signature Space
No, it can't take a screenshot of a whole map. Probably wouldn't be too hard to do though, if you want me to.

********
Furry Philosopher
Rep:
Level 94
Rawr?
2013 Best RPG Maker User (Creativity)Gold - GIAW 11 (Hard)Randomizer - GIAW 11Secret Santa 2013 ParticipantFor frequently finding and reporting spam and spam bots2012 Best RPG Maker User (Mapping)2012 Best RPG Maker User (Programming)Secret Santa 2012 ParticipantGold - GIAW 9Project of the Month winner for September 2008For taking a crack at the RMRK Wiki2011 Best RPG Maker User (Programming)2011 Best Veteran2011 Kindest Member2010 Best RPG Maker User (Story)2010 Best RPG Maker User (Technical)
Modern Algebra, I love you. This is, as grafikal stated, a badass script. :3




********
Resource Artist
Rep:
Level 94
\\\\\
Project of the Month winner for June 2009
No, it can't take a screenshot of a whole map. Probably wouldn't be too hard to do though, if you want me to.

That would be amazing. If you'd do that, i'd love you more. I don't know how i could do that though. Maybe i'll find a way to get roph to send you nudies.

*
Rep:
Level 97
2014 Most Unsung Member2014 Best RPG Maker User - Engine2013 Best RPG Maker User (Scripting)2012 Best Member2012 Best RPG Maker User (Scripting)2012 Favorite Staff Member2012 Most Mature MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best RPG Maker User (Scripting)2011 Best Use of Avatar and Signature Space2010 Best RPG Maker User (Scripting)2010 Best Use Of Avatar And Signature Space
Hm, looks like I won't have to: Omegas7 wrote a script to save the map as a picture, so you can send the nudies to him: http://www.rpgmakervx.net/index.php?showtopic=28578

I think he miscredits the PNG Saver script though, unless 66rpg.com is woratana.

********
Resource Artist
Rep:
Level 94
\\\\\
Project of the Month winner for June 2009
Whoa awesome. Maybe he updated the credits? It looks like Wortana is credited for the PNC Saver Script. Very cool :D

*
Rep:
Level 97
2014 Most Unsung Member2014 Best RPG Maker User - Engine2013 Best RPG Maker User (Scripting)2012 Best Member2012 Best RPG Maker User (Scripting)2012 Favorite Staff Member2012 Most Mature MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best RPG Maker User (Scripting)2011 Best Use of Avatar and Signature Space2010 Best RPG Maker User (Scripting)2010 Best Use Of Avatar And Signature Space
Yeah, the author of the PNG Saver is 66rpg.com I think, not Woratana.

********
Resource Artist
Rep:
Level 94
\\\\\
Project of the Month winner for June 2009
ooohhh ok, I thought you had meant the other way around. Well if I get around to use it, I'll have to delve in and check it out.

***
Rep:
Level 75
I have a question could you this with a save screen script that shows a picture to show where you are and if I can how would i do it

Spoiler for:



Spoiler for:
John 3:16: For God loved the world so much that he gave his one and only Son, so that everyone who believes in him will not perish but have eternal life

*
Rep: +0/-0Level 74
RMRK Junior
I can't change destination folder, it saves images to in project folder but I want it save them in graphics\pictures\. :C (sorry for my bad English)

*
Rep: +0/-0Level 74
RMRK Junior
Wow, tried Graphics/Pictures/SS rather than Graphics\Pictures\SS and it is working. Great script, thank you very much... XD

***
Rep:
Level 75
There is a edit button you are not supposed to double post.

Spoiler for:



Spoiler for:
John 3:16: For God loved the world so much that he gave his one and only Son, so that everyone who believes in him will not perish but have eternal life

**
Rep:
Level 71
RMRK Junior
There is a 'report' button too. You're not supposed to back-seat moderate!    ;D

<Scratches head> Hmmm, I always thought SephirothSpawn wrote the screenshot.dll ???