Username:

Password:


collapse
Who's Online
  • Dot Invités: 8
  • Dot Caché: 0
  • Dot Membres: 0

There aren't any users online.

* Shoutbox
Refresh History
  • kriss: oui.. je dois faire des demandes pour que google refasse des analyse du site afin de "voir" s'il est tjr malveillant
    Dcembre 08, 2011, 22:47:27
  • Leopold: Cool! Mais Firefox me le déclare toujours malveillant...
    Dcembre 08, 2011, 22:30:32
  • kriss: réouverture du forum !
    Dcembre 06, 2011, 00:48:58
  • Fabien: Coucou facto!! Trop bon de repasser ici :)
    Septembre 25, 2011, 18:06:22
  • Krän: aye ! ^^
    Aot 21, 2011, 23:43:29
  • RPG-Man: lol manu
    Aot 20, 2011, 00:24:00
  • RPG-Man: JE SUIS REVENU MOUHAHA
    Aot 20, 2011, 00:22:26
  • Manucyan: Ca dit quoi un ivrogne dans le noir ? "hé... t'es qui là ?" xd
    Mai 07, 2011, 18:11:20
  • Krän: Il est 2h46 et tout est calme ! :)
    Mai 05, 2011, 01:47:01
  • Manucyan: La tronche du bestiaire ? Un pokédex ! xd
    Avril 30, 2011, 21:18:09
  • Manucyan: désolé je pensais que tout le monde connaissait le phénomène du rickroll (cf wikipédia)
    Avril 30, 2011, 14:08:48
  • kriss: ca merite un ban pour ce lien oO
    Avril 30, 2011, 12:29:51
  • RPG-Man: Sale vilain
    Avril 30, 2011, 11:26:31
  • Krän: Never gonna give u up, never gonna let u dooowwwn ...
    Avril 28, 2011, 20:29:20
  • kriss: en effet mais ce n'est pas normal.. il y a un bug que je dois trouver ^^
    Avril 25, 2011, 10:30:16
  • Leopold: Pour la mise à jour, on peut cliquer sur "Refresh" (deux flèches vertes) ou sur "History" (pendule).
    Avril 22, 2011, 21:31:57
  • RPG-Man: Manque plus qu'elle se mette à jour toute seule quand on ajoute un message et c'est le must !
    Avril 21, 2011, 20:29:39
  • RPG-Man: le shootbox CAY LE BIEN
    Avril 21, 2011, 20:29:14
  • kriss: on appel ca une shootbox :p
    Avril 18, 2011, 16:47:13
  • Manucyan: hé mais c'est marrant !
    Avril 17, 2011, 18:03:46

The Factory » ATELIER » OUTILS DE DEVELOPPEMENT » Kits de jeux » [Pokémon Script Project] Le maplink pour les nuls comme pour les pro-makers !
Pages: [1]
« sujet précédent | | sujet suivant »
Imprimer
Auteur Fil de discussion: [Pokémon Script Project] Le maplink pour les nuls comme pour les pro-makers !  (Lu 770 fois)
Pichou
Forgeron
*
Hors ligne Hors ligne

Messages: 56


Le plus gentil de nous tous :P


Voir le profil
[Pokémon Script Project] Le maplink pour les nuls comme pour les pro-makers !
« le: Mai 01, 2009, 22:47:45 »

[Tutoriel] Le maplink

I - Introduction

      a) Avertissement

L'utilisation de Pokémon Script Project nécessite les connaissance des bases de RM XP, si vous ne les avez pas veuillez les acquérir avant de lire et utiliser ce tutoriel.

      b) Mot de l'auteur

On m'a proposé dans la petite boîte verte au dessus de partager mes connaissance sur PSP, donc me voilà ^O^
Bon tuto !

      b) Le maplink, c'est quoi ? A quoi sert-il ?

Le "maplink" ou "liaison de carte" est utilisé pour produire un effet de grande carte. Le fait d'utiliser cette méthode fait en sorte que le héros reste toujours au centre même si il est en bord de map vu qu'une autre s'y "attache".
Ceux qui ont déjà jouer à Pokémon connaissent en général l'effet produit sinon jouer à une *** et constaté par vous même que le héros se trouve toujours au centre.
Un exemple de jeu qui ne fait pas ce maplink : Zelda. Regardez bien, quand vous arrivez en bout de zone/map vous vous rapprochez du bord de l'écran et hop téléporté en bordure d'une autre zone/map.
Si vous n'avez toujours pas compris regardez des vidéos sur le net.

II - Le maplink en script

   1 - Le système logique

      a) Explications

Chaque carte n'as le droit d'avoir que 4 cartes voisines, 1 de chaque côté seulement !
Une à l'ouest (à gauche), une au nord (en haut), une à l'est (à droite) et une au sud (en bas).
Les cartes ne doivent pas se chevaucher, mais elle peuvent être décalées.
Schèma : [spoiler][/spoiler]

Pour finir, les cartes qui doivent être liées avec celle du centre doivent se chevaucher de 3 lignes/colonnes.
Comme ça : [spoiler]
Map nord (haut) qui doit se liée avec la map centrale :

La map centrale qui doit se liée avec la map nord :

[/spoiler]

      b) Utilisation

Dans les trois lignes identiques à chaque maps il faut mettre les évents de téléports tel que le téléport doit téléporter derrière l'autre téléport sinon le joueur serait retéléporter !
[spoiler]
En bleu et rouge les téléports avec leurs destinations respectives.
Map nord (haut) qui doit se liée avec la map centrale :

La map centrale qui doit se liée avec la map nord :

[/spoiler]
Si vous avez des doutes, véréfiés que le résultats soit tel que :
Résultat :
[spoiler][/spoiler]
Maintenant, la jonction script, très simple si on observe bien !

Code:
jonction_map(n_id, n_x, e_id, e_y, s_id, s_x, o_id, o_y)

Mais que vont donc dire ce charabia ?
Dans l'ordre nous trouvons :
n_id qui signifie ID de la carte NORD, celle que vous voulez mettre au dessus.
n_x signifie le nombre qui corrigera le décalage de carreaux horizontal vu que c'est une carte qu'on attache en haut (n) (vertical)
e_id qui signifie ID de la carte EST, celle que vous voulez mettre à droite.
e_y signifie le nombre qui corrigera le décalage de carreaux vertical vu que c'est une carte qu'on attache à droite (e) (horizontal)
s_id qui signifie ID de la carte SUD, celle que vous voulez mettre en dessous.
s_x signifie le nombre qui corrigera le décalage de carreaux horizontal vu que c'est une carte qu'on attache en bas (s) (vertical)
o_id qui signifie ID de la carte OUEST, celle que vous voulez mettre à droite.
o_y signifie le nombre qui corrigera le décalage de carreaux vertical vu que c'est une carte qu'on attache à gauche (o) (horizontal)

Maintenant que mettre à ses emplacement pour notre exemple ?
Déjà on sait que l'on veut maplinké la carte au dessus, au nord, avec l'autre.
Sachez qu'il faut mettre les coordonnés sur les deux cartes, donc on va commencer par l'évent de la carte centrale.
Event à mettre en processus parallèle sur la map centrale [spoiler]
Donc on va s'intéresse à : n_id, n_x le reste on en à pas besoin vu qu'on maplink avec qu'une carte.
On en est là :

Code:
jonction_map(n_id, n_x, 0, 0, 0, 0, 0, 0)

On va compléter l'ID de la carte NORD.
Il faut relevé cette ID sur le logiciel, en sélectionnant la carte, ici celle qui sera au NORD, et en regardant ici :
[spoiler][/spoiler]
Maintenant, il reste à trouver quoi mettre ici : n_x
Erreur possible de votre part, assez courante : [spoiler]Beaucoup de monde croient qu'il faut mettre le nombre de carreaux de différence en largeur !
Pas besoins d'un screen pour vous dire où trouvez la largeur des maps, soit à côte l'ID en bas de l'écran soit dans les paramètre de la map, clique droit sur le nom de la map, propriété.
Ma map nord fait 50 de largeur et ma map centrale 43. Logiquement, beaucoup diraient il faut mettre -7 pour décalé la map nord vers la droite et faire en sorte "que cela fasse 43 aussi". Mais bizarre : C'est comme même décalé.[/spoiler]
Mais moi, je vais vous démontré le nombre correct à mettre !
Il ne faut pas prendre comme basse la largeur mais la différence entre le bord gauche de la map et jusqu'au dernier carreaux avant les téléports. Et faire pareille sur les deux maps, voici les résultats :
[spoiler]
Map nord :

Map Central :

[/spoiler]
Maintenant une petite opération : 24 - 16 = 8 !
Mais que mettre ? -8 ou 8 pour cela, continuons d'observer : pour aligner la map centrale avec la map nord, il faudrait "retirer" 8 carreaux en partant de la gauche sur la map du dessus ! Il faut mettre -8 !
Le résultat de la fonction dans notre cas est :
Code:
jonction_map(7, -8, 0, 0, 0, 0, 0, 0)
[/spoiler]
Event à mettre en processus parallèle sur la map nord :[spoiler]
Maintenant qu'on à fait la map centrale, donc la sud par rapport à celle-ci.
Il suffit de bien placé l'ID de la map sud qui est déjà reliée. Et de récupéré notre -8 et d'inverse sa valeur : 8.
L'ID de ma map centrale, sud si on ce base sur la map nord, est 8.
Donc s_id = 8 et s_x = 8
Pour ceux qui ne se rappelle plus de la formule :
[spoiler]
Code:
jonction_map(n_id, n_x, e_id, e_y, s_id, s_x, o_id, o_y)
[/spoiler]

Ce qui donne :
Code:
jonction_map(0, 0, 0, 0, 8, 8, 0, 0)

[/spoiler]
   2 - L'utilisation concrète

      a) Un autre exemple concret (1 horizontal / 1 vertical déjà fais au dessus)

En bleu et rouge les téléports avec leurs destinations respectives.
En jaune l'écart entre le bord haut et le dernier carreau avant le premier téléport.
Map ouest (gauche) qui doit se liée avec la map Est (droite).
Récapitulatif des données récoltés en images :
[spoiler][/spoiler]
Pour ceux qui ne se rappelle plus de la formule :
[hide=Spoiler]
Code:
jonction_map(n_id, n_x, e_id, e_y, s_id, s_x, o_id, o_y)
[/hide]
Opération pour la différence de carreaux : 18 - 7 : 11.
ID de ma map Ouest (gauche) : 5
Donc pour l'évent de la map Est (droite) :
Code:
jonction_map(0, 0, 0, 0, 0, 0, 5, 11)

Pourquoi 11 et pas -11 ? Tous simplement sur le même principe, on veut que le chemin se poursuive, dont il faudrait éliminer la hauteur en trop pour que les deux bouts soient en face !
Comme tout à l'heure on inverse, le 11 qui nous donne -11.
On récolte l'ID de la map Est (droite) : 4
Et l'évent pour la map Ouest (gauche) est :
Code:
jonction_map(0, 0, 4, -11, 0, 0, 0, 0) 

Alors c'est si dur le maplink ?

      b) Les différences entre les deux méthodes

Avec le maplink scripté on ne voit pas les évents de l'autre maps, donc un personnage en bordure apparaîtra brusquement et de même pour tous autres évents.
Cependant vous gagnez un gain énorme en temps à ne pas mapper, et vous cassez la tête, 8/9 lignes/colonnes identiques avec l'autre map !
III - Le maplink en évents

   1 - Le système logique

Pour le principe en évents, cela repose sur le fait de mapper 8/9 lignes supplémentaires et identiques à la map où vous allez être téléporté et mettre les évents de téléportations juste avant ces 8/9 lignes pour produire un effet de continue.

   2 - L'utilisation concrète

      a) Un exemple concret (Avenir)

      b) Les différences entre les deux méthodes

Avec le maplink en évents vous perdrez un temps incalculable !
Mais l'avantage vous pouvez placer des évents identiques à ceux de l'autre map pour ne pas avoir l'effet d'apparition brusque, cependant cela surcharge la map en évent, et dans le pire des cas provoquera un lag !
Attention au bug graphique, les autotiles en bordure de maps font comme s'ils continuent alors que sur l'autre map, ça se continue pas forcément, il peut y en avoir d'autre que je ne connais pas.

IV - Les problèmes (Avenir)

      a) Les erreurs de paramétrages, leurs conséquences.
      b) Les incompatibilités avec certains scripts.
      c) Les bugs pouvant se produire...

V - Remerciement, crédit

Mon tutoriel vous a été utile ? Je ne pourrez le vérifier mais si c'est le cas j'aimerais une petite place dans vos crédit ^o^ pour la simple est bonne raison que ce topic m'a pris un temps fou et que ça se trouve sans moi, vous n'y arriveriez pas !

Ce tuto est fait entièrement par moi (et c'est Palbolsky qui corrige les fautes d'orthographes car le côté tutoriel m'a suffisamment passer le temps xx"). Si vous avez des questions n'hésitez pas à me demander.

PS : Encore des erreurs de spoilers, je verrais plus tard, désolé, je l'ai déjà bien retapé à cause des balises qui ne sont pas les même que sur PSP.
« Dernière édition: Mai 02, 2009, 08:09:39 par Pichu65 » Journalisée


Rpg Maker XP fonctionel sous Ubuntu (Linux) !
Fullmetal
Chronomachine humainoïde, stade 17
Machiniste
*
Hors ligne Hors ligne

Messages: 353


Je préfère être bon à rien que mauvais à tout.

neil.84@hotmail.fr
Voir le profil
Re : [Pokémon Script Project] Le maplink pour les nuls comme pour les pro-makers !
« Répondre #1 le: Mai 02, 2009, 08:55:24 »

Très bon tuto, le PSP continue de m'impressionner.
Ca servira surement à ceux qui font des jeux pokemon, mais le principe est sympa pour n'importe que jeu de tout façon.

En tout cas bravo pour ton tuto!
Journalisée
kriss
Architecte
Savant
*
Hors ligne Hors ligne

Messages: 4447


Don Quichotte de l'orthographe

krisss666@msn.com
Voir le profil Courriel
Re : [Pokémon Script Project] Le maplink pour les nuls comme pour les pro-makers !
« Répondre #2 le: Mai 02, 2009, 09:31:36 »

Je déplace dans la section où est classé le Pokemon Script Project car pour le moment nous n'avons pas de script "maplink".
En effet le systeme est interessant voir meme utilisable par tous, mais si on a pas le script ca risque d'etre dur  xd.

Bon tuto dans l'ensemble, je te fais confiance pour remettre de l'ordre dans les balises et merci pour ton partage.
Boen qu'il existe un forum dédié à PSP, c'est bien d'avoir quelques astuces ici pour montrer tout le potentiel de ce script ;)
Journalisée

La plus vieille et la plus forte des émotions humaines est la peur, et la plus vieille et la plus forte peur est celle de l'inconnue
- H.P LOVECRAFT -
Projet en cours: MONOLITHE
http://rpgmakerxp-factory.net/forum/index.php?topic=10561.0
Pichou
Forgeron
*
Hors ligne Hors ligne

Messages: 56


Le plus gentil de nous tous :P


Voir le profil
Re : [Pokémon Script Project] Le maplink pour les nuls comme pour les pro-makers !
« Répondre #3 le: Mai 02, 2009, 10:32:05 »

Sur que c'ets utilisable pour plein de jeu, mais je ne suis pas  scripteur donc je vous donne le script de Krosk et vous voyez ce que vous pouvez en faire si vous voulez.
[spoiler]
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, 640, 480)
      @viewport2 = Viewport.new(0, 0, 640, 480)
      @viewport3 = Viewport.new(0, 0, 640, 480)
      @viewportc = Viewport.new(0, 0, 640, 480)
      @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
[/spoiler]

Je sais aussi que dans le script résumé/interrupteur : config panel, on trouve ceci :
Code:
  # --------------------------------------------------------
  # MAPLINK
  #   - Permet d'activer la jonction des maps (plus de lag, mais meilleur
  #     effet visuel)
  #     Inclure sur chaque map la fonction jonction_map décrite dans Interpreter
  # --------------------------------------------------------
  MAPLINK = true
 
  # --------------------------------------------------------
  # _MAPLINK
  #   - $game_switches[4]
  # --------------------------------------------------------
  # Ne pas modifier
  def self._MAPLINK
    if $game_switches[4] == nil
      return false
    end
    return $game_switches[4]
  end
 
  def self._MAPLINK=(value)
    $game_switches[4] = value
  end
Qu'il faudrait mettre je ne sais où, en gros soit vous activé/désactive l'interrupteur 4 pour le active/désactiver le maplink, soit vous changez la valeur par script ou par évent avec insertion de script avec  "MAPLINK = true" ou "MAPLINK = false".

Merci de vos commentaire ^^

Je compléterais les parties vides à patir de minimum samedi prochain. J'ai vaguement regardez les tutos qu'on peut trouver ici, les présentations pour beaucoup sont pas terrible :s

Sachez aussi que j'hésite à faire la partie maplink en évent donc pour tous les jeux, pas besoins de script, car elle est très galère cette méthode et donc longue et présene des incomvéniant, vous vous voyez vous mapper 9 lignes identiques de la map à "maplinké" =_="
« Dernière édition: Mai 02, 2009, 10:35:15 par Pichu65 » Journalisée


Rpg Maker XP fonctionel sous Ubuntu (Linux) !
le6barbare
Panda !!
Factorien
Machiniste
*
Hors ligne Hors ligne

Messages: 328


Niouf !?


Voir le profil WWW
Re : [Pokémon Script Project] Le maplink pour les nuls comme pour les pro-makers !
« Répondre #4 le: Mai 10, 2009, 08:49:44 »

Bonjour ^^

tout d'abord, bon tuto ;)
un bon gros pavé qui explique bien, comme on aime :P

ensuite, voilà : Script du Maplink pour tout les autres jeux

bye ^^
l6barbare
Journalisée


Pichou
Forgeron
*
Hors ligne Hors ligne

Messages: 56


Le plus gentil de nous tous :P


Voir le profil
Re : [Pokémon Script Project] Le maplink pour les nuls comme pour les pro-makers !
« Répondre #5 le: Mai 13, 2009, 13:17:46 »

Chez nous PSPistes (enfin, les bons membres quoi !) on fait toujours des gros pavés le mieux expliqué possible, en plus mon pavé là, il va être mit dans le manuel de PSP à Krosk  :) :)


Euh dites moi si la partie malplink en évent vous intéresse car moi j'éprouve une flemme et un manque de temps immense pour faire un tel truc aussi galère, surtout que maintenant le script est adapté donc plus besoin  :p et personne me la réclame donc bon ^^'

Edit : Ayant arrêté RM XP, je ne mettrais jamais à jour le tutoriel et les parties vides, si quelqu'un se lance dedans, ça serais tant mieux ^^"

Il y a des bugs j'en ai plus trop souvenir xO, et la méthode évent vaux mieux laissé tomber.
« Dernière édition: Juin 28, 2009, 21:53:28 par Pichu65 » Journalisée


Rpg Maker XP fonctionel sous Ubuntu (Linux) !
kriss
Architecte
Savant
*
Hors ligne Hors ligne

Messages: 4447


Don Quichotte de l'orthographe

krisss666@msn.com
Voir le profil Courriel
Re : [Pokémon Script Project] Le maplink pour les nuls comme pour les pro-makers !
« Répondre #6 le: Juin 29, 2009, 09:55:06 »

Je pense que la version script est largement nécessaire :)
Journalisée

La plus vieille et la plus forte des émotions humaines est la peur, et la plus vieille et la plus forte peur est celle de l'inconnue
- H.P LOVECRAFT -
Projet en cours: MONOLITHE
http://rpgmakerxp-factory.net/forum/index.php?topic=10561.0
le6barbare
Panda !!
Factorien
Machiniste
*
Hors ligne Hors ligne

Messages: 328


Niouf !?


Voir le profil WWW
Re : [Pokémon Script Project] Le maplink pour les nuls comme pour les pro-makers !
« Répondre #7 le: Juin 29, 2009, 17:51:15 »

Oui, mais au passage... j'ai oublier de dire... mais... cette version a des bugs 
principalement si on laisse la possibillité au héros d'aller au coins des maps

donc, seul correction possible :
soit on s'arrange pour que le joueur ne puisse pas aller dans les coins, comme sur les maps pokémon
soit quelqu'un code une commande plus complete incluant les maps haut-gauche, haut-droit, bas-gauche, et bas-droit
chose sur laquelle je vais me pencher pendant ces vacance d'été  ^^
Journalisée


Pichou
Forgeron
*
Hors ligne Hors ligne

Messages: 56


Le plus gentil de nous tous :P


Voir le profil
Re : Re : [Pokémon Script Project] Le maplink pour les nuls comme pour les pro-makers !
« Répondre #8 le: Juin 29, 2009, 18:03:27 »

Citation de: le6barbare le Juin 29, 2009, 17:51:15
Oui, mais au passage... j'ai oublier de dire... mais... cette version a des bugs 
principalement si on laisse la possibillité au héros d'aller au coins des maps

donc, seul correction possible :
soit on s'arrange pour que le joueur ne puisse pas aller dans les coins, comme sur les maps pokémon
soit quelqu'un code une commande plus complete incluant les maps haut-gauche, haut-droit, bas-gauche, et bas-droit
chose sur laquelle je vais me pencher pendant ces vacance d'été  ^^
Arrête de dire des conneries  wow

Ce n'est pas un bug ! Le style pokémon, est qu'il ne faut que le joueur reste au centre et aucun déplacement en diagonal ! C'est tous à faire normal de devoirs s'arranger que le joueur ne puisse aller au bord.

Mais pour vos jeux, programmés le de la manière que vous voulez Lol, mais je ne vous dis pas le délire ...
Journalisée


Rpg Maker XP fonctionel sous Ubuntu (Linux) !
le6barbare
Panda !!
Factorien
Machiniste
*
Hors ligne Hors ligne

Messages: 328


Niouf !?


Voir le profil WWW
Re : Re : Re : [Pokémon Script Project] Le maplink pour les nuls comme pour les pro-makers !
« Répondre #9 le: Juin 29, 2009, 18:25:30 »

Citation de: Pichu65 le Juin 29, 2009, 18:03:27
Citation de: le6barbare le Juin 29, 2009, 17:51:15
Oui, mais au passage... j'ai oublier de dire... mais... cette version a des bugs 
principalement si on laisse la possibillité au héros d'aller au coins des maps

donc, seul correction possible :
soit on s'arrange pour que le joueur ne puisse pas aller dans les coins, comme sur les maps pokémon
soit quelqu'un code une commande plus complete incluant les maps haut-gauche, haut-droit, bas-gauche, et bas-droit
chose sur laquelle je vais me pencher pendant ces vacance d'été  ^^
Arrête de dire des conneries  wow

Ce n'est pas un bug ! Le style pokémon, est qu'il ne faut que le joueur reste au centre et aucun déplacement en diagonal ! C'est tous à faire normal de devoirs s'arranger que le joueur ne puisse aller au bord.

Mais pour vos jeux, programmés le de la manière que vous voulez Lol, mais je ne vous dis pas le délire ...

oui, enfin, bref, je me comprend !
après, c'est sur qu'il faut utiliser le style pokémon  ^^

mais j'avait d'en l'idée d'un style mélangeant rtp et Maplink, dans le sens ou les map était mappé comme des rtp ( donc, "naturellement ) mais que le maplink permettait d'avoir une seul grande map.
et vu comme ça, le truc que j'ai cité peut etre considéré comme un bug

c'était au cas ou, sachant que beaucoup de maker son toujours a la recherche de nouveaux truc original ^^
Journalisée


Pages: [1]
Imprimer
« sujet précédent | | sujet suivant »
Aller à:  


Powered by SMF 1.1.15 | SMF © 2006-2009, Simple Machines

EN Theme by Nati

Page générée en 0.118 secondes avec 25 requêtes.
Chargement...
SimplePortal 2.3.2 © 2008-2010, SimplePortal