[PSP] Le Script du "Follow Me"

Pages: 1 [2]

Alki

  • Membre
  • 16795 posts
14 Octobre 2014, 17:49
Mec tu viens de faire un up de 3 ans.

Nuri Yuri

  • Modérateur de section
  • 578 posts
14 Octobre 2014, 19:32
@WilliX719 : Le script la n'est pas terrible ce pourquoi tu n'as pas la distinction mâle/femelle et chromatique ou non.
Pour le mâle femelle ça va être très compliqué sachant que certains chara n'ont pas été fait pour les femelles (détails trop minimes), pour les chromatiques :
- Tu devras télécharger le pack de ressources complète des characters des Pokémon : http://www.pokemontrash.com/club/rpg-maker/bibliotheque-des-ressources-graphiques-et-audio/

- Supprimer les anciens chara des Pokémon et coller les charas de ce pack dans ton dossier Characters (Fais attention à tes évents, si tu as déjà utilisé les anciens chara tu auras des problèmes)

- Modifier la ligne :
string = "pkm #{sprintf('%03d', @pkm_id)}.png"
en
string = $pokemon_party.actors[0].shiny ? "#{sprintf('%03ds_%d', @pkm_id,$pokemon_party.actors[0].form)}.png" : "#{sprintf('%03d_%d', @pkm_id,$pokemon_party.actors[0].form)}.png"


Je te conseille vivement de t'intéresser à la programmation en Ruby et à l'utilisation des classes du RGSS (différents "tutos" que j'ai rédigé) si tu veux intégrer des systèmes comme ça car ils ne feront jamais exactement ce que tu veux et tu devras toujours modifier une ligne. (Donc faut être armé sinon ton projet n'avancera pas énormément et compte pas sur les autres pour qu'ils t'aident éternellement.)

WilliX719

  • Membre
  • 3 posts
14 Octobre 2014, 22:51
@Yuri Nuri Même si cette question est un petit peu conne, je la pose, dans le pack de ressources, je ne dois télécharger que les caractères des pokémon, on est d'accord ? Parce que je ne suis pas sûr et je n'aurais pas envie de me tromper  :)

Nuri Yuri

  • Modérateur de section
  • 578 posts
14 Octobre 2014, 23:05
Oui juste les Pokémon. Après si tu veux plus de chara, pioche dans le reste tu trouveras certainement des choses intéressantes :p (Fais gaffe à l'harmonie entre les styles.)

WilliX719

  • Membre
  • 3 posts
14 Octobre 2014, 23:11
Ok ! Ben merci beaucoup !!!  ;D B)

rhenaud33

  • Membre
  • 32 posts
15 Novembre 2014, 01:43
Tant qu'on en est à relancer le sujet, moi aussi j'ai un petit problème : lorsque je lance mon jeu, ils me disent mot pour mot :
Script 'Follow Me' line 11 : NameError occured.
uninitialized constant Follower_Pkm::POKEMON_S
Cela m'indique que la variable Follower_Pkm n'est pas initialisée, mais quelle valeur est-ce que je dois mettre dans cette future variable ? (Disons que je pensais que ce serait inclus dans l'onglet "variable" mais ça n'en a pas l'air... ^^' Eh oui j'ai fait des tests avant de poser la question moi monsieur ! :p Et heureusement d'ailleurs...)
Bref merci de m'aider ! ^^
« Modifié: 15 Novembre 2014, 01:57 par rhenaud33 »

Nuri Yuri

  • Modérateur de section
  • 578 posts
15 Novembre 2014, 11:04
Faut installer le script avant MAIN et pas avant Config Pannel.

L'ordre d'arrivée des scripts est très important car tu vois, ruby n'est pas omniscient et les scripts sont évalués les uns après les autres donc si tu met un script dépendant d'un autre script avant le script dont il dépend ça va pas trop marcher. Après les dépendances sont de plusieurs natures :
Les dépendances immédiates et les dépendances futures, dans les dépendances immédiates ont a :
class Machin < Truc
Si Truc n'existe pas ça ne va pas fonctionner, un enfant ne peut pas être conçu sur la mère n'existe pas (cf tous les bordel de paradoxe temporel Hollywoodiens)
include Truc
De même, ici tu demande à ce que les fonctions et constantes de Truc soient importés dans la classe/script, si Truc n'existe pas, Ruby ne pourra pas importer grand choses (c'est comme avoir besoins de ton livre de maths mais tu n'as pas encore acheté ce dit livre).

Les dépendances immédiates le sont car Ruby va chercher ce qu'il faut au moment où il voit ces choses, après il y a les dépendances futures :
variable= POKEMON_S::Pokemon.new(...)
Dans ce cas là, Ruby inscrit juste dans le corps de la fonction qu'il faudra aller chercher la constante POKEMON_S puis chercher la constante Pokemon dans la constante POKEMON_S. Si l'une des deux n'existent pas au moment où Ruby exécute les instructions de recherche, ça marche pas, cela dit à la compilation ça passe crème et heureusement car ça serait assez chiant si t'as des scripts dépendant entre eux dans les deux sens.

Donc, l'endroit où t'as mis ton Follow_Me et ça devrait être bon je pense :p

rhenaud33

  • Membre
  • 32 posts
15 Novembre 2014, 12:47
Owi, ça marche ! :3 Je vais pouvoir continuer ! Merci beaucoup ^^ (Je m'y connais pas énormément en Ruby mais bon... va falloir que j'approfondisse mes connaissances :p)
« Modifié: 15 Novembre 2014, 16:37 par rhenaud33 »

rhenaud33

  • Membre
  • 32 posts
19 Novembre 2014, 23:11
Désolé du double post, mais est-ce que c'est normal que le pokémon qui me suit ne puisse pas traverser mes events (et donc peut être dissocié du Dresseur) ? Par exemple lorsque je reçois mon Pokémon celui-ci commence avant l'event qui le bloque, c'est-à-dire à l'autre côté de ma map ?

Nuri Yuri

  • Modérateur de section
  • 578 posts
20 Novembre 2014, 13:28
Oui, totalement normal. Les événements dans RPG Maker ne peuvent pas entrer en collision à moins d'avoir été téléporté les uns sur les autres ou d'être traversables du coup ton Pokémon se retrouve bloqué derrière les évents de blocage.
T'as deux solutions :
* Ne pas utiliser d'évents physique pour bloquer le personnage. (En utilisant les positions du héros tu peux l'interdire d'aller à un endroit ou un autre.)
* Téléporter les évents de blocage ailleurs quand ils ont fait leur travail.

rhenaud33

  • Membre
  • 32 posts
20 Novembre 2014, 17:31
C'est ce que je pensais. Dans ce cas faudra que je reparamètre mes events pour que la branche "Conditional" se déclenche lorsque mon dresseur sera à une certaine position... (je sais je suis pas compréhensible même moi je me conprends pas xD) ça pourrait se faire. Merci, j'avais pas vu cette option.
Au fait, en parlant de projet, le tien (c'est-à-dire Pokémon Orbe Doré) avance ? J'ai entendu dire que tu étais sur plusieurs projets en même temps. (Je sais je tombe sur du HS là... mais ton projet m'intéresse.  :winner: )

Nuri Yuri

  • Modérateur de section
  • 578 posts
20 Novembre 2014, 18:34
POD fait du stationnaire, priorité à Pokémon SDK et Pokémon Gemme ^^'
Pour les positions tu verras c'est pas trop dur et ça peut être utilisé pour gérer les téléportations d'une map à l'autre sans avoir à créer des tonnes d'évents qu'il faut modifier :p

rhenaud33

  • Membre
  • 32 posts
21 Novembre 2014, 23:12
Ouais, ça pourrait se faire. Juste besoin de mettre plein de conditional branchs ^^ et ok pour ton projet, faudra que je regarde les deux autres alors pour voir l'avancement de ces deux autres projets (et surtout) quelles sont les raisons qui mettent ces jeux en avant par rapport à un RPG Pokémon classique.
Le pb avec moi c'est que j'ai plein d'idées mais j'ai du mal à les mettre en place ^^" (même la nuit je rêve de nouvelles idées le premier jour de codage j'ai fait nuit blanche à cause de l'afflux d'idées dans ma tête : c'était un lundi... ouch xD)
Mais pour ce que je veux faire va ABSOLUMENT falloir me pencher sur le RGSS car je vais pas m'appuyer tout le temps sur les autres, faut que l'oisillon prenne son envol :p Et avec mes idées viennent des propositions de scripts à mettre, mais c'est fou ET c'est en langage Algobox (if, while etc :p) étant donné que mes cours actuels d'ISN sont là-dessus et sur jvs, donc je pense comme ceci, et la retranscription en RGSS me semble dure.

Nuri Yuri

  • Modérateur de section
  • 578 posts
22 Novembre 2014, 00:08
Pas tant que ça quand tu connais le langage.
Faudra peut être que je fasse deux trois tutoriels là dessus :d (Par contre, si tu veux bien faudrait qu'on continue la conversation dans un autre sujet que celui-ci. http://www.pokemontrash.com/club/rpg-maker/cafe-des-rpg-makers/ )

loucaz

  • Membre
  • 3 posts
15 Août 2017, 23:25
Salut je débute et j'ai besoin d'aide, mon script "follow me"  fonctionne parfaitement mais j'ai soucis quand mon personnage cour (grâce a un autre script) mon pokemon le suis mais avec du retard car ils n'ont pas la même vitesse de mouvement. Je connais donc le problème mais ne sachant pas comment modifier mon script follow me pour qu'il ai la même vitesse que mon personnage. Merci de votre aide.

Nuri Yuri

  • Modérateur de section
  • 578 posts
16 Août 2017, 16:49
Le mieux est d'utiliser un évènement commun pour modifier la vitesse du héros, ainsi la vitesse se propagera au follower sauf si ce script est vraiment mal conçu.

loucaz

  • Membre
  • 3 posts
16 Août 2017, 22:23
J'ai tester avec un évènement commun et cela ne marche pas non plus , le script qui "est vraiment mal conçu" est celui de ce tuto. Le problème viens ce script ??

Nuri Yuri

  • Modérateur de section
  • 578 posts
16 Août 2017, 23:59
Je pense ^^'

loucaz

  • Membre
  • 3 posts
17 Août 2017, 16:09
voici mon script , jai repris celui de pikachu5000
j'aimerai que se pokemon ai la meme vitesse que le hero..

voici tous les pokemon a mettre dans le dossier Characters: Ici et pour ne le renommer remplacer le script par celui-ci:
Spoiler
#==============================================================================
# ■ Follow Me Pokémon
# par Brendan75
#-----------------------------------------------------------------------------
# Rend le premier pokémon de l'équipe visible sur la map.
#==============================================================================

PKM_TRANSPARENT_SWITCHES = 50 # Index de l'interrupteur pour rendre invisible

class Follower_Pkm < Game_Character
  include POKEMON_S
 
  def initialize
    super()
    @through = false
    @step_anime = true
    @pkm_id = 0
    @shiney = false
  end
 
  def update
    if $pokemon_party.size != 0
      @pkm_id = $pokemon_party.actors[0].id
      @shiney = $pokemon_party.actors[0].shiny
      if @shiney
        string = "#{sprintf('%03d', @pkm_id)}s_0.png"
      else
        string = "#{sprintf('%03d', @pkm_id)}_0.png"
      end
      if @character_name != string
        @character_name = string
        @character_hue = 0
        @opacity = 255
        @blend_type = 0
      end
    else
      @character_name = ""
    end
    super
  end
 
  def check_event_trigger_touch(x, y) end
   
  def passable?(x, y, d)
    new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
    new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
    unless $game_map.valid?(new_x, new_y)
      return false
    end
    if @through
      return true
    end
    unless $game_map.passable?(x, y, d, self)
      return false
    end
    unless $game_map.passable?(new_x, new_y, 10 - d)
      return false
    end
    for event in $game_map.events.values
      if event.x == new_x and event.y == new_y
        unless event.through
          if self != $game_player
            return false
          end
          if event.character_name != ""
            return false
          end
        end
      end
    end
    return true
  end
end

#-----------------------------------------------------------------------------
# ● Spriteset Map
#-----------------------------------------------------------------------------
class Spriteset_Map
  alias follow_me_initialize initialize
  def initialize
    follow_me_initialize
    @character_sprites.push(Sprite_Character.new(@viewport1, $game_party.follower_pkm))
    update
  end
end

#-----------------------------------------------------------------------------
# ● Scene Map
#-----------------------------------------------------------------------------
class Scene_Map
  alias follow_me_transfer_player transfer_player
  def transfer_player
    $game_party.erase_moves
    follow_me_transfer_player
  end
 
  alias follow_me_update update
  def update
    follow_me_update
    $game_party.follower_pkm.update
  end
end

#-----------------------------------------------------------------------------
# ● Game Player
#-----------------------------------------------------------------------------
class Game_Player
  alias follow_me_moveto moveto
  def moveto(x, y)
    follow_me_moveto(x, y)
    $game_party.follower_pkm.moveto(x, y)
  end
 
  def move_down(turn_enabled = true)
    if passable?(@x, @y, 2)
      $game_party.move_party_actors
      $game_party.add_move_list(Input::DOWN, turn_enabled)
    end
    super(turn_enabled)
  end
 
  def move_left(turn_enabled = true)
    if passable?(@x, @y, 4)
      $game_party.move_party_actors
      $game_party.add_move_list(Input::LEFT, turn_enabled)
    end
    super(turn_enabled)
  end
 
  def move_right(turn_enabled = true)
    if passable?(@x, @y, 6)
      $game_party.move_party_actors
      $game_party.add_move_list(Input::RIGHT, turn_enabled)
    end
    super(turn_enabled)
  end
 
  def move_up(turn_enabled = true)
    if passable?(@x, @y, 8)
      $game_party.move_party_actors
      $game_party.add_move_list(Input::UP, turn_enabled)
    end
    super(turn_enabled)
  end
end

#-----------------------------------------------------------------------------
# ● Game Party
#-----------------------------------------------------------------------------
class Game_Party
  include POKEMON_S
  attr_accessor :follower_pkm
 
  alias follow_me_initialize initialize
  def initialize
    follow_me_initialize
    @follower_pkm = Follower_Pkm.new
    @next_move = nil
  end
 
  def move_party_actors
    case @next_move.type
    when Input::DOWN
      @follower_pkm.move_down(@next_move.turn_enabled)
    when Input::LEFT
      @follower_pkm.move_left(@next_move.turn_enabled)
    when Input::RIGHT
      @follower_pkm.move_right(@next_move.turn_enabled)
    when Input::UP
      @follower_pkm.move_up(@next_move.turn_enabled)
    else
      return
    end
    erase_moves
  end
   
  def add_move_list(type, turn_enabled)
    @next_move = Move_List_Element.new(type, turn_enabled)
  end
 
  def erase_moves
    @next_move = nil
  end
end

#-----------------------------------------------------------------------------
# ● Move List Element
#-----------------------------------------------------------------------------
class Move_List_Element
  attr_reader :type
  attr_reader :turn_enabled
 
  def initialize(type, turn_enabled)
    @type = type
    @turn_enabled = turn_enabled
  end
end
ca prendra aussi les brillants(comme moi lol)en compte.

Pages: 1 [2]    En haut ↑