AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



Le Deal du moment : -29%
DYSON V8 Origin – Aspirateur balai sans fil
Voir le deal
269.99 €

Partagez
 

 [VX] Mouvements aléatoires restreints

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
vincentmhd
Maire Lv.9
Maire Lv.9
vincentmhd


Masculin Age : 37
Inscrit le : 04/02/2009
Messages : 326

[VX] Mouvements aléatoires restreints Empty
MessageSujet: [VX] Mouvements aléatoires restreints   [VX] Mouvements aléatoires restreints Icon_minitimeJeu 3 Sep 2009 - 13:37

Mouvements aléatoires restreints



-Introduction

J'avais déjà tenté quelque chose du genre lors du concours des 5 thèmes. Cependant en event, c'est assez moche à faire! Maintenant que je script, je vous donne mon petit script correspondant. Il est tout petit, tout mimi! ^^

-Description

Ce script permet de laisser un event libre de ses mouvements, tout en le gardant dans une zone confinée. Parfois par logique ou seulement par nécéssité, il normal de vouloir éviter qu'un event vienne s'incruster dans un endroit inapproprié de la map. Ou juste pour faire moins désordre.

-Le script

Code:

#==============================================================================
#
#
#                            Mvt Aléa Limité.v2
#
#
#===============================================================================
#
#By Vincentmhd
#http://vincentmhdmaker.canalblog.com/
#
#01/09/2009
#25/09/2009 .v2 ajout des zones relatives...
#
#
#
#=====================================NOTE======================================
#
#
#-------------------------------------------------------------------------------
#
#Ce script permet de mettre un event en déplacement aléatoire sans pour autant
#le lâcher sur toute la carte, il est limité à un rectangle sur la map défini
#par vos soins.
#Pour le faire, il y a 2 méthodes: par coordonnées absolues et par relatives
#
#Pour les absolues c'est simple: il suffit d'inserer:
#move_random_in(bottom, left, right, top)
#Les arguments correspondent directement aux coordonnées de l'espace marchage
#sur la map.
#
#Pour les relatives: il faut d'inserer:
#-move_random_around(bottom, left, right, top)
#Les arguments correspondent directement aux coordonnées de l'espace marchable
#par rapport à la position "initiale". Celle-ci peut être réinitialisée,
#manuellement, et automatiquement.
#La méthode manuelle est la suivante: Set_center( x, y)
#La méthode automatique est activée par défaut, elle s'active et se désactive
#comme ceci:
#Set_follow(bool)
#Automatisme consiste à appeler Set_center(), dès que l'event est déplacé
#artifitiellement.
#===============================================================================
class Game_Character
 
  attr_accessor :init_x, :init_y, :init_move
 
  alias alea_initialize initialize
  def initialize
    @init_move = true
    alea_initialize
    @init_x = 0
    @init_y = 0
  end
   
 
  #--------------------------------------------------------------------------
  # * Move at Random in map coord
  #--------------------------------------------------------------------------
  def move_random_in(bottom, left, right, top)
    case rand(4)
    when 0
      if !(@y+1 > bottom)
        move_down(false)
      end
    when 1 
      if !(@x-1 < left)
        move_left(false)
      end
    when 2
      if !(@x+1 > right)
        move_right(false)
      end
    when 3
      if !(@y-1 < top)
        move_up(false)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Move at Random in relative rect centre sur l'event
  #--------------------------------------------------------------------------
  #Cette méthode est variante de la première elle permet de
  #délimiter le rectangle relativement.
  #Ce rectangle est centré sur la position initiale du perso.
  def move_random_around(bottom, left, right, top)
    if (@init_move!= nil)&&(@init_move == true)
      Set_center()
      @init_move = false
    end
    case rand(4)
    when 0
      if !(@y+1 > (@init_y + bottom))
        move_down(false)
      end
    when 1 
      if !(@x-1 < (@init_x - left))
        move_left(false)
      end
    when 2
      if !(@x+1 > (@init_x + right))
        move_right(false)
      end
    when 3
      if !(@y-1 < (@init_y - top))
        move_up(false)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Change the center of the square
  #--------------------------------------------------------------------------
  #Cette méthode permet de modifier le centre du rectangle.
  def Set_center( x =@x, y =@y)
      @init_x = x
      @init_y = y
      if @init_move != nil
        @init_move = false
      end
  end
  #--------------------------------------------------------------------------
  # * Move Type : Custom
  #--------------------------------------------------------------------------
  #Permet de faire suivre le rect si le perso est déplacé artificiellement
  alias alea_move_type_custom move_type_custom
  def move_type_custom
    if stopping?
      command = @move_route.list[@move_route_index] 
      @move_failed = false
      if command.code != 0
        if (command.code < 14)&&(@init_move != nil)
          @init_move = true
        end
      end
      alea_move_type_custom
    end
  end
  #--------------------------------------------------------------------------
  #
  #--------------------------------------------------------------------------
  #Permet de faire dire si le rect doit suivre le perso si il est déplacé
  #artifitiellement
  def Set_follow(bool)
    if bool
      @init_move = true
    else
      @init_move = nil
    end
  end
end


class Game_Event
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    map_id : map ID
  #    event  : event (RPG::Event)
  #--------------------------------------------------------------------------
  alias alea_event_initialize initialize
  def initialize(map_id, event)
    alea_event_initialize(map_id, event)
    Set_center()
  end
end


-Installation

Ce script n'échappe pas à la régle du "copiez en dessous de material".
Il n'a pas de nécéssité particulière.
Compatibilité optimale, puis que ce n'est que l'ajout d'une méthode...

-Utilisation

Tout les appels de script qui suivent se font dans la commande "déplacer un événement/ un héros".
Il y a 2 méthodes: la méthode utilisant les coordonnées absolues, et l'autre les relatives.

Coordonnées Absolues
Il suffit d'appeler un script dans la trajectoire à définir par votre personnage:
-move_random_in(bottom, left, right, top)
La zone est rectangulaire. Bottom, left, right, top correspondent aux coordonnées sur la map des côtés du rectangle, respectivement, le bas, la gauche, la droite, puis le haut.

Un screen:

[VX] Mouvements aléatoires restreints 43521258


Coordonnées Relatives
il faut d'inserer comme pour la méthode absolue:
-move_random_around(bottom, left, right, top)
Les arguments correspondent aux coordonnées de l'espace marchable par rapport à la position "initiale" de l'event.
Elle prend que des entiers positifs.
Par exemple move_random_around(1, 1, 1, 1)
Laissera un event libre dans un carré de 3 côtés par rapport à sa position initiale, centré sur celle-ci.
Elle peut être réinitialisée, manuellement, et automatiquement, au cas où vous avez besoin de déplacer l'event.
La méthode manuelle est la suivante: Set_center( x, y)
La méthode automatique est activée par défaut, elle s'active et se désactive comme ceci: Set_follow(bool)
L'automatisme consiste à appeler Set_center(), dès que l'event est déplacé autrement que par le script.


-Démo

Une toute petite démo: Démo
La démo n'existe plus depuis belle lurette!
Un autre projet pour remplacer : Télécharger Déplacements.rar

-Crédit optionnel: Vincentmhd


[Edit: 3Sept2009] : ajout du crédit et ajout d'explications
[Edit: 26Sept2009] :v2 ajout de la méthode relative


Dernière édition par vincentmhd le Jeu 9 Aoû 2012 - 12:31, édité 13 fois
Revenir en haut Aller en bas
jebbou
Doyen
Doyen
jebbou


Masculin Age : 46
Inscrit le : 20/08/2008
Messages : 2485

[VX] Mouvements aléatoires restreints Empty
MessageSujet: Re: [VX] Mouvements aléatoires restreints   [VX] Mouvements aléatoires restreints Icon_minitimeJeu 3 Sep 2009 - 13:53

Excellent ce truc, ca pourra me servir pour mes gardes qui patrouillent! Ca pourra aussi servir à ceux qui veulent faire des poissons qui bougent dans des lacs de façon aléatoire Very Happy
Revenir en haut Aller en bas
DragonB
Poulet trizo Lv.3
Poulet trizo Lv.3
DragonB


Age : 26
Inscrit le : 08/08/2009
Messages : 30

[VX] Mouvements aléatoires restreints Empty
MessageSujet: Re: [VX] Mouvements aléatoires restreints   [VX] Mouvements aléatoires restreints Icon_minitimeJeu 3 Sep 2009 - 14:14

Petit script, mais efficace.
Merci, ça m'aidera dans mes cours de scripts. Il est très facile a comprendre.
Revenir en haut Aller en bas
Sylfurion
Mage Lv.11
Mage Lv.11
Sylfurion


Masculin Age : 27
Inscrit le : 02/03/2009
Messages : 513

[VX] Mouvements aléatoires restreints Empty
MessageSujet: Re: [VX] Mouvements aléatoires restreints   [VX] Mouvements aléatoires restreints Icon_minitimeJeu 3 Sep 2009 - 14:43

bonjour, c'est super mais j'ai un problème ^^

move_random_in(bottom, left, right, top)

Pas du tout compris par quoi il faut remplacer bottom left right et top ^^

merci pour le script et merci d'avance pour la réponse

Ciao

Sylfurion
Revenir en haut Aller en bas
MirainoHikari
Ex-Admin-Script
Ex-Admin-Script
MirainoHikari


Masculin Age : 42
Inscrit le : 26/05/2008
Messages : 2360

[VX] Mouvements aléatoires restreints Empty
MessageSujet: Re: [VX] Mouvements aléatoires restreints   [VX] Mouvements aléatoires restreints Icon_minitimeJeu 3 Sep 2009 - 14:49

@Sylfurion > Tu remplace bottom, top, left, right par tes limites de déplacement. Ainsi move_random_in(2, 5, 10, 1) fera bouger aléatoirement ton NPC d'au plus 2 cases vers le bas, 5 vers la gauche, 10 vers la droite et 1 vers le haut.


@vincentmhd > Simple, mais efficace. Je sens que les participant au concours de septembre 2009 pour la partie event vont s'arracher ton script. Voyons voir s'ils penseront te donner les droits qui te reviennent.

Merci du partage.

Hors sujet : L'image de ta signature est un bel exemple de ce que le cerveau perçoit par "habitude". Regardez la chute. Le cerveau analyse que l'eau va vers le bas, car pour lui, c'est ce qui est le plus logique selon ce qu'il connait. Cependant, obliger à votre cerveau à oublier ce qu'il connait de la gravité afin de voir différemment. En fait, la chute d'eau monte et ne descend pas...
Revenir en haut Aller en bas
http://mirainohikari.deviantart.com
Sylfurion
Mage Lv.11
Mage Lv.11
Sylfurion


Masculin Age : 27
Inscrit le : 02/03/2009
Messages : 513

[VX] Mouvements aléatoires restreints Empty
MessageSujet: Re: [VX] Mouvements aléatoires restreints   [VX] Mouvements aléatoires restreints Icon_minitimeJeu 3 Sep 2009 - 15:18

Ah merci beaucoup !

MirainoHikari a écrit:
Hors sujet : L'image de ta signature est un bel exemple de ce que le cerveau perçoit par "habitude". Regardez la chute. Le cerveau analyse que l'eau va vers le bas, car pour lui, c'est ce qui est le plus logique selon ce qu'il connait. Cependant, obliger à votre cerveau à oublier ce qu'il connait de la gravité afin de voir différemment. En fait, la chute d'eau monte et ne descend pas...

O_o, mais c'est que c'est vrai en plus !!

Ciao

Sylfurion
Revenir en haut Aller en bas
vincentmhd
Maire Lv.9
Maire Lv.9
vincentmhd


Masculin Age : 37
Inscrit le : 04/02/2009
Messages : 326

[VX] Mouvements aléatoires restreints Empty
MessageSujet: Re: [VX] Mouvements aléatoires restreints   [VX] Mouvements aléatoires restreints Icon_minitimeSam 26 Sep 2009 - 2:54

Nouvelle version !

Ajout d'une méthode Relative, moins prise de tête pour les coordonnées à compter sur la map. Very Happy
Revenir en haut Aller en bas
Sylfurion
Mage Lv.11
Mage Lv.11
Sylfurion


Masculin Age : 27
Inscrit le : 02/03/2009
Messages : 513

[VX] Mouvements aléatoires restreints Empty
MessageSujet: Re: [VX] Mouvements aléatoires restreints   [VX] Mouvements aléatoires restreints Icon_minitimeDim 27 Sep 2009 - 12:21

Tu as modifier ton premier post ?
Revenir en haut Aller en bas
vincentmhd
Maire Lv.9
Maire Lv.9
vincentmhd


Masculin Age : 37
Inscrit le : 04/02/2009
Messages : 326

[VX] Mouvements aléatoires restreints Empty
MessageSujet: Re: [VX] Mouvements aléatoires restreints   [VX] Mouvements aléatoires restreints Icon_minitimeDim 27 Sep 2009 - 12:46

Oui le script est passé en .v2

Et Sous le screen, j'ai ajouté une mini explication pour les coordonnées relatives car dans la pratique ce n'est pas vraiment différent de l'absolue, mais je vais l'étofer un peu.

Par contre la démo n'est pas encore à jour...
Revenir en haut Aller en bas
Contenu sponsorisé




[VX] Mouvements aléatoires restreints Empty
MessageSujet: Re: [VX] Mouvements aléatoires restreints   [VX] Mouvements aléatoires restreints Icon_minitime

Revenir en haut Aller en bas
 

[VX] Mouvements aléatoires restreints

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» [VX] Mouvements supplémentaires
» Characters avec divers expressions/mouvements
» Script => BGM aléatoires
» Musique de combat aléatoires
» [VX] Arrêter les rencontres aléatoires

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Scripts VX - RGSS2 :: Évents & PNJs-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Cookies | Forum gratuit