Bienvenue visiteur !
|
Statistiques
Liste des membres
Contact
Mentions légales
316 connectés actuellement
30742767 visiteurs depuis l'ouverture
3140 visiteurs aujourd'hui
Partenaires
Tous nos partenaires
Devenir partenaire
|
Messages postés par zou Nombre de messages référencés sur Oniromancie (non supprimés): 426 Aller à la page: 1 2 3 4 5 6 7 8 9 10 11
Posté dans Tutoriels - Article supprimé |
zou -
posté le 11/06/2012 à 09:33:09. (2197 messages postés) |
| Il y a moyen d'implémenter ça avec RM ?
|
Posté dans Forum - Screenshots de vos jeux ! |
zou -
posté le 03/06/2012 à 22:11:33. (2197 messages postés) |
| Il y a un bogue visuel... La plage parait verticale, surement à cause des bateaux.
|
Posté dans Forum - [Ace] Caëlondia |
zou -
posté le 31/05/2012 à 19:43:21. (2197 messages postés) |
| Citation: La taille de l'image, même en plein écran c'est petit |
(Je sais pas pourquoi tu t'acharnes à laisser une résolution de mouche)
|
Posté dans Scripts - Scroll Pictures |
zou -
posté le 30/05/2012 à 21:01:27. (2197 messages postés) |
| Attention, il y a une erreur dans le code à cause du smiley ligne 95
|
Posté dans Forum - [Scripts] Petites questions connes sur les SCRIPTS!! |
zou -
posté le 22/05/2012 à 18:46:09. (2197 messages postés) |
| MAIS sacre dieux, j'ai posté la réponse avant, lis les poste c'est mieux...
Je la repost quand même
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| class Game_Battler
#--------------------------------------------------------------------------
# * Change HP
# hp : new HP
#--------------------------------------------------------------------------
def hp=(hp)
@hp = [[hp, maxhp].min, 0].max
for i in 1...$data_states.size
if $data_states[i].zero_hp
if self.dead?
add_state(i) # ID des monstres
if self.is_a?(Game_Enemy) and [1,2,3,4].include?(id)
# ce que tu veux faire
end
else
remove_state(i)
end
end
end
end
end |
@s4*4=16suké
Tu as oublié le if self.is_a?(Game_Enemy)
|
Posté dans Forum - Questions idiotes sur RM [PAS Script] |
zou -
posté le 21/05/2012 à 19:14:35. (2197 messages postés) |
| Oui mais l'autre topic, on est 4 ou 5 à poster dessus, alors que là ça va être la débandade, que dis-je, la zizanie... Enfin on verra
|
Posté dans Forum - Questions idiotes sur RM [PAS Script] |
zou -
posté le 21/05/2012 à 19:05:30. (2197 messages postés) |
| Le problème avec ce genre de topic, c'est que les gens vont poster tout et n'importe quoi dessus pour "économiser" la création d'un topic
|
Posté dans Forum - [Scripts] Petites questions connes sur les SCRIPTS!! |
zou -
posté le 21/05/2012 à 18:57:12. (2197 messages postés) |
| @ simultruc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| class Game_Battler
#--------------------------------------------------------------------------
# * Change HP
# hp : new HP
#--------------------------------------------------------------------------
def hp=(hp)
@hp = [[hp, maxhp].min, 0].max
for i in 1...$data_states.size
if $data_states[i].zero_hp
if self.dead?
add_state(i) # ID des monstres
if self.is_a?(Game_Enemy) and [1,2,3,4].include?(id)
# ce que tu veux faire
end
else
remove_state(i)
end
end
end
end
end |
|
Posté dans Forum - Discussion Générale de making |
zou -
posté le 19/05/2012 à 13:35:13. (2197 messages postés) |
| A la base on a inventé le tileset pour économiser de la mémoire, car une image par map c'est plus lourds. Mais aujourd'hui les ordinateurs on suffisament de mémoire pour afficher des images de 10.000x10.000 pixels, donc tu fais comme tu veux, rien ne sert de débattre
|
Posté dans Forum - Screenshots de vos jeux ! |
zou -
posté le 19/05/2012 à 13:25:14. (2197 messages postés) |
| Les pieds des chevaux manquent de transition, c'est trop brutal.
Le fond est un peut trop petit, on dirait qu'il sont à 500m d'altitude.
Sinon j'adore
|
Posté dans Forum - [Scripts] Petites questions connes sur les SCRIPTS!! |
zou -
posté le 16/05/2012 à 20:15:56. (2197 messages postés) |
| Naféria : C'est pas possible, du moins de cette manière
Mack :
1
2
| bitmap.stretch_blt(dest_rect, src_bitmap, src_rect[, opacity])
|
Tu prends un morceau de bitmap avec un rect, puis tu le replaces dans un autre bitmap dans un rect, le bitmap extracté s'adapte aux dimensions du rect du bitmap de destination, donc zoom.
bitmap : bitmap receveur
dest_rect : rectangle du bitmap receveur
src_bitmap : bitmap à copier
src_rect : rectangle de src_bitmap à copier
opacity : facultatif
|
Posté dans Forum - [Scripts] Petites questions connes sur les SCRIPTS!! |
zou -
posté le 20/04/2012 à 17:44:22. (2197 messages postés) |
| Question 1 :
Ah, tu la veux à gauche ta flèche, tu fais self.ox = blabla
Question 2 :
J'avais fais ça pour mon A-RPG, pour moi il fonctionne très bien, après sur projet vièrge je ne garantis rien.
Il te renvoie un Move_Route (regarde la méthode make_move_route)
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
| class Node
attr_reader :parent, :x, :y
attr_accessor :good, :passage, :distance
def initialize(parent, x, y, distance = nil)
@parent, @x, @y = parent, x, y
@good = true
@passage = false
@distance = distance
end
def pos?(x, y)
return (@x == x and @y == y)
end
end
class Goal
attr_reader :x, :y
def initialize(x, y)
@x, @y = x, y
end
end
module Pathfinding
def self.start(event_id, x, y, zone = 0, skippable = false)
if event_id == 0
@event = $game_player
else
return unless $game_map.events[event_id]
@event = $game_map.events[event_id]
end
@goal = Goal.new(x, y)
@path = [Node.new(nil, @event.x, @event.y, self.distance(@goal))]
@move_route = RPG::MoveRoute.new
@move_route.repeat = false
@move_route.path = true
@move_route.x = x
@move_route.y = y
@move_route.zone = zone
@move_route.skippable = skippable
@zone = zone
self.make_path
end
def self.make_path
begin
@current_node = @path[0]
if @current_node.pos?(@goal.x, @goal.y) or
(self.passable?(@goal.x, @goal.y) == false and @zone == 0)
return
end
loop do
break if @current_node.pos?(@goal.x, @goal.y)
if @zone > 0
break if @current_node.distance <= @zone
end
adjacent_nodes = get_adjacent_nodes
if adjacent_nodes == [nil, nil, nil, nil]
# retour en arrièrre
@current_node.good = false
@current_node = @current_node.parent
else
adjacent_nodes.compact!
nearest = self.node_nearest(adjacent_nodes)
@path.push(nearest)
@current_node.passage = true
@current_node = nearest
end
end # fin loop
rescue
# passage introuvable
#print "passage introuvable"
return
end
self.erase_useless_node
end
def self.erase_useless_node
# Effacer des nodes mauvais
for i in 0 ... @path.size-1
if @path[i].good == false
@path[i] = nil
end
end
@path.compact!
# Effacer les nodes qui ralongent le chemin
for i in 0 ... @path.size-1
node = @path[i]
next if node == nil
nodes = self.find_adjacent_node(node.x, node.y)
nodes.compact!
for i in 0 ... nodes.size
if node.parent == nodes[i] or nodes[i].parent == node
nodes[i] = nil
end
end
nodes.compact!
node2 = node_nearest(nodes)
if node2
self.erase_to(node,node2)
end
end
@path.compact!
self.make_move_route
end
def self.make_move_route
@move_route.list = []
for i in 0 ... @path.size-1
node = @path[i]
next_node = @path[i+1]
sx = node.x - next_node.x
sy = node.y - next_node.y
if sx == 1 # bas
@move_route.list.push(RPG::MoveCommand.new(2))
elsif sx == -1 # gauche
@move_route.list.push(RPG::MoveCommand.new(3))
elsif sy == 1 # droite
@move_route.list.push(RPG::MoveCommand.new(4))
elsif sy == -1 # haut
@move_route.list.push(RPG::MoveCommand.new(1))
end
end
@move_route.list.delete_at(0)
@move_route.list.push(RPG::MoveCommand.new(0))
@event.force_move_route(@move_route)
end
def self.passable?(x, y)
return false if @event.passable?(x, y,0) == false
for node in @path
return false if node.pos?(x, y) and (node.good == false or node.passage == true)
end
return true
end
def self.distance(node)
return Math.hypot(node.x - @goal.x, node.y - @goal.y)
end
def self.node_at(x, y)
for node in @path
next unless node
return node if node.pos?(x, y)
end
return nil
end
def self.node_nearest(nodes)
nearest = nodes[0]
for node in nodes
if nearest.distance > node.distance
nearest = node
elsif nearest.distance == node.distance
if rand(2) == 0
nearest = node
end
end
end
return nearest
end
def self.erase_to(node,node2)
start = false
for i in 0 ... @path.size
if @path[i] == node
start = true
next
end
if @path[i] == node2
break
end
if start
@path[i] = nil
end
end
end
def self.get_adjacent_nodes
nodes = []
if self.passable?(@current_node.x+1, @current_node.y)
node = Node.new(@current_node, @current_node.x+1, @current_node.y)
node.distance = self.distance(node)
nodes.push(node)
else
nodes.push(nil)
end
if self.passable?(@current_node.x-1, @current_node.y)
node = Node.new(@current_node, @current_node.x-1, @current_node.y)
node.distance = self.distance(node)
nodes.push(node)
else
nodes.push(nil)
end
if self.passable?(@current_node.x, @current_node.y+1)
node = Node.new(@current_node, @current_node.x, @current_node.y+1)
node.distance = self.distance(node)
nodes.push(node)
else
nodes.push(nil)
end
if self.passable?(@current_node.x, @current_node.y-1)
node = Node.new(@current_node, @current_node.x, @current_node.y-1)
node.distance = self.distance(node)
nodes.push(node)
else
nodes.push(nil)
end
return nodes
end
def self.find_adjacent_node(x, y)
nodes = []
nodes.push(node_at(x+1,y))
nodes.push(node_at(x-1,y))
nodes.push(node_at(x,y+1))
nodes.push(node_at(x,y-1))
return nodes
end
end
module RPG
class MoveRoute
attr_accessor :repeat
attr_accessor :skippable
attr_accessor :wait
attr_accessor :path
attr_accessor :x
attr_accessor :y
attr_accessor :zone
def initialize
@repeat = true
@skippable = false
@wait = false
@path = nil
@x = nil
@y = nil
@zone = nil
end
end
end |
|
Posté dans Forum - [Scripts] Petites questions connes sur les SCRIPTS!! |
zou -
posté le 19/04/2012 à 21:43:33. (2197 messages postés) |
| Question 1
1
2
3
4
5
6
7
8
| def create_contents
contents.dispose
if contents_width > 0 && contents_height > 0
self.contents = Bitmap.new(contents_width, contents_height)
else
self.contents = Bitmap.new(1, 1)
end
end |
tu redéfinies cette méthode dans la classe de ta fenêtre
Question 2
C'est quoi qui est aléatoire, les cases passables ? Le point de départ ? car si c'est toutjours le même chemin ou il y en a 3-4 ou plus, tu précalcules le chemin.
|
Posté dans Forum - [Scripts] Petites questions connes sur les SCRIPTS!! |
zou -
posté le 19/04/2012 à 01:08:31. (2197 messages postés) |
| Tu veux le changer en live ?
Je sais pas si en refesant initialize avec les bons arguments ça marche, ou alors changer self.width = X. Sinon dispose la fenêtre et fait une nouvelle.
|
Posté dans Forum - [Scripts] Petites questions connes sur les SCRIPTS!! |
zou -
posté le 18/04/2012 à 20:42:10. (2197 messages postés) |
| Question 1 : Il faut que contents soit plus grand que le fenêtre-32
exemple :
1
2
3
| super(x, y, 100, 100)
...
self.contents = Bitmap.new(width-10, height-32) |
Là tu auras une fleche sur la droite, mais pas en bas.
Mais tu devras surement redéfinir le scrolling droite/gauche qui ne doit être mis par défaut.
Question 2 : Tu as deux possibilités, soit tu utilises une fonction rand (aléatoire) pour déterminer droite/gauche dans le cas où devant n'est pas passable. Regarde move_toward_player
Ou alors tu passes par le pathfinding
|
Posté dans Forum - [Scripts] Petites questions connes sur les SCRIPTS!! |
zou -
posté le 13/04/2012 à 12:31:00. (2197 messages postés) |
| Le plus simple : tu prends un carton de la couleur que tu veux, tu fais un trou de la taille de ton écran et tu le scotch autour
EDIT :
Comment faire pour que le curseur de Window_Selectable soit affiché par dessus le contenue de la fenêtre ? (sur XP)
|
Posté dans Forum - [Scripts] Petites questions connes sur les SCRIPTS!! |
zou -
posté le 26/03/2012 à 19:45:31. (2197 messages postés) |
|
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
| file = File.open("Save4.rxdata", "rb")
# Read character data for drawing save file
characters = Marshal.load(file)
# Read frame count for measuring play time
Graphics.frame_count = Marshal.load(file)
# Read each type of game object
$game_system = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_screen = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
# If magic number is different from when saving
# (if editing was added with editor)
if $game_system.magic_number != $data_system.magic_number
# Load map
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
# Refresh party members
$game_party.refresh
file.close
$scene = Scene_Map.new |
pas essayé
|
Posté dans Forum - [Scripts] Petites questions connes sur les SCRIPTS!! |
zou -
posté le 24/03/2012 à 13:51:40. (2197 messages postés) |
| Zou a dit: et puis faire des cercles de 1 de diamètre en plus va bien ramer et surtout tu as une grosse perte |
C'est exactement le principe du script de Avy, ma méthode consiste à jouer sur la symétrie d'un cercle en tracant des traits de gauche à droite. Donc aucune perte de qualité pour des performance accrues
|
Posté dans Forum - [Scripts] Petites questions connes sur les SCRIPTS!! |
zou -
posté le 24/03/2012 à 11:39:09. (2197 messages postés) |
| Oui parce que c'est bien differents. Ca ne se gère pas comme un cercle, et puis faire des cercles de 1 de diamètre en plus va bien ramer et surtout tu as une grosse perte. Je te fais ça
Voilà
1
2
3
4
5
6
7
8
9
10
11
12
| x = 320
y = 240
rayon = 100
angle = 0
pas = 1/rayon.to_f
color = Color.new(255,255,255)
while angle < Math::PI
sprite_x = x - Math.cos(angle)*rayon
sprite_y = y - Math.sin(angle)*rayon
@sprite.bitmap.fill_rect(sprite_x, sprite_y, 1, 2*(y - sprite_y), color)
angle += pas
end |
|
Posté dans Forum - [Scripts] Petites questions connes sur les SCRIPTS!! |
zou -
posté le 24/03/2012 à 11:32:25. (2197 messages postés) |
| Non ça va pas ramer si tu updates pas à chaque frame. Ensuite ça dépend du diamètre du cercle. Mais vu ton screen, tu veux dessiner des cercles ou des disques ?
Avy : Je vois pas pourquoi tu ne gardes pas l'angle en radian au lieu de passer en radian à chaque fois. C'est sûr que ça risque de ramer.
|
Posté dans Forum - [Scripts] Petites questions connes sur les SCRIPTS!! |
zou -
posté le 23/03/2012 à 23:03:21. (2197 messages postés) |
| Pour le demi cercle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| class Game_Character
def vision(event_id, distance)
event = (event_id == 0 ? $game_player : $game_map.events[event_id])
sx = @x - event.x
sy = @y - event.y
return false if @direction == 2 and sy >= 0
return false if @direction == 4 and sx <= 0
return false if @direction == 6 and sx >= 0
return false if @direction == 8 and sy <= 0
if Math.hypot(sx, sy) <= distance
return true
end
return false
end
end |
et pour dessiner le cercle
1
2
3
4
5
6
7
8
9
10
11
| x = 320
y = 240
rayon = 200
angle = 0
pas = 1/rayon.to_f
while angle < 2*Math::PI
sprite_x = x + Math.cos(angle)*rayon
sprite_y = y + Math.sin(angle)*rayon
@sprite.bitmap.set_pixel(sprite_x, sprite_y, Color.new(255,255,255))
angle += pas
end |
;)
|
Posté dans Forum - Ragnarok Online |
zou -
posté le 09/02/2012 à 19:32:03. (2197 messages postés) |
| Trop de souvenirs , j'ai sacrifié 2 ans de ma vie sur RO sur Oxygène.
|
Aller à la page: 1 2 3 4 5 6 7 8 9 10 11
|
|
|