Saga_fire
Nombre de messages : 12 Age : 36 Projet Principal : Secret Aide Recherchée pour : Characters/Battlers nouveaux Date d'inscription : 19/05/2007
| Sujet: Naviguer en bateau sur une Map Monde sans changer de Map Mar 29 Mai - 7:42 | |
| Salut Voici un script où l'on a pas besoin (ou presque pas) de se prendre la tête pour entrer dans un bateau sur votre Map Monde (ou ailleur remarquez). Le script est à placer au dessus de main en le nommant comme vous voulez. J'ai mis les instructions pour s'en servir et un petit tutorial dans les commentaires en haut et j'aimerais bien que si vous passez sur cet page, que vous me fassiez une critique sur le l'explicité du tutorial. Voilà et merci. - Code:
-
#============================================================================== # ** Bateau # Auteur : Saga_fire l'idée de cypherzero. =begin Utilisation : Avant toute chose, allez dans base de donnée, gestion des chipset et mettez à votre chipset corresmondant à celui de votre map votre titleset (ou autotitle) d'eau peu profonde a passable (c'est à dire qu'il doit y avoir un rond) et au terrain 7 et celle d'eau profonde à passable aussi et au terrain 6. Il y a un titleset (ou autotitle) de transition (il faut que ce soit de la terre) à mettre à passable, au terrain 1, à placer entre l'eau de terrain 7 et le la terre de terrain 0, 2, 3, 4 ou 5 pour que le bateau ne puisse par aller sur la terre. N'allez pas trop loin avec ce tiltleset (ou autotitle) de transition car son utilité est de laisser les évennements se déplacer. En effet, si un évennement est sur ce titleset (ou autotitle) de transition, celui-ci bougera sur lui-même sans se déplacer.
Pour monter dans un bateau, faites un évennement appelez le script bateau par la commande $game_temp.isinboat = 1 ou $game_temp.isinboat = 2 selon vos besoins et transformer votre héros en bateau (évidement, il faut avoir le character de bateau) tout en le téléportant sur l'eau. Pour descendre du bateau, faites le processus inverse avec $game_temp.isinboat = 0.
Pour ceux qui ne saurait pas du tout comment s'en servir, je donne un petit tutorial de ce que vous pouvez faire (ce n'est pas la seul solution). 1) Creez un évennement sur l'eau (à coté d'un titleset de transition) en le nommant "bateau" qui s'activera par un interrupteur que vous nommerez "bateau" (cet interrupteur servira à déclancher le moment où vous aurez besoin du bateau donc il n'est pas obligatoire pour CET évennement) avec pour apparence le character d'un bateau. 2) L'évennement que vous allez créer servira à embarquer sur le bateau au moment où vous en aurez besoin dans l'avanture et de débarquer sur le même lieu d'embarquement. Creez un autre évennement sur terrre (sur un titleset de transition) près du bateau que vous apellerez "1er embarquement". Cet évennement sera sans apparance. Maintenant, dans cet évennement, 1 mettez une première condition 'si interrupteur "bateau" activé' 2 mettez dans cette condition une seconde condition 'si script "$game_temp.isinboat == 0' et à l'intérieur, 3 faites 'Déplacer/Modifier un évennement...' et modifiez au héros son opacité à 0, son apparance en bateau et de nouveau son opacité à 255. 4 En dessous, faites encore 'Déplacer/Modifier un évennement...' et modifiez l'opacité de l'évennement bateau à 0. 5 Ensuite, téléportez l'équipe sans fondu et dans la direction du bateau sur l'évennement "bateau". 6 Ensuite, appelez le script '$game_temp.isinboat = 1'. 7 En dessous, faites 'Modifier position d'un évennement...' et echanger la position de cet évennement avec l'évennement "bateau". 8 Enfin activé l'interrupteur local A et au dessous normalement c'est deux fins de condition. Maintenant faites 'copier page' et 'coller page', rajoutez comme condition de l'évennement 'l'interrupteur local A est activé' et vous allez modifier seulement ce que je vais vous indiquer (référez vous aux sous étapes numérotés ci-dessus). 1 Rien a modifier 2 Au lieu de 0 mettez 1. Là, rajoutez 'Modifier position d'un évennement...' modifiez la position de l'évennement "bateau" sur la position spécifique de cet évennement. 3 L'apparance à modifier est celle du héros. 4 L'oppacité est à mettre à 255. 5 La téléportation se fait sur cet évennement 6 Au lieu de 1 mettez 0. 7 Rien à modifier. 8 Au lieu d'ètre activé, il est désactivé. C'est ici que le plus gros est fait. Testez et si ça ne marche ne continuez pas et regardez ce qui ne vas pas avant de faire la suite. 3) L'évennement que vous allez créer sert à choisir un lieu de débarquement et de pouvoir réembarquer sur ce même lieu. Maintenant, créez un nouvel évennement sur l'eau (à coté d'un titleset de transition) avec pour nom celui que vous voulez, copiez la 1ère condition de la page 2 de l'évennement "1er embarquement" et collez la sur cette page (n'oubliez pas de change à la fin de la condition 'Interrupteur local A désactivé' par 'Interrupteur local A activé'), faites une nouvelle page qui s'activera par l'interrupteur local A et copiez la 1ère condition de la page 1 de l'évennment "1er embarquement" et collez la sur cette page (encore une fois, n'oubliez pas de changer à la fin de la condition 'Interrupteur local A activé' par 'Interrupteur local A désactivé'). Il ne vous reste plus qu'à modifier les lieux de téléportation selon vos besoins et la position de l'évennement "bateau" sur la page 1 de cet évennement qui doit ètre sur le même lieu où l'équipe est téléporté. Cet évennement sera comme tous les autres que vous créererez à la différence que les lieux de téléportations ne serons pas les mêmes donc à chaque fois que vous aurez d'un lieu de débarquement, copiez cet évennement et collez à l'endroit désiré sur l'eau en changeant les lieux de téléportation. Encore une petite chose, le bateau que nous venons de créer ne va que sur les eaux peu profonde. Si par la suite vous voulez un bateau qui va sur tous les types d'eau, voici ce que je vous conseil de faire. Désactivez l'interrupteur "bateau" et recomencez l'étape "1)" avec un nouveau nom d'évennement, un interrupteur "bateau2" et un nouveau character de bateau et dans les étapes "2) et "3)", copiez la 1ère condition de chaque page et collez la au dessous des deux fins de condition en changeant juste l'interrupteur "bateau" par "bateau2", l'apparance de l'ancien bateau par le nouveau et à chaque fois que vous verrez une ligne avec '$game_temp.isinboat == 1', '$game_temp.isinboat = 1' et le nom de l'évennement "bateau" modifiez les respectivement par '$game_temp.isinboat == 2', '$game_temp.isinboat = 2' et le nom de votre nouvel évennement de l'étape "1)". Sinon si vous voulez dès le départ un bateau qui va partout, remplacez toutes les lignes avec '$game_temp.isinboat == 1' et '$game_temp.isinboat = 1' respectivement par '$game_temp.isinboat == 2' et '$game_temp.isinboat = 2'. =end #============================================================================== # ** Game_Temp #------------------------------------------------------------------------------ # This class handles temporary data that is not included with save data. # Refer to "$game_temp" for the instance of this class. #==============================================================================
class Game_Temp #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :isinboat #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- alias bateaux_initialize initialize def initialize bateaux_initialize @isinboat = 0 end end #============================================================================== # ** Game_Map #------------------------------------------------------------------------------ # This class handles the map. It includes scrolling and passable determining # functions. Refer to "$game_map" for the instance of this class. #==============================================================================
class Game_Map #-------------------------------------------------------------------------- # * Determine if Passable # x : x-coordinate # y : y-coordinate # d : direction (0,2,4,6,8,10) # * 0,10 = determine if all directions are impassable # self_event : Self (If event is determined passable) #-------------------------------------------------------------------------- def passable?(x, y, d, self_event = nil) # If coordinates given are outside of the map unless valid?(x, y) # impassable return false end # Change direction (0,2,4,6,8,10) to obstacle bit (0,1,2,4,8,0) bit = (1 << (d / 2 - 1)) & 0x0f # Loop in all events for event in events.values # If tiles other than self are consistent with coordinates if event.tile_id >= 0 and event != self_event and event.x == x and event.y == y and not event.through # If obstacle bit is set if @passages[event.tile_id] & bit != 0 # impassable return false # If obstacle bit is set in all directions elsif @passages[event.tile_id] & 0x0f == 0x0f # impassable return false # If priorities other than that are 0 elsif @priorities[event.tile_id] == 0 # passable return true end end end # Loop searches in order from top of layer for i in [2, 1, 0] # Get tile ID tile_id = data[x, y, i] # Tile ID acquistion failure if tile_id == nil # impassable return false # Si le joueur n'est pas dans la bateau et que le terrain est égale à 7 elsif ($game_temp.isinboat == 0) and (@terrain_tags[tile_id] == 7) return false # Si le joueur est dans la bateau de niveau 1 et que le terrain est égale à 1 ou 6 elsif ($game_temp.isinboat == 1) and ((@terrain_tags[tile_id] == 1) or (@terrain_tags[tile_id] == 6)) return false # Si le joueur est dans la bateau de niveau 2 et que le terrain est égale à 1 elsif ($game_temp.isinboat == 2) and (@terrain_tags[tile_id] == 1) return false # If obstacle bit is set elsif @passages[tile_id] & bit != 0 # impassable return false # If obstacle bit is set in all directions elsif @passages[tile_id] & 0x0f == 0x0f # impassable return false # If priorities other than that are 0 elsif @priorities[tile_id] == 0 # passable return true end end # passable return true end end
| |
|