[PSP] Le Script du "Follow Me"
Pages: 1 [2]
Alki
- Membre
- 16783 posts
14 octobre 2014, 17:49
Mec tu viens de faire un up de 3 ans.
Nuri Yuri
- Modérateur de section
- 575 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.)
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
- 575 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 !!!
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 »
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 ! ^^
Nuri Yuri
- Modérateur de section
- 575 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
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
- 575 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.
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. )
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. )
Nuri Yuri
- Modérateur de section
- 575 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
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.
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
- 575 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/ )
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
- 575 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
- 575 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..
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:ca prendra aussi les brillants(comme moi lol)en compte.SpoilerCode: [Sélectionner]#==============================================================================
# ■ 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