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



 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
-21%
Le deal à ne pas rater :
LEGO® Icons 10329 Les Plantes Miniatures, Collection Botanique
39.59 € 49.99 €
Voir le deal

 

 Système de détection du héros

Aller en bas 
AuteurMessage
Laugilus
Démocrate Usurpateur
Démocrate Usurpateur
Laugilus


Masculin
Nombre de messages : 577
Age : 32
Projet(s) en cours : Fusion Maker 1.0.0
Niveau Rpg Maker : Trop lent.
Jeux Préférés : FF X - KH - KH 2 - DQ 8 - Oblivion
Date d'inscription : 12/02/2007

Système de détection du héros Empty
MessageSujet: Système de détection du héros   Système de détection du héros EmptyVen 11 Juil 2008, 15:58

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 [Don hypocrite] ) 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
 
Système de détection du héros
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Vitesse du heros

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Fusion :: BANQUE DU CODE :: Antre des Scripts :: Système-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser