Pokémon Script Project Forum Index

Manuel | Search
 Information des admins 
Si vous désirez parler de PSP ou obtenir du soutient là dessus, merci d'aller faire un tour sur https://pokemonworkshop.com/forum/index.php Imbécile heureux

[Tuto] Interface
Goto page: 1, 2, 3, 4, 5, 6, 7, 8, 9  >
 
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Tutoriels
Previous topic :: Next topic   
Author Message
Pαlвσlѕку
Team SDK


Joined: 17 Aug 2008
Posts: 5,983
Masculin

PostPosted: Fri 15 May - 21:00 (2009)    Post subject: [Tuto] Interface

[Tuto] Interface

[PSP / - / Testé]


Bonsoir à tout les membres du forum. Je vous présente ce long tuto, qui vous explique comment créer une interface.

Ce tuto regroupera :
La création d'une interface de base.
Affichage de la MINIMAP (gérer par un autre script), de l'heure, du nom de la MAP (en permanence).

Elle est bien entendu améliorable.

Voici un petit screen pour vous donnez une idée :



Le script de l'interface :

Créez un nouveau script, et placez-le au dessus de main.

Code:

#==============================================================================
# ■ Interface - Palbolsky
# 15/05/09
#==============================================================================

class Interface < Window_Base
 
  def initialize
    super(0, 0, 640, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface 
    self.contents.font.size = $fontsize 
    self.opacity = 0
    @interface = Sprite.new
    @interface.bitmap = RPG::Cache.picture("nom_de_l'image")
    @interface.opacity = ? 
    @interface.z = 99     
    refresh
  end   
 
  def refresh 
    self.contents.clear   
    self.contents.draw_text(x, y, 100, 32, sprintf("%02d",$game_variables[XX].to_s)+" H "+ sprintf("%02d",$game_variables[XX].to_s))   
    self.contents.draw_text(x, y, 250, 32, $data_mapzone[$game_map.map_id][1])   
  end
end

Explication du script :

Positionnement des images :

Remplacer les lettres "x" (abscisse) et "y" (ordonnée) par des nombres.

Les variables :

Remplacez "XX" par le numéro de la variable correspondante. La première correspond à l'heure, la deuxième au minute.

L'opacité :

Remplacez "?" par un nombre entre 0 et 255 inclus. Plus le nombre est élévé, plus l'image sera opaque.

L'image :

Remplacez "nom_de_l'image", par le nom de l'image que vous voulez pour l'interface. Il faut absolument garder les guillemets.

Personnalisation de l'interface :

Changement de la couleur du texte :

Pour que tout les textes soit de la même couleur, autre qu'en noir (le noir est la couleur par défaut), rajouter ceci dans la def initialize, au
dessus de refresh.

Code:
self.contents.font.color = Color.new(R, V, B, 255)

Remplacez les trois lettres (R, V, B) par un nombre compris entre 0 et 255 inclus.
R : rouge ; V = vert ; B = bleu.
Si vous remplacez les trois lettres par 255, cela vous fera du noir.

Pour que le changement de couleur ne s'applique qu'à un texte précis, faite comme ceci :

Code:

self.contents.font.color = Color.new(R, V, B, 255)
self.contents.draw_text(x, y, 100, 32, sprintf("%02d",$game_variables[XX].to_s)+" H "+ sprintf("%02d",$game_variables[XX].to_s))
self.contents.font.color = Color.new(R, V, B, 255)
self.contents.draw_text(x, y, 250, 32, $data_mapzone[$game_map.map_id][1])

Remplacez les trois lettres (R, V, B) par un nombre compris entre 0 et 255 inclus.
R : rouge ; V = vert ; B = bleu.
Si vous remplacez les trois lettres par 255, cela vous fera du blanc.

La couleur s'applique tout les textes qui s'afficheront après. Donc, si vous ne voulez pas de couleur (donc du noir) pour le nom des MAP, par exemple, vous
pouvez écrire :
Code:
self.contents.font.color = Color.new(255, 255, 255, 255)

Cela annulera l'effet de couleur sur le nom de la map, mais pas sur l'heure.


Code:

self.contents.font.color = Color.new(0, 0, 255, 255) # La couleur du texte de l'heure sera en bleu.
self.contents.draw_text(x, y, 100, 32, sprintf("%02d",$game_variables[XX].to_s)+" H "+ sprintf("%02d",$game_variables[XX].to_s))
self.contents.font.color = Color.new(255, 255, 255, 255) # La couleur du nom des maps sera en noir.
self.contents.draw_text(x, y, 250, 32, $data_mapzone[$game_map.map_id][1])

Changement de la taille des textes :

Pour que la taille du texte soit modifiée à travers tout le script, il vous faut rajouter à la ligne :

Code:
self.contents.font.size = $fontsize

Ceci :

Code:
self.contents.font.size = $fontsize + x

x est a remplacé par un nombre. Plus celui-ci est enlevé, plus la police est grosse.

Pour que la police soit plus petite, il vous suffit d'écrire :

Code:
self.contents.font.size = $fontsize - x

Pour que le changement de la taille de la police soit localisée, il vous faut déjà supprimez cette ligne de la def initialize :

Code:
self.contents.font.size = $fontsize

Puis, il faut procéder comme ceci :

Code:

self.contents.font.size = $fontsize + x
self.contents.draw_text(x, y, 100, 32, sprintf("%02d",$game_variables[XX].to_s)+" H "+ sprintf("%02d",$game_variables[XX].to_s))
self.contents.font.size = $fontsize + x
self.contents.draw_text(x, y, 250, 32, $data_mapzone[$game_map.map_id][1])

Pour agrandir la taille de la police du nom de la map, mais pas le texte de l'heure, il faut faire comme ceci :

Code:

self.contents.font.size = $fontsize # La police aura la taille par défaut.
self.contents.draw_text(x, y, 100, 32, sprintf("%02d",$game_variables[XX].to_s)+" H "+ sprintf("%02d",$game_variables[XX].to_s))
self.contents.font.size = $fontsize + 6 # La police gagnera 6 tailles supplémentaires, sur le texte des maps.
self.contents.draw_text(x, y, 250, 32, $data_mapzone[$game_map.map_id][1])

Faite tourner votre tête pour le cas inverse.
Enfin, vous pouvez modifier les polices pour les deux textes.

Changement de la police d'écriture :

Pour que la police d'écriture du texte soit modifiée à travers tout le script, il vous faut modifier la ligne :

Code:
self.contents.font.size = $fontname

Et apportez cette modification :

Code:
self.contents.font.size = "name"

"name" est a remplacé par le nom de la police de votre choix. Vous devez tout de même la posséder. Vous devez absolument garder les
guillemets.

Pour changer la police d'écriture sur des textes plus localisés, suivez le même modèle que la partie : "Changement de la taille des texte"


Code:

self.contents.font.size = "Impact" # La police d'écriture utilisé est Impact.
self.contents.draw_text(x, y, 100, 32, sprintf("%02d",$game_variables[XX].to_s)+" H "+ sprintf("%02d",$game_variables[XX].to_s))
self.contents.font.size = $fontface # La police d'écriture est celle par défaut.
self.contents.draw_text(x, y, 250, 32, $data_mapzone[$game_map.map_id][1])

Bonus :

Pour afficher l'argent que vous possédez, rentrez cette ligne dans la def refresh :

Code:
self.contents.draw_text(x, y,  150,  65, $pokemon_party.money.to_s + "$")

D'autres commandes seront peut-être ajoutées ici.

La Minimap :

Il vous faut déjà être sous PSP4G+ ou version supérieur, pour la posséder. Si vous ne la possédez pas, ce n'est pas grave.

Je vais juste vous expliquer comment faire pour changer son emplacement, et une autre petite chose.

Dans le script Minimap, rechercher ce morceau : (il est dans la def initialize)

Code:

  when 4
      self.x = 640 - width - 16
      self.y = 480 - height - 16

640, correspond à la position horizontal. Modifier cette valeur pour faire varier la position horizontal.
480, correspond à la position vertical. Modifier cette valeur pour faire varier la position vertical.

ATTENTION : Le nombre que vous entrez subit quelques modifications à cause de deux soustractions. Attention donc quand vous rentrez vos valeurs. Testez votre projet pour vérifier la position.

Pour faire disparaître le cadre qui entoure la Minimap, rajoutez cette ligne :

Code:
 @border.opacity = 0

En dessous de la ligne :

Code:
 @border.bitmap = RPG::Cache.picture("mapback.png")

Le script Scene_Map :

Vous remplacez le premier (celui le plus en haut) script Scene_Map, par ce script :


Code:

#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
#  マップ画面の処理を行うクラスです。
#==============================================================================

class Scene_Map
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  def main
    # スプライトセットを作成
    @spriteset = Spriteset_Map.new
    # メッセージウィンドウを作成
    @message_window = Window_Message.new
    @interface = Interface.new
    # トランジション実行
    Graphics.transition
    # メインループ
    loop do
      # ゲーム画面を更新
      Graphics.update
      # 入力情報を更新
      Input.update
      @interface.refresh
      update
      # 画面が切り替わったらループを中断
      if $scene != self
        break
      end
    end
    # トランジション準備
    Graphics.freeze
    # スプライトセットを解放
    @spriteset.dispose
    # メッセージウィンドウを解放
    @message_window.dispose
    @interface.dispose
    if $scene.is_a?(Scene_Title)
      # 画面をフェードアウト
      Graphics.transition
      Graphics.freeze
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # ループ
    loop do
      # マップ、インタプリタ、プレイヤーの順に更新
      # (この更新順序は、イベントを実行する条件が満たされているときに
      #  プレイヤーに一瞬移動する機会を与えないなどの理由で重要)
      $game_map.update
      $game_system.map_interpreter.update
      $game_player.update
      # システム (タイマー)、画面を更新
      $game_system.update
      $game_screen.update
      # プレイヤーの場所移動中でなければループを中断
      unless $game_temp.player_transferring
        break
      end
      # 場所移動を実行
      transfer_player
      # トランジション処理中の場合、ループを中断
      if $game_temp.transition_processing
        break
      end
    end
    # スプライトセットを更新
    @spriteset.update
    # メッセージウィンドウを更新
    @message_window.update
    # ゲームオーバーの場合
    if $game_temp.gameover
      # ゲームオーバー画面に切り替え
      $scene = Scene_Gameover.new
      return
    end
    # タイトル画面に戻す場合
    if $game_temp.to_title
      # タイトル画面に切り替え
      $scene = Scene_Title.new
      return
    end
    # トランジション処理中の場合
    if $game_temp.transition_processing
      # トランジション処理中フラグをクリア
      $game_temp.transition_processing = false
      # トランジション実行
      if $game_temp.transition_name == ""
        Graphics.transition(20)
      else
        Graphics.transition(40, "Graphics/Transitions/" +
          $game_temp.transition_name)
      end
    end
    # メッセージウィンドウ表示中の場合
    if $game_temp.message_window_showing
      return
    end
    # エンカウント カウントが 0 で、エンカウントリストが空ではない場合
    if $game_player.encounter_count == 0 and $game_map.encounter_list != []
      # イベント実行中かエンカウント禁止中でなければ
      unless $game_system.map_interpreter.running? or
             $game_system.encounter_disabled
        # トループを決定
        n = rand($game_map.encounter_list.size)
        troop_id = $game_map.encounter_list[n]
        # トループが有効なら
        if $data_troops[troop_id] != nil
          # バトル呼び出しフラグをセット
          $game_temp.battle_calling = true
          $game_temp.battle_troop_id = troop_id
          $game_temp.battle_can_escape = true
          $game_temp.battle_can_lose = false
          $game_temp.battle_proc = nil
        end
      end
    end
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # イベント実行中かメニュー禁止中でなければ
      unless $game_system.map_interpreter.running? or
             $game_system.menu_disabled
        # メニュー呼び出しフラグと SE 演奏フラグをセット
        $game_temp.menu_calling = true
        $game_temp.menu_beep = true
      end
    end
    # デバッグモードが ON かつ F9 キーが押されている場合
    if $DEBUG and Input.press?(Input::F9)
      # デバッグ呼び出しフラグをセット
      $game_temp.debug_calling = true
    end
    # プレイヤーの移動中ではない場合
    unless $game_player.moving?
      # 各種画面の呼び出しを実行
      if $game_temp.battle_calling
        call_battle
      elsif $game_temp.shop_calling
        call_shop
      elsif $game_temp.name_calling
        call_name
      elsif $game_temp.menu_calling
        call_menu
      elsif $game_temp.save_calling
        call_save
      elsif $game_temp.debug_calling
        call_debug
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● バトルの呼び出し
  #--------------------------------------------------------------------------
  def call_battle
    # バトル呼び出しフラグをクリア
    $game_temp.battle_calling = false
    # メニュー呼び出しフラグをクリア
    $game_temp.menu_calling = false
    $game_temp.menu_beep = false
    # エンカウント カウントを作成
    $game_player.make_encounter_count
    # マップ BGM を記憶し、BGM を停止
    $game_temp.map_bgm = $game_system.playing_bgm
    $game_system.bgm_stop
    # バトル開始 SE を演奏
    $game_system.se_play($data_system.battle_start_se)
    # バトル BGM を演奏
    $game_system.bgm_play($game_system.battle_bgm)
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # バトル画面に切り替え
    $scene = Scene_Battle.new
  end
  #--------------------------------------------------------------------------
  # ● ショップの呼び出し
  #--------------------------------------------------------------------------
  def call_shop
    # ショップ呼び出しフラグをクリア
    $game_temp.shop_calling = false
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # ショップ画面に切り替え
    $scene = Scene_Shop.new
  end
  #--------------------------------------------------------------------------
  # ● 名前入力の呼び出し
  #--------------------------------------------------------------------------
  def call_name
    # 名前入力呼び出しフラグをクリア
    $game_temp.name_calling = false
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # 名前入力画面に切り替え
    $scene = Scene_Name.new
  end
  #--------------------------------------------------------------------------
  # ● メニューの呼び出し
  #--------------------------------------------------------------------------
  def call_menu
    # メニュー呼び出しフラグをクリア
    $game_temp.menu_calling = false
    # メニュー SE 演奏フラグがセットされている場合
    if $game_temp.menu_beep
      # 決定 SE を演奏
      $game_system.se_play($data_system.decision_se)
      # メニュー SE 演奏フラグをクリア
      $game_temp.menu_beep = false
    end
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # メニュー画面に切り替え
    $scene = Scene_Menu.new
  end
  #--------------------------------------------------------------------------
  # ● セーブの呼び出し
  #--------------------------------------------------------------------------
  def call_save
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # セーブ画面に切り替え
    $scene = Scene_Save.new
  end
  #--------------------------------------------------------------------------
  # ● デバッグの呼び出し
  #--------------------------------------------------------------------------
  def call_debug
    # デバッグ呼び出しフラグをクリア
    $game_temp.debug_calling = false
    # 決定 SE を演奏
    $game_system.se_play($data_system.decision_se)
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # デバッグ画面に切り替え
    $scene = Scene_Debug.new
  end
  #--------------------------------------------------------------------------
  # ● プレイヤーの場所移動
  #--------------------------------------------------------------------------
  def transfer_player
    # プレイヤー場所移動フラグをクリア
    $game_temp.player_transferring = false
    # 移動先が現在のマップと異なる場合
    if $game_map.map_id != $game_temp.player_new_map_id
      # 新しいマップをセットアップ
      $game_map.setup($game_temp.player_new_map_id)
    end
    # プレイヤーの位置を設定
    $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
    # プレイヤーの向きを設定
    case $game_temp.player_new_direction
    when 2  # 下
      $game_player.turn_down
    when 4  # 左
      $game_player.turn_left
    when 6  # 右
      $game_player.turn_right
    when 8  # 上
      $game_player.turn_up
    end
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # マップを更新 (並列イベント実行)
    $game_map.update
    # スプライトセットを再作成
    @spriteset.dispose
    @spriteset = Spriteset_Map.new
    # トランジション処理中の場合
    if $game_temp.transition_processing
      # トランジション処理中フラグをクリア
      $game_temp.transition_processing = false
      # トランジション実行
      Graphics.transition(20)
    end
    # マップに設定されている BGM と BGS の自動切り替えを実行
    $game_map.autoplay
    # フレームリセット
    Graphics.frame_reset
    # 入力情報を更新
    Input.update
  end
end

Ne remplacez le script Scene_Map que si vous voulez afficher votre interface sur la map. Dans les autres cas, ce remplacement ne sert à rien.

Appeler l'interface :

Pour appeler l'interface par Insérer de script, il vous suffit de rentrer ceci :

Code:
@interface = Interface.new

Pour appeler l'interface depuis un script, il faut une def main.
Dans cette def main, rajoutez au dessus de :

Code:
Graphics.transition

Ce morceau de code :

Code:
@interface = Interface.new

Ensuite, toujours dans la def main, ajoutez juste en dessous de :

Code:
Input.update

Cette ligne :

Code:
@interface.refresh

Et pour terminer, ajoutez ce dernier morceau de code :

Code:
@interface.dispose

Juste en dessous de :

Code:
Graphics.freeze

C'est terminé. N'oubliez pas d'appliquer ce qui est écrit dans la partie "explication", car sinon ça va buguer.

Merci à Lén de m'avoir expliquer comment créer une interface. Sans cette explication, je n'aurais jamais pu écrire ce tuto.

Merci d'avoir lu. J'espère qu'il vous servira. Amusez-vous bien à customiser le script.

N'oubliez pas les crédits.

---> Palbolsky <---


Last edited by Pαlвσlѕку on Fri 13 Jul - 09:49 (2012); edited 12 times in total
Back to top
Skype
Publicité






PostPosted: Fri 15 May - 21:00 (2009)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
Zelda
Ex-staff


Joined: 29 Apr 2008
Posts: 2,442
Localisation: Nantes (44)

PostPosted: Fri 15 May - 21:04 (2009)    Post subject: [Tuto] Interface

Waouh ! Magnifique ! Imbécile heureux
Back to top
Visit poster’s website
Astheroth
Membre


Joined: 30 Jan 2009
Posts: 155
Localisation: 67

PostPosted: Fri 15 May - 21:08 (2009)    Post subject: [Tuto] Interface

Merci pour ce super tuto, clair et précis Bouche extensiblek:
Back to top
Pαlвσlѕку
Team SDK


Joined: 17 Aug 2008
Posts: 5,983
Masculin

PostPosted: Fri 15 May - 21:08 (2009)    Post subject: [Tuto] Interface

Merci. J'ai passé deux heures à l'écrire.

Si vous voulez afficher un texte que je n'ai pas mentionné, vous pouvez toujours me demander. Je verrais si je peux satisfaire votre requête.
Back to top
Skype
Heiwka
Membre


Joined: 29 Jan 2009
Posts: 885
Localisation: 59 (Nord)

PostPosted: Fri 15 May - 21:15 (2009)    Post subject: [Tuto] Interface

le cadre n'est pas géré par une image ?
Back to top
Pαlвσlѕку
Team SDK


Joined: 17 Aug 2008
Posts: 5,983
Masculin

PostPosted: Fri 15 May - 21:20 (2009)    Post subject: [Tuto] Interface

Si tu veux parler de la Minimap, oui, le cadre est géré par une image.
Pourquoi rajouter une image alors qu'on peut créer le cadre sur l'image de l'interface. Clin d'œil foireux
Back to top
Skype
Yoh
Membre


Joined: 20 Dec 2008
Posts: 604

PostPosted: Fri 15 May - 21:30 (2009)    Post subject: [Tuto] Interface

Vraiment mgnifique!!!!Bravo!
Back to top
Pαlвσlѕку
Team SDK


Joined: 17 Aug 2008
Posts: 5,983
Masculin

PostPosted: Fri 15 May - 22:01 (2009)    Post subject: [Tuto] Interface

Mise à jour du tuto :

- Ajout d'une partie supplémentaire.
- Correction orthographique.
- Amélioration de la présentation.
Back to top
Skype
Lén
Ex-staff


Joined: 11 Jan 2009
Posts: 1,725
Localisation: Aix
Masculin

PostPosted: Fri 15 May - 22:17 (2009)    Post subject: [Tuto] Interface

Bon apparemment ça n'a pas envoyé mon message ... ou je te disait de préciser quelle scene_map ^^.
Back to top
Pαlвσlѕку
Team SDK


Joined: 17 Aug 2008
Posts: 5,983
Masculin

PostPosted: Fri 15 May - 22:23 (2009)    Post subject: [Tuto] Interface

Palbolsky wrote:
Vous remplacez le premier script Scene_Map, par ce script :

Je l'ai précisé. Clin d'œil foireux
Back to top
Skype
Masharu-Law
Membre


Joined: 20 Dec 2008
Posts: 1,006
Localisation: Lyon
ID Steam: masharu-law
Nintendo Network: masharu-law

PostPosted: Fri 15 May - 22:27 (2009)    Post subject: [Tuto] Interface

Génial ce tuto ^^, +1 dans mes favs. Je voulais caser la minimap sur une autre interface mais je vais revoir mon gameplay, voir si j'use ou pas à 100% ce tuto. Merci Palbolsky ^^.
Back to top
Visit poster’s website Skype Facebook Twitter
Speed
Ex-staff


Joined: 04 Jan 2008
Posts: 1,701
Localisation: Marseille (13)
Masculin

PostPosted: Fri 15 May - 22:31 (2009)    Post subject: [Tuto] Interface

Entièrement personnalisable ! C'est parfait ! Comme ça on se retrouvera tous avec cette super interface tout en ayant des jeux originaux !


Bouche extensiblek:
Back to top
Bilkev
Guest





PostPosted: Sat 16 May - 17:33 (2009)    Post subject: [Tuto] Interface

Comment afficher les icons des pokemon ??
Avec les stats etc.
Back to top
Lén
Ex-staff


Joined: 11 Jan 2009
Posts: 1,725
Localisation: Aix
Masculin

PostPosted: Sat 16 May - 17:41 (2009)    Post subject: [Tuto] Interface

Tu m'as déjà demandé et je t'ai déjà donné la réponse! cherche ! y'a déjà la réponse sur le forum.
Back to top
Brendan75
Ex-staff


Joined: 24 Mar 2008
Posts: 1,827
Localisation: Paris
Masculin

PostPosted: Sat 16 May - 17:44 (2009)    Post subject: [Tuto] Interface

Je vais t'aider

- Script : Traitement du Pokémon

Il s'agit ici d'un descriptif des différents paramètres d'un Pokémon, incarnés par les attr_accessor/reader que vous auriez pu croiser dans le script Pokemon. Ces paramètres sont très utiles. Voici donc une liste des paramètres accessibles.

Petit topo pour les noms-scripteurs:
Sachez que pour entrer une valeur dans la variable de numéro NUM, vous devez faire Insérer un script:

var(NUM) = valeur
$game_variables[NUM] = valeur

Sachez que pour récupérer l'info sur un Pokémon dans une équipe, vous pouvez faire:

$pokemon_party.actors[index].fonction
# ou bien
pokemon_numero(index).fonction
# ou bien plus généralement:
objet_de_classe_Pokemon.fonction

index est l'index du Pokémon dans votre équipe.
fonction est à remplacer par un des suffixes suivants (toute la liste).



Voici une liste non exhaustive des paramètres possibles, qu'il faut appeler par pokemon.fonction où fonction est à remplacer par ces paramètres. D'abord, les informations générales (par attr_accessor, donc modifiables, ou attr_reader, donc non modifiables).

id : ID du Pokémon
id_bis : ID secondaire du Pokémon
name : Nom du Pokémon (string)
given_name : Surnom du Pokémon (string)
level : Niveau
exp : Expérience
hp : PV
max_hp : PV Max
atk : Attaque
dfe : Défense
spd : Vitesse
ats : Attaque Spéciale
dfs : Défense Spéciale
type1 : Type 1, représenté par son numéro (voir Table des types)
type2 : Type 2, représenté par son numéro (voir Table des types)
status : Le statut du Pokémon, représenté par son numéro (voir Table des types)
gender : Genre: 0 = sans genre, 1 = male, 2 = femelle
shiny : Shiny (true ou false)
item_hold : ID de l'objet tenu.
loyalty : Bonheur, loyauté (de min=0 à max=255)
form : le numéro de la forme du Pokémon

Des fonctions qui renvoient des informations utiles :

dead? : Le Pokémon est-il mort?
party_index : Renvoie l'index du Pokémon dans l'équipe. nil si il n'est pas dans l'équipe.
next_exp : Expérience manquante pour aller au prochain niveau
male? : renvoie true si le Pokémon est mâle
female? : renvoie true si le Pokémon est femelle
genderless? : renvoie true si le Pokémon est sans genre
type_normal? : De type NORMAL?
type_feu? : De type FEU?
type_eau? : De type EAU?
type_electric? : De type ELECTRIK?
type_plante? : De type PLANTE?
type_glace? : De type GLACE?
type_combat? : De type COMBAT?
type_poison? : De type POISON?
type_sol? : De type SOL?
type_vol? : De type VOL?
type_psy? : De type PSY?
type_insect? : De type INSECTE?
type_roche? : De type ROCHE?
type_spectre : De type SPECTRE?
type_dragon? : De type DRAGON?
type_acier? : De type ACIER?
type_tenebres? : De type TENEBRES?

Les fonctions/informations concernant la modification des PV

kill : rend KO le Pokémon
remove_hp(valeur) : enlève valeur PV
add_hp(valeur) : ajoute valeur PV
refill_hp : soigne les PV
refill : soigne le statut, les PV, et les PP.

Les fonctions/informations concernant le statut :

cure : Soigne le statut du Pokémon
poisened? : Empoisonné?
paralyzed? : Paralysé?
burn? : Brulé?
asleep? : Endormi?
frozen? : Gelé?
confused? : Confus? (En combat uniquement)
flinch? : Appeuré? (En combat uniquement)
toxic? : Sous l'effet de Toxik?
status_poison(forcer = false) : empoisonne le Pokémon si il n'a pas un autre statut ou forcer = true.
status_paralyze(forcer = false) : paralyse le Pokémon si il n'a pas un autre statut ou forcer = true.
status_burn(forcer = false) : brûle le Pokémon si il n'a pas un autre statut ou forcer = true.
status_sleep(forcer = false) : endort le Pokémon si il n'a pas un autre statut ou forcer = true.
status_frozen(forcer = false) : gèle le Pokémon si il n'a pas un autre statut ou forcer = true.
status_toxic(forcer = false) : empoisonne le Pokémon si il n'a pas un autre statut ou forcer = true.
status_confuse : rend confus le Pokémon (en combat uniquement).
status_flinch : effraie le Pokémon (en combat uniquement).

Des fonctions concernant les attaques du Pokémon :

skill_selection : demande au joueur de sélectionner un skill sur le pokemon (objet de classe Pokemon) de son choix. Le résultat renvoyé est l'index de l'attaque, ou -1 si aucune capacité n'a été sélectionnée (en appuyant sur echap). Le résultat est enregistré dans la variable n°5 INDEX SKILL.

skills : Renvoie la liste des IDs des capacités apprises.

skill_learnt?(skill_id) : Le Pokémon connaît-t-il la capacité d'ID skill_id? Vous pouvez aussi tapper le nom de la capacité, en majuscule, entre guillemets.

learn_skill(skill_id) : Enseigne une capacité d'ID skill_id si il reste de la place (sans message d'avertissement). Vous pouvez aussi tapper le nom de la capacité, en majuscule, entre guillemets. Si vous voulez enseigner une capacité au détriment d'une autre, utilisez la commande replace_skill_index (cf la suite). Vous pouvez enseigner l'attaque même si le Pokémon n'est pas censé la connaître (genre enseigner SURF à un PIKACHU). Je vous conseille aussi d'aller faire un tour du côté de la rubrique Enseigner une capacité à un Pokémon.

forget_skill_index(index) : Oublie/Efface la capacité située à la place index+1. (1ère place: index = 0)
forget_skill(num) : Oublie/Efface la capacité de numéro ID num. Vous pouvez remplacer num par le nom de la capacité en majuscules, entre guillemets.

replace_skill_index(index, id) : Remplace la capacité placée en index+1 position par a capacité dont l'ID est spécifié par id. Vous pouvez remplacer id par le nom de la capacité en majuscules, entre guillemets.

convert_skill(id_ancien, id_nouveau) : Converti une capacité d'ID id_ancien en une capacité d'ID id_nouveau au sein des attaques du Pokémon. Remplacable par les noms des capacités en majuscule, entre guillemets.

refill_skill(index, valeur = 99) : Ajoute valeur (négatif posible) points aux PP de la capacité placée en (index+1) position. (Exemple: 'soigner' complètement la 1ère attaque: pokemon.refill_skill( 0 ))
(Exemple: 'soigner' de 5 pts la 3ème attaque: pokemon.refill_skill( 2 , 5 ))

Et enfin d'autres fonctions de rentrant pas dans des catégories spécifiques:

raise_loyalty : augmente le bonheur du Pokémon selon un barème défini
raise_loyalty(valeur) : augmente le bonheur du Pokémon de valeur points.
drop_loyalty(valeur = 1) : diminue le bonheur du Pokémon de valeur points.
total_ev : renvoie le total des EV du Pokémon.

Pour plus de détails sur la structure de la classe Pokemon, regardez la rubrique Information sur les scripts de PSP.
Back to top
Display posts from previous:   
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Tutoriels All times are GMT + 1 Hour
Goto page: 1, 2, 3, 4, 5, 6, 7, 8, 9  >
Page 1 of 9

 
Jump to:  

Index | Free forum | Free support forum | Free forums directory | Report a violation | Cookies | Charte | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Thème par Thomas et l'équipe de la refonte PSP 2012 (version 1.0)