Sujet n°137
Posté par Kaminario Shiroy le 13 Jan - 15:07 (2008)
Titre : [OK] Activation d'un script sur condition
Comment faire pour que un script ne s'active que si on as le bon pokemon ?
J'ai essayé de mettre

Code:


if pokemon_possede(025)


apres l'entete mais ça bug
j'ai rajouté un end a la fin mais rebellot, ça rebuggue, si quelqu'un pourait m'aider ...

Posté par Krosk le 13 Jan - 15:20 (2008)
Script: pokemon_possede(25)
Il ne faut pas mettre de if dans le champ.

(Car sinon il comprend if if pokemon_possede(25) et c'est bug assuré)

Posté par Kaminario Shiroy le 13 Jan - 15:27 (2008)
Sa bug toujours et sa me met :

 
Citation:
???'Pikachu_Follow' ? 5 ??? NomethodError ??????
undefined method 'pokemon_possede' for nil:NilClass
Je le met juste apres le commentaire du debut (l'entete)

Posté par Krosk le 13 Jan - 15:44 (2008)
Ah, ce n'est pas dans un event? autant pour moi. Là, ca risque en effet de ne pas marcher! Qu'est-ce que tu veux faire EXACTEMENT? Donne le contenu de ton script (entre balise code de préférence).

Posté par Kaminario Shiroy le 13 Jan - 16:09 (2008)
Voila le code :



 C'est pour que pikachu (en heros 002) suive le heros

Code:
pokemon_possede(025)
TRAIN_ACTOR_TRANSPARENT_SWITCH = false
TRAIN_ACTOR_TRANSPARENT_SWITCH = true
TRAIN_ACTOR_TRANSPARENT_SWITCHES_INDEX = 20
DOWN_LEFT = 1
DOWN_RIGHT = 3
UP_LEFT = 7
UP_RIGHT = 9
JUMP = 5
class Game_Party_Actor < Game_Character
def initialize
super()
@through = true
end
def setup(actor)
if actor != nil
@character_name = actor.character_name
@character_hue = actor.character_hue
else
@character_name = ""
@character_hue = 0
end
@opacity = 255
@blend_type = 0
end
def screen_z(height = 0)
if $game_player.x == @x and $game_player.y == @y
return $game_player.screen_z(height) - 1
end
super(height)
end
def move_down(turn_enabled = true)
if turn_enabled
turn_down
end
if passable?(@x, @y, Input:: DOWN)
turn_down
@y += 1
end
end
def move_left(turn_enabled = true)
if turn_enabled
turn_left
end
if passable?(@x, @y, Input::LEFT)
turn_left
@x -= 1
end
end
def move_right(turn_enabled = true)
if turn_enabled
turn_right
end
if passable?(@x, @y, Input::RIGHT)
turn_right
@x += 1
end
end
def move_up(turn_enabled = true)
if turn_enabled
turn_up
end
if passable?(@x, @y, Input::UP)
turn_up
@y -= 1
end
end
def move_lower_left
unless @direction_fix
@direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::UP ? Input:: DOWN : @direction)
end
if (passable?(@x, @y, Input:: DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input:: DOWN))
@x -= 1
@y += 1
end
end
def move_lower_right
unless @direction_fix
@direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::UP ? Input:: DOWN : @direction)
end
if (passable?(@x, @y, Input:: DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input:: DOWN))
@x += 1
@y += 1
end
end
def move_upper_left
unless @direction_fix
@direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input:: DOWN ? Input::UP : @direction)
end
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
@x -= 1
@y -= 1
end
end
def move_upper_right
unless @direction_fix
@direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input:: DOWN ? Input::UP : @direction)
end
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
@x += 1
@y -= 1
end
end
def set_move_speed(move_speed)
@move_speed = move_speed
end
end
class Spriteset_Map
def setup_actor_character_sprites?
return @setup_actor_character_sprites_flag != nil
end
def setup_actor_character_sprites(characters)
if !setup_actor_character_sprites?
index_game_player = 0
@character_sprites.each_index do |i|
if @character_sprites[i][/i].character.instance_of?(Game_Player)
index_game_player = i
break
end
end
for character in characters.reverse
@character_sprites.unshift(Sprite_Character.new(@viewport1, character))
end
@setup_actor_character_sprites_flag = true
end
end
end
class Scene_Map
def setup_actor_character_sprites(characters)
@spriteset.setup_actor_character_sprites(characters)
end
end
class Game_Party
def set_transparent_actors(transparent)
@transparent = transparent
end
def setup_actor_character_sprites
if @characters == nil
@characters = []
for i in 1 .. 4
@characters.push(Game_Party_Actor.new)
end
end
if @actors_chach == nil
@actors_chach = []
end
if @actors_chach != @actors
@actors_chach = @actors.clone
for i in 1 .. 4
@characters[i][/i].setup(actors[i][/i])
end
end
if $scene.instance_of?(Scene_Map)
$scene.setup_actor_character_sprites(@characters)
end
end
def update_party_actors
setup_actor_character_sprites
transparent = $game_player.transparent
if transparent == false
if TRAIN_ACTOR_TRANSPARENT_SWITCH
transparent = $game_switches[TRAIN_ACTOR_TRANSPARENT_SWITCHES_INDEX]
else
transparent = $game_player.transparent
end
end
for character in @characters
character.transparent = transparent
character.set_move_speed($game_player.get_move_speed)
character.update
end
end
def moveto_party_actors( x, y )
setup_actor_character_sprites
for character in @characters
character.moveto( x, y )
end
if @move_list == nil
@move_list = []
end
for i in 0 .. 10
@move_list[i][/i] = nil
end
end
def move_party_actors
if @move_list == nil
@move_list = []
for i in 0 .. 10
@move_list[i][/i] = nil
end
end
@move_list.each_index do |i|
if @characters[i][/i] != nil
case @move_list[i][/i].type
when Input:: DOWN
@characters[i][/i].move_down(@move_list[i][/i].args[0])
when Input::LEFT
@characters[i][/i].move_left(@move_list[i][/i].args[0])
when Input::RIGHT
@characters[i][/i].move_right(@move_list[i][/i].args[0])
when Input::UP
@characters[i][/i].move_up(@move_list[i][/i].args[0])
when DOWN_LEFT
@characters[i][/i].move_lower_left
when DOWN_RIGHT
@characters[i][/i].move_lower_right
when UP_LEFT
@characters[i][/i].move_upper_left
when UP_RIGHT
@characters[i][/i].move_upper_right
when JUMP
@characters[i][/i].jump(@move_list[i][/i].args[0],@move_list[i][/i].args[1])
end
end
end
end
class Move_List_Element
def initialize(type,args)
@type = type
@args = args
end
def type() return @type end
def args() return @args end
end
def add_move_list(type,*args)
@move_list.unshift(Move_List_Element.new(type,args)).pop
end
def move_down_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input:: DOWN,turn_enabled)
end
def move_left_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::LEFT,turn_enabled)
end
def move_right_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::RIGHT,turn_enabled)
end
def move_up_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::UP,turn_enabled)
end
def move_lower_left_party_actors
move_party_actors
add_move_list(DOWN_LEFT)
end
def move_lower_right_party_actors
move_party_actors
add_move_list(DOWN_RIGHT)
end
def move_upper_left_party_actors
move_party_actors
add_move_list(UP_LEFT)
end
def move_upper_right_party_actors
move_party_actors
add_move_list(UP_RIGHT)
end
def jump_party_actors(x_plus, y_plus)
move_party_actors
add_move_list(JUMP,x_plus, y_plus)
end
end
module Game_Player_Module
def update
$game_party.update_party_actors
super
end
def moveto( x, y )
super
$game_party.moveto_party_actors( x, y )
end
def move_down(turn_enabled = true)
if passable?(@x, @y, Input:: DOWN)
$game_party.move_down_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_left(turn_enabled = true)
if passable?(@x, @y, Input::LEFT)
$game_party.move_left_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_right(turn_enabled = true)
if passable?(@x, @y, Input::RIGHT)
$game_party.move_right_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_up(turn_enabled = true)
if passable?(@x, @y, Input::UP)
$game_party.move_up_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_lower_left
if (passable?(@x, @y, Input:: DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input:: DOWN))
$game_party.move_lower_left_party_actors
end
super
end
def move_lower_right
if (passable?(@x, @y, Input:: DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input:: DOWN))
$game_party.move_lower_right_party_actors
end
super
end
def move_upper_left
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
$game_party.move_upper_left_party_actors
end
super
end
def move_upper_right
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
$game_party.move_upper_right_party_actors
end
super
end
def jump(x_plus, y_plus)
new_x = @x + x_plus
new_y = @y + y_plus
if (x_plus == 0 and y_plus == 0) or passable?(new_x, new_y, 0)
$game_party.jump_party_actors(x_plus, y_plus)
end
super(x_plus, y_plus)
end
def get_move_speed
return @move_speed
end
end
class Game_Player
include Game_Player_Module
end 

Au debut je voulait mettre ce code sans "pokemon_possede(25)" mais avec un evenement commun en parralle ou le swicht s'active au debut :
if pokemon_possede(25)
   modifier aparence du heros(002) en pikachu [...]
else
  modifier apparence du heros(002) en ... [...]

Posté par Krosk le 13 Jan - 16:13 (2008)
Oui, je pense sincèrement qu'il faut (à ton niveau) faire un evenement en commun en processus parallèle.

Ici, ce script ne fonctionnera pas avec pokemon_possede.

Posté par Kaminario Shiroy le 13 Jan - 16:25 (2008)
J'ai essayé avec l'evenement commu mais pikachu ne changent pas d'apparence ...
"modifer apparence" ne marche pas...

Posté par Krosk le 13 Jan - 16:37 (2008)
As tu pensé à ajouté le héros dans ton équipe avec la commande évènement Modifier équipe (Cette commande est indisponible dans PSP_Mod, il faut passer par RPGMakerXP) ou bien l'ajouter en tant que membre de l'équipe dès le début du jeu? (attention, je ne parle pas de l'équipe de Pokémons, mais de l'équipe de héros)

De même, je ne connais pas ce script en détail, mais peut-être y'a til quelque chose à faire pour l'activer.

Quoiqu'il en soi, je ne fais pas de service après vente pour les scripts hors ceux PSP.

Posté par Kaminario Shiroy le 13 Jan - 18:04 (2008)
C'est bon tout marche