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

324 connectés actuellement

29415122 visiteurs
depuis l'ouverture

7661 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Offgame

Planète Glutko

RPG Maker - La Communauté

Tous nos partenaires

Devenir
partenaire



Messages postés par Mack
Nombre de messages référencés sur Oniromancie (non supprimés): 1784

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

Posté dans Forum - Vos jeux vidéo du moment

Mack - posté le 30/01/2018 à 02:42:29. (2290 messages postés) -

Nemau a dit:


Kody aussi a adoré ce jeu (si je dis pas de bêtise). Pour ma part ...Quand je vois les screens je trouve l'ambiance assez classique, du coup bof, ça me tente pas trop. Mais je perds peut-être quelque chose.

---

Yooka-Laylee il est bien ? J'avais bien aimé Banjo-Kazooie, du coup...

---

Sinon y a Blossom Tales, un Zelda2D-like qui a l'air pas mal, je songe à le prendre...

Citation:

Grosse déception. :(


Moi j'ai fui rien qu'en voyant le chara-design. :F




Pour Blossom Tales, franchement c'est du copié collé des Zelda 2D.
Il prend pas de risque, mais tout ce qu'il fait il le fait bien.
Perso j'ai vraiment beaucoup apprécié le faire.

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

Posté dans Forum - Topic des bribes de projets

Mack - posté le 06/12/2017 à 01:07:23. (2290 messages postés) -

Petite vidéo sur le prototype sur lequel je bosse en ce moment :



En gros, c'est censé être un genre de Hand of Fate, en simplifier, et compatible PC / Android.
Les évents sont codé en Lua, comme ça, n'importe qui pourra rajouter ses propres évents.

Il reste encore pas mal de truc à faire ( les 3/4 des systèmes de RPG comme l'inventaire les stats le combat, le système de déplacement sur la carte, bien plus tard le système de génération aléatoire ... ), mais j'trouve que ça commence enfin à ressembler à quelque chose ! :D.

Après il me restera à faire les évents, et je pense que je vais moins m'amuser à ce moment :'D.
( Si ça intéresse quelqu'un ^^ )


Pour info, l'évent ressemble à ça :

Spoiler (cliquez pour afficher)



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

Posté dans Forum - Zelda of the Legend : A Link to the Awakening of the Past of Time - Fouigres of the Twilight Sword 2 Return of the Hylian

Mack - posté le 12/10/2017 à 22:10:35. (2290 messages postés) -

Non, mais en français, le g fait gu devant un a, mais pas un e ^^.
Donc la pronontiation fr ça devrait être jerudo.
( Même si perso j'ai toujours dit Gerudo )

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

Posté dans Forum - Solde sur HumbleBundle, RPMakers et autre pour un prix réduit !

Mack - posté le 05/10/2017 à 14:04:30. (2290 messages postés) -

https://www.humblebundle.com/software/rpg-maker-software

Pour 15$, y a RM VX, VX Ace, 2000, 2k3, quelques pack de ressources, et quelques jeux.
Pour 30$ de plus, vous avez MV et un autre pack.

Les jeux ont franchement l'air nul, par contre, avoir autant de RM pour trois fois rien, ça vaut clairement le coup !

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

Posté dans Forum - Map Editor

Mack - posté le 18/09/2017 à 17:12:01. (2290 messages postés) -

En vrai, y a eu pas mal d'avancement sur le gameplay d'un prototype, et du coup j'ai rajouter deux trois trucs sur le moteur pour aller avec, mais comme pour arriver à un résultat potable pour un proto, il me faut faire du mapping, et que j'ai la flemme, bah j'y ai pas touché depuis un bon mois xD.

20/02/18 :

Spoiler (cliquez pour afficher)


Bon, j'ai décidé de reprendre l'éditeur, j'ai quasiment tout recommencé à 0 ( seulement la partie éditeur ), histoire d'avoir un truc un peu plus propre.
J'ai quasiment rattrapé la où j'en été avant, j'ai juste la partie Event à faire, mais bon, vu comment elle marchait avant, la refaire sera pas dur, et après je referais les raccourcis.

10/08/18:
imageimage share

J'ai un peu repris, donc j'ai remis les évents ( c'est toujours dégeux de les programmer depuis l'éditeur, donc je passe par Notepad++ en attendant d'arriver à faire un truc correcte, mais au moins ça marche ! ), et surtout j'ai ajouté pas mal de détails sur la personnalisation :
Maintenant, les maps sont plus forcement en 30 * 20, on peut changer la taille comme on veut. Pareil pour le système d'OW avant j'avais limité à 5*5, là y a pas vraiment de limite. ( Après, plus le nombre est grand, moins on verra sur la mini map mais bon. )
J'ai aussi commencé la possibilité de changer la taille des tiles, mais c'est pas encore parfait.
Sur le screen les maps sont en 10*9, avec des tiles de 16*16, sur une OW de 16*16.
On peut aussi changer la taille de l'écran du coup.
Le seul problème pour l'instant, c'est que si la map ne tiens pas en 1 écran, elle scrolle pas quand on s'approche des bords.

Et le dernier point, c'est que le joueur n'est plus hardcodé, il y a un fichier Player.js dans les data qui permet de modifier le comportement.

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

Posté dans Forum - [Rm VX Ace] [Discution] Concept Empoisonnement

Mack - posté le 25/08/2017 à 23:42:22. (2290 messages postés) -

Perso, comme Verehn, j'aurais une préférence pour la seconde option.
Trop de hasard risque vraiment de tuer le jeu, comme le dis Verehn, dans The Darkest Dungeon, passé de tout vas pour le mieux, à putain c'est la merde juste parce que t'as pas de bol ... Bof quoi :/.

Après, une autre solution, c'est simplement de garder un plus grand contrôle sur le changement de niveau. Par exemple, quand tu changes de niveau de poinson, t'as 50% de chance de changer que de 1 niveau, 25% de prendre 2 niveaux, 15% d'en prendre 3, et le reste d'en prendre 4.
Ça permet de garder un peu de hasard, ce qui est plutôt cool, mais en gérant bien les %ages, ça permet de pas trop frustrer le joueur.

L'idée de Verehn ou il parle de la constitution du héros, ainsi que de sa forme, je trouve que c'est une très bonne idée.

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

Posté dans Forum - [RM XP] Système d'inventaire custom

Mack - posté le 19/08/2017 à 18:43:55. (2290 messages postés) -

Le champ dans la bdd où tu choisis si tu cinle un allié, tout les alliés, un ennemi, tout les ennemis ... Tu prends le premier, celui qui dit que t'as aucune cible.

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

Posté dans Forum - [Scripts] Petites questions connes sur les SCRIPTS!!

Mack - posté le 19/08/2017 à 12:39:55. (2290 messages postés) -

Dans la fonction draw_item, t'as la ligne :

Portion de code : Tout sélectionner

1
rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)


Qui permet de définir le rectangle où sera placé le texte.
Les arguments sont :
Position X, Position Y, Largeur Hauteur.

Or, toi la position X est tout le temps égale à 4.
Donc ça te fera toujours qu'une colonne.

Il te faut un truc du genre :

Portion de code : Tout sélectionner

1
2
x = positionX + index % nbColonne * (largeur)
y = positionY + index / nbColonne * hauteur


Pour les coordonnées X et Y du premier morceau de code que j'ai donné.

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

Posté dans Forum - Les Vidéos de vos jeux !

Mack - posté le 18/08/2017 à 23:42:19. (2290 messages postés) -



Divers petit test de gamedesign.
En vrac, un système d'endurance, qui va avec un système de dash, et un système de combo pour les coups d'épée.
Un système de ciblage des ennemis, qui permet ensuite de tirer avec avec une arme à distance. Si aucun ennemis n'est ciblé, ça part moins vite, mais plus loin.

Tout ( ou presque, les fonctions basiques sont faites en Java ) est codé en JS, avec l'espèces de système de plugin que j'ai mis en place pour mon projet.
C'est loin d'être parfait, mais dans l'ensemble, j'trouve le rendu plutôt cool.
J'vais essayer de peaufiner un peu tout ça ( surtout l'IA des ennemis qui est vraiment pas top ... ), et peut être que quand j'aurais la motiv pour faire du mapping j'essaierais un truc xD.


EDIT : 10/10/2017 :
Avec le Humble Bundle j'me suis pris RM2k3, et du coup j'y ai un peu remis les mains dedans :


Du coup, j'me suis amusé à faire un mini shmup, c'était marrant à faire, j'vais essayer de voir pour l'amélioré encore un peu, voir essayer d'en faire un mini jeu complet.

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

Posté dans Forum - [RM XP] Système d'inventaire custom

Mack - posté le 16/08/2017 à 09:05:50. (2290 messages postés) -

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
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
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs map screen processing.
#==============================================================================
 
SIZE = 64
PAGE_MAX = 3
 
ROW = 2
COL = 5
 
X = 0
Y = 0
 
FONT_SIZE = 18
 
SWITCH = 1
SWITCH_OPEN = 2
SWITCH_TYPE = 3
 
VARIABLE_ITEM = 1
VARIABLE_EQUIP_C = 2
VARIABLE_EQUIP_B = 3
 
class Scene_Map
  
 
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  alias main_old main
  def main
    
    $game_switches[SWITCH_OPEN] = false
    
    @spriteBack = Sprite.new
    @spriteBack.bitmap = RPG::Cache.picture("back1")
    
    
    @spriteSelector = Sprite.new
    @spriteSelector.bitmap = RPG::Cache.picture("selector")
    
    
    @index = 0
    
    @x = X
    @y = Y
    
    x = 20 + @index % COL * (SIZE)
    y = 20 + @index / COL * (SIZE)
    
    @spriteSelector.x = @x + x
    @spriteSelector.y = @y + y
    
   
    
    @spriteBack.x = @x
    @spriteBack.y = @y
    
    @window_item = WindowItemCustom.new((COL*SIZE)+48,(ROW*SIZE)+48)
    @window_item.x = @x
    @window_item.y = @y
    @window_item.z = 201
    
    @spriteBack.z = 1
    @spriteSelector.z = @window_item.z + 1
    
    @spriteBack.visible = false
    @window_item.visible = false
    @spriteSelector.visible = false
    
    main_old
    
    @spriteBack.bitmap.dispose
    @spriteBack.dispose
    @spriteSelector.bitmap.dispose
    @spriteSelector.dispose
    @window_item.dispose
    
    
  end
  
  alias update_old update
  def update
    
    if ($game_switches[SWITCH_OPEN]) 
      if Input.repeat?(Input::LEFT)
        if (@index % COL == 0)
           p = @window_item.getPage - 1
          if (p < 1)
            p = PAGE_MAX
          end
          @window_item.setPage(p)
          @spriteBack.bitmap = RPG::Cache.picture("back"+p.to_s)
          @index = (@index + (COL-1)) % (ROW * COL)
        else
          @index = (@index - 1) % (ROW * COL)
        end
      end
      if Input.repeat?(Input::RIGHT)
        if (@index % COL == COL - 1)
          p = @window_item.getPage + 1
          if (p > PAGE_MAX)
            p = 1
          end
          @window_item.setPage(p)
          @spriteBack.bitmap = RPG::Cache.picture("back"+p.to_s)
          @index = (@index - (COL-1)) % (ROW * COL)
        else
          @index = (@index + 1) % (ROW * COL)
        end
      end
      
      if Input.repeat?(Input::UP)
        @index = (@index - COL) % (ROW * COL)
      end
      if Input.repeat?(Input::DOWN)
        @index = (@index + COL) % (ROW * COL)
      end
      
      if Input.trigger?(Input::C)
        # If command event ID is valid
        @item = @window_item.getItem(@index)
        if ($game_switches[SWITCH_TYPE] == true)
          $game_variables[VARIABLE_ITEM] = @item
          $game_switches[SWITCH] = true
          return
        end
 
         if @item.is_a?(RPG::Item)
           if @item.scope != 0
             for i in $game_party.actors
              used |= i.item_effect(@item)
            end
            if @item.common_event_id > 0
              $game_switches[SWITCH] = true
              # Command event call reservation
              $game_temp.common_event_id = @item.common_event_id
              # If consumable
              if @item.consumable
                # Decrease used items by 1
                $game_party.lose_item(@item.id, 1)
              end
            end
          else
            $game_variables[VARIABLE_EQUIP_C] = @item
          end
          @window_item.refresh
        else
          equip_index = 0
          if (@item.is_a?(RPG::Armor))
            equip_index = 1 + @item.kind
          end
          $game_party.actors[0].equip(equip_index, @item.id)
          $game_system.se_play($data_system.equip_se)
          @window_item.refresh
        end
      end
      
      
      if Input.trigger?(Input::B)
        # If command event ID is valid
        @item = @window_item.getItem(@index)
        if ($game_switches[SWITCH_TYPE] == true)
          $game_variables[VARIABLE_ITEM] = @item
          $game_switches[SWITCH] = true
          return
        end
 
        if @item.is_a?(RPG::Item)
          if @item.scope == 0
            $game_variables[VARIABLE_EQUIP_B] = @item
          end
        end
        @window_item.refresh
      end
        
      x = 20 + @index % COL * (SIZE)
      y = 20 + @index / COL * (SIZE)
      
      @spriteSelector.x = @x + x
      @spriteSelector.y = @y + y
      
      if $game_switches[SWITCH]
        $game_switches[SWITCH] = false
        $game_switches[SWITCH_OPEN] = false
        Graphics.freeze
        @spriteBack.visible = false
        @window_item.visible = false
        @spriteSelector.visible = false
        Graphics.transition
      end
    else
      if $game_switches[SWITCH]
        @window_item.refresh
        $game_switches[SWITCH] = false
        $game_switches[SWITCH_OPEN] = true
        Graphics.freeze
        @spriteBack.visible = true
        @window_item.visible = true
        @spriteSelector.visible = true
        Graphics.transition
      end
    end
    
    
    update_old
  end
end
 
 
 
#==============================================================================
# ** WindowItemCustom
#------------------------------------------------------------------------------
#==============================================================================
 
class WindowItemCustom < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     w       : Width
  #     h       : Height
  #     c       : Column
  #     r       : Row
  #--------------------------------------------------------------------------
  def initialize(w,h)
    super(0,0,w,h)
    self.contents = Bitmap.new(w - 32, h - 32)
    self.back_opacity = 0
    self.opacity = 0
    self.visible = true
    
    @page = 1
    refresh
  end
  
  def getItem(i)
      return @data[i + (ROW * COL) * (@page - 1)]
  end
  
  def setPage(i)
    @page = i
    refresh
  end
  
  def getPage
    return @page
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    
    
    @data = []
    
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        @data.push($data_items[i])
      end
    end
    # Also add weapons and items if outside of battle
    unless $game_temp.in_battle
      for i in 1...$data_weapons.size
        if $game_party.weapon_number(i) > 0
          @data.push($data_weapons[i])
        end
      end
      for i in 1...$data_armors.size
        if $game_party.armor_number(i) > 0
          @data.push($data_armors[i])
        end
      end
    end
    
    # If item count is not 0, make a bit map and draw all items
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, ROW * SIZE + 4)
      self.contents.font.size = FONT_SIZE
      index = (ROW * COL) * (@page - 1)
      for i in 0...(ROW * COL)
        if (index+i < @data.size)
          draw_item(index, i)
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(j,index)
    item = @data[j+index]
    case item
    when RPG::Item
      number = $game_party.item_number(item.id)
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    
    x = 4 + index % COL * (SIZE)
    y = index / COL * SIZE
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, SIZE, SIZE), opacity)
    self.contents.draw_text(x + 2, y + SIZE - 24, 24, 32, number.to_s, 0)
  end
end
class Game_Player
  alias update_old update
  def update
    if ($game_switches[SWITCH_OPEN])
      return
    end
    update_old
  end
end
class Game_Party
  def calc_nb_Inventory
    j = 0
    
    for i in 1...$data_items.size
      if ($game_party.item_number(i) > 0)
        j += 1
      end
    end
    
    # Also add weapons and items if outside of battle
    unless $game_temp.in_battle
      for i in 1...$data_weapons.size
        if $game_party.weapon_number(i) > 0
          j += 1
        end
      end
      for i in 1...$data_armors.size
        if $game_party.armor_number(i) > 0
          j += 1
        end
      end
    end
    
    return j
  end
  
  def itemType()
    it = $game_variables[VARIABLE_ITEM]
    if (it == 0)
      return 0
    end
    if it.is_a?(RPG::Weapon)
      return 2
    end
    if it.is_a?(RPG::Armor)
      return 3
    end
    return 1
  end
  
  def itemId()
    it = $game_variables[VARIABLE_ITEM]
    if (it == 0)
      return 0
    end
    return it.id
  end
  
  
  def equipCType()
    it = $game_variables[VARIABLE_EQUIP_C]
  
    if (it == 0)
      return 0
    end
    
    if $game_party.item_number(it.id) <= 0
      $game_variables[VARIABLE_EQUIP_C] = 0
      return 0
    end
    
    if it.is_a?(RPG::Weapon)
      return 2
    end
    if it.is_a?(RPG::Armor)
      return 3
    end
    return 1
  end
  
  def equipCId()
    it = $game_variables[VARIABLE_EQUIP_C]
    if (it == 0)
      return 0
    end
    
    if $game_party.item_number(it.id) <= 0
      $game_variables[VARIABLE_EQUIP_C] = 0
      return 0
    end
    return it.id
  end
  
   def equipBType()
    it = $game_variables[VARIABLE_EQUIP_B]
    if (it == 0)
      return 0
    end
    
    if $game_party.item_number(it.id) <= 0
      $game_variables[VARIABLE_EQUIP_B] = 0
      return 0
    end
    
    if it.is_a?(RPG::Weapon)
      return 2
    end
    if it.is_a?(RPG::Armor)
      return 3
    end
    return 1
  end
  
  def equipBId()
    it = $game_variables[VARIABLE_EQUIP_B]
    if (it == 0)
      return 0
    end
    
    if $game_party.item_number(it.id) <= 0
      $game_variables[VARIABLE_EQUIP_B] = 0
      return 0
    end
    return it.id
  end
end



Donc ça marche pareil que pour montrer des items, mais avec les commandes equipCType / equipBType et equipCId / equipBId.

Pour équiper des items, il faut que tu mettes leur cible sur aucune.

Désolé, avec le taf, j'ai pas eu trop le temps :/

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

Posté dans Forum - [RM XP] Système d'inventaire custom

Mack - posté le 13/08/2017 à 13:27:12. (2290 messages postés) -

Le problème avec les armes, c'est qu'une fois équipé, elles sont stocké complètement à part, et donc elles ne sont plus compté dans l'inventaire, ni quand on essaye de les retirer.

J'ai bidouiller un truc, mais j'me suis dis après coup que ça pouvait poser des problèmes, genre, on peut équiper deux objets ( sur C et B ), et en même temps une arme.

Du coup, j'vais voir pour retourné avec les armes, et simplement permettre de retirer une arme équipé, et de les compter comme si elles étaient dans l'inventaire.

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

Posté dans Forum - [RM XP] Système d'inventaire custom

Mack - posté le 12/08/2017 à 01:37:29. (2290 messages postés) -

Yep, j'pense voir pourquoi ça fait ça.

Après, utiliser les armes pour ce genre de truc, je pense pas que ça soit une bonne idée.

J'y penserais à tête reposé demain.

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

Posté dans Forum - [RM XP] Système d'inventaire custom

Mack - posté le 11/08/2017 à 20:02:06. (2290 messages postés) -

Pour la position, tu modifies les constantes X Y.
Pour le nombre d'item, cherches la ligne :

Portion de code : Tout sélectionner

1
self.contents.draw_text(x + 2, y + SIZE - 24, 24, 32, number.to_s, 0)


( Vers 288 )
Et modifie le x + 2.

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

Posté dans Forum - [RM XP] Je recherche activement un scripteur !

Mack - posté le 11/08/2017 à 00:04:28. (2290 messages postés) -

Si tu trouves personnes, tu sais où me trouver ^^.

J'suis pas tout le temps dispo, mais pour passer un coups de main, y a pas de problème ;D.

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

Posté dans Forum - [RM XP] Système d'inventaire custom

Mack - posté le 10/08/2017 à 23:54:39. (2290 messages postés) -

Nouvelle version :
https://www.mediafire.com/file/l0yi6dcl19bxw88/Project10.rar
( J'remet une démo car j'ai changé le système pour bloquer le héros. Et j'vais surement le rechanger plus tard, faut juste que je trouve comment. )


Donc, là, les pictures passent entre le fond du menu, et les icons des objets.
Dans ce menu, on a aussi les armes / armures.
Ensuite en appuyant sur C, les objets s’utilisent, même les effets de heal, et si c'est un équipement, il s'équipe.


Après, si je peux me permettre :
Mettre les armes / armures dans ce même menu, je suis pas sur que ça soit pertinent.
Ça va bouffer des slots pour le joueur, perso, j'aurais fait deux menus différents, quitte à faire le menu des équipements soit pas accessible partout.


J'ai aussi fait un petit truc pour pouvoir donner / montrer des items à un PNJ.
En gros, en mettant le switch n°SWITCH_TYPE sur true, puis en activant le switch n°SWITCH, le menu s'ouvre, mais quand on cliqueras sur C, ça enverra l'item sélectionné dans la variable VARIABLE_ITEM.
La fonction $game_party.itemType permet de savoir si l'item sélectionné est un objet, une arme, ou une armure.
( 1 c'est un objet, 2 une arme, et 3 une armure. )
Et la fonction $game_party.itemId renvoie son ID.
T'as un petit exemple dans la démo.


Par contre, je viens de voir un bug, si tu ouvres le menu en face d'un PNJ, et que tu utilises un objets, ça active le PNJ comme si le menu était fermé.
Donc ça sera reglé en même temps que le déplacement du joueur.

EDIT de minuit pile :

Donc le lien à été changé, j'ai corrigé le déplacement, et l'activation des évents dans le menu.

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

Posté dans Forum - [RP XP][Full Custom] Sylvan Melody - présenté en convention

Mack - posté le 10/08/2017 à 14:38:43. (2290 messages postés) -

Perso, si t'as besoin d'aide pour les scripts, j'peux te passer un coup main.
Envoie un MP si ça te va.

On aura le droit à une démo avant Genève pour servir de testeur ou pas ? :F

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

Posté dans Forum - [RM XP] Système d'inventaire custom

Mack - posté le 09/08/2017 à 23:05:48. (2290 messages postés) -

De base non.
Après, je peux facilement te faire un petit truc qui te calcul le nombre d'item différent dans l'inventaire.

EDIT :

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
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
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs map screen processing.
#==============================================================================
 
SIZE = 64
PAGE_MAX = 3
 
ROW = 2
COL = 5
 
X = 0
Y = 0
 
FONT_SIZE = 18
 
SWITCH = 1
SWITCH_OPEN = 2
 
class Scene_Map
  
 
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  alias main_old main
  def main
    
    $game_switches[SWITCH_OPEN] = false
    
    @spriteBack = Sprite.new
    @spriteBack.bitmap = RPG::Cache.picture("back1")
    
    
    @spriteSelector = Sprite.new
    @spriteSelector.bitmap = RPG::Cache.picture("selector")
    
    
    @index = 0
    
    @x = X
    @y = Y
    
    x = 20 + @index % COL * (SIZE)
    y = 20 + @index / COL * (SIZE)
    
    @spriteSelector.x = @x + x
    @spriteSelector.y = @y + y
    
   
    
    @spriteBack.x = @x
    @spriteBack.y = @y
    
    @window_item = WindowItemCustom.new((COL*SIZE)+48,(ROW*SIZE)+48)
    @window_item.x = @x
    @window_item.y = @y
    
    @spriteBack.z = @window_item.z - 1
    @spriteSelector.z = @spriteBack.z + 1
    
    @spriteBack.visible = false
    @window_item.visible = false
    @spriteSelector.visible = false
    
    main_old
    
    @spriteBack.bitmap.dispose
    @spriteBack.dispose
    @spriteSelector.bitmap.dispose
    @spriteSelector.dispose
    @window_item.dispose
    
    
  end
  
  alias update_old update
  def update
    
    if ($game_switches[SWITCH_OPEN]) 
      if Input.repeat?(Input::LEFT)
        if (@index % COL == 0)
           p = @window_item.getPage - 1
          if (p < 1)
            p = PAGE_MAX
          end
          @window_item.setPage(p)
          @spriteBack.bitmap = RPG::Cache.picture("back"+p.to_s)
          @index = (@index + (COL-1)) % (ROW * COL)
        else
          @index = (@index - 1) % (ROW * COL)
        end
      end
      if Input.repeat?(Input::RIGHT)
        if (@index % COL == COL - 1)
          p = @window_item.getPage + 1
          if (p > PAGE_MAX)
            p = 1
          end
          @window_item.setPage(p)
          @spriteBack.bitmap = RPG::Cache.picture("back"+p.to_s)
          @index = (@index - (COL-1)) % (ROW * COL)
        else
          @index = (@index + 1) % (ROW * COL)
        end
      end
      
      if Input.repeat?(Input::UP)
        @index = (@index - COL) % (ROW * COL)
      end
      if Input.repeat?(Input::DOWN)
        @index = (@index + COL) % (ROW * COL)
      end
      
      if Input.trigger?(Input::C)
         # If command event ID is valid
         @item = @window_item.getItem(@index)
        if @item.common_event_id > 0
          $game_switches[SWITCH] = true
          # Command event call reservation
          $game_temp.common_event_id = @item.common_event_id
          # If consumable
          if @item.consumable
            # Decrease used items by 1
            $game_party.lose_item(@item.id, 1)
          end
          @window_item.refresh
        end
      end
        
      x = 20 + @index % COL * (SIZE)
      y = 20 + @index / COL * (SIZE)
      
      @spriteSelector.x = @x + x
      @spriteSelector.y = @y + y
      
      if $game_switches[SWITCH]
        $game_switches[SWITCH] = false
        $game_switches[SWITCH_OPEN] = false
        Graphics.freeze
        @spriteBack.visible = false
        @window_item.visible = false
        @spriteSelector.visible = false
        Graphics.transition
      end
    else
      if $game_switches[SWITCH]
        $game_switches[SWITCH] = false
        $game_switches[SWITCH_OPEN] = true
        Graphics.freeze
        @spriteBack.visible = true
        @window_item.visible = true
        @spriteSelector.visible = true
        Graphics.transition
      end
    end
    
    
    update_old
  end
end
 
 
 
#==============================================================================
# ** WindowItemCustom
#------------------------------------------------------------------------------
#==============================================================================
 
class WindowItemCustom < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     w       : Width
  #     h       : Height
  #     c       : Column
  #     r       : Row
  #--------------------------------------------------------------------------
  def initialize(w,h)
    super(0,0,w,h)
    self.contents = Bitmap.new(w - 32, h - 32)
    self.back_opacity = 0
    self.opacity = 0
    self.visible = true
    
    @page = 1
    refresh
  end
  
  def getItem(i)
      return @data[i + (ROW * COL) * (@page - 1)]
  end
  
  def setPage(i)
    @page = i
    refresh
  end
  
  def getPage
    return @page
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    
    
    @data = []
    
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        @data.push($data_items[i])
      end
    end
    
    # If item count is not 0, make a bit map and draw all items
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, ROW * SIZE + 4)
      self.contents.font.size = FONT_SIZE
      index = (ROW * COL) * (@page - 1)
      for i in 0...(ROW * COL)
        if (index+i < @data.size)
          draw_item(index, i)
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(j,index)
    item = @data[j+index]
    case item
    when RPG::Item
      number = $game_party.item_number(item.id)
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    if item.is_a?(RPG::Item) and
       $game_party.item_can_use?(item.id)
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4 + index % COL * (SIZE)
    y = index / COL * SIZE
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, SIZE, SIZE), opacity)
    self.contents.draw_text(x + 2, y + SIZE - 24, 24, 32, number.to_s, 0)
  end
end
 
class Game_Party
  def calc_nb_Inventory
    j = 0
    
    for i in 1...$data_items.size
      if ($game_party.item_number(i) > 0)
        j += 1
      end
    end
    
    return j
  end
end



T'as juste à appeler $game_party.calc_nb_Inventory pour avoir le nombre d'item différent que le joueur à.
( Et seulement les items d'ailleurs, ce système n'affiche pas les armes. Si t'en as besoin je te le rajoute )

Ex :

Portion de code : Tout sélectionner

1
$game_variables[X] = $game_party.calc_nb_Inventory


Va donner à la variable X le nombre d'item différent quand tu appelles ce morceau de script.
Le mieux c'est de directement faire tes conditions avec $game_party.calc_nb_Inventory.
Condition, 4 page, Script :

Portion de code : Tout sélectionner

1
$game_party.calc_nb_Inventory <= X


Avec X le nombre max d'item différent.

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

Posté dans Forum - [RM XP] Système d'inventaire custom

Mack - posté le 09/08/2017 à 14:30:41. (2290 messages postés) -

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
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
255
256
257
258
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs map screen processing.
#==============================================================================
 
SIZE = 64
PAGE_MAX = 3
 
ROW = 2
COL = 5
 
X = 0
Y = 0
 
FONT_SIZE = 18
 
SWITCH = 1
SWITCH_OPEN = 2
 
class Scene_Map
  
 
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  alias main_old main
  def main
    
    $game_switches[SWITCH_OPEN] = false
    
    @spriteBack = Sprite.new
    @spriteBack.bitmap = RPG::Cache.picture("back1")
    
    
    @spriteSelector = Sprite.new
    @spriteSelector.bitmap = RPG::Cache.picture("selector")
    
    
    @index = 0
    
    @x = X
    @y = Y
    
    x = 20 + @index % COL * (SIZE)
    y = 20 + @index / COL * (SIZE)
    
    @spriteSelector.x = @x + x
    @spriteSelector.y = @y + y
    
   
    
    @spriteBack.x = @x
    @spriteBack.y = @y
    
    @window_item = WindowItemCustom.new((COL*SIZE)+48,(ROW*SIZE)+48)
    @window_item.x = @x
    @window_item.y = @y
    
    @spriteBack.z = @window_item.z - 1
    @spriteSelector.z = @spriteBack.z + 1
    
    @spriteBack.visible = false
    @window_item.visible = false
    @spriteSelector.visible = false
    
    main_old
    
    @spriteBack.bitmap.dispose
    @spriteBack.dispose
    @spriteSelector.bitmap.dispose
    @spriteSelector.dispose
    @window_item.dispose
    
    
  end
  
  alias update_old update
  def update
    
    if ($game_switches[SWITCH_OPEN]) 
      if Input.repeat?(Input::LEFT)
        if (@index % COL == 0)
           p = @window_item.getPage - 1
          if (p < 1)
            p = PAGE_MAX
          end
          @window_item.setPage(p)
          @spriteBack.bitmap = RPG::Cache.picture("back"+p.to_s)
          @index = (@index + (COL-1)) % (ROW * COL)
        else
          @index = (@index - 1) % (ROW * COL)
        end
      end
      if Input.repeat?(Input::RIGHT)
        if (@index % COL == COL - 1)
          p = @window_item.getPage + 1
          if (p > PAGE_MAX)
            p = 1
          end
          @window_item.setPage(p)
          @spriteBack.bitmap = RPG::Cache.picture("back"+p.to_s)
          @index = (@index - (COL-1)) % (ROW * COL)
        else
          @index = (@index + 1) % (ROW * COL)
        end
      end
      
      if Input.repeat?(Input::UP)
        @index = (@index - COL) % (ROW * COL)
      end
      if Input.repeat?(Input::DOWN)
        @index = (@index + COL) % (ROW * COL)
      end
      
      if Input.trigger?(Input::C)
         # If command event ID is valid
         @item = @window_item.getItem(@index)
        if @item.common_event_id > 0
          $game_switches[SWITCH] = true
          # Command event call reservation
          $game_temp.common_event_id = @item.common_event_id
          # If consumable
          if @item.consumable
            # Decrease used items by 1
            $game_party.lose_item(@item.id, 1)
          end
          @window_item.refresh
        end
      end
        
      x = 20 + @index % COL * (SIZE)
      y = 20 + @index / COL * (SIZE)
      
      @spriteSelector.x = @x + x
      @spriteSelector.y = @y + y
      
      if $game_switches[SWITCH]
        $game_switches[SWITCH] = false
        $game_switches[SWITCH_OPEN] = false
        Graphics.freeze
        @spriteBack.visible = false
        @window_item.visible = false
        @spriteSelector.visible = false
        Graphics.transition
      end
    else
      if $game_switches[SWITCH]
        $game_switches[SWITCH] = false
        $game_switches[SWITCH_OPEN] = true
        Graphics.freeze
        @spriteBack.visible = true
        @window_item.visible = true
        @spriteSelector.visible = true
        Graphics.transition
      end
    end
    
    
    update_old
  end
end
 
 
 
#==============================================================================
# ** WindowItemCustom
#------------------------------------------------------------------------------
#==============================================================================
 
class WindowItemCustom < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     w       : Width
  #     h       : Height
  #     c       : Column
  #     r       : Row
  #--------------------------------------------------------------------------
  def initialize(w,h)
    super(0,0,w,h)
    self.contents = Bitmap.new(w - 32, h - 32)
    self.back_opacity = 0
    self.opacity = 0
    self.visible = true
    
    @page = 1
    refresh
  end
  
  def getItem(i)
      return @data[i + (ROW * COL) * (@page - 1)]
  end
  
  def setPage(i)
    @page = i
    refresh
  end
  
  def getPage
    return @page
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    
    
    @data = []
    
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        @data.push($data_items[i])
      end
    end
    
    # If item count is not 0, make a bit map and draw all items
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, ROW * SIZE + 4)
      self.contents.font.size = FONT_SIZE
      index = (ROW * COL) * (@page - 1)
      for i in 0...(ROW * COL)
        if (index+i < @data.size)
          draw_item(index, i)
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(j,index)
    item = @data[j+index]
    case item
    when RPG::Item
      number = $game_party.item_number(item.id)
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    if item.is_a?(RPG::Item) and
       $game_party.item_can_use?(item.id)
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4 + index % COL * (SIZE)
    y = index / COL * SIZE
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, SIZE, SIZE), opacity)
    self.contents.draw_text(x + 2, y + SIZE - 24, 24, 32, number.to_s, 0)
  end
end



La nouvelle version du script.
J'pense que tu dois pouvoir tout paramétrer comme tu veux avec les Consts en début de script.

ROW, c'est le nombre de ligne ( Donc 2 dans le cas de ton screen ), COL le nombre de colonne ( 5 pour ton screen donc ), PAGE_MAX, le nombre de page à afficher.

Donc si tu veux 1 page de 30 items, tu mets que COL * ROW = 30 ( COL = 5 et ROW = 4 par exemple ), avec PAGE_MAX = 1.

Et de base, le max d'objet est de 99, donc ça gênera pas ^^.


Après, le gros problème de ton système, c'est que si t'as plus d'item que de nombre de slot disponible, les objets n’apparaîtront pas.
( Le joueur les aura bien, mais ils ne pourra pas y accéder. )
Donc si penses y ^^.

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

Posté dans Forum - [RM XP] Système d'inventaire custom

Mack - posté le 09/08/2017 à 10:34:04. (2290 messages postés) -

C'est ça.

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

Posté dans Forum - [RM XP] Système d'inventaire custom

Mack - posté le 09/08/2017 à 00:48:28. (2290 messages postés) -

Bah, quand le joueur appuie sur les touches L et R, si il est dans le menu d'item, tu actives l'interrupteur SWITCH, ça fermera le menu d'item, et toi tu appelles ton autre menu.
Et si il est censé être dans les Items après un L / R, tu fermes ton menu et tu actives SWITCH pour ouvrir le menu.



En gros, SWITCH c'est comme un bouton poussoir, quand t'appuie dessus, si la lumière été allumé, elle s'éteint, et si elle été éteinte elle s'allume.

Tandis que SWITCH_OPEN sert juste à savoir si le menu d'Item est ouvert.

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

Posté dans Forum - [RM XP] Système d'inventaire custom

Mack - posté le 08/08/2017 à 19:05:37. (2290 messages postés) -

Nan, mais faire des systèmes inventaire en Event, c'est une cata.
Le mieux c'est clairement de le faire en script, voir semi script.

Le temps de ré-installer XP, et je bidouille un truc.


EDIT :

Du coup je t'ai bidouiller ça :
https://www.mediafire.com/file/j7cz0kz5kk79h1z/Project10.rar

La constante SIZE, c'est la taille d'une icone, SWITCH, c'est un interrupteur qui sert à detecter si tu fermes ou ouvre le menu ( CF l'évent de droite pour comprendre, quand t'actives l'interrupteur, le menu s'ouvre / se ferme. ), SWITCH_OPEN c'est pour savoir si le menu est ouvert ou fermé.

Les variables @x / @y correspondent aux coordonnées X/Y de la fenêtre.

En appuyant sur C sur un item, ça appellera l'évent commun lié à cet item.

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

Posté dans Forum - [RPG MAKER XP] Mah-jong

Mack - posté le 22/07/2017 à 12:09:54. (2290 messages postés) -

Bah un truc du genre :


Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
nbr_occurence = []
# J'ai un doute sur la création du tableau, donc la ligne du dessus sera peut être pas exacte.
 
for i in 1..14
        j = rand(42)+1
        while (nbr_occurence[j]<4) # Tu vérifies que t'es pas déjà 4 fois sortie cette valeur.
                j = rand(42)+1
        end
        
        # Y a moyen de faire mieux pour le while, mais j'me souviens plus du tout comment faire en ruby
        # A 
        if j<10
                nbr_occurence[j] = 4 # Si t'as entre 1 et 9 tu mets à 4, comme ça tu peux plus en avoir
        else
                nbr_occurence[j]++ # Sinon, tu augmentes juste le nombre de 1
        end
end
 



Ça devrait marcher je pense.

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

Posté dans Forum - Bazar des créations !

Mack - posté le 04/07/2017 à 19:06:22. (2290 messages postés) -

image

C'est mieux ?
( Perso j'ai un peu du mal avec les dithering pour le feuillage, je le trouve vraiment pas bien fait, mais j'arrive à rien avec >< )
Par contre, les couleurs clairs pour le perso ça vous gène pas ?
J'ai peur que ça soit trop clair, et que du coup on est du mal à le distinguer du décor.
( Après, c'est que du test, donc je changerais le design du perso d'ici que j'ai un truc potable je pense )

1mag0 a dit:


Les couleurs des arbres ne me choque pas, mais il est vrai que les 4 troncs des "gros arbres ronds" ne sont pas super :triste2. Je ne suis pas trop fan de l'eau et des falaises. Les textures/motifs sont bon mais ça reste très carré.

Mais sinon l'ensemble est plutôt chouette et le personnage est attachant.


Le fait que ça soit carré, j'verrais p't'être plus tard, mais pour l'instant j'ai la flemme xD.

Konnie a dit:


La palette est trop hétérogène c'est clair! Mais ça à du charme, inspires toi peu-être des couleurs utilisées dans un jeu que t'aimes bien pour changer le contraste entre chaque teinte.



Bah, en fait pour la plupart des couleurs c'est la palettes de Zelda Minish cap ^^".

( Grosso modo, j'ai changé que la couleur de l'eau, la couleur sombre du feuillage, et la couleur claire des petits buissons )

Merci en tout cas ^^.

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

Posté dans Forum - Bazar des créations !

Mack - posté le 04/07/2017 à 13:34:53. (2290 messages postés) -

image
Petit test de tileset custom.
J'en suis pas parfaitement convaincu ( notamment au niveau des gros arbres rond, que je trouve vraiment moche, ou les murs qui sont pas tip top ), mais je trouve que dans l'ensemble c'est pas si dégueu ^^.

( Bon, faut aussi voir si j'arrive à faire les animations du personnage, parce que sinon ça sert à rien xD )

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

Posté dans Forum - Map Editor

Mack - posté le 30/06/2017 à 13:52:47. (2290 messages postés) -

La classe Texture qui permet d'afficher des image ne l'ai pas par exemple.
Du coup, c'est le système de save est fait.

J'ai aussi finit une première version d'un mob, donc j'vais essayer de faire une petite vidéo d'ici demain soir ^^.

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

Posté dans Forum - Map Editor

Mack - posté le 30/06/2017 à 12:18:13. (2290 messages postés) -

Si si c'est ce que je compte faire ^^.
Mais certaine classes ne sont pas sérializable, donc si quelqu'un essaie de le faire, ça lui crashera à la gueule

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

Posté dans Forum - Map Editor

Mack - posté le 30/06/2017 à 10:47:03. (2290 messages postés) -

Nope, mais bon, ça devrait pas être trop dur.
( En même temps, j'ai pas grand chose à sauvegarder : la map du joueur, sa pos, et les Switches / Variables. Le seul truc qui pourrait coincé, c'est les variables, comme on peut y mettre n'importe quoi dedans, si on y cale un objet non sauvegardable ça peut foutre la merde. )


Du coup, hier j'ai pas mal tafé, j'ai rajouté la base du son ( Une BGM + plusieurs effets sonore ), j'ai refait les variables / switches, j'ai aussi rajouter le contrôle à la manette, et j'ai corriger pas mal de petits détails.


image

Petit test de mapping, mais franchement, je trouve ce tileset presque dégueulasse pour les intérieurs :/.
L'HUD est quasiment entièrement fonctionnel, y a juste les armes en hauts à droite qui sont affiché par une simple image, tout le reste c'est codé avec un évent.
J'vais commencé à faire un premier ennemi, et après je ferais surement le système de save.

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

Posté dans Forum - Map Editor

Mack - posté le 26/06/2017 à 11:49:27. (2290 messages postés) -

Yep je trouve que j'ai eu une superbe idée avec ces Tags.
Ça servira peut être pas à tout le monde, mais ça peut être ultra utile, notament pour des events qui utilise plusieurs events ( un boss avec plusieurs hitbox par exemple ).

En gros dans les gros ajouts fait que je fasse le son, que je refasse les interrupteur ( pour l'instant changer de maps les reset, et même si ça peut être utile faut que j'en mette qui se reset pas ), et que je fasse le système de save .
Après pour l'éditeur ca sera surtout des petites modifications ( Faire l'éditeur d'event proprement, passer par Notepad++ pour chaque events ça va 5minutes, et éventuellement rajouter d'autres fenêtres genre un éditeur d'item, de héros ou ce genre de truc. )
Mais je pense faire un mini projet avant, faire la Doc, et après voir pour les améliorations de l'éditeur.

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

Posté dans Forum - Map Editor

Mack - posté le 25/06/2017 à 20:43:01. (2290 messages postés) -

Yep, j'ai d'ailleurs changé pas mal de truc pour pas avoir deux projets ( un pour le moteur, et un pour l'éditeur ), mais qu'un seul.

Au final, j'ai mis un semblant de système de plugin :
En gros, sur chaque zone ( donc un lot de 5*5 maps ), on peut définir un évent qui s’effectura sur chaque map.
Et un autre évent qui, lui, est propre à chaque map.
J'ai fait un mini système d'action-RPG avec, donc ça marche plutôt bien.

Pour les évents, j'ai rajouter un système de Tag :
En gros, on peu mettre des évents dans une HashMap avec un String comme clé, du coup ça permet de le retrouver très facilement.
( Par exemple pour mon système d'ARPG, j'ai taggué mon Epée, et quand je devais faire des collisions avec cette dernière, j'allais juste la chercher avec son Tag )

J'ai aussi fait un semblant de gestion des image comme dans RM, j'suis en train de faire un HUD avec.

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

Posté dans Forum - Map Editor

Mack - posté le 24/06/2017 à 13:02:14. (2290 messages postés) -

wait ça attends en ms ( ou attend qu'on lui redise de recommencer ).
waitFrame attend en frame, c'est ça la différence ^^.
Au final j'ai trouvé pourquoi ça buggué, c'était juste mon système de copier/coller qui me mettais 4000 évents au lieu de 500 :/.

Du coup je tombe effectivement à environ 2 à 3 secondes pour une map de 480 évents, ça dépend de la gueule de l'évent.
Par contre, sur des évents un peu gros, le jeu se met à ramer :'/.
( En même temps, quand je dis un peu gros, c'est 480 évents, qui font 480 boucles chacun. Donc ça me semble un peu normal que dans ce cas là les FPS diminue xD. )

J'vais essayer de voir pour faire une mini démo pour voir comment ça réagit avec de vrai maps et de vrai évent.

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

Posté dans Forum - Map Editor

Mack - posté le 24/06/2017 à 03:39:40. (2290 messages postés) -

setZ permet de locker la position Z d'un évent ( Donc de le mettre au dessus de tout les évents, ou au contraire, de le mettre en dessous de tous. Utile pour les interrupteur, par exemple ), sinon, selon que l'évent est une case au dessus ou au dessous, il s'affichera par dessous ou par dessus l'autre évent. ( Comme dans RM quoi ), et waitFrame permet de faire attendre l'évent.
Je pensais que ça venait de waitFrame, du coup j'ai mis toute la fonction en commentaire, mais ça change rien :/.
Donc va falloir que je regarde en profondeur ce qu'il se passe :/.

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

Posté dans Forum - Map Editor

Mack - posté le 23/06/2017 à 22:19:09. (2290 messages postés) -

Bah, l'idée de l'écran de chargement, en soi si c'est pas long, c'est pas génant.
Après, je pense pas utilisé cette solution, mais pas forcement parce que c'est un écran de chargement, mais plutôt parce que chargé 25 maps en continue, ça risque de trop flingué la Ram pour rien :/.

Après, j'ai commencé à opti le truc, je descend de 0.2s à 0.4s contre 0.9s sur une map avec "peu" d'évent ( 14 ), 0.01s sans évent idem avec l'ancienne méthode ( non sans déc :F ), et 4s à 6s contre 8s avec une map pleine.

Donc c'est pas encore ça, mais ça avance bien.
Après, je viens de changer les évents de tests, et sur une map pleine, je tombe à ... 22 à 30 secondes d'attentes :').
Pourtant, mon évent est pas beaucoup plus compliqué, on est passé de ç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
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
function create() {
self.setCharas("door.png");
self.setPassable(false);
self.width = 12;
self.height = 12;
}
 
var opening = 0;
var wait = 0;
 
function update() {
        if (opening==0){
                if (self.getDistance(player) <= 16 && self.getFrame() != 3) {
                        opening = 1;
                } else if (self.getDistance(player) > 16 && self.getFrame() != 0) {
                        opening = 2;
                }
        } else {
                wait++;
                if(opening==1){
                        if (wait > 5){
                                wait = 0;
                                self.setFrame(self.getFrame() + 1);
                                if (self.getFrame()==3){
                                        opening = 0;
                                        self.setPassable(true);
                                }
                        }
                } else if (opening == 2) {
                        if (wait > 5){
                                wait = 0;
                                self.setFrame(self.getFrame() - 1);
                                if (self.getFrame()==0){
                                        opening = 0;
                                        self.setPassable(false);
                                }
                        }
                }
                
        }
        
}
function die() {
}
function remove() {
}


A ça :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function create() {
self.setCharas("block.png");
self.width = 12;
self.height = 12;
self.setZ(-1);
}
function update() {
        self.setFrame(1);
self.waitFrame(60)
self.setFrame(0);
self.waitFrame(60)
}
function die() {
}
function remove() {
}




Donc en soit, pas grand chose de différent, et pourtant, le temps d'attente est complètement différent.
Après, je me dis que si le type me calle 480 évent, c'est qu'il est teubé, mais bon, j'vais quand même essayer d'opti au max que je peux.

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

Posté dans Forum - Map Editor

Mack - posté le 21/06/2017 à 14:29:58. (2290 messages postés) -

Nope, pas de système de plugin de prévu.
( Et je pense pas en mettre, le log est pas destiné aux personnes ne connaissant pas du tout la prog, donc comme ça sera libre, à eux de faire ce qu'ils veulent. )

Du coup ouais c'est la création des Interpreteurs ( la classe ScriptEngine ), et l'interpretation de chaque évent qui prend du temps.
Après, c'est un temps """"honnête"""" : avec une dizaine d'évent sur la map, ça prend à peu près une seconde, mais avec une map pleine d'évents ( donc 30 * 16 = 480 ), ça prend à peine 7 secondes.
Et j'ai aucun lag une fois la map chargée. ( Même avec mes 480 évents. Après, ça reste des évents simples, à voir avec des trucs compliqué )

Donc j'vais voir, p't'être que plutôt que de charger map par map, j'vais charger zone par zone, avec un écran de chargement entre chaque zone.
Comme ça, on pourra passer de map en map sans aucun soucis, et on est pas censé changer de zone sans arrêt, donc on devrait éviter les chargement toute les 10 secondes.
J'vais essayer de voir un peu tout ça d'ici la fin de semaine.

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

Posté dans Forum - Map Editor

Mack - posté le 21/06/2017 à 13:40:21. (2290 messages postés) -

winterskill a dit:


ah ouais, pas mal! mais tu l'as scripté en js, l'évent ?
en revanche, la map saute, quand tu appuie sur la touche espace...
par contre, le style/apparence des gui sera codé en dur, il sera impossible de le modifier ?


Yep, les évents c'est du JS. Du coup, ça permet de faire des trucs relativement puissant.
Comment ça la map saute quand t'appuie sur espace ?
Pour l'interface, ouais, si tu veux changer des trucs, faudra le recoder.

Roi of the Suisse a dit:


C'est l'interprétation du javascript descriptif de l'évènement qui prend du temps au chargement de la map ?

Est-ce que lors de l'attente entre deux "cinematics" les autres évènements continuent de travailler ?




Je pense que c'est la création des Thread pour chaque évents, suivit du Parser et tout le tintouin. En vrai, j'ai vu que ça patiner en changeant de map, mais comme j'ai fait ça hier à 3h du mat', j'ai pas pris le temps de regarder le pourquoi du comment.
Parce quen en gros, j'ai choisis de faire un système Multi-Threader, mais où le jeu n'effectue qu'un Thread à la fois, selon ce que je lui demande.
( Donc j'execute le Thread principale, puis après j'execute / je reprends les un après les autres les Thread de mes évents, en les mettant en pause quand besoin ( Donc quand y a un déplacement, une cinématics ... ), et à la fin d'une boucle je le freeze pour redonner la main au Thread principale, qui appelle l'évent suivant, et si y a plus d'évent effectue le reste du code.
Faudrait que je regarde comment ça se comporte avec beaucoup d'évent sur une map.

Ouais, pendant une "cinematics", les autres évents sont freeze.

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

Posté dans Forum - Map Editor

Mack - posté le 21/06/2017 à 11:24:23. (2290 messages postés) -

Bon, finalement, j'ai eu un peu plus de temps pour moi, et surtout un regain de volonté.
Du coup, j'ai pu faire ce système de commande bloquante dans un évent :


Du coup, on peut voir que la caisse à droite fait bien ses mouvement un a un, alors que le code est un truc comme ça :
Pareil pour les cinematics, on voit que les deux se jouent à la suite, en attendant que j'appuie sur Espace à chaque fois.
C'est pas parfait mais dans l'ensemble ça marche plutôt bien.
( Le plus gros problème, c'est que quand je rentre dans une salle, le jeu mets un certains temps à charger les évents.
J'vais essayer de les faire charger pendant le travelling. )

Du coup, j'vais p't'être voir pour faire un mini projet pour montrer de quoi c'est capable.

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

Posté dans Forum - E3 2017

Mack - posté le 13/06/2017 à 12:19:42. (2290 messages postés) -

Oh, dans les jeux en VR y avait quand même Moss, le jeu avec la souris, qui m'a plutôt intéressé perso.
Après, c'est du PS-VR, donc j'y toucherais surement jamais, mais le jeu avait avait l'air plutôt jolie, et a du potentiel je pense.

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

Posté dans Forum - Map Editor

Mack - posté le 08/06/2017 à 22:57:27. (2290 messages postés) -

Nope, j'sors d'un mois de projet pour la Fac, et j’enchaîne avec le boulot tout l'été ^^'.
Donc j'vais essayer d'avancer un peu, mais à mon avis, cet été je ferais pas grand chose xD.

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

Posté dans Forum - Joyeux anniversaire !

Mack - posté le 07/06/2017 à 00:53:50. (2290 messages postés) -

Merci :D

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

Posté dans Forum - La tour du Crépuscule

Mack - posté le 09/05/2017 à 23:30:01. (2290 messages postés) -

Ah, c'est cool, j'voulais justement retoucher au système de donjon Zelda aléatoire :D.

Bon, mon niveau d'anglais est vraiment pas terrible, donc à la première écoute, j'ai pas pigé grand chose de ce qu'elle disait, mais j're-regarderais demain ou Jeudi.

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

Posté dans Forum - Map Editor

Mack - posté le 22/04/2017 à 22:06:54. (2290 messages postés) -

winterskill a dit:


Salut!
J'ai essayé la nouvelle version que tu a uploadé, et voici un petit compte-rendu de mon impression (au cas où il pourrait t'aider) :
Alors, globalement, ça avance bien et vite! Je trouve ton éditeur bien plus agréable à utiliser que celui des RM! (sincèrement). Alors, voilà ce qui est SUPER GENIALISSIME!!!:
- j'aime bien la fenêtre qui t'indique que la sauvegarde à réussie!
- j'aime bien aussi la police
- le logiciel est assez léger!
- les maps générées sont vraiment grandes
- il est simple d'utilisation (il ne demande pas trois mois de domptage avant de donner le meilleur de lui-même)
- il est (très) rapide :kawaii

Et voici ce qui peut être amélioré :
- comment choisir le tileset qu'on veut utiliser (après l'avoir rajouté dans le dossier "tilesets")?
En dessous du bouton nouveau tileset, t'as un bouton ouvrir. C'est celui là qu'il faut utiliser ^^.
- attention! on ne voit pas les tiles qui sont sur la toute droite, elles sortent de l'écran!
Normalement non. Je pense plutôt que c'est les cases de la map d'à côté que tu dois voir ^^. ( C'est histoire de pas avoir a revenir sur l'ancienne map pour faire un lien propre )
- le ctrlZ ne fonctionne pas
Ah ? Bizarre ça. Peut être que je l'avais pas mise dans cette version je regarderais/
- dans les dialogues, quand on en met trop, ils sortent de l'écran (mais bon, ça à la limite osef il suffit d'en mettre plusieurs à la suite)
Yep. Ça fait comme dans RM quoi. Mais j'ai prévu de regarder comment faire pour afficher plusieurs messages si le texte est trop long.
- en fait on ne peut pas mettre plusieurs evenements à la suite dans une même case... :leure3
Yep. C'est le gros problème du système. C'est voulu. Maintenant, si j'arrive à finir le nouveau système ça posera plus de problème ^^.
- on peut toujours pas mettre en plein écran :'(
Cf plus bas.


- l'evenement mob ne fonctionne pas :doute5
- dans l'evenement "chest", comment fait-on pour ajouter du contenu au coffre?
Normal, c'est deux options ne sont pas encore faites. Dans cette version, c'était vraiment la base de la base de l'ancien système d'évent.

et pour finir, quelques idées personnelles d'ajouts/changements/suppressions (pioche dedans si tu aime, laisse sinon) :
- quand on fait evenements > teleport > set destination > le_nom_de_ma_map, il faut cliquer sur un bouton rouge pour accepter. Peut-être devrait-tu mettre un bouton vert, non? (c'est plus intuitif)
Au final y auras surement un vrai bouton ^^. Pour l'instant, c'est juste un placeholder.
- activer le bouton "maximiser"
Comme pour le plein écran, perso je deteste ça. Surtout que ça va foutre la merde comme pas possible xD. Mais j'vais essayer de voir.
- il pourrait être pas mal de pouvoir exporter la map sous forme d'image (par exemple si on veut créer une map en panorama pour un jeu RM et qu'on ne veut pas se faire chier avec gimp2 ou photoshop -> on va sur mapEditor, on crée la map et on l'exporte en image puis on l'importe en background dans rm)
Bonne idée. J'verrais pour faire ça en même temps que pour le binaire de Monos.


PS : juste quelques questions :
- est-ce qu'on peut lancer le jeu? :D
Nope pas dans cette version ^^. J'suis en train de bosser dessus le moteur pour l'instant.
- à quoi sert la deuxième barre d'outils vide en haut? c'est voué à une utilisation future?
Très bonne question xD.
En vrai, c'est surtout que j'ai la flemme de l'enlever, en espérant trouver une idée sur quoi en faire xD.
Mais je pense qu'à terme elle dégagera ^^.


PPS : mais ce scripting, c'est un langage que tu as inventé, ou un standalone intégré, ou un spécifique à cette classe ScriptEngine?
En gros c'est une classe de base de Java, qui permet d’exécuter du code d'un autre langage contenu dans une chaîne de caractère.
L'avantage, c'est que même une fois le programme compiler, je peux continuer à exécuter du code "nouveau".

Si j'arrive à rien avec la mouture actuel, j'partirais surement sur du langage perso, mais pour l'instant c'est du javascript.


Bonne chance ! [/casse-pied]



Merci en tout cas ^^.

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

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

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