Sujet n°10236
Posté par Reborn le 19 Aoû - 12:20 (2011)
Titre : Information Script [V 0.7]
Bonjour,

étant archi-débutant en langage Ruby (j'ai quand même de bonnes connaissance en Delphi ), je cherche à
le comprendre avant de me lancer dans quelque chose de plus ambitieux.

Aussi, dans l'exemple de "Krosk" joint dans le téléchargement de PSP 0.7, quand on peut choisir parmi les 3
équipes de pokémons dans le centre rouge, j'ai remarqué qu'un nombre entre 1 et 3 serait associé à une variable
selon le choix de l'équipe que l'on fait.

Choix Equipe 1 => variable := 1
Choix Equipe 2 => variable := 2
Choix Equipe 3 => variable := 3

J'ai donc cherché dans quel cas on ferait appel à la valeur de cette variable (tout seul, forum, manuel) sans le retrouver.

Place à la pratique:
J'ai remplacé la valeur des variables comme ceci :

Choix Equipe 1 => variable := 1
Choix Equipe 2 => variable := 1
Choix Equipe 3 => variable := 1

et j'ai opté pour l'équipe 2. Cependant je n'ai pas pu trouver de différences dans le jeu.

Tout ce que je voudrais savoir, c'est
-à quoi sert cette variable?
-où je peux trouver ces réponses seul, de manière à ne plus vous déranger pour une question si basique

Merci à tout ceux qui ont participé activement ou passivement à PSP.

P.S. Excusez-moi si mes termes techniques ne sont pas les bons, j'ai pris des cours de programmation en allemand.

Posté par Nuri Yuri le 19 Aoû - 13:10 (2011)
Ces variables servent à rien pour PSP, pour les évents, ça te permet d'adapter l'équipe de ton rivale, si tu choisi l'équipe 3 (variable équipe ==3) tu fais combattre ton rivale avec l'équipe 1 etc...
C'est la seule utilité de cette variable, donc tu peux mettre la valeur que tu veux, ça ne changera rien si tu ne l'utilise pas dans les évents.

Posté par Reborn le 19 Aoû - 13:21 (2011)
Je n'avais pas pensé au rival, mais je me doutais que ça serait quelque chose du genre.

Merci pour la réponse

Posté par Reborn le 20 Aoû - 15:03 (2011)
Re-Moi,

(Je ne pense pas que le problème ci-dessous méritait un nouveau topic)
Je cherche en vain dans les scripts, la ligne où un combat se lance et que "notre" dresseur s'écarte pour appeler le pokémon
situé en premier dans la liste. Je voudrais changer, de manière à ce qu'il appelle le pokémon de notre choix.

Je pense que ça doit être possible en utilisant le script pour échanger un pokémon déjà présent, mais il faudrait juste que
je le paramètre afin que mon pokémon ne perde pas l'initiative pour autant et que le premier pokémon de la liste puisse être
envoyer également. J'aurais bien voulu le tester, mais comme je ne trouve pas l'endroit exact où le placer, la fenêtre d'échange
s'ouvre toujours trop tard.

Posté par Nuri Yuri le 20 Aoû - 15:49 (2011)
Évites les doubles postes (fait un édit visible), la prochaine fois tu peux avoir un avertissement pour ça.
Pour ton problème, je peux pas t'aider, je ne connait pas assez le script de combat.

Posté par Reborn le 20 Aoû - 21:54 (2011)
Merci pour ton conseil et  ta clémence :lol:

Pour ce qui est du script, j'ai trouvé comme un grand, pas mal pour le 2e jour de Ruby :8) . Il fonctionne (c'est du copier/coller des scripts existants Lordork chez mémé )
Je l'ai placé dans "Pokemon_Battle_Wild" approximativement à la ligne 228 (j'ai mit des commentaires pour me retrouver, je ne peux donc plus trouver la ligne exacte) en dessous de "#Envoi du pokémon (animation)"

        $game_system.se_play($data_system.decision_se)
        $battle_var.window_index = @action_window.index
        scene = Pokemon_Party_Menu.new(0, @z_level + 100)
        scene.main
        return_data = scene.return_data
        @phase = 0
        @switch_id = return_data
        actor_pokemon_switch
     
        ->Ah oui, j'ai aussi du enlever la ligne "launch_pokemon"

Ensuite, j'ai changé changer dans le "Battle Core 1", Ligne 1500 (Switch de pokémon):

def actor_pokemon_switch
      if @switch_id != -1
        if (not(@actor.dead?)) and (@actor_action > 0)
          @actor_status.visible = true
        else
          @actor_status.visible = false
        end
       
        switch_effect(@actor, @enemy)
       
        if (not(@actor.dead?)) and (@actor_action > 0)
          recall_pokemon
        end

Autrement, il va rappeler le premier pokémon de la liste sans pour autant l'avoir envoyé.

Ce qui marche bien:
-Affichage du menu pokémon dés que "notre" dresseur se retire
-"Notre" pokémon garde la priorité de l'attaque (si priorité il a)

Ce qui ne fonctionne pas encore:
-La répartition des points d'expérience: Même si le premier pokémon ne participe pas au combat il partage les points avec celui qui s'est battu

Une solution?

EDIT:
Ok, c'est bon. Dans "Pokemon_Battle_Wild, ligne +/-103, j'ai enlever la ligne:

$battle_var.have_fought.push(@actor.party_index)

Maintenant les points d'expérience sont bien calculés.

Mais comme un soucis en amène toujours un autre Résignation man

Comment je fais pour pouvoir choisir le premier pokémon de ma liste. PSP pense qu'il est en combat donc je ne peux pas l'envoyer