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:
Tasslehoff -
posté le 04/11/2011 à 22:53:19 (5274 messages postés)
| Disciple de Pythagolf | Citation: Alors apparemment, ça fonctionne ( Aucune erreur ), mais j'ai pas l'impression que ça donne des résultats correctes ... |
Ah oui en verifiant mon code j'ai vu que j'ai fait un peu de la zutre.
1
2
3
4
5
6
7
8
| tableau = [1,50,20,35]
z = []
tableau.each_index{|index|
tableau[index].times do
z.push(index+1)
end
}
final = z[rand(z.size)] |
Là c'est mieux. (Normalement )
|
~~ | Suite du sujet:
Zou -
posté le 04/11/2011 à 23:13:25 (2197 messages postés)
| |
1
| tableau.each_index{|index| |
c'est comme
1
| for index in 0 ... tableau.size |
?
|
Tasslehoff -
posté le 04/11/2011 à 23:19:03 (5274 messages postés)
| Disciple de Pythagolf | Ouep.
|
~~ |
Zou -
posté le 04/11/2011 à 23:23:55 (2197 messages postés)
| | ok.
En effet le script de tass est bien plus court, simple et .. mieux
|
yop -
posté le 06/11/2011 à 16:24:52 (296 messages postés)
| | Citation: Je me demandais également quelles sont les valeurs de base de x et de y ? |
Si elles en ont
Sinon merci encore Mack et Youri
Dommage que ça ne soit pas compatible avec vx car mon 2ème mini-jeu utilise celui-ci...
|
"Thousands of years ago the old empire had enforced the Pax Morporkia, which had said to the world: 'Do not fight or we will kill you.' The Pax had arisen again, but this time it said: 'If you fight, we'll call in your mortgages. And incidentally, that's my pike you're pointing at me. I paid for that shield you're holding. And take my helmet off when you speak to me, you horrible little debtor.'" ~Terry Pratchett, Feet of Clay |
Berka -
posté le 06/11/2011 à 18:33:35 (493 messages postés)
| planchant sur un script | Encore plus court:
1
2
3
4
5
6
7
8
| tableau = [1,50,20,35]
z = []
tableau.each_with_index{|v, i|
v.times{
z << i + 1
}
}
final = z[rand(z.size)] |
Edit:
Berka. (je suis distrait, désolé)
|
Twitter: Pensées politiques et juridiques. Réflexions informatiques |
Tasslehoff -
posté le 06/11/2011 à 19:08:48 (5274 messages postés)
| Disciple de Pythagolf | Ah, je connaissais pas each_with_index, j'ai dû le louper dans la doc ruby.
Ah et au passage t'as oublié de signer ton message.
|
~~ |
RitoJS -
posté le 12/11/2011 à 14:13:26 (801 messages postés)
| FalcomFan | Bonjours, ben voilà je voudrais faire en sorte que dés qu'on sélectionne l'option "continuer partie" et "sauvegarder", on entende une musique à l'écran de sauvegarde et de chargement.
Donc je voudrais savoir si c'est possible et si on doit faire un script spécialement pour ( surtout que je sais pas scripter).
PS: j'utilise VX.
Voilà, merci d'avance
|
Sauverez-vous le monde à temps ?. Moe Shit | Quartier Général |
| Bouc revenant (mais sans revenus) | Bonjour...ou bonsoir pour ceux qui veulent.
Je vois pas mal d'interface Tatenkiennes (en particulier Anglaises) qui virent le windowskin des actors et qui utilisent des ressources externes pour faire des barres de MP/HP personnalisés.
On se retrouve avec un HUD dans ce genre:
J'aimerai savoir où faut aller pour virer ce windowskin et utiliser des images pour créer des jauges et des fonts plus persos!
Quelques indications sur comment faire ne seraient pas de trop non plus (pas vraiment confiance dans mon scripting...)
Merci de votre attention.
|
Mack -
posté le 04/12/2011 à 11:18:18 (2310 messages postés)
- - | | Question :
Comment donner un Interpreter au héros ?
En gros, pour mon A-RPG, j'ai fait que les status soit gérer par Event en PP.
Donc, j'ai commencer par faire les ennemis, sur ce point aucun soucis.
Mais, maintenant, j'ai commencer à réfléchir sur comment faire pour le héros sans devoir tout refaire ...
Donc, voila un exemple de statuts :
L'idée, ça serais d'appeler l'évent commun depuis Game_Player, puis de faire que "Cet évent" retourne $game_player.
Y a un moyen de le refaire, ou faudrait que je double tout les statuts ?
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
zou -
posté le 04/12/2011 à 14:25:26 (2197 messages postés)
| | Déjà, le héros n'a pas d'interpreter donc pas d’interrupteurs locaux.
Après en bidouillant tu peux lui en donner un facilement.
Ensuite ton $game_map.events foire quand tu le fait avec le héros, ce que tu peux faire c'est un truc comme ça :
1
2
3
4
5
6
7
| def event(event_id)
if event_id == 0
return $game_player
else
return $game_map.events[event_id]
end
end |
et tu mes dans t'as condition
if event(@event_id) == bkdsfksbkdb
|
Mack -
posté le 04/12/2011 à 15:02:22 (2310 messages postés)
- - | | Pour ça j'ferais juste un :
1
| if event.is_a?(Game_Player) |
C'est surtout pour les commandes d'évents que je demandais ...
Nan, parce que sinon, suffit de mettre une condition tout en haut, et suivant si elle est vrai j'fais pour le héros ou pour l'ennemi, mais bon ...
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
cortez -
posté le 06/12/2011 à 09:44:43 (524 messages postés)
| | Support : RMXP
Question 1 :
Comment ajouter un ID de terrain à un évenement basé sur un charset ?
(je sais que les events avec une apparence tileset on l'ID de terrain de la case choisie dans leur apparence).
L'idéal c'est un petit script dans la BDD et une ligne en "inserer script".
Merci d'avance. (une place dans les crédits de Portal XP)
|
Mack -
posté le 09/12/2011 à 15:13:08 (2310 messages postés)
- - | | C'est à dire ?
Donner à un évent au autre terrain tag ?
( Genre, normalement il devrait avoir un 0, et tu lui met un 1 avec un truc du genre :
1
| change_passability(x,y,id) |
? )
Sinon, ma question est toujours d'actualité hein x).
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
cortez -
posté le 09/12/2011 à 18:48:19 (524 messages postés)
| | Citation: C'est à dire ?
Donner à un évent au autre terrain tag ?
( Genre, normalement il devrait avoir un 0, et tu lui met un 1 avec un truc du genre :
1
| change_passability(x,y,id) |
|
C'est ça je veut attribuer un tag terrain à un évent.
Attention si c'est possible en donnant juste l'ID de l'évent.
|
Tata Monos -
posté le 10/12/2011 à 13:29:25 (28 messages postés)
| Compte Non utilisé | Je post la future demande ici pour en parler un peu.
Ace va sortir et en théorie j'aimerais qu'un seul script. Ajouter les personnages surla map; Sur vx on avait tenté un truc avec Mack mais personnellement ça c'est vite transformé en usine à gaz avec les options que je voulais.
J'ai réfléchie a ça.
Citation: Cahier des charges pour la création d'un script de combat pour Rpg Maker Vxace.
Divers
Garde l’ensemble du système de base.
-Ajout des personnages joueurs visibles sur à l'écran.
Utiliser le charset du personnage.
Possibilité de positionner les 4 personnages par coordonner facilement.
(Genre=
Xperso1 => 320
Yperso1=> 120
Xperso2 => 320
Yperso2=> 180
ect. Ou un truc facile que je peux changer facilement.
Au moment des choix des actions, le personnage s'avance, choix de l'action du personne, et il est recule (sans changer de sens). On passe au 2em/3em/4em.
Les monstres utilisent l’animation qui sont visibles à l'écran. (Sur le ou les personnages)
Quand le héros agis, un petit déplacement sur la gauche comme avant ; Pas de déplacement vers l'ennemie. Ensuite application de animation.
Statuts
J'utilise des planches individuel pour les personnages.
Donc pour représenter graphique d'un état (poison, mort ect) je peux me servir d'un tag dans un fichier graphique qui correspond à un tag dans les notes.
Exemple si dans les notes du statuts poison est [poison]
En combat il remplacera le charset du perso par un autre avec [poison] à la fin.
Exemple :
$heros1.png
C'est le charset du 1er héros
$heros1[poison].png
c'est le nouveau charset utilisé si il est sous le coup du poison.
(Utilisez la priorité d'affichage pour savoir qu'elle graphismes changer en cas de multie statue tagé) |
"Le système" est t'il réalisable simplement par vous.
Cela faciliterais pas mal de chose d'utilisé les notes / Statuts par apport au nom des tags des graphismes.
|
Mack -
posté le 10/12/2011 à 20:36:24 (2310 messages postés)
- - | | Cortez :
Essaie ç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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| class Interpreter
def change_terrain_tag(id,x,y,terrain_id)
if id == nil
z = 0
loop do
i = $game_map.new_terrain[z]
if i == []
id = z
break
end
z += 1
end
end
$game_map.new_terrain[id].push(x)
$game_map.new_terrain[id].push(y)
$game_map.new_terrain[id].push(terrain_id)
end
end
class Game_Map
attr_accessor :new_terrain
alias ini initialize
def initialize
ini
@new_terrain = []
for i in 0...999
@new_terrain[i] = []
end
end
def terrain_tag(x, y)
if @map_id != 0
for id in 0...999#@new_terrain.size
if x == @new_terrain[id][0] and y == @new_terrain[id][1]
return @new_terrain[id][2]
end
end
for i in [2, 1, 0]
tile_id = data[x, y, i]
if tile_id == nil
return 0
elsif @terrain_tags[tile_id] > 0
return @terrain_tags[tile_id]
end
end
end
return 0
end
end |
Et pour s'en servir :
1
2
| change_terrain_tag(Id,X,Y,Terrain_Tag)
# Tu peux mettre nil pour l'Id, il t'en cherchera un nouveau. |
Monos :
J'verrais si j'peux le faire à la sortit ( Surement une traduite, histoire de pas avoir des script avec du Jap' dedans ... ) de Ace
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
Tata Monos -
posté le 10/12/2011 à 21:06:41 (28 messages postés)
| Compte Non utilisé | Dac Mack Merci.
|
S4suk3 -
posté le 13/12/2011 à 18:06:21 (555 messages postés)
| - | Bonjour,
Dans la version ruby qu'utilise RM VX (1.8.6 je pense), il n'est pas possible de passer un block à la méthode Array#index, donc la solution pour faire des traitement de block sur index est :
1
| [1, 2, 3, 4, 5].index([1, 2, 3, 4, 5].find{|element| element >= 3}) |
Personnellement, je trouve cette méthode un peu moche, donc je m'étais dit que j'allais tirer partit du monkeypatching
1
2
3
4
5
6
7
8
9
| class Array
alias ruby_index index
def index
if block_given?
( ? )
end
return ruby_index( ? )
end
end |
les ( ? ) correspondent a mes interrogation,
je pensais utiliser index(*args) pour avoir un nombre variable d'argument et retourner ruby_index(args[0]) dans le cas ou aucun block n'est fournit, mais si un block est donné en paramètre, je peux pas demander ruby_index(self.find(yield) je suppose?
Je vous remercie :S
|
Zeus81 -
posté le 13/12/2011 à 19:25:55 (11071 messages postés)
| | Au début je me disais que tu pourrais faire avec find comme dans ton code précédent :
1
2
3
4
5
6
| class Array
alias ruby_index index
def index(obj=nil, &block)
ruby_index(block ? find(&block) : obj)
end
end |
Mais en fait non, ça ferrait des erreurs par rapport à nil.
Du coup la seule solution qui marche vraiment c'est :
1
2
3
4
5
6
7
8
9
10
11
| class Array
alias ruby_index index
def index(obj=nil)
if block_given?
each_with_index {|obj, id| return id if yield(obj)}
return nil
else
return ruby_index(obj)
end
end
end |
Mais c'est peut être un peu plus lent, je sais pas.
|
S4suk3 -
posté le 13/12/2011 à 19:44:26 (555 messages postés)
| - | Merci beaucoup Zeus...
C'est dommage que les blocks n'aient pas un type spécifique... ou que yield corresponde a un block.
Peut être que je me trompe, mais ça dénote réellement l'intérêt d'un système de type complet
|
Åvygeil -
posté le 15/12/2011 à 17:06:35 (2502 messages postés)
| | Ha ouais. Quand même.
Moche la cécité.
|
Tata Monos -
posté le 23/12/2011 à 07:40:47 (28 messages postés)
| Compte Non utilisé | Coucou les gars.
Alors voila j'avais fais un truc en RGSS2, j'ai porté la même chose pour ACE.
On m'a parlé des alias qui évite de reprend tous le morceau de la classe. Pouvez vous m'expliquer comment on fait svp.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
class Window_Base < Window
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super
self.windowskin = Cache.system("Window")
update_padding
update_tone
create_contents
@opening = @closing = false
self.back_opacity = 255 #Ajouter
self.openness = 255 #Ajouter
end
end
|
1
2
3
4
|
self.back_opacity = 255 #Ajouter
self.openness = 255 #Ajouter
|
Se sont les deux lignes que j'ai ajouté et donc plus tard je vais remplacer le chiffre par une variable.
Merci d'avance de vos explications sur les alias.
|
zou -
posté le 23/12/2011 à 13:59:04 (2197 messages postés)
| |
1
2
3
4
5
6
7
8
9
10
11
| class Ta_class
alias nouveau_nom nom
# tu renomes la méthode "nom" en "nouveau_nom"
def nom # tu fais maintenant ta nouvelle méthode
nouveau_nom # tu appelles la méthode qui a changée de nom
# tu fais les trucs nouveaux
end
end |
ce qui donne dans ton cas
1
2
3
4
5
6
7
8
9
10
11
12
| class Window_Base < Window
alias old_initialize initialize
def initialize(x, y, width, height) # la "vraie" méthode prend ces 4 arguments, tu le mes donc ici
old_initialize(x, y, width, height) # ici tu as des arguments, il faut les "faire passer" dans
# la méthode qui a changée de nom
self.back_opacity = 255
self.openness = 255
end
end |
|
zou -
posté le 23/12/2011 à 15:26:21 (2197 messages postés)
| | je sais pas, j'ai jamais testé sans mais ça doit marcher sans en effet
|
Tata Monos -
posté le 23/12/2011 à 15:28:05 (28 messages postés)
| Compte Non utilisé | Citation:
Monkey Patching, c'est un peu la même chose que Monos Patching ? (juste la langue qui change non ?)
=>[]
Merci.
| 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!!
|