[PSP] Système d'Options

6 Réponses • 505 Vues

Metaiko

Graphiste

Bonjour,
Je viens ici pour vous proposer mon tout premier script en Ruby : Le menu Options adapté à PSP ! ^^

Quelles options sont disponibles dans ce script ?
  • Changer la vitesse des dialogues
  • Passer le jeu en plein écran ou en fenêtré
  • Changer la police d'écriture
  • Activer/Désactiver les animations de combat
  • Définir le style de combat en Choix/Défini
  • Changer l'apparence des boîtes de dialogue
  • Changer le volume des BGM, des BGS, des ME et des SE


Ce script possède également un système de sauvegarde. Une fois les paramètres enregistrés, il crée un fichier Options.rxdata à la racine du projet. Cela permet par exemple de garder le volume choisi par le joueur sur l'écran titre et lui permet également de réinitialiser les paramètres en supprimant tout simplement le fichier.

voici quelques screens :


Tout d'abord, téléchargez ce pack : https://mega.nz/#!zBYQBYTB!5ULkgJj7FYcCnFShcHAp5Ed5JAclSUlqOqxA7rJM7BU
Mettez les dossiers Graphics et Police à la racine de votre projet et installez toutes les polices (les joueurs devront aussi installer les polices)

Maintenant, rendez-vous dans l'éditeur de script puis créez un nouveau script au-dessus de Main (appelez-le comme vous voulez) et collez-y ce script :
https://pastebin.com/KVXna79V (merci la limite de 20000 caractères ^^')
Maintenant, rendez-vous dans le script Window_Message (celui de Systeme General)
Vers la ligne 34, vous avez :
@speed_defilement = POKEMON_S::SPEED_MSG
remplacez par :
if $vit_txt == nil
      @speed_defilement = POKEMON_S::SPEED_MSG
    else
      @speed_defilement = $vit_txt
    end
Vers la ligne 23, vous avez :
@dummy.bitmap = RPG::Cache.picture(POKEMON_S::MSG)
remplacez par :
if $message_dummy == nil
      @dummy.bitmap = RPG::Cache.picture(POKEMON_S::MSG)
    else
      @dummy.bitmap = RPG::Cache.picture($message_dummy)
    end
Ensuite, dans le script Pokemon_Window_Help à la ligne 25, vous avez :
@dummy.bitmap = RPG::Cache.picture(POKEMON_S::MSG)
remplacez par :
if $message_dummy == nil
        @dummy.bitmap = RPG::Cache.picture(POKEMON_S::MSG)
      else
        @dummy.bitmap = RPG::Cache.picture($message_dummy)
      end
rendez-vous maintenant dans Pokemon_Shop, à la ligne 39 vous avez :
@dummy.bitmap = RPG::Cache.picture(POKEMON_S::MSG)
remplacez par :
if $message_dummy == nil
        @dummy.bitmap = RPG::Cache.picture(POKEMON_S::MSG)
      else
        @dummy.bitmap = RPG::Cache.picture($message_dummy)
      end
rendez-vous ensuite dans Scene_Map (celui de Systeme General)
Vers la ligne 68, vous avez :
if $game_temp.gameover
ajoutez au-dessus :
#Changement du paramètre de la taille de la fenêtre si le joueur appuie sur ALT+Entrée
    if $ecran != "Fenêtre" and $screen_ratio.call(0) != 640 and $screen_ratio.call(1) !=480
      $ecran = "Fenêtre"
    elsif $ecran != "Plein Écran" and $screen_ratio.call(0) == 640 and $screen_ratio.call(1) == 480
      $ecran = "Plein Écran"
    end
Maintenant, rendez-vous dans Pokemon_Battle_Core 1
remplacez tous les :
@actor_sprite.animation(animation, true)
par :
@actor_sprite.animation(animation, true) if $anim != "Désactiver"
Il y en a 8
remplacez, vers les lignes 1910 et 1920 (seulement les deux) :
sprite.animation(animation, true)
par :
sprite.animation(animation, true) if $anim != "Désactiver"
Vers la ligne 2046, vous avez :
when "ATK"
          draw_text("Ah, Attaque de",text)
          stage_animation(actor_sprite, $data_animations[478])
        when "DFE"
          draw_text("Ah, Défense de",text)
          stage_animation(actor_sprite, $data_animations[480])
        when "ATS"
          draw_text("Ah, Attaque Spéciale de",text)
          stage_animation(actor_sprite, $data_animations[484])
        when "DFS"
          draw_text("Ah, Défense Spéciale de",text)
          stage_animation(actor_sprite, $data_animations[486]) if $anim != "Désactiver"
        when "SPD"
          draw_text("Ah, Vitesse de",text)
          stage_animation(actor_sprite, $data_animations[482])
        when "EVA"
          draw_text("Ah, Esquive de",text)       
          stage_animation(actor_sprite, $data_animations[488])
        when "ACC"
          draw_text("Ah, Précision de",text)
          stage_animation(actor_sprite, $data_animations[490])
        end
remplacez par :
when "ATK"
          draw_text("Ah, Attaque de",text)
          stage_animation(actor_sprite, $data_animations[478]) if $anim != "Désactiver"
        when "DFE"
          draw_text("Ah, Défense de",text)
          stage_animation(actor_sprite, $data_animations[480]) if $anim != "Désactiver"
        when "ATS"
          draw_text("Ah, Attaque Spéciale de",text)
          stage_animation(actor_sprite, $data_animations[484]) if $anim != "Désactiver"
        when "DFS"
          draw_text("Ah, Défense Spéciale de",text)
          stage_animation(actor_sprite, $data_animations[486]) if $anim != "Désactiver"
        when "SPD"
          draw_text("Ah, Vitesse de",text)
          stage_animation(actor_sprite, $data_animations[482]) if $anim != "Désactiver"
        when "EVA"
          draw_text("Ah, Esquive de",text)       
          stage_animation(actor_sprite, $data_animations[488]) if $anim != "Désactiver"
        when "ACC"
          draw_text("Ah, Précision de",text)
          stage_animation(actor_sprite, $data_animations[490]) if $anim != "Désactiver"
        end
Vers la ligne 2138 vous avez :
when "ATK"
          draw_text("Ah, Attaque de",text)
          stage_animation(actor_sprite, $data_animations[479])
        when "DFE"
          draw_text("Ah, Défense de",text)
          stage_animation(actor_sprite, $data_animations[481])
        when "ATS"
          draw_text("Ah, Attaque Spéciale de",text)
          stage_animation(actor_sprite, $data_animations[485])
        when "DFS"
          draw_text("Ah, Défense Spéciale de",text)
          stage_animation(actor_sprite, $data_animations[487])
        when "SPD"
          draw_text("Ah, Vitesse de",text)
          stage_animation(actor_sprite, $data_animations[483])
        when "EVA"
          draw_text("Ah, Esquive de",text)       
          stage_animation(actor_sprite, $data_animations[489])
        when "ACC"
          draw_text("Ah, Précision de",text)
          stage_animation(actor_sprite, $data_animations[491])
        end
remplacez par :
when "ATK"
          draw_text("Ah, Attaque de",text)
          stage_animation(actor_sprite, $data_animations[479]) if $anim != "Désactiver"
        when "DFE"
          draw_text("Ah, Défense de",text)
          stage_animation(actor_sprite, $data_animations[481]) if $anim != "Désactiver"
        when "ATS"
          draw_text("Ah, Attaque Spéciale de",text)
          stage_animation(actor_sprite, $data_animations[485]) if $anim != "Désactiver"
        when "DFS"
          draw_text("Ah, Défense Spéciale de",text)
          stage_animation(actor_sprite, $data_animations[487]) if $anim != "Désactiver"
        when "SPD"
          draw_text("Ah, Vitesse de",text)
          stage_animation(actor_sprite, $data_animations[483]) if $anim != "Désactiver"
        when "EVA"
          draw_text("Ah, Esquive de",text)       
          stage_animation(actor_sprite, $data_animations[489]) if $anim != "Désactiver"
        when "ACC"
          draw_text("Ah, Précision de",text)
          stage_animation(actor_sprite, $data_animations[491]) if $anim != "Désactiver"
        end
Vers la ligne 2385, remplacez :
@enemy_sprite.animation(animation, true)
par :
@enemy_sprite.animation(animation, true) if $anim != "Désactiver"
Vers la ligne 1807 remplacez :
if animation_user != nil
par :
if animation_user != nil and $anim != "Désactiver"
Vers la ligne 1824, remplacez :
if animation_target != nil
par
if animation_target != nil and $anim != "Désactiver"

Maintenant, rendez-vous dans le script Pokemon_Battle_Core 2
Remplacez les 4 :
@actor_sprite.animation(animation, true)
par :
@actor_sprite.animation(animation, true) if $anim != "Désactiver"

Rendez-vous dans le script Pokemon_Battle_Trainer
Vers la ligne 400, vous avez :
if alive > 1
remplacez par :
if alive > 1 and $battle_style != "Défini"

Ensuite, rendez-vous dans le  script Game_System
Vers la ligne 46, vous avez :
Audio.bgm_play("Audio/BGM/" + bgm.name, bgm.volume, bgm.pitch)
remplacez par :
if $bgm_master == nil
        Audio.bgm_play("Audio/BGM/" + bgm.name, bgm.volume, bgm.pitch)
      else
        Audio.bgm_play("Audio/BGM/" + bgm.name, bgm.volume * $bgm_master/100, bgm.pitch)
      end
Vers la ligne 89, vous avez :
Audio.bgs_play("Audio/BGS/" + bgs.name, bgs.volume, bgs.pitch)
remplacez par :
if $bgs_master == nil
        Audio.bgs_play("Audio/BGS/" + bgs.name, bgs.volume, bgs.pitch)
      else
        Audio.bgs_play("Audio/BGS/" + bgs.name, bgs.volume * bgs_master/100, bgs.pitch)
      end
Vers la ligne 125, vous avez :
Audio.me_play("Audio/ME/" + me.name, me.volume, me.pitch)
remplacez par :
if $me_master == nil
        Audio.me_play("Audio/ME/" + me.name, me.volume, me.pitch)
      else
        Audio.me_play("Audio/ME/" + me.name, me.volume * $me_master/100, me.pitch)
      end
Enfin, vers la ligne 141, vous avez :
Audio.se_play("Audio/SE/" + se.name, se.volume, se.pitch)
remplacez par :
if $se_master == nil
        Audio.se_play("Audio/SE/" + se.name, se.volume, se.pitch)
      else
        Audio.se_play("Audio/SE/" + se.name, se.volume * $se_master/100, se.pitch)
      end

C'est bientôt fini ^^
Rendez-vous dans Scene_Title (celui de Systeme General)
Vers la ligne 55 vous avez :
if not @auto_load and not MAPINTRO
Ajoutez au-dessus :
if File.exist?("Options.rxdata")
      $data_system.windowskin_name =$save[3] #chargement du Windowskin
      $message_dummy              =$save[4] #Chargement de la boîte des dialogues
    end
Ensuite, rendez-vous dans Main
Les lignes que nous allons supprimer sont déplacés dans le script principal ^^
Vers la ligne 16 vous avez :
$style = "DP"
Supprimez cette ligne
Supprimez également à la ligne 18 :
$fontface = ["Pokemon DP", "Pokemon FRLG", "Pokemon RS", "Trebuchet MS"]
Enfin, supprimez à la ligne 22 :
if $style == "DP"
    # DP # Tailles étalon: 15 (1px) 31 (2px) et 47 (3px)
    $fontface = ["Pokemon DP", "Trebuchet MS"]
    $fontsizesmall = 15 # // hauteur min 14
    $fhs = 14
    $fontsize = 31 # // hauteur min 28
    $fh = 28
    $fontsizebig = 47
    $fhb = 42
  end
  if $style == "FRLG"
    # FRLG # Tailles étalon: 21 (1px)  38 (2px) 57 (3px)
    $fontface = ["Pokemon FRLG", "Trebuchet MS"]
    $fontsizesmall = 21 # // hauteur min 13
    $fhs = 13
    $fontsize = 38  # // hauteur min 26
    $fh = 26
    $fontsizebig = 57  # // hauteur min 39
    $fhb = 39
  end

et pour Finir, rendez-vous dans Pokemon_Menu
Menu PSP 0.9.2
Vers la ligne 28, vous avez :
s6 = "RETOUR"
      @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
remplacez par :
s6="OPTIONS"
      s7="RETOUR"
      @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6,s7])
Vers la lignes 122, remplacez :
when 5 # Quitter le menu
          $game_system.se_play($data_system.decision_se)
          $scene = Scene_Map.new
        end
par :
when 5 #Options
          $game_system.se_play($data_system.decision_se)
          $scene = Scene_Settings.new
        when 6 # Quitter le menu
          $game_system.se_play($data_system.decision_se)
          $scene = Scene_Map.new
        end
Menu PSP 0.8
Le script étant horrible à modifier, nous allons juste remplacer le bouton Retour
Tout d'abord, téléchargez cette image :

renommez-là Menu5.png et mettez-la dans Graphics/Pictures
Maintenant dans le script, rendez-vous à la ligne 187, remplacez :
if @menu_index == 5 # Quitter le menu  
            $game_system.se_play($data_system.decision_se) 
            $scene = Scene_Map.new   
          end 
par :
if @menu_index == 5 # Options
            $game_system.se_play($data_system.decision_se) 
            $scene = Scene_Settings.new
          end 
Enfin, rendez-vous à la ligne 57, remplacez :
s6 = "QUITTER" 
par :
s6 = "OPTIONS" 

Après tous ces changements, nous allons nous attaquer à certains cas particuliers. En effet, certains scripts que vous installez peuvent désactiver indirectement les paramètres, nous allons corriger ça :
Si vous avez le script "[PSP] Messages & Multichoix" de Youspin disponible ici : https://pokemonworkshop.fr/forum/index.php?topic=1672.0
Dans ce script rendez-vous à la ligne 113, vous avez :
@speed_defilement = SPEED_MSG
remplacez par :
if $vit_txt == nil
      @speed_defilement = SPEED_MSG
    else
      @speed_defilement = $vit_txt
    end
à la ligne 264, vous avez :
@speed_defilement = SPEED_MSG
remplacez par :
if $vit_txt == nil
        @speed_defilement = SPEED_MSG
      else
        @speed_defilement = $vit_txt
      end
à la ligne 440, vous avez :
@speed_defilement = SPEED_MSG
remplacez par :
if $vit_txt == nil
      @speed_defilement = SPEED_MSG
    else
      @speed_defilement = $vit_txt
    end
Enfin à la ligne 102, vous avez :
@dummy.bitmap = RPG::Cache.picture(MSG)
remplacez par :
if $message_dummy == nil
      @dummy.bitmap = RPG::Cache.picture(MSG)
    else
      @dummy.bitmap = RPG::Cache.picture($message_dummy)
    end

Si vous avez le script FModEx
Les lignes ne seront surement pas respectées avec ce script donc si vous êtes perdus, utilisez CTRL+F ^^
Vers la ligne 100, remplacez :
def bgm_play(file_name, volume = 100, pitch = 100)
      volume = volume * @master_volume / 100
par :
def bgm_play(file_name, volume = 100, pitch = 100)
    if $bgm_master == nil
      volume = volume * @master_volume / 100
    else
      volume = volume * @master_volume / 100 * $bgm_master/100
    end
Vers la ligne 120, remplacez :
def bgs_play(file_name, volume = 100, pitch = 100)
      volume = volume * @sfx_volume / 100
par :
def bgs_play(file_name, volume = 100, pitch = 100)
    if $bgs_master == nil
      volume = volume * @sfx_volume / 100
    else
      volume = volume * @sfx_volume / 100 * $bgs_master/100
    end
Vers la ligne 140, remplacez :
def me_play(file_name, volume = 100, pitch = 100)
      volume = volume * @master_volume / 100
par :
def me_play(file_name, volume = 100, pitch = 100)
    if $me_master == nil
      volume = volume * @master_volume / 100
    else
      volume = volume * @master_volume / 100 * $me_master/100
    end
enfin, vers la ligne 160, remplacez :
def se_play(file_name, volume = 100, pitch = 100)
      volume = volume * @sfx_volume / 100
par :
def se_play(file_name, volume = 100, pitch = 100)
    if $se_master == nil
      volume = volume * @sfx_volume / 100
    else
      volume = volume * @sfx_volume / 100 * $se_master/100
    end

Si vous utilisez le script de changement de textbox Disponible ici : https://pokemonworkshop.fr/forum/index.php?topic=5327

remplacez :
class Interpreter
  def set_textbox(img = POKEMON_S::MSG)
    $scene.message_window.set_textbox(img)
  end
end
par :
class Interpreter
  def set_textbox(img = POKEMON_S::MSG)
    if $message_dummy == nil or img != POKEMON_S::MSG
      $scene.message_window.set_textbox(img)
    else
      $scene.message_window.set_textbox($message_dummy)
    end
  end
end

Si vous constatez d'autres soucis liés à un script que vous avez installé, n'hésitez pas à les signaler, j'apporterai les modifications nécessaires. Et si un scripteur passe par là et connais un moyen pour améliorer le script et alléger les modifications à apporter, je suis preneur ^^.

Si vous voulez ajouter vôtre propre interface, j'ai mis dans le pack en fichier Interface_Template.png, il vous permettra de créer votre interface sans avoir à toucher au script ^^. La gestion de l'interface est déjà programmée, suivez les commentaires du script pour ajouter votre interface et l'activer. Et si vous voulez ajouter vos propres polices et vos propres boîtes de dialogue, j'ai expliqué comment faire dans les commentaires ^^

Crédits :
Metaiko

« Modifié: 23 novembre 2019, 21:29:34 par Metaiko »

Pack Script PSP

Eurons

Mappeur

Bravo à toi, tu risque d'aider pas mal d'utilisateurs de psp n_n
"Apprendre à nager à quelqu'un en le noyant, c'est ma passion dans la vie." - Eurons, 2018
Rey approuve,

Amras Anárion

Scénariste

On attend des options aussi détaillées (comme le volume des 4 canaux audios du jeu, mais aussi le changement de résolution à la volée) sur PSDK.
Pour le moment, les options proposées sont assez maigre. (Il n'y a que Choix/Défini et Animation de combat Oui/Non qui fonctionne. Le réglage volume PSDK n'a jamais fonctionné.)
Les utilisateurs PSP seront heureux. Bravo !
Waouh tu as même pensé à la compatibilité entre les versions de PSP et les différents scripts qu'on a pu installer ! Vraiment super ce boulot !

Metaiko

Graphiste

Merci pour vos retours ^^. Pour la résolution, c'est juste une "simulation" du ALT+Entrée dans les scripts ainsi qu'une vérification des dimensions de l'écran pour savoir si le joueur est déjà en plein écran ou non afin d'éviter certains bugs ^^. Pour l'audio j'ai fais au plus simple, quatre variables de pourcentage qui sont multipliées au volume des BGM/BGS/ME/SE à la lecture de ceux-ci ^^.

Je vous informe aussi que j'ai mis à jour le premier post, j'avais oublié les modifications à apporter pour changer la boîte des dialogues. Les modifications à apporter ont été mises au début sur le premier post. Voilà les modifs à apporter pour ne pas vous perdre ^^ :
  • Une modif dans le script Window_Message
  • Une modif dans le script Pokemon_Window_Help
  • Une modif dans le script Pokemon_Shop
  • Une modif dans le script "[PSP] Messages & Multichoix" de Youspin

Nuri Yuri

HostMaster

GG, ça a l'air pratique :q
ln(yo) = <3

Metaiko

Graphiste

Petite mise à jour avec l'ajout de la compatibilité avec le script de changement de Textbox ^^ (disponible à la fin du premier post)

There was an error while thanking
Thanking...