Submit Your Article


 
RPG Maker

Welcome Guest ( Log In | Register )


  Games Resources RPG Maker VX RPG Maker XP Scripts Tutorials Downloads

 
Reply to this topicStart new topic
> Quick Save Tool, Save the game with F4.
onidsouza
post Feb 12 2009, 02:27 PM
Post #1


image master of doom
Group Icon

Group: Revolutionary
Posts: 603
Type: None
RM Skill: Undisclosed




Quick Save Tool

Version 1.1
Author Onidsouza
Release Date 12/2/2008


Exclusive Script at RPG RPG Revolution


Introduction
This script lets you save the game with F4 key, and also have support to a switch (ON/OFF)

Features
-save the game in the map.
-choose the Fkey that you want

Script

[Show/Hide] Input Module


CODE

#===============================================================================
# Input Module
#===============================================================================
module Input
@keys = []
@pressed = []
Mouse_Left = 1
Mouse_Right = 2
Mouse_Middle = 4
Back = 8
Tab = 9
Enter = 13
Shift = 16
Ctrl = 17
Alt = 18
Esc = 0x1B
LT = 0x25
UPs = 0x26
RT = 0x27
DN = 0x28
Space = 32
Numberkeys = {}
Numberkeys[0] = 48
Numberkeys[1] = 49
Numberkeys[2] = 50
Numberkeys[3] = 51
Numberkeys[4] = 52
Numberkeys[5] = 53
Numberkeys[6] = 54
Numberkeys[7] = 55
Numberkeys[8] = 56
Numberkeys[9] = 57
Numberpad = {}
Numberpad[0] = 45
Numberpad[1] = 35
Numberpad[2] = 40
Numberpad[3] = 34
Numberpad[4] = 37
Numberpad[5] = 12
Numberpad[6] = 39
Numberpad[7] = 36
Numberpad[8] = 38
Numberpad[9] = 33
Letters = {}
Letters["A"] = 65
Letters["B"] = 66
Letters["C"] = 67
Letters["D"] = 68
Letters["E"] = 69
Letters["F"] = 70
Letters["G"] = 71
Letters["H"] = 72
Letters["I"] = 73
Letters["J"] = 74
Letters["K"] = 75
Letters["L"] = 76
Letters["M"] = 77
Letters["N"] = 78
Letters["O"] = 79
Letters["P"] = 80
Letters["Q"] = 81
Letters["R"] = 82
Letters["S"] = 83
Letters["T"] = 84
Letters["U"] = 85
Letters["V"] = 86
Letters["W"] = 87
Letters["X"] = 88
Letters["Y"] = 89
Letters["Z"] = 90
Fkeys = {}
Fkeys[1] = 112
Fkeys[2] = 113
Fkeys[3] = 114
Fkeys[4] = 115
Fkeys[5] = 116
Fkeys[6] = 117
Fkeys[7] = 118
Fkeys[8] = 119
Fkeys[9] = 120
Fkeys[10] = 121
Fkeys[11] = 122
Fkeys[12] = 123
Collon = 186
Equal = 187
Comma = 188
Underscore = 189
Dot = 190
Backslash = 191
Lb = 219
Rb = 221
Quote = 222

State = Win32API.new('user32','GetKeyState',['i'],'i')
Key = Win32API.new('user32','GetAsyncKeyState',['i'],'i')

USED_KEYS = [Mouse_Left, Mouse_Right]

module_function

def self.getstate(key)
return true unless State.call(key).between?(0, 1)
return false
end

def self.testkey(key)
Key.call(key) & 0x01 == 1
end

def self.update
@keys = []
@keys.push(Input::Mouse_Left) if self.testkey(Input::Mouse_Left)
@keys.push(Input::Mouse_Right) if self.testkey(Input::Mouse_Right)
@keys.push(Input::Back) if self.testkey(Input::Back)
@keys.push(Input::Tab) if self.testkey(Input::Tab)
@keys.push(Input::Enter) if self.testkey(Input::Enter)
@keys.push(Input::Shift) if self.testkey(Input::Shift)
@keys.push(Input::Ctrl) if self.testkey(Input::Ctrl)
@keys.push(Input::Alt) if self.testkey(Input::Alt)
@keys.push(Input::Esc) if self.testkey(Input::Esc)
for key in Input::Letters.values
@keys.push(key) if self.testkey(key)
end
for key in Input::Numberkeys.values
@keys.push(key) if self.testkey(key)
end
for key in Input::Numberpad.values
@keys.push(key) if self.testkey(key)
end
for key in Input::Fkeys.values
@keys.push(key) if self.testkey(key)
end
@keys.push(Input::Collon) if self.testkey(Input::Collon)
@keys.push(Input::Equal) if self.testkey(Input::Equal)
@keys.push(Input::Comma) if self.testkey(Input::Comma)
@keys.push(Input::Underscore) if self.testkey(Input::Underscore)
@keys.push(Input::Dot) if self.testkey(Input::Dot)
@keys.push(Input::Backslash) if self.testkey(Input::Backslash)
@keys.push(Input::Lb) if self.testkey(Input::Lb)
@keys.push(Input::Rb) if self.testkey(Input::Rb)
@keys.push(Input::Quote) if self.testkey(Input::Quote)
@keys.push(Input::Space) if self.testkey(Input::Space)
@keys.push(Input::LT) if self.testkey(Input::LT)
@keys.push(Input::UPs) if self.testkey(Input::UPs)
@keys.push(Input::RT) if self.testkey(Input::RT)
@keys.push(Input::DN) if self.testkey(Input::DN)
@pressed = []
@pressed.push(Input::Space) if self.getstate(Input::Space)
@pressed.push(Input::Mouse_Left) if self.getstate(Input::Mouse_Left)
@pressed.push(Input::Mouse_Right) if self.getstate(Input::Mouse_Right)
@pressed.push(Input::Back) if self.getstate(Input::Back)
@pressed.push(Input::Tab) if self.getstate(Input::Tab)
@pressed.push(Input::Enter) if self.getstate(Input::Enter)
@pressed.push(Input::Shift) if self.getstate(Input::Shift)
@pressed.push(Input::Ctrl) if self.getstate(Input::Ctrl)
@pressed.push(Input::Alt) if self.getstate(Input::Alt)
@pressed.push(Input::Esc) if self.getstate(Input::Esc)
@pressed.push(Input::LT) if self.getstate(Input::LT)
@pressed.push(Input::UPs) if self.getstate(Input::UPs)
@pressed.push(Input::RT) if self.getstate(Input::RT)
@pressed.push(Input::DN) if self.getstate(Input::DN)
for key in Input::Numberkeys.values
@pressed.push(key) if self.getstate(key)
end
for key in Input::Numberpad.values
@pressed.push(key) if self.getstate(key)
end
for key in Input::Letters.values
@pressed.push(key) if self.getstate(key)
end
for key in Input::Fkeys.values
@pressed.push(key) if self.getstate(key)
end
@pressed.push(Input::Collon) if self.getstate(Input::Collon)
@pressed.push(Input::Equal) if self.getstate(Input::Equal)
@pressed.push(Input::Comma) if self.getstate(Input::Comma)
@pressed.push(Input::Underscore) if self.getstate(Input::Underscore)
@pressed.push(Input::Dot) if self.getstate(Input::Dot)
@pressed.push(Input::Backslash) if self.getstate(Input::Backslash)
@pressed.push(Input::Lb) if self.getstate(Input::Lb)
@pressed.push(Input::Rb) if self.getstate(Input::Rb)
@pressed.push(Input::Quote) if self.getstate(Input::Quote)
end

def self.triggerd?(key)
return true if @keys.include?(key)
return false
end

def self.pressed?(key)
return true if @pressed.include?(key)
return false
end

def self.dir4
return 2 if self.pressed?(Input::DN)
return 4 if self.pressed?(Input::LT)
return 6 if self.pressed?(Input::RT)
return 8 if self.pressed?(Input::UPs)
return 0
end

def trigger?(key)
Inputed?(key,"trigger")
end

def repeat?(key)
Inputed?(key,"repeat")
end

def press?(key)
Inputed?(key,"press")
end

def Inputed?(key,type)
keys = []
case key
when Input::DOWN
keys.push(Input::DN)
when Input::UP
keys.push(Input::UPs)
when Input::LEFT
keys.push(Input::LT)
when Input::RIGHT
keys.push(Input::RT)
when Input::A
keys.push(Input::Shift)
when Input::B
keys.push(Input::Esc, Input::Numberpad[0], Input::Letters["X"])
when Input::C
keys.push(Input::Space, Input::Enter)
when Input::L
keys.push(Input::Letters["Q"])
when Input::R
keys.push(Input::Letters["W"])
when Input::X
keys.push(Input::Letters["A"])
when Input::Y
keys.push(Input::Letters["S"])
when Input::Z
keys.push(Input::Letters["D"])
when Input::F5
keys.push(Input::Fkeys[5])
when Input::F6
keys.push(Input::Fkeys[6])
when Input::F7
keys.push(Input::Fkeys[7])
when Input::F8
keys.push(Input::Fkeys[8])
when Input::F9
keys.push(Input::Fkeys[9])
when Input::CTRL
keys.push(Input::Ctrl)
when Input::ALT
keys.push(Input::Alt)
else
keys.push(key)
end
case type
when "trigger"
for k in keys
if Input.triggerd?(k)
return true
end
end
when "repeat"
for k in keys
if Input.triggerd?(k)
return true
end
end
when "press"
for k in keys
if self.pressed?(k)
return true
end
end
end
return false
end

def check(key)
Win32API.new("user32","GetAsyncKeyState",['i'],'i').call(key) & 0x01 == 1
end

def mouse_update
@used_i = []
for i in USED_KEYS
x = check(i)
if x == true
@used_i.push(i)
end
end
end

def self.name?(num)
return "MOUSE LEFT" if num==1
return "MOUSE RIGHT" if num==2
return "MOUSE MIDDLE" if num==4
return "MOUSE 4TH" if num==5
return "MOUSE 5TH" if num==6
return "BACKSPACE" if num==8
return "TAB" if num==9
return "RETURN" if num==13
return "SHIFT" if num==16
return "CTLR" if num==17
return "ALT" if num==18
return "CAPS LOCK" if num==20
return "ESCAPE" if num==27
return "SPACE" if num==32
return "PGUP" if num==33
return "PGDN" if num==34
return "END" if num==35
return "HOME" if num==36
return "LEFT" if num==37
return "UP" if num==38
return "RIGHT" if num==39
return "DOWN" if num==40
return "SNAPSHOT" if num==44
return "INSERT" if num==45
return "DELETE" if num==46
return "0" if num==48
return "1" if num==49
return "2" if num==50
return "3" if num==51
return "4" if num==52
return "5" if num==53
return "6" if num==54
return "7" if num==55
return "8" if num==56
return "9" if num==57
return "A" if num==65
return "B" if num==66
return "C" if num==67
return "D" if num==68
return "E" if num==69
return "F" if num==70
return "G" if num==71
return "H" if num==72
return "I" if num==73
return "J" if num==74
return "K" if num==75
return "L" if num==76
return "M" if num==77
return "N" if num==78
return "O" if num==79
return "P" if num==80
return "Q" if num==81
return "R" if num==82
return "S" if num==83
return "T" if num==84
return "U" if num==85
return "V" if num==86
return "W" if num==87
return "X" if num==88
return "Y" if num==89
return "Z" if num==90
return "LWIN" if num==91
return "RWIN" if num==92
return "APPS" if num==93
return "0" if num==96
return "1" if num==97
return "2" if num==98
return "3" if num==99
return "4" if num==100
return "5" if num==101
return "6" if num==102
return "7" if num==103
return "8" if num==104
return "9" if num==105
return "*" if num==106
return "+" if num==107
return "-" if num==109
return "." if num==110
return "/" if num==111
return "F1" if num==112
return "F2" if num==113
return "F3" if num==114
return "F4" if num==115
return "F5" if num==116
return "F6" if num==117
return "F7" if num==118
return "F8" if num==119
return "F9" if num==120
return "F10" if num==121
return "F11" if num==122
return "F12" if num==123
return "NUM LOCK" if num==144
return "SCROLL LOCK" if num==145
return "LEFT SHIFT" if num==160
return "RIGHT SHIFT" if num==161
return "LEFT CTRL" if num==162
return "RIGHT CTRL" if num==163
return "LEFT ALT" if num==164
return "RIGHT ALT" if num==165
return ";" if num==186
return "=" if num==187
return "," if num==188
return "_" if num==189
return "." if num==190
return "/" if num==191
return "`" if num==192
return "[" if num==219
return " \\ " if num==220
return "]" if num==221
return "'" if num==222
return "??? - " + "#{num}"
end

end






CODE

#==================================================================
# ** Quick Save Tool
# Script by Onidsouza
# Credit me anywhere.
#
# Save with F4.
# To configure look at line 12 and 19.
#==================================================================
module QST

#-----------------------------------------------------
# Choose a Switch.
# Quick Save only will works when this switch is on.
# Switch = [switch id]
#-----------------------------------------------------
Switch = 1

#--------------------------------------------------------------------
# Now choose a F key. Do not use F1, F2 or F9. They are already used.
#--------------------------------------------------------------------
Fkey = 4

end

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
# This class performs the map screen processing.
#==============================================================================

class Scene_Map < Scene_Base

alias onidsouza_update update

#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
onidsouza_update
unless $game_message.visible # Unless displaying a message
quick_save_update
end
end

#-------------------------------------------------------------------------
# * Quick Save Update
#-------------------------------------------------------------------------
def quick_save_update
call_save if Input.triggerd?(Input::Fkeys[QST::Fkey]) and ($game_switches[QST::Switch] == true)
end

end




Customization
Just look at the script

Compatibility
Almost Everything. But VX only.

Screenshot
Not needed

DEMO
Demo Here

Installation
Put in this order above main, instructions are in the script:

1 - Input Module

2 - Script

FAQ


Terms and Conditions
Just credit

Credits

Me, Rafidelis for ideas and Someone ho created Input Module.


__________________________
Gabba Gabba Hey! enjoy your life ^^
lol (by keet's brother)
some lol
more lol
even MORE lol
Serious Discussion
why all my lol's have Teh Parakeet involved?

me ^^

bacon

Spamming is always better with bacon
Go to the top of the page
 
+Quote Post
   
Rafidelis
post Feb 12 2009, 02:40 PM
Post #2


Level 5
Group Icon

Group: Member
Posts: 71
Type: Scripter
RM Skill: Beginner




uh ... cool.
But it is not necessary to input the script, it would be better if you change the F5 key,
as it could be accessed by Input.press? (Input:: F5)
anyway,very rox.


__________________________
Nothing Special Today!
Go to the top of the page
 
+Quote Post
   
onidsouza
post Feb 12 2009, 02:44 PM
Post #3


image master of doom
Group Icon

Group: Revolutionary
Posts: 603
Type: None
RM Skill: Undisclosed




QUOTE (Rafidelis @ Feb 12 2009, 08:40 PM) *
uh ... cool.
But it is not necessary to input the script, it would be better if you change the F5 key,
as it could be accessed by Input.press? (Input:: F5)
anyway,very rox.


Thanks but i prefer F4. You can change Line 44 (or 45 i dont know) to:

... Input.triggerd(Input::Fkeys[what you want.])...

happy.gif


__________________________
Gabba Gabba Hey! enjoy your life ^^
lol (by keet's brother)
some lol
more lol
even MORE lol
Serious Discussion
why all my lol's have Teh Parakeet involved?

me ^^

bacon

Spamming is always better with bacon
Go to the top of the page
 
+Quote Post
   
Rafidelis
post Feb 12 2009, 03:03 PM
Post #4


Level 5
Group Icon

Group: Member
Posts: 71
Type: Scripter
RM Skill: Beginner




Ok,^^
ah okay, more would be nice of you leave the option User can specify which key to use the module QST.


__________________________
Nothing Special Today!
Go to the top of the page
 
+Quote Post
   
onidsouza
post Feb 12 2009, 03:14 PM
Post #5


image master of doom
Group Icon

Group: Revolutionary
Posts: 603
Type: None
RM Skill: Undisclosed




QUOTE (Rafidelis @ Feb 12 2009, 09:03 PM) *
Ok,^^
ah okay, more would be nice of you leave the option User can specify which key to use the module QST.


Ok i will do that, tomorrow. I must sleep i have school tmorrow. Goodnight.


__________________________
Gabba Gabba Hey! enjoy your life ^^
lol (by keet's brother)
some lol
more lol
even MORE lol
Serious Discussion
why all my lol's have Teh Parakeet involved?

me ^^

bacon

Spamming is always better with bacon
Go to the top of the page
 
+Quote Post
   
onidsouza
post Feb 13 2009, 08:57 AM
Post #6


image master of doom
Group Icon

Group: Revolutionary
Posts: 603
Type: None
RM Skill: Undisclosed




Version 1.1 here. Thanks for Ideia Rafidelis.


__________________________
Gabba Gabba Hey! enjoy your life ^^
lol (by keet's brother)
some lol
more lol
even MORE lol
Serious Discussion
why all my lol's have Teh Parakeet involved?

me ^^

bacon

Spamming is always better with bacon
Go to the top of the page
 
+Quote Post
   

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

Lo-Fi Version Time is now: 24th May 2013 - 11:43 PM
RPG RPG Revolution is an Privacy Policy and Legal
eXTReMe Tracker