Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Sorties: "Dread Mac Farlane", (...) / Tutos: Checklist de la composition (...) / Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Jeux: Ce qui vit Dessous / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

369 connectés actuellement

29451808 visiteurs
depuis l'ouverture

17688 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Kingdom Ultimate

RPG Fusion

Tashiroworld

Level Up!

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [Scripts] Petites questions connes sur les SCRIPTS!!

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:

Ephy - posté le 02/11/2011 à 18:08:28 (30085 messages postés) - honor

❤ 0

[BIG SHOT]

Bah oui mais le making c'est aussi des trucs chiants comme ça :-/
Et puis ce genre de truc c'est fait en quoi... quelques heures? Pas trop chronophage quand même...

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


Suite du sujet:

AlterEgo - posté le 02/11/2011 à 18:09:54 (2481 messages postés)

❤ 0

It shall be engraved upon your soul

C'est quoi ton evenement ?


Ca ne pourrait pas etre fait en evenement commun ?
Et sinon si c'est un personnage par exemple , tu ne peux pas mettre un event transparent dans un coin de la map , et tu le fais apparaitre aux coordonnees que tu veux avec un evenement commun ?

Et le pharaon noir est le premier roi de l’Atlantide pour la gloire de rien comprendre


yop - posté le 02/11/2011 à 18:42:01 (296 messages postés)

❤ 0

Merci AlterEgon c'est une bonne idée mais ça revient au même...
Ephy, Je voulais juste savoir si c'est possible sinon tant pis. Mais il faut admettre que ça serait bien pratique.

"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


Ephy - posté le 02/11/2011 à 18:44:16 (30085 messages postés) - honor

❤ 0

[BIG SHOT]

Non mais je préviens quoi. C'était pas méchant hein. JE dis juste que parfois le making ça peut être très chiant et très bête parce que certains ont l'air de pas être au courant :doute2

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


Mack - posté le 02/11/2011 à 19:01:16 (2290 messages postés) - staff

❤ 0

Mack a dit:


Suffit de recréer un event avec les mêmes commandes.
( CF tuto RPG Créative )



Merci hein =').


EDIT :
Bien sur faudra le modifier, mais je suppose que tu t'y connais un peu.
Sinon, j'devrais pouvoir le faire.

( Je prend note de tout les commentaires, même si je n'y répond pas )


yop - posté le 02/11/2011 à 19:50:56 (296 messages postés)

❤ 0

Désolé Mack, j'ai répondu à AlterEgo sans voir ton message :s
Je vais essayer de voir comment faire même si ça m'a l'air bien compliqué mais je l'ai pas encore lu donc je peux pas savoir.
En tout cas merci beaucoup ça me serra d'une grande aide :)

"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


Åvygeil - posté le 02/11/2011 à 20:05:55 (2502 messages postés)

❤ 0

Citation:

Bah oui mais le making c'est aussi des trucs chiants comme ça


Quand on programme en event, oui...

Citation:

Et puis ce genre de truc c'est fait en quoi... quelques heures? Pas trop chronophage quand même...


Ouais, et le jour où tu veux faire une correction, faut que tu repasses encore quelques heures à faire la même correction partout... Pas chronophage du tout :hihi

Et si il nous disait en quoi consiste son event, qu'on puisse l'aider ?
Parce que ça pue la mauvaise solution son bidule en event, si il a besoin de le copier/coller partout...


yop - posté le 03/11/2011 à 17:08:56 (296 messages postés)

❤ 0

Pour mon jeu (qui est plutôt un mini-jeu), j'ai plusieurs personnage qui se déplacent et c'est à chaque fois les mêmes quasiment.
Dans le niveau 1 et 2 il y a 10 pnj1, 1 pnj2 et 1pnj3
Dans le niveau 3, 1 pnj2 en plus
Dans le niveau 4, encore 1 pnj2 en plus
Les pnj1 et 2 accélère à chaque de niveau
Sachant que chaque niveau contient une dizaine de sous-niveaux. :-/

De plus ces pnj subissent en ce moment des corrections, améliorations, changement de sprites... :hum

Je pense que ce script qui permet de copier les évents (je dis bien copier, c'est magique ! :)) me fournira une aide précieuse. En plus d'un gain de temps considérable et d'un allègement cela me permettre de réaliser des choses normalement impossible, notamment dans mes autres jeux (je vous laisse y penser^^), c'est pourquoi je tiens à remercier Mack une seconde fois !
Pourquoi faire long quand on peut faire court ?
Pourquoi faire compliqué quand un peut faire simple ?
Pourquoi faire lourd quand on peut faire léger ?
Pourquoi faire moins quand on peut faire plus ?

En conclusion je dirais pourquoi s'en passer ? ;)

"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


Youri - posté le 03/11/2011 à 18:00:09 (351 messages postés)

❤ 0

Tien :
[hide=Script]

Portion de code : Tout sélectionner

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
#===
#¤Class Interpreter
#---
#%Ajout de la methode permettant de charger une évent depuis une autre map 
#%Sur la map en cours.
#---
#© 03/11/2011 - Nuri Yuri (塗 ゆり)
#===
class Interpreter
  ID_MAP_DATA=2
  S_Map_File="Data/Map%03d.rxdata"
  Warn=true
  @@old_Map_id=nil
  @Map_Data=nil
  def move_event(id,x,y,map_id=ID_MAP_DATA)
    if @@old_Map_id != map_id or !@@Map_Data
      @@old_Map_id=map_id
      @@Map_Data=load_data(sprintf(S_Map_File,map_id)) rescue (p $! if Warn;return)
    end
    event=@@Map_Data.events[id]
    if event
      event.x=x.to_i if x
      event.y=y.to_i if y
      event=Game_Event.new($game_map.map_id, event)
      if $game_map.events[id]
        arr=$game_map.events.keys.sort
        oid=id
        id=arr[-1]+1
        $game_map.events[id]=event
        p "Attention, l'évent #{oid} existe déjà sur la Map #{$game_map.map_id}, l'évent à été placé avec l'id : #{id}" if Warn
      else
        $game_map.events[id]=event
      end
      $scene.spriteset.push_character_sprite(id) if $scene.class==Scene_Map
      return true
    else
      p "Erreur : L'évent #{id} n'a pas été trouvé sur la Map #{map_id}" if Warn
      return
    end
  end
end
#===
#¤Class Spriteset_Map
#---
#%Ajout de la methode d'ajout de sprite.
#---
#© 03/11/2011 - Nuri Yuri (塗 ゆり)
#===
class Spriteset_Map
  def push_character_sprite(id)
    sprite = Sprite_Character.new(@viewport1, $game_map.events[id])
    @character_sprites.push(sprite)
  end
end
#===
#¤Class Scene_Map
#---
#%Ajout de l'attribut spriteset
#===
class Scene_Map
  attr_accessor :spriteset
end

[/hide]
Tu met dans un évent move_event(id,x,y) et ça va déplacé l'event id à la position x,y sur la map en cours depuis la map ID_MAP_DATA ou valeur ajouté dans le paramètre optionnel.
Si un évent de l'id existe déjà l'évent déplacé aura un autre id et tu sera prévenu si Warn a pour valeur true (met donc false pour le désactiver.)

J'espère que c'est ce que tu veux, bonne continuation pour ton projet.

Pokémon Workshop, le site de Making Pokémon sur RPG Maker~


Mack - posté le 03/11/2011 à 18:11:45 (2290 messages postés) - staff

❤ 0

En gros, c'est exactement ce que le lien que j't'ai filé fais.
( Suffit que tu mettes un event en // qui créais autant d'évent, que tu auras préalablement créer, sur la map où se trouve le joueur. )

Celui de Youri à l'air pas mal, mais beaucoup pus complexe ...

( Je prend note de tout les commentaires, même si je n'y répond pas )


Youri - posté le 03/11/2011 à 18:45:50 (351 messages postés)

❤ 0

J'avais pas regardé le lien ^^'
Mon script n'est pas vraiment complexe, il copie l'évent à la position voulue (ou position de base en mettant false ou nil aux coordonnées) depuis une autre map en lui laissant l'id sauf cas d'évent préexistant et ne recharge pas la map (sauf exception particulière) ce qui évite aussi la récréation d'objets inutiles.
Bon après, je fais de manière différente et je n'ai pas commenté (par habitude). (Bon, je dis que c'est pas complexe mais je sais comment ça fonctionne en même temps...)
Sinon, je pense que pour l'autre script si on fait un truc comme ça dans un appel :
Create_Event.new(2)
Create_Event.new(3)
Create_Event.new(4)
Create_Event.new(5)
Create_Event.new(6)
Create_Event.new(7)

La création ne fonctionnera pas correctement car lors de l'appel de script Scene_Map n'est pas mis à jour(à moins qu'il y ai un code comma ça : Thread.new{loop do;$scene.update;sleep(0.025);end} quelque part mais j'en doute un peu :B) et les évents pourraient ne pas être affichés. (J'ai pas vérifié.)

Pokémon Workshop, le site de Making Pokémon sur RPG Maker~


Mack - posté le 03/11/2011 à 18:51:40 (2290 messages postés) - staff

❤ 0

Avec le script telle quel ça arrive ouais ^^".

M'enfin, suffit de remplacer ce qu'il y a dans Game_Temp par un Array, et de le remplir lorsque un évent est créais, et ce vide lorsque il ajoutes sur la map. ( Du coup, aucun problème d'affichage )

M'enfin, ton script et quand même vachement plus galère que celui de Créative, enfin, je trouve.

( Je prend note de tout les commentaires, même si je n'y répond pas )


yop - posté le 03/11/2011 à 19:00:25 (296 messages postés)

❤ 0

Merci Youri, ton script à l'air encore mieux que celui de créative !
Est-il possible de mettre une variable pour x, y ou ID_MAP_DATA ?
Par exemple :
ID_MAP_DATA = @variable1 (dans le script bien sur)
move_event(1,@variable2,@variable3) (comme avec la fonction "téléporter évènement car celle-ci ne gère que les évents déjà sur la map)
De plus, est-il possible de modifier ID_MAP_DATA avec "insérer un script" ?
Merci encore :)

"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


Youri - posté le 03/11/2011 à 19:09:41 (351 messages postés)

❤ 0

Tu peux faire move_event(1,$variable_x,$variable_y,map_id)
La variable $varable_x et $varaible_y devront être définies (ou pas) par toi quelque part, dans l'évent donc tu peux faire :

Portion de code : Tout sélectionner

1
move_event(1,$game_variables[500],$game_variables[501])


Et si tu veux copier celui de la map 53 avec les coordonnées que tu as enregistrer dans les variables 500 et 501 tu fais :

Portion de code : Tout sélectionner

1
move_event(1,$game_variables[500],$game_variables[501],53)



Tu peux mettre des variables en argument mais fait gaffe au contenu de celle ci.
ID_MAP_DATA est la variable par défaut donc si tu ne met pas l'argument map_id elle est prise. (Tu peux changer la valeur si tu met tous les évents sur une seule map ou mettre la valeur dans l'argument prévu si t'as les évents sur plusieurs maps.)

@Mack : Explique où c'est galère. (Utilisation / contenu)

Pokémon Workshop, le site de Making Pokémon sur RPG Maker~


yop - posté le 03/11/2011 à 19:58:43 (296 messages postés)

❤ 0

Merci tout est clair maintenant ! :)
Je me demandais également quelles sont les valeurs de base de x et de y ?

"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


un_lock - posté le 03/11/2011 à 20:25:06 (80 messages postés)

❤ 0

Le bidouilleur Floux!

Bonjour !
J'aimerais savoir s'il était possible sur RPG Maker XP, en appelant un script, de lancer un fichier *.exe ??

Je m'explique... j'ai une vidéo qui est compilé dans un exe (j'essai de contourner la lecteur des video un peu foireuse sur RMXP)... J'avais trouvé une portion de code il y a quelques temps.. mais impossible de remettre la main dessu...

Ne l'ayant pas testé, je ne sais pas si ça marchait ou pas... Si quelqu'un pouvait m'aider, je lui en serais reconnaissant ^^

Merchouille :F

******************************************
Je me répond à moi même....

Il faut utiliser ceci: Thread.new {system('Chemin vers *.exe')}


Mack - posté le 04/11/2011 à 18:51:42 (2290 messages postés) - staff

❤ 0

Citation:

if @@old_Map_id != map_id or !@@Map_Data
@@old_Map_id=map_id
@@Map_Data=load_data(sprintf(S_Map_File,map_id)) rescue (p $! if Warn;return)
end


J'suis pas sur de comprendre cette partie, c'est juste pour charger la map, et éviter de la recharger plus tard ?
Ensuite, pourquoi mettre des double @ ?
Et puis c'est quoi ce :

Citation:

rescue (p $! if Warn;return)


?

Pour l'id, si elle est déjà prise, je suppose que ça viens de cette partie :

Citation:

arr=$game_map.events.keys.sort
oid=id
id=arr[-1]+1


Mais en faite tu fait quoi ?
Tu tries le tableau dans l'ordre croissant, et tu prends la dernière valeurs pour y ajouter 1 pour être sur que cette valeurs soit "vide" ?

Le reste j'comprends.

Et sinon, j'ai un petit problème :

Support : RMXP

Question 1 :

En faite, j'aimerais calculer le %age de chance qu'un index de tableau sorte.
En gros, je dispose d'un tableau de ce style :

Portion de code : Tout sélectionner

1
[15,30,20,35]


( Le contenus est composé seulement de chiffre, et il peut avoir de 1 à 8 "entrées" )
Ces chiffres, correspondent au %age de chance que l'index lui correspondant sorte.
Exemple :
J'ai 15% de chance pour que 0 sorte. 30% pour que 1 sorte ...
J'ai essayer de faire ça :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    a = [15,30,20,35]
    if @enemy_array == nil
      @enemy_array = []
      r = a[0]
      for z in 0..a.size
        e = a[z-1]
        print e
        if z == 0
          e = 0
        end
        print r
        for i in e+1..r
          print i
          @enemy_array[i] = z
        end
        r += a[z+1]
      end
    end



Mais à chaque fois il me donne une erreur de syntaxe ...
( Quand on tape n'importe quoi dans insérer un script ... )

Voila, voila ...

( Je prend note de tout les commentaires, même si je n'y répond pas )


Youri - posté le 04/11/2011 à 20:02:35 (351 messages postés)

❤ 0

Le premier code sert à charger une map si l'id est différent de l'id de la map précédente ou si la map vaut nil ou false, le @@ veut dire variable de classe, la variable de classe est enregistré dans la constante Interpreter et non les objets séparés générés par Interpreter.new et est accessible depuis tous les objets générés par la classe dans la quel elle a été définie. N'étant sur de rien je préfères utiliser un variable de classe plutôt qu'une variables d'instance.

"rescue" sert en cas d'erreur et les parenthèse elle servent à exécuter un sous programme, j'avais pas envie de mettre begin rescue end donc j'ai fait du code "bourrin" qui prends moins de place et moins de lignes, ";" sert à dire que la commande est terminées comme dans beaucoup de langages de programmation.

Après $game_map.events est un hash, c'est l'équivalent de deux tableaux qui contiennent séparément les clef et leurs valeurs. Donc, je récupère les clefs car j'ai besoins que des ids des évents arr=$game_map.events.keys, et je les tries (on sait jamais) en utilisant la methode sort de la classe Array.
oid=id c'est simplement l'id de l'évent à la base o pour old.
arr[-1] est la dernière case du tableau donc je capture la dernière case qui doit contenir l'id du dernier évent et j'y ajoute 1 pour créer un nouvel id propre à l'évent copié donc oui je fais en sorte à utiliser une valeur dont je suis sur qu'elle est vide.

Pour ton problème il n'y a pas d'erreur de syntaxe, mais en l'insérant dans appelle de script ça peut être gênant car RMXP peut coupé à partir de la huitième ligne ce qui fait que le code est interprété à moitié et ce qui donne l'erreur de syntaxe. Sinon, il y a une erreur de type car tu sort de l'array "a", for i in 0..a.size va aller de 0 à a.size or a[a.size]==nil et a[a.size+1] est aussi égale à nil donc ça va poser des problèmes.

Pokémon Workshop, le site de Making Pokémon sur RPG Maker~


Tasslehoff - posté le 04/11/2011 à 20:23:58 (5234 messages postés)

❤ 0

Disciple de Pythagolf

Tu peux peut-être faire un truc du genre :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
tableau = [15,30,20,35]
z = []
tableau.each_index{|index|
  tableau.each{|prout|
  prout.times do
    z.push(index+1)
  end
  }
}
final = z[rand(z.size)]


Pas testé, je sais pas ce que ça donne. J’espère que ça a pas l'air trop dégueulasse pour un codeur expérimenté. ^^



~~


Mack - posté le 04/11/2011 à 20:37:07 (2290 messages postés) - staff

❤ 0

Portion de code : Tout sélectionner

1
(p $! if Warn;return)


Ca va afficher un texte. Jusque là je suis. Mais comme quoi texte ? A quoi est égale $! ? A l'erreur que le jeu reçoit ?
Ensuite, si on le faisait en moins simpliste ça donnerais quoi ?
Ça ? :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
 
begin
  @@Map_Data=load_data(sprintf(S_Map_File,map_id))
rescue
  if Warn
    p $!
    return
  end
end




Pour la variable de classe, j'vais essayer de trouver une bonne grosse explication dessus, j'saisis pas bien la différence entre @ma_variable et @@ma_variable ...


Pour mon problème, je l'appelle depuis une définition fait exprès pour :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  def e(a)
    if @enemy_array == nil
      @enemy_array = []
      r = a[0]
      for z in 0..a.size
        e = a[z-1]
        print e
        if z == 0
          e = 0
        end
        print r
        for i in e+1..r
          print i
          @enemy_array[i] = z
        end
        r += a[z+1]
      end
    end
  end


Et dans inserer un script :

Portion de code : Tout sélectionner

1
e([15,30,20,35])



Et voila l'erreur exacte :
image
( C'est pas une erreur de syntaxe, autant pour moi. )
Et la ligne qu'il me pointe c'est :

Portion de code : Tout sélectionner

1
eval(script)



Du coup, j'pense pas que ça vienne d'un coupage du script.

Pour l'autre problème, suffirais de remplacer 0..a.size par 0...a.size voir 0..(a.size-1) non ?

( Je prend note de tout les commentaires, même si je n'y répond pas )


Tasslehoff - posté le 04/11/2011 à 21:16:37 (5234 messages postés)

❤ 0

Disciple de Pythagolf

Citation:

Pour la variable de classe, j'vais essayer de trouver une bonne grosse explication dessus, j'saisis pas bien la différence entre @ma_variable et @@ma_variable ...


Une classe hérite des variables de classe de sa superclasse, et si tu modifie la variable dans la classe ça la modifiera aussi dans la superclass. Ils se la "partagent" en quelque sorte.

Sinon t'as essayé mon bout de code ? J'ai testé et ça a l'air de fonctionner.



~~


Youri - posté le 04/11/2011 à 21:17:18 (351 messages postés)

❤ 0

Non. (pour Mack ^^', oniro ne préviens pas quand il y a des nouveaux messages.)
cmd if bool <=> if bool;cmd;end
Donc ça vaudrait :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
 
begin
   @@Map_Data=load_data(sprintf(S_Map_File,map_id))
rescue
  if Warn
    p $! #Affiche le message d'erreur
  end
  return  #Sortie de la methode (renvois nil accessoirement) car pas de ma chargée.
end


Et pour l'autre problème remplace plutôt par 0...a.size
Le code de Tasslehoff fonctionne bien mieux.

Pokémon Workshop, le site de Making Pokémon sur RPG Maker~


Berka - posté le 04/11/2011 à 21:57:54 (493 messages postés)

❤ 0

planchant sur un script

@Mack:
Déjà tu emploies une locale e dans une méthode e. Ca entraîne un risque de confusion. Ensuite ton message d'erreur signifie qu'à la ligne:

Portion de code : Tout sélectionner

1
for i in e+1..r


ton e== nil
Si on remonte à la ligne initialisant e:

Portion de code : Tout sélectionner

1
e = a[z-1]


Il faut que tu vérifies ton a et ton z.
En règle générale, il faut toujours se méfier des eval. Car le suivi d'erreur est très mal géré dedans.


@Youri:
Le begin est inutile dans une méthode, car c'est déjà un bloc. Du coup tu peux très bien utiliser une exception comme ceci:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
def test
  #...
rescue
  #...
ensure
  #...
end


Plutôt qu'un return, assure l'exécution en utilisant ensure.
Bonne soirée,

Berka

Twitter: Pensées politiques et juridiques. Réflexions informatiques


Youri - posté le 04/11/2011 à 22:25:58 (351 messages postés)

❤ 0

Merci pour l'information Berka.

Pokémon Workshop, le site de Making Pokémon sur RPG Maker~


Mack - posté le 04/11/2011 à 22:26:52 (2290 messages postés) - staff

❤ 0

Désoler Tass, j'avais pas vu ^^".

Alors apparemment, ça fonctionne ( Aucune erreur ), mais j'ai pas l'impression que ça donne des résultats correctes ...

J'ai modifier pas mal mon tableau, et les résultats sont plutôt bizarre :
Un index qui à un %age faible ( 5 ) revient à peu près autant qu'un avec un %age correcte ( 40 ).
De plus, j'ai essayer de rendre une de ses valeurs à 0 ( Et donc elle ne devrais plus sortir ) et pourtant elle sort toujours autant ...
Donc, c'est moi qui est mal compris son fonctionnement ? Ou c'est juste un coup de malchance ?

Portion de code : Tout sélectionner

1
2
3
      a = [0,35,20,45]
      i = e(a)
      print i


J'fais juste ça pour récupérer l'index. ( Avec e la définition de Tass' )

Merci Berka, j'vais voir.



M'en faite, j'vais quand même exposer le problème du tout début, aussi bien, j'me foire complet sur comment le régler :

En gros, je fais un A-RPG, donc, pour l'apparition des monstres, j'ai décidé de me servir de la BDD pour pouvoir en faire apparaître aléatoirement.
Donc, dans l'onglet groupe de monstre, je définit les types de monstres rencontrables, et dans les events du groupe, j'y met mon tableau pour représenter le %age de chance qu'ils apparaissent.

( Donc, dans mon groupe de monstre, j'ai juste ça :

Portion de code : Tout sélectionner

1
@enemy_array = [0,35,20,45]


Et j'utilise ça pour le récupérer :

Portion de code : Tout sélectionner

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
  def setup_battle(m=nil)
    if m == nil
      m = rand(2)+1
    end
    for p in 0..m
      
      $game_system.battle_interpreter.setup(nil, 0) 
    
      n = rand($game_map.encounter_list.size)
      troop_id = $game_map.encounter_list[n]
      troop = $data_troops[troop_id]
      # Je fais la liste des diffèrents groupes, et j'en prend un au hasard.
 
      for index in 0...$data_troops[troop_id].pages.size
        # Get event pages
        page = $data_troops[troop_id].pages[index]
        $game_system.battle_interpreter.setup(page.list, @event_id)
      end
      $game_system.battle_interpreter.update
      # Je récupère le contenu de l'évent de la BDD
      
      r = rand(100)
      a = $game_system.battle_interpreter.enemy_array
      i = e(a)
      print i
      
      enemy = $data_enemies[troop.members[i-1].enemy_id]
      # Et je récupère l'ennemie de la BDD
    end
  end


La fin concerne l'apparition de l'évent, et marche donc correctement.

Donc voila, est ce que j'suis sur la bonne voie ou y a moyen de faire carrément plus simple ?

( Je prend note de tout les commentaires, même si je n'y répond pas )


Tasslehoff - posté le 04/11/2011 à 22:53:19 (5234 messages postés)

❤ 0

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.

Portion de code : Tout sélectionner

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 :F)



~~

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

Index du forum > Entraide > [Scripts] Petites questions connes sur les SCRIPTS!!

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers