Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


 
AccueilSiteDernières imagesRechercherS'enregistrerConnexion
Le deal à ne pas rater :
Apple MacBook Air (2020) 13,3″ Puce Apple M1 – RAM 8Go/SSD 256Go
799 €
Voir le deal

 

 Système de détection du héros

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Auteur Message
Laugilus
Bourgeois (Nv 5)
Bourgeois (Nv 5)
Laugilus

Masculin Nombre de messages : 283
Age : 32
Point(s) Fort(s) : ...
Point(s) Faible(s) : ...
Niveau RPG Maker : ...
Logiciel préféré : RMXP
Date d'inscription : 11/08/2006

Système de détection du héros Vide
MessageSujet: Système de détection du héros   Système de détection du héros Icon_minitimeVen 11 Juil 2008 - 16:59

Système de détection du héros


Auteur : Laugilus

Ce système permet à des évènements de repérer le héros de deux manières différentes. Les évènement ont donc deux champs de vision :
- Un circulaire
- Un ovale

Il est possible de spécifier l'intégralité des paramètres pour les champs de vision. Le système permet éventuellement d'activer un interrupteur local (A, B, C ou D, au choix Smile ) de l'évènement concerné lorsque le héros est repéré par l'évènement.

Il est également possible de faire plusieurs évènements qui repèrent le héros sur la même map.

Utilisation :
Dans un évènement (n'importe lequel, ça peut être ou non celui qui doit posséder le champ de vision), dans une page en processus parallèle, mettre :
Citation :
Script : @d = Detection.new(X)
Remplacez X par l'id/le numéro de l'évènement qui doit posséder le champ de vision.

Selon ce que vous souhaitez, il y a ensuite plusieurs utilisations :

Champ de vision en cercle
- En activant un interrupteur :
A la suite, faites :
Citation :
Script : @d.circle(Rayon, 'B')
- Remplacez Rayon par le rayon du champ de vision.
- Ceci activera l'interrupteur local B de l'évènement qui possède le champ de vision lorsque l'évènement verra le héros, dès que le héros entre dans le champ de vision circulaire.
Exemple :
Citation :
Script : @d.circle(5, 'A')
- Sans activer d'interrupteur :
A la suite, faites une condition, et mettez comme paramètre script. Ensuite, tapez ceci dans la condition :
Citation :
@d.circle(Rayon)
Remplacez Rayon par le rayon du champ de vision.

Champ de vision ovale
- En activant un interrupteur :
A la suite, faites :
Citation :
Script : @d.ellipse(Longueur, Largeur, 'C')
- Remplacez Longueur et Largeur par la longueur et la largeur du champ de vision.
- Ceci activera l'interrupteur local C de l'évènement qui possède le champ de vision lorsque l'évènement verra le héros, dès que le héros entre dans le champ de vision ovale.

- Sans activer d'interrupteur :
A la suite, faites une condition, et mettez comme paramètre script. Ensuite, tapez ceci dans la condition :
Citation :
@d.ellipse(Longueur, Largeur)
Remplacez Longueur et Largeur par la longueur et la largeur du champ de vision.

Exemple : Champ de vision circulaire sans activer d'interrupteur
Système de détection du héros 0807110349144014790

Script :

Insérez un nouveau script au dessus de Main, et nommez-le : Laugilus_eSt_SadiquE. Attention, respectez bien les majuscules, sinon ça ne marchera pas !

Code:
#===============================================================================
# Système de détection du héros
#-------------------------------------------------------------------------------
# Auteur  : Laugilus
# Version : 0.1
# Date    : 11/07/2008
#-------------------------------------------------------------------------------

class Detection
   
   def initialize(event_id)
      @event_id = event_id
   end
   
   def distance(racine=true)
      if racine
         return (($game_player.x - $game_map.events[@event_id].x)**2 + ($game_player.y - $game_map.events[@event_id].y)**2).to_f**0.5
      else
         return ($game_player.x - $game_map.events[@event_id].x)**2 + ($game_player.y - $game_map.events[@event_id].y)**2
      end
   end
   
   def circle(r, switch=nil)
      r *= r
      if distance(false) <= r
         unless switch.nil?
            key = [$game_map.map_id, @event_id, switch]
            $game_self_switches[key] = true
            $game_map.events[@event_id].refresh
         end
         return true
      end
   end
   
   def ellipse(longueur, largeur, switch=nil)
      @x_event = $game_map.events[@event_id].x
      @y_event = $game_map.events[@event_id].y
      @x = $game_player.x
      @y = $game_player.y
      longueur = longueur.to_f/2
      largeur = largeur.to_f/2
      distance_foyers = (longueur**2-largeur**2).to_f**0.5
      @direction = $game_map.events[@event_id].direction
      if @direction == 2
         @x_foyer = @x_event
         @y_foyer = @y_event + distance_foyers*2
      elsif @direction == 8
         @x_foyer = @x_event
         @y_foyer = @y_event - distance_foyers*2
      elsif @direction == 4
         @x_foyer = @x_event - distance_foyers*2
         @y_foyer = @y_event
      elsif @direction == 6
         @x_foyer = @x_event + distance_foyers*2
         @y_foyer = @y_event
      end
      @equation = (((largeur**2 + distance_foyers**2).to_f**0.5)*2).round
      @distance_heros_foyers = distance(true) + ((@x_foyer-@x)**2 + (@y_foyer-@y)**2).to_f**0.5
      @distance_heros_foyers = @distance_heros_foyers.round
      if @distance_heros_foyers <= @equation
         unless switch.nil?
            key = [$game_map.map_id, @event_id, switch]
            $game_self_switches[key] = true
            $game_map.events[@event_id].refresh
         end
         return true
      end
   end
   
end

PS : Si vous utilisez ce système, merci de me mettre dans vos crédits.
Revenir en haut Aller en bas
http://rpgfusionv2.forumsrpg.com/index.htm
 

Système de détection du héros

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

Permission de ce forum: Vous ne pouvez pas répondre aux sujets dans ce forum
 :: Partage de scripts :: Systèmes -
|
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit