Aller à la page 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
Reprise du message précédent:
Tata Monos -
posté le 13/04/2012 à 09:10:08 (28 messages postés)
| Compte Non utilisé | Comme avec le ruby nous pouvons tout faire ça c'est super puissant et tout, il y a pas moyen avec un script ruby de communiqué avec la carte graphique pour lui dire : Fout moi ça en cette couleur quand tu me lance en pleine gueule heu écran ?
Aller les copains méga bon scripteur de la mort qui tue, vous allez bien réussir à me pondre ça quand même vu que vous êtes les meilleurs des meilleurs ! La crème de la crème. Un zibou au 1er qui y arrive !
| Suite du sujet:
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)
|
Mélodie -
posté le 15/04/2012 à 19:39:49 (147 messages postés)
| Les mecs, c'est comme les crevettes... Rien dans la tête, tout dans la queue!! :D | Support : RMXP
Question 1 : [Résolu]
Bonjour, apprêt un long moment d'absence me re voila avec une question conne xD.
J'aimerai savoir comment faire pour inversé un nombre inférieur à 0.
Par exemple: @s contient -50 et je voudrai l'inversé en 50 pour qu'il ne soi pas inférieur à 0.
Merci d’avance.
|
Si tu as un ennemi assieds-toi au bord du fleuve, tu verras passer son cadavre un jour ou l'autre... (proverbe du sage moine assassin). "Mes pourquoi suis-je ici ?, est ce ma vue qui se déforme ?, Ou je suis au paradis ?" Ma galerie/Mes script. Connecté que le week end et parfois dans la semaine. |
Tata Monos -
posté le 15/04/2012 à 19:45:25 (28 messages postés)
| Compte Non utilisé | * -1 ?
|
S4suk3 -
posté le 15/04/2012 à 19:54:54 (555 messages postés)
| - | ton_nombre.abs
|
Mélodie -
posté le 15/04/2012 à 20:08:17 (147 messages postés)
| Les mecs, c'est comme les crevettes... Rien dans la tête, tout dans la queue!! :D | Moi qui cherché depuis un moment comment faire, et finalement c'est tout bête...
Merci pour l'aide, les 2 code fonctionne.
|
Si tu as un ennemi assieds-toi au bord du fleuve, tu verras passer son cadavre un jour ou l'autre... (proverbe du sage moine assassin). "Mes pourquoi suis-je ici ?, est ce ma vue qui se déforme ?, Ou je suis au paradis ?" Ma galerie/Mes script. Connecté que le week end et parfois dans la semaine. |
Tasslehoff -
posté le 15/04/2012 à 20:11:55 (5274 messages postés)
| Disciple de Pythagolf | Avec .abs t'as même pas besoin de vérifier si ton nombre est négatif, dans tous les cas ça le rend positif. Alors qu'avec *-1 faut faire gaffe parce ça le rendra négatif dans le cas où il est positif.
|
~~ |
Ephy -
posté le 16/04/2012 à 22:24:26 (30100 messages postés)
- | [BIG SHOT] | Support: VX
Question:
Plutôt que de perdre du temps à chercher, je demande ici:
Dans les scripts de base de VX, j'aimerais savoir où est défini le taux de critique des héros et si on peut le rendre égal à un truc du genre:
1
| valeur de base + niveau du héros/nombre |
Et tant qu'a y être, où est défini le bonus de critique conféré par l'option "taux de critique accru" des options sur la page "persos" de la BDD et si on peut mettre un truc du genre:
1
| taux de critique de base du perso*nombre |
Merci d'avance.
(alors oui je pourrais chercher dans tout le fatras de script mais ce serait une perte considérable de temps pour quelque chose d'aussi simple et futile).
|
Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14 |
zou -
posté le 16/04/2012 à 22:48:00 (2197 messages postés)
| | regarde ligne 650 de Game_Battler
|
Ephy -
posté le 16/04/2012 à 23:37:40 (30100 messages postés)
- | [BIG SHOT] | Je ne parle pas de où est déterminé si le coup critique est porté ou non mais de là où est définie la valeur de critique de base des persos (la valeur de "attacker.cri" je pense) qui est de 5 par défaut et que je veux pouvoir modifier.
|
Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14 |
zou -
posté le 16/04/2012 à 23:40:41 (2197 messages postés)
| | alors jette un oeil ligne 281 de game_Actor
|
Ephy -
posté le 17/04/2012 à 19:29:51 (30100 messages postés)
- | [BIG SHOT] | Ah merci Zou. Mais du coup, comment faire pour mettre ceci comme valeur de n (en fait plus précisément comment récupérer la valeur du niveau du héros):
1
| nombre + niveau du héros/nombre |
J'ai tenté de mettre un "actor.level" mais comme je m'en doutais ça marche pas
|
Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14 |
S4suk3 -
posté le 17/04/2012 à 19:55:35 (555 messages postés)
| - | @level
|
S4suk3 -
posté le 18/04/2012 à 00:34:36 (555 messages postés)
| - | Il faut bien comprendre que quand tu fais actor.level, actor doit correspondre a une instance de Game_Actor. Or ici on est dans la définition d'une classe, donc un comportemment générique aux instances.
|
Mack -
posté le 18/04/2012 à 20:13:23 (2310 messages postés)
- - | | Salut !
J'ai deux nouvelles questions, même si celle d'avant reste toujours d'actualités.
Support : RMVX Ace
Question Jesaispluscombien + 1:
Est il possible d'afficher les petites flèches qui disent qu'il reste des trucs en dehors de la fenêtre.
( Celles qui se trouvent dans le Fichier du Windowskin. )
Je sais que c'est pas super clair, mais je sais pas trop comment expliquer c'que je veut faire en faite ...
En gros, je voudrais arriver à ça :
Question Jesaispluscombien + 2:
Système de déplacement d'un sprite améliorée.
Voila, donc en faite, j'suis en train d'essayer de faire qu'un sprite puisse se déplacer comme un character.
C'est à dire que le sprite se déplace dans 4 directions, et selon des cases de 32 Pixels.
J'ai donc fait ça :
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
| def moveto(x,y)
wait_frame = 0
loop do
wait_frame += 1
Graphics.update
SceneManager.scene.spriteset.update
if @x < x
@x += 1
@direction = 6
elsif @x > x
@x -= 1
@direction = 4
end
if @y < y
@y += 1
@direction = 2
elsif @y > y
@y -= 1
@direction = 8
end
if x == @x and
y == @y
break
end
end
end |
Mais je rencontre deux gros problème :
Premièrement le déplacement est beaucoup trop brute :
Le sprite se déplace cases par cases, et pas progressivement.
C'est réglé.
Second problème, j'aimerais que le sprite soit un peu plus intéligent, et que si la map est pas passable, le sprite ne passe pas par cette case.
( Le sprite est afficher sur une map, donc j'utiliserais les passabilitées des map. )
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
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
|
Mack -
posté le 18/04/2012 à 20:51:46 (2310 messages postés)
- - | | Question 1 :
Et comment faire si le bitmap à déjà était définit ?
Faut que je le redéfinisse obligatoirement ?
- Le scrolling Gauche/Droite c'est déjà fait ^^ )
Question 2 :
Okay, j'vais essayer de voir avec move_toward_player.
Sinon, pour le pathfinding, j'y avais pensé, mais j'me demander si y avais pas mieux.
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
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.
|
Mack -
posté le 19/04/2012 à 10:16:16 (2310 messages postés)
- - | | Question 1 :
Ouais j'voudrais faire comme dans FF10 :
Première partie de la fenêtre on a les commandes normales, et si on appuis sur Gauche, on récupère d'autres commandes.
En utilisant la def initialize c'pas possible.
Enfin, j'y arrive pas quoi.
Par contre, en redéfinissant le Contents, j'ai réussis à afficher une image sur la droite. Mais aucune idée de comment l'afficher à gauche ...
Question 2 :
Pour le Move_Toward_Player, ça arrangeras pas mes affaires ...
Si entre la case ciblée et l'évent il y a un obstacle, bah l'évent restera bloqué.
J'vais donc essayer de voir avec des pathfindings ... Même si le seul que j'ai trouvé avait l'air bien chiant à décortiquer ...
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
S4suk3 -
posté le 19/04/2012 à 11:43:27 (555 messages postés)
| - | Pour faire un pathfinding tu dois te baser sur un algorithme.
Dans le cas des cibles mouvantes il y a les recherches multi Agent ou alors plus simplement A* qui est relativement facile à implémenter.
http://www.games-creators.org/wiki/Introduction_au_pathfinding
http://the-lambda-church.org/articles/pathfinding/
http://khayyam.developpez.com/articles/algo/astar/
L'algorithme est assez facile à écrire mais relativement gourmand (sur des grandes maps avec des grands trajets ça peut poser problème).
Sinon, tu peux utiliser la spéculation réductrice qui est simplification de A* et qui agit au "case par case".
Bonne chance.
|
Mack -
posté le 19/04/2012 à 21:02:30 (2310 messages postés)
- - | | Question 2 :
Moi c'est juste sur une map en Maximum 20*15, avec une destination fixe.
Donc j'devrais pas trop galérer, si ? x)
J'vais essayer de voir si je peux le faire avec les liens que tu ma refiler .
Question 1 :
J'crois qu'il faudrait que je décale mon bitmap vers la gauche ...
Mais j'ai beau regarder la Doc', j'vois pas comment faire ...
Et sinon, personnes aurait la Doc de Ace en anglais/Français ?
Non, parce que du coup, j'doit prendre celle de XP/VX ...
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
S4suk3 -
posté le 19/04/2012 à 21:42:58 (555 messages postés)
| - | Non ça devrait aller.
Les pathfinding sont relativement simple à implémenter, tu ne devrais pas avoir de soucis.
|
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.
|
Mack -
posté le 19/04/2012 à 21:58:35 (2310 messages postés)
- - | | zou a dit:
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écalculer le chemin.
|
Question 1 :
Ouais ouais, j'ai réussis ça ^^.
Mais je comprend pas comment afficher la flèche à gauche, car si je modifie contents_width, bah, la flèche va être à droite ...
Question 2 :
Pour faire simple, mes sprites commencent aléatoirement sur l'écran. L'écran est divisé en Tile avec la Classe Game_Map.
Les cases non passable sont différentes pour chaque map, puisque elles dépendent de si le tile est passable ou pas dans la BDD.
Et la destination est entièrement aléatoire :
Le joueur choisit où le personnage va aller. ( Ça dépend toujours de la passabilité de la map. )
J'ai beau lire les tuto de Sas', j'comprend pas vraiment comment faire ...
J'ai donc taper Pathfinding A* Ruby, et je suis tomber sur un post de Samarium :
Samarium a dit: Bonjour,
Je ne vois pas trop ce que tu veux faire mais j'ai créé (pour un jeu de stratégie) un pathfinding made in Samarium ^^. Je pense qu'il est optimisé :
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
| # Pathfinding par Samarium
# Méthode "pathfinding"
# xfinal : position X de l'arrivé
# yfinal : position Y de l'arrivé
# Retourne : un tableau de direction (2,4,6,8)
#####
def pathfinding(xfinal, yfinal)
x = @x
y = @y
@list_ouvert = {[x, y] => [nil, nil, nil]}
calcul_distance_path(xfinal, yfinal, x, y)
list_ferme = {[x, y] => [0, @dis_final, @somme_dis, 0]}
@dir = []
id = 0
while not (x == xfinal and y == yfinal)
# Si les positions ne sont pas valides.
return [] if y == nil or x == nil
id += 1
for i in 0...4
case i
when 0
new_y = y-1
new_x = x
when 1
new_y = y
new_x = x+1
when 2
new_y = y+1
new_x = x
when 3
new_y = y
new_x = x-1
end
if record_pos_path?([new_x, new_y])
calcul_distance_path(xfinal, yfinal, new_x, new_y)
@list_ouvert[[new_x, new_y]] = [@dis_ini, @dis_final, @somme_dis, id]
end
end
@list_ouvert[[x, y]] = [nil, nil, nil]
min_dis_final = min_somme_dis = 200
new_value = new_pos = []
@list_ouvert.each do |key, value|
if value[2] != nil
if value[2] <= min_somme_dis and value[1] <= min_dis_final
min_dis_final = value[1]
min_somme_dis = value[2]
new_value = value
new_pos = key
end
end
end
list_ferme[new_pos] = new_value
x = new_pos[0]
y = new_pos[1]
end
min_dis_ini = 200
while min_dis_ini != 0
min_dis_ini = min_somme_dis = min_dis_id = 200
return [] if y == nil or x == nil
for i in 0...4
case i
when 0
new_y = y-1
new_x = x
dir = 8
when 1
new_y = y
new_x = x+1
dir = 4
when 2
new_y = y+1
new_x = x
dir = 2
when 3
new_y = y
new_x = x-1
dir = 6
end # case
value = list_ferme[[new_x, new_y]]
list_ferme[[x, y]] = nil
if value != nil
if value[3] < min_dis_id
min_dis_id = value[3]
min_dis_ini = value[0]
n_dir = dir
n_new_x = new_x
n_new_y = new_y
end # if
end # if
end # for
x = n_new_x
y = n_new_y
@dir.push(n_dir)
end # while
return @dir.reverse!
end # def
def calcul_distance_path(xfinal, yfinal, x, y)
@dis_final = (xfinal - x).abs + (yfinal - y).abs
@dis_ini = (@x - x).abs + (@y - y).abs
@somme_dis = @dis_final + @dis_ini
end
def record_pos_path?(tab_xy)
return true if @tab_move.include?(tab_xy) and not @list_ouvert.include?(tab_xy)
return false
end |
Attention : ce n'est pas une classe mais des méthodes. Ils font donc les rajouter dans la classe adéquate.
Lis le commentaire à l'entête du script. La méthode "pathfinding" retourne un tableau de direction. Il suffira de lire en boucle le tableau pour faire déplacer un personnage
Exemple : [2, 6, 2, 2]
signifie : Haut, Droite, Haut, Haut
Ne pas oublier d'inialiser les variables @x et @y (positions de départ d'un personnage) dans une méthode (inialize par exemple)
Normalement je n'ai rien oublier mais puisque je le tire d'un système qu'il y a d'aures scripts, il se peut que j'ai oublié une méthode, variables ..etc. sinon, il marche très bien et optimisé. |
Il marche donc assez bien, le personnage se déplace très bien jusqu'à la destination sans aucun soucis.
Néanmoins, il ne gère pas la passabilité, et je comprend pas comment faire ...
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
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 |
| Aller à la page 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 73Index du forum > Entraide > [Scripts] Petites questions connes sur les SCRIPTS!!
|