sarana Protecteur de la Lumière
Nombre de messages : 160 Localisation : Thailande Date d'inscription : 09/06/2006
| Sujet: Script de vue Sam 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. InstructionsPour 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.zip3. CréditsFait par Near Fantastica Trouvé et partiellement traduit par sarana[/b]
Dernière édition par le Sam 17 Juin - 22:29, édité 1 fois | |
|
cid33 Soldat de la Lumière
Nombre de messages : 58 Age : 33 Date d'inscription : 05/06/2006
| Sujet: Re: Script de vue Sam 17 Juin - 22:23 | |
| | |
|
sarana Protecteur de la Lumière
Nombre de messages : 160 Localisation : Thailande Date d'inscription : 09/06/2006
| Sujet: Re: Script de vue Sam 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. | |
|
toutoun Protecteur de la Lumière
Nombre de messages : 51 Age : 33 Localisation : De la bretagne, un pays inconnu de vos yeux Date d'inscription : 08/05/2006
| Sujet: Re: Script de vue Dim 18 Juin - 6:01 | |
| sarana: ton lien est mort et je vois pas trop a quoi ca sert | |
|
sarana Protecteur de la Lumière
Nombre de messages : 160 Localisation : Thailande Date d'inscription : 09/06/2006
| Sujet: Re: Script de vue Lun 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à...) | |
|