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



 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
Le deal à ne pas rater :
Cartes Pokémon EV6.5 : où trouver le Bundle Lot 6 Boosters Fable ...
Voir le deal

 

 Script de vue

Aller en bas 
3 participants
AuteurMessage
sarana
Protecteur de la Lumière
Protecteur de la Lumière
sarana


Nombre de messages : 160
Localisation : Thailande
Date d'inscription : 09/06/2006

Script de vue Empty
MessageSujet: Script de vue   Script de vue EmptySam 17 Juin - 21:34

Ce script permet de faire en sorte que les NPC puissent vous voir et fassent une action quand ça arrive.

1. Le script
À mettre au dessus de Main ^^ :
Code:
#==============================================================================
# ¦nbsp; View Range Script
#------------------------------------------------------------------------------
# ¦nbsp;  Par: Near Fantastica
# ¦nbsp;  Date: 07/04/05
#==============================================================================

class View_Range
 #--------------------------------------------------------------------------
 #--------------------------------------------------------------------------
 def initialize
¦nbsp;  @playing_bgs = []
¦nbsp;  @bgs = BGS.new
¦nbsp;  @bgs.pitch = 100
¦nbsp;  @event_id = 0
¦nbsp;  @event_locial_switch = ""
¦nbsp;  @view_range = 0
¦nbsp;  @playerx = 0
¦nbsp;  @playery = 0
¦nbsp;  @eventx = 0
¦nbsp;  @eventy = 0
¦nbsp;  @event_direction = 0
 end
 #--------------------------------------------------------------------------
 # ¦nbsp; ¦nbsp; Le maximum de radar son est 8 cases
 # ¦nbsp; ¦nbsp; le jeu laggera à mort si vous mettez plus
 # ¦nbsp; ¦nbsp; car ce système fait un problème avec
 # ¦nbsp; ¦nbsp; le son par défaut de la map.
 #--------------------------------------------------------------------------
 def event_sound(event_id, bgs_name)
¦nbsp;  @bgs.name = bgs_name
¦nbsp;  @event_id = event_id
¦nbsp;  @playerx = $game_player.x
¦nbsp;  @playery = $game_player.y
¦nbsp;  @eventx = $game_map.events[@event_id].x
¦nbsp;  @eventy = $game_map.events[@event_id].y
¦nbsp;  @event_direction = $game_map.events[@event_id].direction
¦nbsp;  radius = (@playerx-@eventx)*(@playerx-@eventx) + (@playery-@eventy)*(@playery-@eventy)
¦nbsp;  if radius > 64
¦nbsp; ¦nbsp;  if @playing_bgs[event_id] != nil
¦nbsp; ¦nbsp; ¦nbsp;  @playing_bgs[event_id] = nil
¦nbsp; ¦nbsp; ¦nbsp;  $game_system.bgs_fade(1)
¦nbsp; ¦nbsp; ¦nbsp;  return
¦nbsp; ¦nbsp;  end
¦nbsp;  elsif radius <= 64 and radius > 49
¦nbsp; ¦nbsp;  if @playing_bgs[event_id] == nil
¦nbsp; ¦nbsp; ¦nbsp;  @bgs.volume = 30
¦nbsp; ¦nbsp; ¦nbsp;  @playing_bgs[event_id] = @bgs
¦nbsp; ¦nbsp; ¦nbsp;  $game_system.bgs_play(@bgs)
¦nbsp; ¦nbsp; ¦nbsp;  return
¦nbsp; ¦nbsp;  end
¦nbsp; ¦nbsp;  @bgs.volume = 30
¦nbsp; ¦nbsp;  if @bgs.volume != @playing_bgs[event_id].volume or
¦nbsp; ¦nbsp; ¦nbsp; ¦nbsp;  @bgs.name != @playing_bgs[event_id].name
¦nbsp; ¦nbsp; ¦nbsp;  @playing_bgs[event_id] = @bgs
¦nbsp; ¦nbsp; ¦nbsp;  $game_system.bgs_play(@bgs)
¦nbsp; ¦nbsp; ¦nbsp;  return
¦nbsp; ¦nbsp;  end
¦nbsp;  elsif radius <= 49 and radius > 36
¦nbsp; ¦nbsp;  @bgs.volume = 40
¦nbsp; ¦nbsp;  @playing_bgs[event_id] = @bgs
¦nbsp; ¦nbsp;  $game_system.bgs_play(@bgs)
¦nbsp; ¦nbsp;  return
¦nbsp;  elsif radius <= 36 and radius > 25
¦nbsp; ¦nbsp;  @bgs.volume = 50
¦nbsp; ¦nbsp;  @playing_bgs[event_id] = @bgs
¦nbsp; ¦nbsp;  $game_system.bgs_play(@bgs)
¦nbsp; ¦nbsp;  return
¦nbsp;  elsif radius <= 25 and radius > 16
¦nbsp; ¦nbsp;  @bgs.volume = 60
¦nbsp; ¦nbsp;  @playing_bgs[event_id] = @bgs
¦nbsp; ¦nbsp;  $game_system.bgs_play(@bgs)
¦nbsp; ¦nbsp;  return
¦nbsp;  elsif radius <= 16 and radius > 9
¦nbsp; ¦nbsp;  @bgs.volume = 70
¦nbsp; ¦nbsp;  @playing_bgs[event_id] = @bgs
¦nbsp; ¦nbsp;  $game_system.bgs_play(@bgs)
¦nbsp; ¦nbsp;  return
¦nbsp;  elsif radius <= 9 and radius > 4
¦nbsp; ¦nbsp;  @bgs.volume = 80
¦nbsp; ¦nbsp;  @playing_bgs[event_id] = @bgs
¦nbsp; ¦nbsp;  $game_system.bgs_play(@bgs)
¦nbsp; ¦nbsp;  return
¦nbsp;  elsif radius <= 4 and radius > 1
¦nbsp; ¦nbsp;  @bgs.volume = 90
¦nbsp; ¦nbsp;  @playing_bgs[event_id] = @bgs
¦nbsp; ¦nbsp;  $game_system.bgs_play(@bgs)
¦nbsp; ¦nbsp;  return
¦nbsp;  elsif radius = 1
¦nbsp; ¦nbsp;  @bgs.volume = 100
¦nbsp; ¦nbsp;  @playing_bgs[event_id] = @bgs
¦nbsp; ¦nbsp;  $game_system.bgs_play(@bgs)
¦nbsp; ¦nbsp;  return
¦nbsp;  end
 end
 #--------------------------------------------------------------------------
 def enemies_view(event_id, view_range, els)
¦nbsp;  @event_id = event_id
¦nbsp;  @view_range = view_range
¦nbsp;  @event_locial_switch = els
¦nbsp;  @playerx = $game_player.x
¦nbsp;  @playery = $game_player.y
¦nbsp;  @eventx = $game_map.events[@event_id].x
¦nbsp;  @eventy = $game_map.events[@event_id].y
¦nbsp;  @event_direction = $game_map.events[@event_id].direction
¦nbsp;  if @event_direction == 2
¦nbsp; ¦nbsp;  if @playery >= @eventy
¦nbsp; ¦nbsp; ¦nbsp;  radius = (@playerx-@eventx)*(@playerx-@eventx) + (@playery-@eventy)*(@playery-@eventy)
¦nbsp; ¦nbsp; ¦nbsp;  if radius <= @view_range
¦nbsp; ¦nbsp; ¦nbsp; ¦nbsp;  key=[$game_map.map_id, @event_id, @event_locial_switch]
¦nbsp; ¦nbsp; ¦nbsp; ¦nbsp;  $game_self_switches[key] = true
¦nbsp; ¦nbsp; ¦nbsp; ¦nbsp;  $game_map.need_refresh = true
¦nbsp; ¦nbsp; ¦nbsp;  end
¦nbsp; ¦nbsp;  end
¦nbsp;  end
¦nbsp;  if @event_direction == 4
¦nbsp; ¦nbsp;  if @playerx <= @eventx
¦nbsp; ¦nbsp; ¦nbsp;  radius = (@playerx-@eventx)*(@playerx-@eventx) + (@playery-@eventy)*(@playery-@eventy)
¦nbsp; ¦nbsp; ¦nbsp;  if radius <= @view_range
¦nbsp; ¦nbsp; ¦nbsp; ¦nbsp;  key=[$game_map.map_id, @event_id, @event_locial_switch]
¦nbsp; ¦nbsp; ¦nbsp; ¦nbsp;  $game_self_switches[key] = true
¦nbsp; ¦nbsp; ¦nbsp; ¦nbsp;  $game_map.need_refresh = true
¦nbsp; ¦nbsp; ¦nbsp;  end
¦nbsp; ¦nbsp;  end
¦nbsp;  end
¦nbsp;  if @event_direction == 6
¦nbsp; ¦nbsp;  if @playerx >= @eventx
¦nbsp; ¦nbsp; ¦nbsp;  radius = (@playerx-@eventx)*(@playerx-@eventx) + (@playery-@eventy)*(@playery-@eventy)
¦nbsp; ¦nbsp; ¦nbsp;  if radius <= @view_range
¦nbsp; ¦nbsp; ¦nbsp; ¦nbsp;  key=[$game_map.map_id, @event_id, @event_locial_switch]
¦nbsp; ¦nbsp; ¦nbsp; ¦nbsp;  $game_self_switches[key] = true
¦nbsp; ¦nbsp; ¦nbsp; ¦nbsp;  $game_map.need_refresh = true
¦nbsp; ¦nbsp; ¦nbsp;  end
¦nbsp; ¦nbsp;  end
¦nbsp;  end
¦nbsp;  if @event_direction == 8
¦nbsp; ¦nbsp;  if @playery <= @eventy
¦nbsp; ¦nbsp; ¦nbsp;  radius = (@playerx-@eventx)*(@playerx-@eventx) + (@playery-@eventy)*(@playery-@eventy)
¦nbsp; ¦nbsp; ¦nbsp;  if radius <= @view_range
¦nbsp; ¦nbsp; ¦nbsp; ¦nbsp;  key=[$game_map.map_id, @event_id, @event_locial_switch]
¦nbsp; ¦nbsp; ¦nbsp; ¦nbsp;  $game_self_switches[key] = true
¦nbsp; ¦nbsp; ¦nbsp; ¦nbsp;  $game_map.need_refresh = true
¦nbsp; ¦nbsp; ¦nbsp;  end
¦nbsp; ¦nbsp;  end
¦nbsp;  end
 end
end
#======================================================
class Scene_Title
 #--------------------------------------------------------------------------
 alias vr_scene_title_update update
 #--------------------------------------------------------------------------
def update
¦nbsp; $view_range = View_Range.new
¦nbsp; vr_scene_title_update
end
end
#======================================================
class Game_System
¦nbsp;  attr_accessor :playing_bgs
end
#======================================================
class BGS
 #--------------------------------------------------------------------------
 attr_accessor :name
 attr_accessor :volume
 attr_accessor :pitch
 #--------------------------------------------------------------------------
 def initialize
¦nbsp;  @name
¦nbsp;  @volume
¦nbsp;  @pitch
 end
end
#======================================================
class Game_Map
 #--------------------------------------------------------------------------
 attr_accessor :map
end


2. Instructions
Pour qu'un héros puisse voir le joueur mettez ça dans un événement parallèle :
Code:
$view_range.enemies_view(id_événement, rang_vue, interrupteur local)

Alors, pour que l'événement 1 voit le joueur à 10 cases et que ça active son interrupteur local A, je vais mettre :
Code:
$view_range.enemies_view(1, 10, A)

Et je peux faire une deuxième page à l'événement avec comme condition interrupteur local A activé, dans laquelle je mettrais les commandes à faire s'il voit le héros (dans mon cas, courir vers lui et le défier...)

Démo : http://www.nearfantasticaonline.com/programs/View%20Range%20v2.zip

3. Crédits
Fait par Near Fantastica
Trouvé et partiellement traduit par sarana[/b]


Dernière édition par le Sam 17 Juin - 22:29, édité 1 fois
Revenir en haut Aller en bas
cid33
Soldat de la Lumière
Soldat de la Lumière
cid33


Nombre de messages : 58
Age : 33
Date d'inscription : 05/06/2006

Script de vue Empty
MessageSujet: Re: Script de vue   Script de vue EmptySam 17 Juin - 22:23

Une image stp
Revenir en haut Aller en bas
http://rpg-nation.ca.cx/
sarana
Protecteur de la Lumière
Protecteur de la Lumière
sarana


Nombre de messages : 160
Localisation : Thailande
Date d'inscription : 09/06/2006

Script de vue Empty
MessageSujet: Re: Script de vue   Script de vue EmptySam 17 Juin - 22:29

Euh je ne peux pas poster d'image pour ce genre de chose...
Il n'y a pas de graphismes qui change ou quoi que ce soit.

Mais je change mon premier post pour mettre une démo.
Revenir en haut Aller en bas
toutoun
Protecteur de la Lumière
Protecteur de la Lumière
toutoun


Masculin Nombre de messages : 51
Age : 33
Localisation : De la bretagne, un pays inconnu de vos yeux
Date d'inscription : 08/05/2006

Script de vue Empty
MessageSujet: Re: Script de vue   Script de vue EmptyDim 18 Juin - 6:01

sarana: ton lien est mort et je vois pas trop a quoi ca sert
Revenir en haut Aller en bas
sarana
Protecteur de la Lumière
Protecteur de la Lumière
sarana


Nombre de messages : 160
Localisation : Thailande
Date d'inscription : 09/06/2006

Script de vue Empty
MessageSujet: Re: Script de vue   Script de vue EmptyLun 19 Juin - 20:04

Bien...
disons que tu veux faire un garde qui dit bonjour au héros quand il le voit. Tu pourrais te contenter de le faire parler quand le héros lui parle, mais si tu veux qu'il le voie à 10 cases à la ronde ? Voilà à quoi sert ce script. Je vais faire ma propre démo, je la poste dès qu'elle est prête (je part à l'école là...)
Revenir en haut Aller en bas
Contenu sponsorisé





Script de vue Empty
MessageSujet: Re: Script de vue   Script de vue Empty

Revenir en haut Aller en bas
 
Script de vue
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Script antilag
» Script pour une perspective !
» cherche script pour ne jamais avoir de game-over

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Light RPG forum :: Rpg Maker :: Scriptes-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser