Le deal à ne pas rater :
Nike : Jusqu’à 50% sur les articles de fin de saison
Voir le deal

Aller en bas
wilkyo
wilkyo
Membre

Nombre de messages : 316
Age : 32
Localisation : Loiret
Distinction : Sauveur de miches // Chou (l)

[Coco' Smile]

Adepte de Pedobear // Lécheur de lolis

[Mist' Wink]

Personnage Colorée // Instructeur de boulet

[Wax Rolling Eyes]
Date d'inscription : 01/09/2008
http://www.wilkyo.com

Des monstres sur la carte qui vous poursuivent Empty 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)
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)


Dernière édition par wilkyo le Sam 5 Sep 2015 - 23:07, édité 2 fois
Evasion
Evasion
Membre

Nombre de messages : 17
Age : 30
Distinction : aucune
Date d'inscription : 05/08/2008

Des monstres sur la carte qui vous poursuivent Empty 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 !
wilkyo
wilkyo
Membre

Nombre de messages : 316
Age : 32
Localisation : Loiret
Distinction : Sauveur de miches // Chou (l)

[Coco' Smile]

Adepte de Pedobear // Lécheur de lolis

[Mist' Wink]

Personnage Colorée // Instructeur de boulet

[Wax Rolling Eyes]
Date d'inscription : 01/09/2008
http://www.wilkyo.com

Des monstres sur la carte qui vous poursuivent Empty Re: Des monstres sur la carte qui vous poursuivent

Ven 19 Déc 2008 - 22:25
De rien Wink
ç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 Wink
kordarr
kordarr
Modérateur

Nombre de messages : 1838
Age : 33
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' Smile]
Fan n°1 de Coco'
Psychopathe en chef
Date d'inscription : 05/11/2008

Des monstres sur la carte qui vous poursuivent Empty 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.
wilkyo
wilkyo
Membre

Nombre de messages : 316
Age : 32
Localisation : Loiret
Distinction : Sauveur de miches // Chou (l)

[Coco' Smile]

Adepte de Pedobear // Lécheur de lolis

[Mist' Wink]

Personnage Colorée // Instructeur de boulet

[Wax Rolling Eyes]
Date d'inscription : 01/09/2008
http://www.wilkyo.com

Des monstres sur la carte qui vous poursuivent Empty 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...)
Contenu sponsorisé

Des monstres sur la carte qui vous poursuivent Empty Re: Des monstres sur la carte qui vous poursuivent

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum