Faire un champ de vision pour un garde
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 !