1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
| +++++++++++++++++++++++++++++++++++++++++++++++
=begin
Move During Messages v1.1S
by PK8
Created: 5/22/2012
Modified: 5/25/2012
------------------------------------------------------------------------------
¦ Author's Notes
This script was originally made as an event system around the
18th of October, 2005, purely out of accident. I was attempting to make a
very quick Pacman-esque demo (I forgot why), and came across player
characters moving around via move route while a message window was visible
during a test play completely by accident.
A few modifications to the event system and 7 years later, that system is
now a script.
------------------------------------------------------------------------------
¦ Introduction
Move During Messages allows players to... well, move during messages.
------------------------------------------------------------------------------
¦ Features
o Players can move during messages.
o Creators can set which maps enables/disables it.
o Creators can set how far the player can move while a message is being
displayed.
o Set multiple maps at once using ranges. (New to v1.1S)
------------------------------------------------------------------------------
¦ Changelog
o v1E (10/18/2005): Event System initially released.
o v2E (11/14/2008): v2 released.
o v1S (05/22/2012): It's now a script.
o v1.1S (05/25/2012): Now users can set ranges, streamlining the process
of setting which maps (dis)allows moving during
messages.
------------------------------------------------------------------------------
¦ Methods Aliased
Game_Player.update
=end
#==============================================================================
# ** Configuration
#==============================================================================
module PK8
class Dialogue_Move
#--------------------------------------------------------------------------
# * General Settings
#--------------------------------------------------------------------------
Switch = true # If TRUE, script is on. If FALSE, script is off.
#--------------------------------------------------------------------------
# * Map Settings
# Integers, ranges, and nil values are allowed to be used in the array.
#--------------------------------------------------------------------------
Map_IDs = [980..999]
Map_IDs_Flag = true # If TRUE, occurs in all maps but those specified.
# If FALSE, occurs in specified maps.
#--------------------------------------------------------------------------
# * Radius Settings
#--------------------------------------------------------------------------
Radius_Flag = true # If TRUE, players get a limit on how far they can move
# while messages are visible. If FALSE, doesn't apply.
Radius_X = 3 # Set how far players can move horizontally. (In tiles)
Radius_Y = 3 # Set how far players can move vertically. (In tiles)
#--------------------------------------------------------------------------
# * Do Not Modify
#--------------------------------------------------------------------------
if Map_IDs.include?(nil)
load_data("Data/Mapinfos.rxdata").keys.each { |item| Map_IDs.push(item) }
Map_IDs.delete(nil)
end
Map_IDs.each { |item|
if item.is_a?(Range)
for i in item; Map_IDs.push(i); end
Map_IDs.delete(item)
elsif item.is_a?(Array)
item.each { | i |
if i.is_a?(Integer); Map_IDs.push[i]
elsif i.is_a?(Range); for i2 in i; Map_IDs.push[i2]; end
end
}
Map_IDs.delete(item)
end
}
Map_IDs.compact
end
end
#==============================================================================
# ** Game_Player
#------------------------------------------------------------------------------
# This class handles the player. Its functions include event starting
# determinants and map scrolling. Refer to "$game_player" for the one
# instance of this class.
#==============================================================================
class Game_Player
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias_method(:pk8_dialoguemove_update, :update)
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
pk8_dialoguemove_update
if PK8::Dialogue_Move::Switch == true
if ((PK8::Dialogue_Move::Map_IDs.include?($game_map.map_id) and
PK8::Dialogue_Move::Map_IDs_Flag == false) or
(!PK8::Dialogue_Move::Map_IDs.include?($game_map.map_id) and
PK8::Dialogue_Move::Map_IDs_Flag == true))
@mdm_position = [@x, @y] if @mdm_position == nil
if $game_temp.message_window_showing and !moving?
case Input.dir4
when 2
if PK8::Dialogue_Move::Radius_Flag == true
move_down if @y < @mdm_position[1] + PK8::Dialogue_Move::Radius_Y
else
move_down
end
when 4
if PK8::Dialogue_Move::Radius_Flag == true
move_left if @x > @mdm_position[0] - PK8::Dialogue_Move::Radius_X
else
move_left
end
when 6
if PK8::Dialogue_Move::Radius_Flag == true
move_right if @x < @mdm_position[0] + PK8::Dialogue_Move::Radius_X
else
move_right
end
when 8
if PK8::Dialogue_Move::Radius_Flag == true
move_up if @y > @mdm_position[1] - PK8::Dialogue_Move::Radius_Y
else
move_up
end
end
elsif !$game_temp.message_window_showing
@mdm_position = nil if @mdm_position != nil
end
end
end
end
end |