Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker


Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Jeux: puie z / Jeux: Citymaime - Chapitre 1 / Jeux: Mer, îles et fous / News: Du neuf dans le making / News: Muma|Rope est disponible en (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

211 connectés actuellement

30732028 visiteurs
depuis l'ouverture

2006 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Alex d'Or

New RPG Maker

Lunae - le bazar d'Emz0

Zarok

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:

Estheone - posté le 23/04/2013 à 11:18:06 (312 messages postés)

❤ 0

Citation:

Utilisation normale = picture viewport2
Appel en script = picture viewport1 avec z = 2


Les sprites des pictures sont initialisés à l'avance donc je suis pas convaincu que tu puisses changer leur viewport par la suite.
En revanche tu peux toujours modifier la façon dont ils sont initialisés pour en avoir sur le viewport 1 et d'autres sur le 2 :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
    for i in 1..25
      @picture_sprites.push(Sprite_Picture.new(@viewport1,
        $game_screen.pictures[i]))
    end
    for i in 26..50
      @picture_sprites.push(Sprite_Picture.new(@viewport2,
        $game_screen.pictures[i]))
    end



Citation:

si je veux faire 2 intervalles, je fait comme ça ?


Comme ça plutôt :

Portion de code : Tout sélectionner

1
2
3
ENEMY_ID = []
for i in 1..34 ; ENEMY_ID.push(i) ; end
for i in 50..100 ; ENEMY_ID.push(i) ; end


:D

Wandering Souls : Jeu complet / Topic sur Oniro


Suite du sujet:

Cortez - posté le 09/05/2013 à 18:26:24 (524 messages postés)

❤ 0

[RmXP] Modifier un script de base :

Bonjour, j'ai décidément beaucoup de questions sur le ruby.

J'ai ajouté une fonction supplémentaire "Alchimie" à mon menu.
Cependant la liste des choix du menu à gauche est désormais trop longue.
Je pensais la régler dans le script window_menu mais il n'existe pas.

Donc je voudrais savoir quel script est responsable de l'affichage de la liste de gauche dans le menu, et si possible savoir comment modifier la hauteur de la liste. (Pour ne pas dépasser sur le window_gold).

Je viens de trouver une chose intéressante :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#==============================================================================
# ** Window_Command
#------------------------------------------------------------------------------
#  This window deals with general command choices.
#==============================================================================
 
class Window_Command < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     width    : window width
  #     commands : command text string array
  #--------------------------------------------------------------------------
  def initialize(width, commands)
    # Compute window height from command quantity
    super(0, 0, width, commands.size * 32 + 0) 



Le script window_command avec la ligne :

Portion de code : Tout sélectionner

1
super(0, 0, width, commands.size * 32 + 0)



Me réduit les fenêtres de listes et ajoute un effet déroulant.
Cependant cela agit aussi sur la fenêtre du titre, la fenêtre du menu, et la fenêtre de quitter.

Cela réduit mon problème sans le résoudre.


maxadona - posté le 20/05/2013 à 14:23:14 (146 messages postés)

❤ 0

Drawing my dreams on sheets of paper ...

Question conne n°1 :
Logiciel : RPG Maker XP

Pourrais-je avoir la commande à utiliser avec "Insérer script" pour supprimer un objet de l'inventaire ? Merci d'avance :)

Notre imagination ne serait-elle pas la folie de notre génie ? - Last Chance Projet (Site à mettre à jour) ... Présentation bientôt - Chaine Youtube


Åvygeil - posté le 25/05/2013 à 18:46:52 (2502 messages postés)

❤ 0

Portion de code : Tout sélectionner

1
$game_party.lose_item(item_id, 1)




Cortez - posté le 27/05/2013 à 11:48:39 (524 messages postés)

❤ 0

[RmXP]Modifier la fenêtre Battle_Result

Bonjours à tous, je viens vous voir afin d'obtenir un coup de pouce afin de modifier le script Window_Battle_Result.

J'aimerais obtenir une fenêtre large avec 2 colonnes d'item dropés sur les monstres.
(Puisque dans mon projet en cours on gagne énormément d'item par les monstres.)

Voici ce que j'ai fait comme modification :

Je pense qu'il me manque un truc car même la fonction "item_max"
ne marche pas. Il faut aussi savoir que la fonction "column_max" devrais gérer le nombre de colonne, mais in-game, les items obtenus en trop ne sont pas visibles.

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def initialize(exp, gold, treasures)
    @exp = exp
    @gold = gold
    @treasures = treasures
    @item_max = 6 # test 
    @column_max = 2 # test 
    super(60, 0, 520, 6 * 32 + 64) #super(160, 0, 320, @treasures.size * 32 + 64)
    #super(160, 0, 320, @treasures.size * 32 + 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.y = 160 - height / 2
    self.back_opacity = 160
    self.z = 2000
    self.visible = false
    refresh
  end
end



J'attend donc des éclaircissements sur quelque chose que j'aurais raté.
Pour savoir ce que je veux imaginez la même chose que pour le menu item à savoir une liste d'objet disposé en 2 colonnes de 6 items max


Dyeel - posté le 27/05/2013 à 14:11:02 (200 messages postés)

❤ 0

Salut !

En fait tu as juste défini des variables, mais tu ne les utilises pas.
Tu dois modifier le script Scene_Battle2 ligne 166 :
Il y a un [0..5], remplace le 5 par un 11
Ensuite à l'endroit où tu as fait tes modifs, dans le script de la fenêtre, il faut changer :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
 
x = 4
y = 32
for item in @treasures
draw_item_name(item,x,y)
if y == 32*6
y = 32
x = 264
else y += 32
end
end



Au lieu de

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
 
y = 32
for item in @treasures
draw_item_name(item,x,y)
y += 32
end
 


A la ligne 45 du script de fenêtre.

Puis garde les modifications que tu as fais dans le super, mais efface tes deux variables item.max et column.max

Ça devrait marcher!


Cortez - posté le 04/06/2013 à 18:53:59 (524 messages postés)

❤ 0

Juste pour dire, Item_max c'est super utile pour faire ça

Portion de code : Tout sélectionner

1
2
@item_max = @treasures.size / 2 +1 
    super(60, 0, 520, @item_max * 32 + 64)



et aussi dans BattleResult

Portion de code : Tout sélectionner

1
2
draw_item_name(item,x,y)
      if y == 32*@item_max



Comme ça la fenêtre s'ajuste automatiquement en hauteur selon le nombre d'objets obtenus (@treasures.size).

Enfin je te remercie pour l'aide.



Encore en train d'apprendre des truc en script , je pige pas encore tout.
J'ai donc un autre problème de Method [] for nil::class

C'est dans un script gérant l'affichage de jauges ATB.
Le script est de la forme

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
 
#=================================================================
# Titre 
#=================================================================
# Blabla
#  
#=================================================================
 
module N01  
  # Do not remove or change this line
  Cast_Time = {}
  # Do not remove or change this line
 
# et tout un tas de variables initialisées
 
Meters = true
 
  # Custom Time Bar position, only valid when Meter_Pos_Style = 4
  #Meter_Position = [[475,155],[495,185],[515,215],[535,245]]
  # La ligne originale conservée et en dessous la modif
  #=============================================================================
  #                 Ajout pour la position Back_Attack
  #=============================================================================
  if $game_switches[10] == true
    Meter_Position = [[475,155],[495,185],[517,215],[538,245]]
   else
      Meter_Position = [[120,155],[100,185],[77,215],[58,245]]
    end
  #=============================================================================
  #                           Fin de l'ajout
  #=============================================================================
 



Et la c'est le drame, je n'ai apparemment pas le droit d'ajouter une condition en "If"

Ma question est la suivante, ai-je fait une mauvaise syntaxe ou alors je m'y prend mal et je devrais écrire les lignes dans un autre script (ou plus bas car après on défini des méthodes)

Edit : Résolu, je l'ai redéfini dans une classe (dans la suite du script)
Il fallait aussi penser que les variables on toujours un @ (locales) ou un $ (globales)
donc Meter_Position est devenu @meter_Position et tout marche.

(Je deviens vraiment bon en script moi !)


paradoxII - posté le 10/06/2013 à 20:51:51 (259 messages postés)

❤ 0

NYA

Support :RMVXACE

Question 1 :
Bonjour, j'aimerai savoir si il existe une commande pour quitter le jeux ...

NYA


Cortez - posté le 10/06/2013 à 21:04:00 (524 messages postés)

❤ 0

Oui sur XP on a :

Portion de code : Tout sélectionner

1
$scene = nil



Donc je pense que c'est valable sous ACE aussi.


paradoxII - posté le 10/06/2013 à 21:17:53 (259 messages postés)

❤ 0

NYA

ne se passe rien ...

NYA


Nagato Yuki - posté le 10/06/2013 à 21:27:27 (351 messages postés)

❤ 0

SceneManager.exit sur VX.Ace.

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


Cortez - posté le 10/06/2013 à 21:43:49 (524 messages postés)

❤ 0

Ok il ont même changé les règles d'appel des scènes.
C'est tordu mais logique.

Enterbrain pourquoi changer la syntaxe ruby à chaque version ?!


paradoxII - posté le 10/06/2013 à 21:45:57 (259 messages postés)

❤ 0

NYA

MERCI !

NYA


Tasslehoff - posté le 11/06/2013 à 22:14:53 (5274 messages postés)

❤ 0

Disciple de Pythagolf

C'est du Lua mais je suppose que ça a sa place ici. ^^

Voilà, avec MMF2 j'appelle une fonction Lua de ce type :

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
function load_map(s)
 
 glob_s = s
 glob_s = string.gsub(glob_s, ".-<?xml version=\".-\" encoding=\".-\"?>.-<map", "<map")
 map_width = string.gsub(glob_s, "<map.-width=\"(%d+)\".+", "%1")
 map_height = string.gsub(glob_s, "<map.-height=\"(%d+)\".+", "%1")
 map_tilewidth = string.gsub(glob_s, "<map.-tilewidth=\"(%d+)\".+", "%1")
 map_tileheight = string.gsub(glob_s, "<map.-tileheight=\"(%d+)\".+", "%1")
 glob_s = string.gsub(glob_s, "<map.->.-<(.+)</map>.+", "<%1")
 
 Tileset = {firstgid = "1", name = "tile", tilewidth = "64", tileheight = "64", image_source = "", image_trans = "", image_width = "", image_height = ""}
 i = 1
 tilesets = {}
 for word in string.gmatch(glob_s, "<tileset.-</tileset>") do
        tilesets[i] = Tileset
        tilesets[i].firstgid = string.gsub(word, "<tileset.-firstgid=\"(%d+)\".+", "%1")
        tilesets[i].name = string.gsub(word, "<tileset.-name=\"(.-)\".+", "%1")
        tilesets[i].tilewidth = string.gsub(word, "<tileset.-tilewidth=\"(%d+)\".+", "%1")
        tilesets[i].tileheight = string.gsub(word, "<tileset.-tileheight=\"(%d+)\".+", "%1")
        tilesets[i].image_source = string.gsub(word, "<tileset.-<image.-source=\"(.-)\".+", "%1")
        tilesets[i].image_trans = string.gsub(word, "<tileset.-<image.-trans=\"(%d-)\".+", "%1")
        tilesets[i].image_width = string.gsub(word, "<tileset.-<image.-width=\"(%d-)\".+", "%1")
        tilesets[i].image_height = string.gsub(word, "<tileset.-<image.-height=\"(%d-)\".+", "%1")
        i = i+1
 end 
 
 return tilesets[1].image_source
 
end



Avec comme argument ceci :

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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?xml version="1.0" encoding="UTF-8"?>
 
 
<map version="1.0" orientation="orthogonal" width="3" height="3" tilewidth="64" tileheight="64">
 
 
 
        <tileset firstgid="1" name="tile" tilewidth="64" tileheight="64">
  
                <image source="C:/Users/Tasslehoff/Desktop/tile.png" trans="000000" width="576" height="960"/>
 
        </tileset>
 
 
        <tileset firstgid="1" name="tile" tilewidth="64" tileheight="64">
  
                <image source="F:/Users/Tasslehoff/Desktop/tile.png" trans="000000" width="576" height="960"/>
 
        </tileset> 
 
        <layer name="Calc1" width="3" height="3">
  
                <data>
   
                        <tile gid="2"/>
   <tile gid="2"/>
   <tile gid="2"/>
   <tile gid="19"/>
   <tile gid="19"/>
   <tile gid="19"/>
   <tile gid="2"/>
   <tile gid="2"/>
   <tile gid="2"/>
  
                </data>
 
        </layer>
 
 
 
        <layer name="Calc2" width="3" height="3">
  
                <data>
   
                        <tile gid="42"/>
   <tile gid="15"/>
   <tile gid="15"/>
   <tile gid="15"/>
   <tile gid="15"/>
   <tile gid="42"/>
   <tile gid="15"/>
   <tile gid="42"/>
   <tile gid="15"/>
  
                </data>
 
        </layer>
 
 
 
        <objectgroup name="Obj1" width="3" height="3">
 
  
                <object name="Carré" type="Prout" x="68" y="63" width="59" height="58">
   
                        <properties>
    
                                <property name="Force" value="3"/>
    
                                <property name="Vitesse" value="15"/>
   
                        </properties>
  
                </object>
 
 
        </objectgroup>
 
 
 
</map>



Le problème c'est que je voudrais que

Citation:

return tilesets[1].image_source


retourne "C:/Users/Tasslehoff/Desktop/tile.png" et que

Citation:

return tilesets[2].image_source


retourne "F:/Users/Tasslehoff/Desktop/tile.png" (juste la première lettre qui change).
Or pour l'instant les deux me retournent "F:/Users/Tasslehoff/Desktop/tile.png", et je vois pas pourquoi. :(

Des suggestions ?



~~


Nagato Yuki - posté le 11/06/2013 à 22:26:03 (351 messages postés)

❤ 0

@Cortez : Enterbrain n'a absolument pas changé la syntaxe du ruby, ils ont changé l'organisation de leurs scripts et ont découvert les symboles, par contre ils ne connaissent toujours pas times et step :/
@Tasslehoff : tilesets = Tileset
Peut être que tilesets[1] = tilesets[2] à cause du code que j'ai cité.
Bon, après je ne connais pas le Lua mais c'est probablement ça en regardant le code de loin. Si tu connais un moyen de cloner les objets essaie.

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


Tasslehoff - posté le 11/06/2013 à 22:35:04 (5274 messages postés)

❤ 0

Disciple de Pythagolf

AH oui merci, je ne connais pas le Lua non-plus (et je suis néophyte en programmation tout court), je pensais que en faisant tilesets = Tileset je clonais l'objet. ^^

Du coup j'ai cherché sur le net et là ça fonctionne (même si je ne comprends pas vraiment le fonctionnement interne de la fonction clone) :

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
function clone (o)
     local new_o = {}           -- creates a new object
     local i, v = next(o,nil)   -- get first index of "o" and its value
     while i do
       new_o[i] = v             -- store them in new table
       i, v = next(o,i)         -- get next index and its value
     end
     return new_o
   end
 
function load_map(s)
 
 glob_s = s
 glob_s = string.gsub(glob_s, ".-<?xml version=\".-\" encoding=\".-\"?>.-<map", "<map")
 map_width = string.gsub(glob_s, "<map.-width=\"(%d+)\".+", "%1")
 map_height = string.gsub(glob_s, "<map.-height=\"(%d+)\".+", "%1")
 map_tilewidth = string.gsub(glob_s, "<map.-tilewidth=\"(%d+)\".+", "%1")
 map_tileheight = string.gsub(glob_s, "<map.-tileheight=\"(%d+)\".+", "%1")
 glob_s = string.gsub(glob_s, "<map.->.-<(.+)</map>.+", "<%1")
 
 Tileset = {firstgid = "1", name = "tile", tilewidth = "64", tileheight = "64", image_source = "", image_trans = "", image_width = "", image_height = ""}
 i = 1
 tilesets = {}
 for word in string.gmatch(glob_s, "<tileset.-</tileset>") do
        tilesets[i] = clone(Tileset)
        tilesets[i].firstgid = string.gsub(word, "<tileset.-firstgid=\"(%d+)\".+", "%1")
        tilesets[i].name = string.gsub(word, "<tileset.-name=\"(.-)\".+", "%1")
        tilesets[i].tilewidth = string.gsub(word, "<tileset.-tilewidth=\"(%d+)\".+", "%1")
        tilesets[i].tileheight = string.gsub(word, "<tileset.-tileheight=\"(%d+)\".+", "%1")
        tilesets[i].image_source = string.gsub(word, "<tileset.-<image.-source=\"(.-)\".+", "%1")
        tilesets[i].image_trans = string.gsub(word, "<tileset.-<image.-trans=\"(%d-)\".+", "%1")
        tilesets[i].image_width = string.gsub(word, "<tileset.-<image.-width=\"(%d-)\".+", "%1")
        tilesets[i].image_height = string.gsub(word, "<tileset.-<image.-height=\"(%d-)\".+", "%1")
        i = i+1
 end 
 
 return tilesets[1].image_source
 
end



Merci ^^



~~


Mr Drerrawyn - posté le 14/06/2013 à 13:54:54 (1694 messages postés)

❤ 0

Le

Support : RMXP

Question 1 :
Bonjour, comment on fait pour récupérer la valeur d'une caractéristique s'il vous plait ? En gros pour ceux qui peuvent m'aider, s'il faut du détail:

Spoiler (cliquez pour afficher)



Merci :)


Kisthune - posté le 14/06/2013 à 14:19:46 (1227 messages postés)

❤ 0

Oui c'est fait à l'arrache

La variable que tu cherches c'est @actor.int. Par contre tu veux modifier le script ou bien tu veux la récupérer dans une variable RM ?

Si tu veux modifier le script tu vas chercher ça :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
 
SPADD = 8                        #Nombre de point de compétence gagnés à chaque niveau
AGILITY_ADD = 1                #Nombre de point d'agilité gagnés pour un point de compétence
DEXTERITY_ADD = 1          #Nombre de point de défense gagnés pour un point de compétence
INTELIGENCE_ADD = 1        #Nombre de point d'intelligence gagnés pour un point de compétence
STRENGTH_ADD = 1          #Nombre de point de force gagnés pour un point de compétence
HP_ADD = 4                    #Nombre de PV maximum gagnés pour un point de compétence
SP_ADD = 3                    #Nombre de PM maximum gagnés pour un point de compétence
 



Faut définir une nouvelle variable globale (par exemple $pfraction), la rendre égale à @actor.int là où @actor.int est connue, puis tu modifies tes constantes dans le bout de code là haut, par exemple je veux que 1 point dépensé en agilité augmente mon agilité de 3/4 de mon intelligence => AGILITY_ADD = (3*$pfraction/4).to_i

Je crois que ce n'est pas clair ce que je raconte, j’espère que ça a pu t'aider

Reikon no Yume


Mr Drerrawyn - posté le 20/06/2013 à 13:40:54 (1694 messages postés)

❤ 0

Le

O_O
Ok, je pensais pouvoir le faire sans trop de réflexion de ce genre, bon, c'est pas très grave, je vais pas trop me soucier de cet aspect, j'ai trouvé une alternative ! :)
Merci beaucoup quand même ;)

Deuxième question:
Support : RMXP

Question 1 :
Bon, pour un autre script, celui qui permet d'avoir un panneau d'actions.

En fait, j'aimerais savoir comment simplement ouvrir ce panneau via la commande événement appel de script.

Merci beaucoup, j'imagine que ça doit être tout con ^^'


cortez - posté le 20/06/2013 à 15:02:35 (524 messages postés)

❤ 0

Insérer un script :
$scene = Scene_Information_Action.new


Mr Drerrawyn - posté le 20/06/2013 à 15:42:32 (1694 messages postés)

❤ 0

Le

Merci beaucoup :)


cortez - posté le 26/06/2013 à 21:00:55 (524 messages postés)

❤ 0

Logiciel concerné: RmXP

Moi aussi j'ai une question sur un autre script, Il s'agit du
Window_Items basique.
Je suis en train de le modifier afin d'obtenir un affichage comme celui-ci.
image

Je me permet de up le sujet car mon problème à changé, il s'agit maintenant que le joueur puisse
ce déplacer dans les objets aussi bien horizontalement que verticalement, cependant je n'arrive
pas à le faire correctement. En effet lors des déplacements horizontaux, le curseur se déplace
d'un trop grand nombre de case ou pas assez.

Pour modifier l'index j'utilise ces formules
Touche Down

Portion de code : Tout sélectionner

1
2
3
4
 
# Move cursor down
          $game_system.se_play($data_system.cursor_se)
          @index = (@index + @column_max + (@item_max/(@item_max/15))) % @item_max



Touche Up

Portion de code : Tout sélectionner

1
2
3
# Move cursor up
          $game_system.se_play($data_system.cursor_se)
          @index = (@index - @column_max-(@item_max/(@item_max/15)) + @item_max) % @item_max



Mon problème est plus mathématique qu'autre chose, car il faut que l'index corresponde à chaque fois à la colonne du dessous, sauf quand c'est impossible.


Estheone - posté le 27/06/2013 à 23:25:51 (312 messages postés)

❤ 0

Essaie ça :

Portion de code : Tout sélectionner

1
2
3
4
# Move cursor down
          $game_system.se_play($data_system.cursor_se)
          @index += @column_max
          @index = (@index%@column_max) if @index >= @item_max


Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
# Move cursor up
          $game_system.se_play($data_system.cursor_se)
          @index -= @column_max
          if @index < 0
            max_rows = 1+((@item_max-1)/@column_max)
            @index += max_rows*@column_max
            @index -= @column_max if @index >= @item_max
          end


Je suppose qu'il y a moyen de rendre le up plus simple mais bon si ça fonctionne, c'est le principal. :sourit

Wandering Souls : Jeu complet / Topic sur Oniro


Joke - posté le 27/06/2013 à 23:57:11 (5090 messages postés)

❤ 0

Bilouteux fou

Je comprends particulièrement rien du tout à ce que vous avez fait... mais qu'en est-il de ça ?

Pour une liste qui reboucle : (Le curseur revient en haut quand il est en bas et inversement)

Un simple modulo fait très bien son effet dans ce cas de figure, sans chercher plus loin :

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
if Input.repeat?(Input::UP)
  @index -= @column_max
  @index %= @item_max
  $game_system.se_play($data_system.cursor_se)
end
if Input.repeat?(Input::DOWN)
  @index += @column_max
  @index %= @item_max
  $game_system.se_play($data_system.cursor_se)
end
if Input.repeat?(Input::LEFT)
  @index -= 1
  @index %= @item_max
  $game_system.se_play($data_system.cursor_se)      
end
if Input.repeat?(Input::RIGHT)
  @index += 1
  @index %= @item_max
  $game_system.se_play($data_system.cursor_se)
end



Ou la même chose en plus joli mais un pet moins performant, faute de ne pas savoir faire les deux :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
i = old = @index
i -= @column_max if Input.repeat?(Input::UP)
i += @column_max if Input.repeat?(Input::DOWN)
i -= 1           if Input.repeat?(Input::LEFT)
i += 1           if Input.repeat?(Input::RIGHT)
i %= @item_max
$game_system.se_play($data_system.cursor_se) if i != old
@index = i



En considérant :
- @column_max comme le nombre de colonnes (ici 15)
- @item_max comme le nombre d'objet en possession
- @index comme la position du curseur (@index = 0 quand il est tout à gauche de la première ligne, @index = @item_max-1 quand il est tout à droite de la dernière ligne)
Sinon, utiliser des valeurs correspondantes à la place.

Pour une liste qui ne reboucle pas :

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
if Input.repeat?(Input::UP)
  old = @index
  @index = [@index-@column_max, 0].max
  $game_system.se_play($data_system.cursor_se) if i != old
end
if Input.repeat?(Input::DOWN)
  old = @index
  @index = [@index+@column_max, @item_max-1].min
  $game_system.se_play($data_system.cursor_se) if i != old
end
if Input.repeat?(Input::LEFT)
  old = @index
  @index = [@index-1, @item_max-1].min
  $game_system.se_play($data_system.cursor_se) if i != old
end
if Input.repeat?(Input::RIGHT)
  old = @index
  @index = [@index+1, 0].max
  $game_system.se_play($data_system.cursor_se) if i != old
end



Ou, encore une fois :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
i = old = @index
i = [@index-@column_max, 0].max           if Input.repeat?(Input::UP)
i = [@index+@column_max, @item_max-1].min if Input.repeat?(Input::DOWN)
i = [@index-1, @item_max-1].min           if Input.repeat?(Input::LEFT)
i = [@index+1, 0].max                     if Input.repeat?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se) if i != old
@index = i



Citation:

En considérant :
- @column_max comme le nombre de colonnes
- @item_max comme le nombre d'objet en possession (ici 15)
- @index comme la position du curseur (@index = 0 quand il est tout à gauche de la première ligne, @index = @item_max-1 quand il est tout à droite de la dernière ligne)
Sinon, utiliser des valeurs correspondantes à la place.



biloumaster.fr, mon joli site ouèb tout bô tout frai !


Estheone - posté le 28/06/2013 à 00:42:05 (312 messages postés)

❤ 0

@Joke :
Tes formules pour une liste qui boucle ne fonctionnent pas, applique-les dans son image avec 18 éléments et tu vas vite voir le problème. :D

Les formules qui ne bouclent pas sont nickels mais je suis pas convaincu que ce soit ce qu'il cherche à faire.

Wandering Souls : Jeu complet / Topic sur Oniro


Joke - posté le 28/06/2013 à 00:46:59 (5090 messages postés)

❤ 0

Bilouteux fou

Estheone a dit:

applique-les dans son image avec 18 éléments et tu vas vite voir le problème. :D



Bien vu, il ne faut pas faire "%= @item_max - 1" mais simplement "%= @item_max" pauvre abruti incompétent nul que je suis.

Je corrige. J'ai corrigé.

biloumaster.fr, mon joli site ouèb tout bô tout frai !

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