Des monstres sur la carte qui vous poursuivent
Jeu 18 Déc 2008 - 20:39
Je me promenais dans mes pensées (pas malsaines n'ayez crainte)
quand j'ai repensé au tutoriel pour mettre des monstres sur la carte qui nous suivent quand on passe près d'eux.
Mais le problème de ce tuto, c'est qu'il utilise des tonnes de variables...
Ensuite j'ai repensé au Mode ABS...
Dans ce mode, les monstres nous suivent si on met un commentaire.
Alors devinez ce que j'ai fait ?
J'ai pris le mode ABS, et j'ai tout enlever pour ne garder que la partie qui gère la poursuite.
La voila: (à insérer dans Materials, comme d'hab)
Une démo pour les flemmards !
Pour qu'un évènement vous suive, il vous faut mettre un commentaire nommé:
follow x
où x est la distance à partir de laquelle il commence à vous suivre.
PS: Une fois qu'il vous touche, et que vous avez mi au contact avec l'évènement, n'oubliez pas d'activer un interrupteur local A sinon il se répètera.
PS: Il est peut être simplifiable mais je ne vois pas comment(pour le moment)
quand j'ai repensé au tutoriel pour mettre des monstres sur la carte qui nous suivent quand on passe près d'eux.
Mais le problème de ce tuto, c'est qu'il utilise des tonnes de variables...
Ensuite j'ai repensé au Mode ABS...
Dans ce mode, les monstres nous suivent si on met un commentaire.
Alors devinez ce que j'ai fait ?
J'ai pris le mode ABS, et j'ai tout enlever pour ne garder que la partie qui gère la poursuite.
La voila: (à insérer dans Materials, comme d'hab)
- Code:
#====================================================================================
#Script de poursuite
# Les monstres vous suivent si vous passez près d'eux !!!
#
# Extirpé du script ABS de Vlad par wilkyo
#====================================================================================
def follow_hero(dx, dy)
sx = @x - dx
sy = @y - dy
if sx == 0 and sy == 0
return
end
abs_sx = sx.abs
abs_sy = sy.abs
if abs_sx == 0
sy > 0 ? move_up : move_down
if not moving? and sx != 0
sx > 0 ? move_left : move_right
end
return
elsif abs_sy == 0
sx > 0 ? move_left : move_right
if not moving? and sy != 0
sy > 0 ? move_up : move_down
end
return
end
if abs_sx == abs_sy
rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
end
if abs_sx > abs_sy
sx > 0 ? move_left : move_right
if not moving? and sy != 0
sy > 0 ? move_up : move_down
end
else
sy > 0 ? move_up : move_down
if not moving? and sx != 0
sx > 0 ? move_left : move_right
end
end
end
#--------------------------------------------------------------
# Game Event
#--------------------------------------------------------------
class Game_Event < Game_Character
attr_reader :inimigo
alias crissaegrim_abs_gevent_initialize initialize
alias crissaegrim_abs_gevent_update update
alias crissaegrim_abs_gevent_refresh refresh
def initialize(map_id, event)
@inimigo = false
@automove = false
crissaegrim_abs_gevent_initialize(map_id, event)
end
def update
crissaegrim_abs_gevent_update
if @inimigo
new_x = (@x + (@direction == 4 ? -1 : @direction == 6 ? 1 : 0))
new_y = (@y + (@direction == 8 ? -1 : @direction == 2 ? 1 : 0))
if $game_player.x == new_x and $game_player.y == new_y and self.wait_action <= 0
for action in $data_enemies[@enemy_id].actions
next unless enemy_status.conditions_met?(action)
end
end
end
if @automove
unless moving?
self.follow_hero($game_player.x, $game_player.y) if in_range?(self, $game_player, @follow_distance)
end
end
end
def in_range?(event, target, distance)
x = (event.x - target.x) * (event.x - target.x)
y = (event.y - target.y) * (event.y - target.y)
r = x + y
return true if r <= (distance * distance)
return false
end
def refresh
crissaegrim_abs_gevent_refresh
@inimigo = false
@follow_distance = check_comment("Follow")
@automove = true if @follow_distance > 0
end
def check_comment(comentario)
com = comentario.downcase
return 0 if @list.nil? or @list.size <= 0
for item in @list
if item.code == 108 or item.code == 408
if item.parameters[0].downcase =~ /#{com}[ ]?(\d+)?/
return $1.to_i
end
end
end
return 0
end
end
Une démo pour les flemmards !
Pour qu'un évènement vous suive, il vous faut mettre un commentaire nommé:
follow x
où x est la distance à partir de laquelle il commence à vous suivre.
PS: Une fois qu'il vous touche, et que vous avez mi au contact avec l'évènement, n'oubliez pas d'activer un interrupteur local A sinon il se répètera.
PS: Il est peut être simplifiable mais je ne vois pas comment(pour le moment)
- EvasionMembre
- Nombre de messages : 17
Age : 31
Distinction : aucune
Date d'inscription : 05/08/2008
Re: Des monstres sur la carte qui vous poursuivent
Ven 19 Déc 2008 - 18:42
Merci du partage Wilkyo et est ce qu'il y a aussi des problèmes avec les autres scripts comme le abs d'origine ?
Edit : En fait c'est bon ! Super bon script, et je n'est trouvé aucun conflit avec d'autres script ( j'ai testé dans mon projet ) encore merci et bravo !
Edit : En fait c'est bon ! Super bon script, et je n'est trouvé aucun conflit avec d'autres script ( j'ai testé dans mon projet ) encore merci et bravo !
Re: Des monstres sur la carte qui vous poursuivent
Ven 19 Déc 2008 - 22:25
De rien
ça me fait plaisir qu'il t'ai plu ^^
Mais la plupart des remerciements vont aux créateurs de l'ABS...
Je n'ai fait que prendre une petite partie de leur script pour "simplifier un tutoriel" qui était ma fois un peu long et qui utilisait trop de variables...
Mais sinon, merci à toi
ça me fait plaisir qu'il t'ai plu ^^
Mais la plupart des remerciements vont aux créateurs de l'ABS...
Je n'ai fait que prendre une petite partie de leur script pour "simplifier un tutoriel" qui était ma fois un peu long et qui utilisait trop de variables...
Mais sinon, merci à toi
- kordarrModérateur
- Nombre de messages : 1838
Age : 34
Localisation : île de la réunion, Le Tampon.
Distinction : Auto-proclamé sex-symbol de la commu'
Frère jumeau de Jonathan ( Secret Story )
Exhibitionniste en herbe
[Mist' & Coco' ]
Fan n°1 de Coco'
Psychopathe en chef
Date d'inscription : 05/11/2008
Re: Des monstres sur la carte qui vous poursuivent
Sam 20 Déc 2008 - 0:37
J'ai pris aussi, si on veut faire un moment d'infiltration, ce qui serait intéressant ce serait que seul les cases devant le perso soit dispo.
Ce que je veux dire, c'est comme faire un champ de vision, tu pense que ce serais faisable..?
Genre un metal gear solid version RPG maker vx (c'est un exemple, mais ça me servirai pour mon projet..)
Pense tu que ce soit posssible, si oui préviens moi^^.
Beau script pris pour mon projet en tout cas.
Ce que je veux dire, c'est comme faire un champ de vision, tu pense que ce serais faisable..?
Genre un metal gear solid version RPG maker vx (c'est un exemple, mais ça me servirai pour mon projet..)
Pense tu que ce soit posssible, si oui préviens moi^^.
Beau script pris pour mon projet en tout cas.
Re: Des monstres sur la carte qui vous poursuivent
Sam 20 Déc 2008 - 12:22
Je pense que c'est faisable mais il prendra un peu plus de place que celui la je pense...
Et il demandera de grandes compétences en ruby...
Cette semaine, je suis surbooké mais je verrais si je peux faire quelque chose la semaine prochaine !
(A moins qu'un bon rubyste s'en charge avant mon retour...)
Et il demandera de grandes compétences en ruby...
Cette semaine, je suis surbooké mais je verrais si je peux faire quelque chose la semaine prochaine !
(A moins qu'un bon rubyste s'en charge avant mon retour...)
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum