Faire un champ de vision pour un garde

Publié le par Cidragon6

Faire un champ de vision pour un garde

Je certifie que ce scrip comme tous les autres n'est pas de moi...

Créez un nouveau script au dessus de Main et nommez le View_Range :

Code:



#==============================================================================

#   View Range scrîpt

#------------------------------------------------------------------------------

#    By: Near Fantastica

#    Date: 25/11/04

#==============================================================================

 

class View_Range

#--------------------------------------------------------------------------

# ● Ce système de "rang" marche en scannant une zone semie circulaire située en face de l' événement.

#    La vue est crée dans chaque événement est égale au radian du cercle

#    L' équation est: (Px-EX)^2 + (Py-Ey)^2 = radius^2

#    Si le radian est supérieur ou égal à la Vue, le joueur se trouve dans le cercle.

#--------------------------------------------------------------------------

attr_accessor :event_num

attr_accessor :view_range

#--------------------------------------------------------------------------

# ● Initialization

#--------------------------------------------------------------------------

def initialize(event_num,veiw_range,els)

  @event_num = event_num

  @event_locial_switch = els

  @view_range = veiw_range

  @playerx = $game_player.x

  @playery = $game_player.y

  @eventx = $game_map.events[@event_num].x

  @eventy = $game_map.events[@event_num].y

  @event_direction = $game_map.events[@event_num].direction

end

#--------------------------------------------------------------------------

# ● Initialization

#--------------------------------------------------------------------------

def event_view

  @playerx-=@eventx

  @playerx*=@playerx

  @playery-=@eventy

  @playery*=@playery

  @playerx+=@playery

  @view_range*=@view_range

  if @playerx <= @view_range

    $game_self_switches = {[$game_map.map_id, @event_num, @event_locial_switch] => true}

    $game_map.need_refresh = true

  end

end

#--------------------------------------------------------------------------

# ●

#--------------------------------------------------------------------------

def enemies_view   

  if @event_direction == 2

    if @playery >= @eventy

      @playerx-=@eventx

      @playerx*=@playerx

      @playery-=@eventy

      @playery*=@playery

      @playerx+=@playery

      @view_range*=@view_range

      if @playerx <= @view_range

        $game_self_switches = {[$game_map.map_id, @event_num, @event_locial_switch] => true}

        $game_system.timer = 420

        $game_system.timer_working = true

        $game_map.need_refresh = true

      end

    end

  end

  if @event_direction == 4

    if @playerx <= @eventx

      @playerx-=@eventx

      @playerx*=@playerx

      @playery-=@eventy

      @playery*=@playery

      @playerx+=@playery

      @view_range*=@view_range

      if @playerx <= @view_range

        $game_self_switches = {[$game_map.map_id, @event_num, @event_locial_switch] => true}

        $game_system.timer = 420

        $game_system.timer_working = true

        $game_map.need_refresh = true

      end

    end

  end

  if @event_direction == 6

    if @playerx >= @eventx

      @playerx-=@eventx

      @playerx*=@playerx

      @playery-=@eventy

      @playery*=@playery

      @playerx+=@playery

      @view_range*=@view_range

      if @playerx <= @view_range

        $game_self_switches = {[$game_map.map_id, @event_num, @event_locial_switch] => true}

        $game_system.timer = 420

        $game_system.timer_working = true

        $game_map.need_refresh = true

      end

    end

  end

  if @event_direction == 8

    if @playery <= @eventy

      @playerx-=@eventx

      @playerx*=@playerx

      @playery-=@eventy

      @playery*=@playery

      @playerx+=@playery

      @view_range*=@view_range

      if @playerx <= @view_range

        $game_self_switches = {[$game_map.map_id, @event_num, @event_locial_switch] => true}
        $game_system.timer = 420
        $game_system.timer_working = true
        $game_map.need_refresh = true
      end
    end
  end
end
end
 



Pour l'utiliser, faîtes un événement en processus parallèle et insérez un script. Voilà ce qu'il faut mettre :


check = View_Range.new(ID, vue, interrupteur local)
check.event_view

ID = l'id de l'événement. Pas EV003, juste 3.
Vue = le nombre de cases sur chaque côté. Pour qu'il voie 3 cases sur le côté et devant, mettez trois.
Interrupteur local = mettez ici entre guillemets le nom de l'interrupteur local qui sera activé si le héros entre dans le champ de vision. Puis créez une nouvelle page avec comme condition "l'interrupteur local A/B/C/D est activé". Sur cette page, mettez ce qui se passe si le héros entre dans le champ de vision. Voilà c'est tout  !

Publicité

Publié dans Scripts RPG Makers XP

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
T
c cool mais chez moi ca marche pas:l'interrupteur s'active pas est ce qu'il faut metre les guillemet comme ca : " et metre le nom de l interrupteur local  en majuscule?
Répondre
C
Oui, il faut mettre le nom de l'interrupteur local en majuscule, quant aux guillements, je crois qu'il faut les mettres. Dans tous les cas, il faut mieux programmer en évent plutôt que de copier coller de scripts.
J
ATTENTIONCe script viendra fausser le reste de votre jeu où vous utilisez des variables locales.
Répondre
C
Merci, j'avais pas assez utilisé ce script pour m'en rendre compte...Heureusement, je suis presque contre les scripts, RPG Maker devrait être uniquement en événement.
C
Il y a de nombreuses solutions pour faire celà, je m'en suis beaucoup servit dans mes derniers jeux, la manière la plus facile étant d'afficher deux images. Disons, une opaque qui entourera le héro, et une deuxiéme un peu moins opaque qui bouge légérement. (tout celà en processus paralléle). Quoi qu'il en soit, fait en sorte de régler l'opacité comme tu le veux. ( En ce qui concerne les cartes, assure toi de ne pas te rapprocher des bords car l'image restera fixe, cette solution ne marche quand quand ton perso est au centre de l'écran. ( Sinon, pour améliorer le systéme, on peux afficher une image plus grande qui se déplace par rapport au perso et non à l'écran...)
Répondre
C
Un peu dans le même style je pense, mais ce ne doit pas être pour un évènement. Je m'explique :J'aimerais que mon héros ne voit qu'un cercle dans les grottes, un peu comme dans pokémon, parce que même en faisant un labyrinthe, je trouve qu'il manque quelquechose. Merci si tu arrives à faire ça, je cherche depuis 3 mois... '-_-
Répondre
C
Salut !<br /> Voilà ce qu'il faudrais mettre :<br /> check = View_Range.new(EV3, 3, A)check.event_view<br /> Alors ce sera l'événement 3, qui te véra à 3 cases, et il se passera ce qui se passera dans cet événement qui as un interrupteur local A.
Répondre