Sujet n°11722
Posté par The Shaady le 13 Juil - 15:38 (2012)
Titre : Problème de taille avec PSP DS
Bonjour à tous,

Cette fois-ci mon problème concerne tout simplement un problème de "rentrage" quand je joue à mon projet, voez par vous-même :



Vous voyez bien que normalement je peux encore continuer à droite après la table, et bien quand je joue, je suis bloqué! Je ne peux pas aller à droite, enfin si , mon perso y va mais mon écran reste bloqué, un peu comme le MAPLINK. Imbécile heureux

Que dois-je faire?

Merci Imbécile heureux

Posté par Seusyn le 13 Juil - 15:49 (2012)
C'est le Maplink de psp ds qui est activer je pense.

Posté par Elric le 13 Juil - 15:50 (2012)
Il ne faut pas faire ce que tu as fait.

Prévoit toujours un cardre noir sur ta map (5 à 6 cases). Maintenant rajoute 12 carreaux en "x" et en "y" dans les propriétés de ta map, puis centre là et enfin, remplis le vide en noir (il y a toujours un tile noir dans un tileset).

Posté par The Shaady le 13 Juil - 15:56 (2012)
Merci les mecs ! Imbécile heureux

Et pour l'extérieur, vu que mes maps seront grandes, devrais-je laisser du noir aussi ou pas? Si ça m'arrive encore pour l'extérieur que faire ?

Merci! Imbécile heureux

Posté par Elric le 13 Juil - 16:02 (2012)
Non ! L'extérieur tu empêche le héros d'aller vers les bord grâce aux arbres ! Et pour les routes tu les dessines normalement et tu actives le Maplink.

Posté par The Shaady le 13 Juil - 16:08 (2012)
Aaaaah, le fameux MAPLINK que j'ai jamais compris avec la jonction des MAPS :( J'en ai des choses à apprendre mais si tu as des astuces pour la jonction des MAPS, fais m'en pars, et encore merci, ton aide m'a été grandement utile!

Posté par Elric le 13 Juil - 16:11 (2012)
Pour le Maplink :manuel: si tu n'arrive pas à y accéder directement (comme moi) j'ai une astuce que je te communiquerai par MP.

Posté par The Shaady le 13 Juil - 16:15 (2012)
J'y arrive mais malgré ma lecture fréquente de ce chapitre, je n'y comprends toujours rien, enfin presque, n'hésite pas à me MP pour l'astuce Imbécile heureux

Posté par Elric le 13 Juil - 16:28 (2012)
Autant le faire ici :

- Tu prends ta première map, tu copies 3 lignes de celle-ci
- Tu crées un évent de téléportation sans fondu vers la seconde map, tu le place sur la seconde ligne (celle du milieu). L'event doit te téléporter également vers la seconde ligne collée de l'autre map (je sais pas si tu m'as compris).
- Tu prends ta seconde map, tu crées un event de téléportation sur la dernière ligne de la map, sans fondu, qui t'emmene vers la son équivalent dans la première map.
- Tu créé un autre évent, en procéssus parallèle, qui insère le script :
Code:
jonction_map(n_id, n_x, e_id, e_y, s_id, s_x, o_id, o_y)


où n_id est l'id de la map nord par rapport à celle où tu es, quand à n_x c'est la différence entre le coin supérieur gauche de la map où tu te trouves, et le coin inférieur gauche de la map au nord !

C'est tout bête comme truc :rondoudah:

Posté par The Shaady le 13 Juil - 16:57 (2012)
D'accord et si c'est la map sud (puisque peut-être n'y aura t'il rien au Nord :p ) je met quoi? Et e_id, e_y, etc ... ne servent à rien?

Merci Imbécile heureux

EDIT : Ah ok pour le sud, ce sera s_id, etc ..., et qu'entends-tu par "prendre 3 lignes"? Imbécile heureux

Et faut-il activer le MAPLINK? Si oui, sur quelle map? celleoù l'on est ou celle où on applique la jonction?

Posté par Elric le 13 Juil - 17:10 (2012)
Prendre 3 lignes : J'entends prendre l'outil "Sélection" en haut (à coté du pot de peinture), sélectionner 3 lignes, les copier, les coller sur ton autre map. L'idée c'est d'avoir 3 lignes en commun entre les deux maps.

Activer le Maplink : Pour faire simple, tu créé un event (démarrage auto) où tu actives l'interrupteur 0004 (je crois) MAPLINK; puis tu fais effacer cet événement. Mais quand ton jeu sera fini, je te conseille vivement de l'activer dans l'event de l'intro.

Voili voilou !

EDIT: L'event du MAPLINK en processus parallèle tu l'appliques sur les deux maps (celle du nord et du sud) !

Posté par The Shaady le 13 Juil - 17:14 (2012)
Ah, d'accord, et l'ID de la MAP, tu le vois où? C'est le petit nombre entre crochet que l'on doit écrire? où c'est quand on créé la MAP, genre MAP0056?

EDIT: Undefined error ("jonction_map.., etc...")

Posté par Elric le 13 Juil - 17:27 (2012)
C'est MAP0056 Par exemple.

Posté par The Shaady le 13 Juil - 17:30 (2012)
Merci, je me débrouillerai, encore merci Imbécile heureux

Posté par Nuri Yuri le 13 Juil - 17:34 (2012)
Il n'y a pas de map Link sur PSP DS.

Posté par The Shaady le 13 Juil - 17:35 (2012)
D'accord et comment fait-on une jonction? Imbécile heureux

Posté par Nuri Yuri le 13 Juil - 17:36 (2012)
Tu la fais toi même comme un grand dans l'éditeur :b

Posté par The Shaady le 13 Juil - 17:41 (2012)
C'est à dire avec le script "jonction_map"? Ou pas besoin? Imbécile heureux

Merci Imbécile heureux

Posté par Nuri Yuri le 13 Juil - 17:42 (2012)
Sans, tu dessine les jonctions sur ta map.

Posté par The Shaady le 13 Juil - 17:45 (2012)
J'aime ne pas utiliser cette commande <3, c'est à dire que je fais comme à dis Elmic, je copies 3 lignes de ma MAP et je colle dans l'autre map et je fais juste une téléportation sans fondu? Imbécile heureux

Si oui, c'est ok, mais si une map fait 30 de largeur et l'autre 40, comment je fais?

Merci encore Imbécile heureux

Posté par Elric le 13 Juil - 19:29 (2012)
Avec jonction_map tu mets l'id et pour x tu mets 10 (ou -10).

Posté par The Shaady le 13 Juil - 20:06 (2012)
Mais Yuki a dit qu'il n'y avait pas de jonction de map :p Que faire? ^^

Posté par Elric le 13 Juil - 20:17 (2012)
Tu vas me faire confiance un peu ?

Posté par Zion le 13 Juil - 20:19 (2012)
DEBUTAAAANTS! Ban de cons y'a pas de maplink sur PSP DS! Alors essaye ta jonction et vois comment ton jeu réagit 42

Posté par The Shaady le 13 Juil - 20:26 (2012)
Elric je te fais confiance mais la jonction ne marche pas. Mais pas de problèmes, j'apprendrai de moi-même, merci quand même Imbécile heureux

SoulStorm, pas gentil, pas beau, méchant

Posté par Elric le 13 Juil - 20:59 (2012)
SoulStorm2036 a écrit:
DEBUTAAAANTS! Ban de cons y'a pas de maplink sur PSP DS! Alors essaye ta jonction et vois comment ton jeu réagit 42


Alors pourquoi le script existe ?

Script MAPLINK sur PSP DS

Code:
#==============================================================================
# ■ MAPLINK
# Pokemon Script Project - Krosk
# 19/01/08
#-----------------------------------------------------------------------------
# Scène à ne pas modifier de préférence
#-----------------------------------------------------------------------------
# Gestion de jonction de cartes
#-----------------------------------------------------------------------------
if POKEMON_S::MAPLINK 
  class Spriteset_Map
    def initialize
      @viewport1 = Viewport.new(0, 0, 269, 205)
      @viewport2 = Viewport.new(0, 0, 269, 432)
      @viewport3 = Viewport.new(0, 0, 269, 205)
      @viewportc = Viewport.new(0, 0, 269, 205)
      @viewportc.z = 2
     
      @viewport2.z = 200
      @viewport3.z = 5000
   
      @viewportlink1 = Viewport.new(0, -240, 640, 240)
      @viewportlink1.z = 1
      @viewportlink2 = Viewport.new(640, 0, 320, 480)
      @viewportlink2.z = 1
      @viewportlink3 = Viewport.new(0, 480, 640, 240)
      @viewportlink3.z = 1 
      @viewportlink4 = Viewport.new(-320, 0, 320, 480)
      @viewportlink4.z = 1
     
      # Bordures 1
      if $map_link[1] != nil and $map_link[1][0] != 0
        @tilemaplink1 = Tilemap.new(@viewportlink1)
        map = load_data(sprintf("Data/Map%03d.rxdata", $map_link[1][0]))
        tileset = $data_tilesets[map.tileset_id]
        tileset_name = tileset.tileset_name
        @tilemaplink1.tileset = RPG::Cache.tileset(tileset.tileset_name)
        for i in 0..6
          autotile_name = tileset.autotile_names[i]
          @tilemaplink1.autotiles[i] = RPG::Cache.autotile(autotile_name)
        end
        @tilemaplink1.map_data = map.data
        @tilemaplink1.priorities = tileset.priorities
        @tilemaplink1.oy = map.height * 32 - 240 - 96# + $game_map.display_y / 4
      else
        @tilemaplink1 = Plane.new(@viewportlink1)
        @tilemaplink1.bitmap = RPG::Cache.picture("black.png")
      end
     
      # Bordures 2
      if $map_link[2] != nil and $map_link[2][0] != 0
        @tilemaplink2 = Tilemap.new(@viewportlink2)
        map = load_data(sprintf("Data/Map%03d.rxdata", $map_link[2][0]))
        tileset = $data_tilesets[map.tileset_id]
        tileset_name = tileset.tileset_name
        @tilemaplink2.tileset = RPG::Cache.tileset(tileset.tileset_name)
        for i in 0..6
          autotile_name = tileset.autotile_names[i]
          @tilemaplink2.autotiles[i] = RPG::Cache.autotile(autotile_name)
        end
        @tilemaplink2.map_data = map.data
        @tilemaplink2.priorities = tileset.priorities
        @tilemaplink2.ox = 96
      else
        @tilemaplink2 = Plane.new(@viewportlink2)
        @tilemaplink2.bitmap = RPG::Cache.picture("black.png")
      end
     
      # Bordures 3
      if $map_link[3] != nil and $map_link[3][0] != 0
        @tilemaplink3 = Tilemap.new(@viewportlink3)
        map = load_data(sprintf("Data/Map%03d.rxdata", $map_link[3][0]))
        tileset = $data_tilesets[map.tileset_id]
        tileset_name = tileset.tileset_name
        @tilemaplink3.tileset = RPG::Cache.tileset(tileset.tileset_name)
        for i in 0..6
          autotile_name = tileset.autotile_names[i]
          @tilemaplink3.autotiles[i] = RPG::Cache.autotile(autotile_name)
        end
        @tilemaplink3.map_data = map.data
        @tilemaplink3.priorities = tileset.priorities
        @tilemaplink3.oy = 96
      else
        @tilemaplink3 = Plane.new(@viewportlink3)
        @tilemaplink3.bitmap = RPG::Cache.picture("black.png")
      end
     
      # Bordures 4
      if $map_link[4] != nil and $map_link[4][0] != 0
        @tilemaplink4 = Tilemap.new(@viewportlink4)
        map = load_data(sprintf("Data/Map%03d.rxdata", $map_link[4][0]))
        tileset = $data_tilesets[map.tileset_id]
        tileset_name = tileset.tileset_name
        @tilemaplink4.tileset = RPG::Cache.tileset(tileset.tileset_name)
        for i in 0..6
          autotile_name = tileset.autotile_names[i]
          @tilemaplink4.autotiles[i] = RPG::Cache.autotile(autotile_name)
        end
        @tilemaplink4.map_data = map.data
        @tilemaplink4.priorities = tileset.priorities
        @tilemaplink4.ox = map.width * 32 - 320 - 96
      else
        @tilemaplink4 = Plane.new(@viewportlink4)
        @tilemaplink4.bitmap = RPG::Cache.picture("black.png")
      end
   
      @tilemap = Tilemap.new(@viewport1)
      @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
      for i in 0..6
        autotile_name = $game_map.autotile_names[i]
        @tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
      end
      @tilemap.map_data = $game_map.data
      @tilemap.priorities = $game_map.priorities
     
      @panorama = Plane.new(@viewportc)
      @panorama.z = -1000
     
      @fog = Plane.new(@viewportc)
      @fog.z = 3000     
      @character_sprites = []
     
      for i in $game_map.events.keys.sort
        sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
        @character_sprites.push(sprite)
      end
      @character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
     
      @weather = RPG::Weather.new(@viewportc)
     
      @picture_sprites = []
      for i in 1..50
        @picture_sprites.push(Sprite_Picture.new(@viewport2,
          $game_screen.pictures[i]))
      end
     
      @timer_sprite = Sprite_Timer.new
     
      if POKEMON_S::_MAPLINK != nil and POKEMON_S::_MAPLINK == false
        @viewportlink1.visible = false
        @viewportlink2.visible = false
        @viewportlink3.visible = false
        @viewportlink4.visible = false
      end
     
      update
    end
    #--------------------------------------------------------------------------
    # ● 解放
    #--------------------------------------------------------------------------
    def dispose
      @tilemap.tileset.dispose
      for i in 0..6
        @tilemap.autotiles[i].dispose
      end
      @tilemap.dispose
      # パノラマプレーンを解放
      @panorama.dispose
      # フォグプレーンを解放
      @fog.dispose
      # キャラクタースプライトを解放
      for sprite in @character_sprites
        sprite.dispose
      end
      # 天候を解放
      @weather.dispose
      # ピクチャを解放
      for sprite in @picture_sprites
        sprite.dispose
      end
      # タイマースプライトを解放
      @timer_sprite.dispose
      # ビューポートを解放
      @viewport1.dispose
      @viewport2.dispose
      @viewport3.dispose
      @viewportc.dispose
      @viewportlink1.dispose
      @viewportlink2.dispose
      @viewportlink3.dispose
      @viewportlink4.dispose
    end
    #--------------------------------------------------------------------------
    # ● フレーム更新
    #--------------------------------------------------------------------------
    def update
      # パノラマが現在のものと異なる場合
      if @panorama_name != $game_map.panorama_name or
         @panorama_hue != $game_map.panorama_hue
        @panorama_name = $game_map.panorama_name
        @panorama_hue = $game_map.panorama_hue
        if @panorama.bitmap != nil
          @panorama.bitmap.dispose
          @panorama.bitmap = nil
        end
        if @panorama_name != ""
          @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
        end
        Graphics.frame_reset
      end
      # フォグが現在のものと異なる場合
      if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
        @fog_name = $game_map.fog_name
        @fog_hue = $game_map.fog_hue
        if @fog.bitmap != nil
          @fog.bitmap.dispose
          @fog.bitmap = nil
        end
        if @fog_name != ""
          @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
        end
        Graphics.frame_reset
      end
     
      @tilemap.ox = $game_map.display_x / 4
      @tilemap.oy = $game_map.display_y / 4
      @tilemap.update
   
      xo = [$game_player.real_x/4 - 320 + 16, 0].min
      yo = [$game_player.real_y/4 - 240 + 16, 0].min
      xd = [320 + 16 - ($game_map.width * 32 - $game_player.real_x/4), 0].max
      yd = [240 + 16 - ($game_map.height * 32 - $game_player.real_y/4), 0].max
      #@viewport1.rect = Rect.new(-xo - xd, - yo - yd, 640 + xo, 480 + yo)
     
      @viewportlink1.rect.y = -240-yo
      if yo != 0
        if $map_link[1] != nil and $map_link[1][0] != 0
          @tilemaplink1.ox = $game_map.display_x / 4 - $map_link[1][1] * 32
          @tilemaplink1.update
        end
        @viewportlink1.update
      end
     
      @viewportlink2.rect.x = 640-xd
      if xd != 0
        if $map_link[2] != nil and $map_link[2][0] != 0
          @tilemaplink2.oy = $game_map.display_y / 4 - $map_link[2][1] * 32
          @tilemaplink2.update
        end
        @viewportlink2.update
      end
     
      @viewportlink3.rect.y = 480-yd
      if yd != 0
        if $map_link[3] != nil and $map_link[3][0] != 0
          @tilemaplink3.ox = $game_map.display_x / 4 - $map_link[3][1] * 32
          @tilemaplink3.update
        end
        @viewportlink3.update
      end
     
      @viewportlink4.rect.x = -320 - xo
      if xo != 0
        if $map_link[4] != nil and $map_link[4][0] != 0
          @tilemaplink4.oy = $game_map.display_y / 4 - $map_link[4][1] * 32
          @tilemaplink4.update
        end
        @viewportlink4.update
      end
   
      # パノラマプレーンを更新
      @panorama.ox = $game_map.display_x / 8
      @panorama.oy = $game_map.display_y / 8
      # フォグプレーンを更新
      @fog.zoom_x = $game_map.fog_zoom / 100.0
      @fog.zoom_y = $game_map.fog_zoom / 100.0
      @fog.opacity = $game_map.fog_opacity
      @fog.blend_type = $game_map.fog_blend_type
      @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
      @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
      @fog.tone = $game_map.fog_tone
      # キャラクタースプライトを更新
      for sprite in @character_sprites
        sprite.update
      end
      # 天候グラフィックを更新
      @weather.type = $game_screen.weather_type
      @weather.max = $game_screen.weather_max
      @weather.ox = $game_map.display_x / 4
      @weather.oy = $game_map.display_y / 4
      @weather.update
      # ピクチャを更新
      for sprite in @picture_sprites
        sprite.update
      end
      # タイマースプライトを更新
      @timer_sprite.update
      # 画面の色調とシェイク位置を設定
      @viewportc.tone = $game_screen.tone
      @viewport1.ox = $game_screen.shake
      # 画面のフラッシュ色を設定
      @viewport3.color = $game_screen.flash_color
      # ビューポートを更新
      @viewport1.update
      @viewport3.update
      @viewportc.update
    end
  end

  class Game_Map
    def scroll_down(distance)
      if POKEMON_S::_MAPLINK != nil and POKEMON_S::_MAPLINK
        @display_y = @display_y + distance
      else
        @display_y = [@display_y + distance, (self.height - 15) * 128].min
      end
    end
   
    def scroll_left(distance)
      if POKEMON_S::_MAPLINK != nil and POKEMON_S::_MAPLINK
        @display_x = @display_x - distance
      else
        POKEMON_S::_MAPLINK = false
        @display_x = [@display_x - distance, 0].max
      end
    end
   
    def scroll_right(distance)
      if POKEMON_S::_MAPLINK != nil and POKEMON_S::_MAPLINK
        @display_x = @display_x + distance
      else
        POKEMON_S::_MAPLINK = false
        @display_x = [@display_x + distance, (self.width - 20) * 128].min
      end
    end
   
    def scroll_up(distance)
      if POKEMON_S::_MAPLINK != nil and POKEMON_S::_MAPLINK
        @display_y = @display_y - distance
      else
        POKEMON_S::_MAPLINK = false
        @display_y = [@display_y - distance, 0].max
      end
    end
  end
 
  class Game_Player < Game_Character
    def center(x, y)
      if POKEMON_S::_MAPLINK != nil and POKEMON_S::_MAPLINK
        $game_map.display_x = x * 128 - CENTER_X
        $game_map.display_y = y * 128 - CENTER_Y
      else
        max_x = ($game_map.width - 20) * 128
        max_y = ($game_map.height - 15) * 128
        $game_map.display_x = [0, [x * 128 - CENTER_X, max_x].min].max
        $game_map.display_y = [0, [y * 128 - CENTER_Y, max_y].min].max       
      end
    end
  end
 

 
  class Interpreter
    # ------------------------------------------------------
    # jonction_map(N_id, N_x, E_id, E_y, S_id, S_x, O_id, O_y)
    # ------------------------------------------------------
    def jonction_map(n_id = 0, n_x = 0, e_id = 0, e_y = 0, s_id = 0, s_x = 0, o_id = 0, o_y = 0)
      if $map_link == nil
        $map_link = {}
      end
      $map_link[1] = [n_id, n_x]
      $map_link[2] = [e_id, e_y]
      $map_link[3] = [s_id, s_x]
      $map_link[4] = [o_id, o_y]
    end
   
    def command_201
      if $game_temp.in_battle
        return true
      end
      if $game_temp.player_transferring or
         $game_temp.message_window_showing or
         $game_temp.transition_processing
        return false
      end
      $game_temp.player_transferring = true
      if @parameters[0] == 0
        $game_temp.player_new_map_id = @parameters[1]
        $game_temp.player_new_x = @parameters[2]
        $game_temp.player_new_y = @parameters[3]
        $game_temp.player_new_direction = @parameters[4]
      else
        $game_temp.player_new_map_id = $game_variables[@parameters[1]]
        $game_temp.player_new_x = $game_variables[@parameters[2]]
        $game_temp.player_new_y = $game_variables[@parameters[3]]
        $game_temp.player_new_direction = @parameters[4]
      end
      jonction_map
      @index += 1
      if @parameters[5] == 0
        Graphics.freeze
        $game_temp.transition_processing = true
        $game_temp.transition_name = ""
      end
      return false
    end
  end
else
  class Interpreter
    def jonction_map(n_id = 0, n_x = 0, e_id = 0, e_y = 0, s_id = 0, s_x = 0, o_id = 0, o_y = 0)
      print("MAPLINK est désactivé.")
      POKEMON_S::_MAPLINK = false
    end
   
    def desactiver_maplink
      POKEMON_S::_MAPLINK = false
    end
   
    def activer_maplink
      POKEMON_S::_MAPLINK = true
    end
  end
end


Posté par The Shaady le 13 Juil - 21:03 (2012)
Elric, si ma MAP fait 23 de largeur et 30 de hauteur, et l'autre 40 de largeur et 35 de hauteur mais qu'elle se situe a l'est alors le e_x est égal à 0 et e_y est 5?

Posté par Elric le 13 Juil - 21:13 (2012)
Je crois que SoulStorm a raison ! Le Maplink ne fonctionne pas sur PSP DS. Je vais essayer une dernière chose.

ps: Il n'y a pas de e_x ?! pour l'est il y a e_id, e_y et l'ouest o_id, o_y

Posté par The Shaady le 13 Juil - 21:18 (2012)
Ah, donc pas besoin de MAPLINK, comment faire la jonction alors?

Posté par Elric le 13 Juil - 21:22 (2012)
Tu mets 6 ou 7 lignes en commun et tu téléporte dans la ligne équivalente.

Je te conseille de mettre 8 lignes et faire ce qui suit p'tet que ça va marcher (exemple sud -> nord)
- Compter 4 lignes du haut de la map sud
- Faire la téléportation vers la 5e ligne en partant du bas de la map.

Essaie et dis moi si c'est bon Clin d'œil foireux

Posté par The Shaady le 13 Juil - 21:24 (2012)
Nice, j'essaierai demain, encore merci beaucoup pour ta grande aide Imbécile heureux