forum rpg maker kingdom
Administrateurs : dante, Ryu
 
 forum rpg maker kingdom  marche central  script 

 garde avec champ de vision (modifié)

Nouveau sujet   Répondre
 
Bas de pagePages : 1  
Ryu
administrateur
Ryu
264 messages postés
   Posté le 08-01-2006 à 00:47:19   Voir le profil de Ryu (Offline)   Répondre à ce message   Envoyer un message privé à Ryu   

faire des gardes avec champ de vision


I: Installation:


Aller dans l' éditeur de scripts (F11) et crée un nouveau scrîpt que vous nommerez, par exemple, "View_Range",


puis collez ceci dedans:

Code:


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

# Veiw Range scrîpt

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

class View_Range

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

attr_accessor :event_num

attr_accessor :view_range

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

# ● Initialization

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

def initialize(event_num,veiw_range)

@event_num = event_num

@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

a=3 ####### valeur de la case pour être vu (objet avec vue crculaire)

b=7 ####### numéro de l'interupteur (objet avec vue crculaire)

character = $game_player

lx = character.x

ly = character.y

if $game_map.terrain_tag(lx,ly) == a

$game_switches[b] = true

$game_map.need_refresh = true

end

end

end

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

def enemies_view

a=3 ####### valeur de la case pour être vu (personnage)

b=7 ####### numéro de l'interupteur (personnage)

character = $game_player

lx = character.x

ly = character.y

if $game_map.terrain_tag(lx,ly) == a

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_switches[b] = true

$game_map.need_refresh = true

end

end

end

end

if $game_map.terrain_tag(lx,ly) == a

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_switches[b] = true

$game_map.need_refresh = true

end

end

end

end

if $game_map.terrain_tag(lx,ly) == a

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_switches[b] = true

$game_map.need_refresh = true

end

end

end

end

if $game_map.terrain_tag(lx,ly) == a

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_switches[b] = true

$game_map.need_refresh = true

end

end

end

end

end

end


II: UTILISATION



Commencez par crée un événement sur la carte, attribuez lui une image etc et mettez le en:



Processus Parallèle (pour qu' il se lance automatiquement)


Puis; pour créer une zone de scan CIRCULAIRE (par exemple un bruit de crépitement qui va crescendo autour d' un feu)

appelez la fonction

Call scrîpt

dans l' événement et collez y ceci:

Code:

check = View_Range.new(Event ID, View Range)

check.event_view



EXPLICATIONS:

Vous voyez les parenthèses?

C' est là que tout ce joue, vous allez voir, c'est simple:


Event ID: le numéro d' identification de l' événement, ne mettez le chiffre ou le nombre complet, sans les zéro,

exemple: pour EV003 vous mettrez: 3 tout court


View Range: le nombre de cases que l' événements scannera devant lui, sa distance de vue;

exemple: pour que le méchant garde voit à trois case devant lui et sur les côtés mettez......3 !!! ^^

Simple non?


Cet interrupteur s' activera si le joueur passe dans le champ de vision de l' événement (champ de vision dont nous avons fixer les caractéristiques supra) et activera le SECOND événement que nous allons créer maintenant:



Créons donc une seconde événements et donnez-lui le "physique" voulu puis, cochez la case

[/]L' interrupteur 7 (par défaut dans le scripts) est activé

(si vous vouler changer d'intérupteur, il faut le changer dans le script)


C' est en fait la condition pour que cette page se lance.

Coché égalemment la case: Démarrage automatique de la page.


Une fois cela fait, il ne vous reste plus qu' a mettre les fonctions désirée dans la plage des événements

exemple pour notre garde aux aguets:

message: Hum?! There is somebodys therrrre !!
Game over (Snake? SNNNNNAAAAAAAAAAKE!!!!!)


Bref, quoi qu' il en soit remplissez votre page comme vous l' entendez, c' est votre jeu après tout ! ^^



n' oubliez pas de désactiver l' interrupteur 7 (par défaut) à la fin de votre page si vous ne voulez pas que votre garde repère sempiternellement le pauvre Snake !^^



Bien, nous avons donc vu dans cette partie le scrîpt à appeler pour des scans circulaires tout autour de l' event, maintenant pour des scans semi circulaire (vue humaine) nous allons passer à...



III l' Autre Call scrîpt:


Pour faire des scans semis circulaires, à la place du premier call scrîpt, appelez celui ci :

Code:

check = View_Range.new(Event ID, View Range)

check.enemies_view



Ici c' est la même chose que pour l' autre.



BUG : Les gardes voyent à travers les murs...
je suis en train de le corriger


Voilà, j'ai réglé le problème (plus ou moins)
comme vous pouvez le voir dans le script, il y as a=3 (comme b=7 pour le numéro de l'interupteur)
c'est le numéro de terrain que l'on peux changer dans la base de donné
j'ai mis 3, mais vous pouvez le changer par la valeur voulu entre 0 et 7.

tout les endrois sur la map avec la valeur 3 seront des zones visible pour les gardes (je vous conseil de mettre un tiles invisible en 3ème couche avec la valeur choisis (ici : 3).


Edité le 28-12-2007 à 16:27:17 par Ryu




--------------------
Haut de pagePages : 1  
 
 forum rpg maker kingdom  marche central  script  garde avec champ de vision (modifié)Nouveau sujet   Répondre
 
Identification rapide :         
 
Divers
Imprimer ce sujet
Aller à :   
 
créer forum