Partagez
Aller en bas
Dudu'
Dudu'
Staffeux retraité

Nombre de messages : 2060
Age : 29
Distinction : Apprenti KGB-boy en avenir
[Coco' Smile]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009

--------Note sytem-------- By Adurna et Skillo Empty --------Note sytem-------- By Adurna et Skillo

le Dim 21 Fév 2010 - 14:55
--------Note sytem-------- By Adurna et Skillo Sans_t12
Un grand merci à Skillo pour l'énorme travaille qu'il à fournie pour amélioré mon script et donc sortir une nouvelle version^^
bien voici la démo:
Auteur: Adurna et Skillo
version: 2.0
date de dernière modification:11/05/2010
et les screens:
--------Note sytem-------- By Adurna et Skillo C110
--------Note sytem-------- By Adurna et Skillo C210


Ancienne version içi:
Spoiler:
auteur:Adurna
version:1.0
date de dernière modification:12.07.2010
screen:v1.0
--------Note sytem-------- By Adurna et Skillo Captur13
v1.1
--------Note sytem-------- By Adurna et Skillo Captur14
description:
ce system permet au joueur de prendre de note pour ne pas oublier des indice, des idées, des conseille, ect...
il est trés simple d'utilisation:
par évent->appelle de script :
Code:
$scene = Scene_Note.new

il faut le configuré un tout petit peut
-gardé un héros vierge pour le script , il sert de mémoire comme décrit içi:
Code:
  Actor_note= 1  #index du héros qui sert de "mémoire"

code:
[spoiler]
Code:
######################################################################
#########                                                    #########
######      Note system V1.0          By Adurna                ######
###                                                                ###
######                      realise: 21.02.1                    ######
#########                                                    #########
######################################################################
module Adurna
 
  Actor_note= 1  #index du héros qui sert de "mémoire"
  Nbr_carac_max = 100    #nombre de caractère max comprit entre 0 et 100
 
 
  end



class Scene_Note < Scene_Base
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    @actor = $game_actors[Adurna::Actor_note]
    @edit_window = Window_NoteEdit.new(@actor,Adurna::Nbr_carac_max)
    @input_window = Window_NoteInput.new
  end
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    @edit_window.dispose
    @input_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    $scene = Scene_Map.new
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    @edit_window.update
    @input_window.update
    if Input.repeat?(Input::B)
      if @edit_window.index > 0            # Not at the left edge
        Sound.play_cancel
        @edit_window.back
      end
    elsif Input.trigger?(Input::C)
      if @input_window.is_decision          # If cursor is positioned on [OK]
        if @edit_window.name == ""          # If name is empty
          @edit_window.restore_default      # Return to default name
          if @edit_window.name == ""
            Sound.play_buzzer
          else
            Sound.play_decision
          end
        else
          Sound.play_decision
          @actor.name = @edit_window.name  # Change actor name
          return_scene
        end
      elsif @input_window.character != ""  # If text characters are not empty
        if @edit_window.index == @edit_window.max_char    # at the right edge
          Sound.play_buzzer
        else
          Sound.play_decision
          @edit_window.add(@input_window.character)      # Add text character
        end
      end
    end
  end
end

class Window_NoteEdit < Window_Base

  attr_reader  :name                    # name
  attr_reader  :index                    # cursor position
  attr_reader  :max_char                # maximum number of characters
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    actor    : actor
  #    max_char : maximum number of characters
  #--------------------------------------------------------------------------
  def initialize(actor, max_char)
    super(0, 0, 545, 170)
    @actor = actor
    @name = actor.name
    @max_char = max_char
    name_array = @name.split(//)[0...@max_char]  # Fit within max length
    @name = ""
    for i in 0...name_array.size
      @name += name_array[i]
    end
    @default_name = @name
    @index = name_array.size
    self.active = false
    refresh
    update_cursor
  end
  #--------------------------------------------------------------------------
  # * Return to Default Name
  #--------------------------------------------------------------------------
  def restore_default
    @name = @default_name
    @index = @name.split(//).size
    refresh
    update_cursor
  end
  #--------------------------------------------------------------------------
  # * Add Text Character
  #    character : text character to be added
  #--------------------------------------------------------------------------
  def add(character)
    if @index < @max_char and character != ""
      @name += character
      @index += 1
      refresh
      update_cursor
    end
  end
  #--------------------------------------------------------------------------
  # * Delete Text Character
  #--------------------------------------------------------------------------
  def back
    if @index > 0
      name_array = @name.split(//)          # Delete one character
      @name = ""
      for i in 0...name_array.size-1
        @name += name_array[i]
      end
      @index -= 1
      refresh
      update_cursor
    end
  end
  #--------------------------------------------------------------------------
  # * Get rectangle for displaying items
  #    index : item number
  #--------------------------------------------------------------------------
  def item_rect(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.x = 1212- (@max_char + 1) * 12 + index * 24
    rect.y = 0
    rect.width = 24
    rect.height = WLH
    return rect
  end
  def item_rect2(index)
    rect2 = Rect.new(0, 0, 0, 0)
    rect2.x = 732- (@max_char + 1) * 12 + index * 24
    rect2.y = 24
    rect2.width = 24
    rect2.height = WLH
    return rect2
  end
  def item_rect3(index)
    rect3 = Rect.new(0, 0, 0, 0)
    rect3.x = 252- (@max_char + 1) * 12 + index * 24
    rect3.y = 48
    rect3.width = 24
    rect3.height = WLH
    return rect3
  end
  def item_rect4(index)
    rect4 = Rect.new(0, 0, 0, 0)
    rect4.x = -228- (@max_char + 1) * 12 + index * 24
    rect4.y = 72
    rect4.width = 24
    rect4.height = WLH
    return rect4
  end
    def item_rect5(index)
    rect5 = Rect.new(0, 0, 0, 0)
    rect5.x = -708- (@max_char + 1) * 12 + index * 24
    rect5.y = 96
    rect5.width = 24
    rect5.height = WLH
    return rect5
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    name_array = @name.split(//)
    for i in 0...@max_char
      c = name_array[i]                 
      c = '_' if c == nil
    if i<20
      self.contents.draw_text(item_rect(i), c, 1)
    end
    if i>19
      if i<40
    self.contents.draw_text(item_rect2(i), c, 1)
  end
  end
    if i>19
      if i<60
      self.contents.draw_text(item_rect3(i), c, 1)
      end
    end
    if i>59
      if i<80
      self.contents.draw_text(item_rect4(i), c, 1)
    end
    end
    if i>79
      self.contents.draw_text(item_rect5(i), c, 1)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update cursor
  #--------------------------------------------------------------------------
  def update_cursor
    self.cursor_rect = item_rect(@index)
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_cursor
  end
end

class Window_NoteInput < Window_Base
 ADURNA = [ 'A','B','C','D','E',  'a','b','c','d','e',  '/','*','-','+','=',
              'F','G','H','I','J',  'f','g','h','i','j',  '"','{','}','[',']',
              'K','L','M','N','O',  'k','l','m','n','o',  '~','(',')','@','|',
              'P','Q','R','S','T',  'p','q','r','s','t',  '?','.','/','§',',',
              'U','V','W','X','Y',  'u','v','w','x','y',  ';',':','!','µ','%',
              'Z',' ',' ',' ',' ',  'z',' ',' ',' ',' ',  '¤','¨','°','²','^',
              'Ä','Ë','Ï','Ö','Ü',  'ä','ë','ï','ö','ü',  '<','>','£','$','♪',
              '1','2','3','4','5',  'â','ê','î','ô','û',  'Â','Ê','Î','Ô','Û',
              '6','7','8','9','0',  'è','é','à','ù','ç',  '&',' ',' ',' ','OK']
  TABLE = [ADURNA]

  def initialize(mode = 0)
    super(0, 170, 545, 248)
    @mode = mode
    @index = 0
    refresh
    update_cursor
  end

  def character
    if @index < 133     
      return TABLE[@mode][@index]
    else
      return ""
    end
  end

  def is_mode_change
    return (@index == 133)
  end

  def is_decision
    return (@index == 134)   
  end

  def item_rect(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.x = index % 15 * 32 + index % 15 / 5 * 16
    rect.y = index / 15 * WLH
    rect.width = 32
    rect.height = WLH
    return rect
  end

  def refresh
    self.contents.clear
    for i in 0..134     
      rect = item_rect(i)
      rect.x += 2
      rect.width -= 4
      self.contents.draw_text(rect, TABLE[@mode][i], 1)
    end
  end

  def update_cursor
    self.cursor_rect = item_rect(@index)
  end

  def cursor_down(wrap)
    if @index <120       
      @index += 15     
    elsif wrap
      @index -= 120     
    end
  end

  def cursor_up(wrap)
    if @index >= 15       
      @index -= 15         
    elsif wrap
      @index += 120   
    end
  end

  def cursor_right(wrap)
    if @index % 15 < 14       
      @index += 1               
    elsif wrap
      @index -= 14               
    end
  end

  def cursor_left(wrap)
    if @index % 15 > 0           
      @index -= 1                   
    elsif wrap
      @index += 14                   
    end
  end

  def cursor_to_decision
    @index = 134         
  end
  #--------------------------------------------------------------------------
  # * Move to Next Page
  #--------------------------------------------------------------------------
  def cursor_pagedown
    @mode = (@mode + 1) % TABLE.size
    refresh
  end
  #--------------------------------------------------------------------------
  # * Move to Previous Page
  #--------------------------------------------------------------------------
  def cursor_pageup
    @mode = (@mode + TABLE.size - 1) % TABLE.size
    refresh
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    last_mode = @mode
    last_index = @index
    if Input.repeat?(Input::DOWN)
      cursor_down(Input.trigger?(Input::DOWN))
    end
    if Input.repeat?(Input::UP)
      cursor_up(Input.trigger?(Input::UP))
    end
    if Input.repeat?(Input::RIGHT)
      cursor_right(Input.trigger?(Input::RIGHT))
    end
    if Input.repeat?(Input::LEFT)
      cursor_left(Input.trigger?(Input::LEFT))
    end
    if Input.trigger?(Input::A)
      cursor_to_decision
    end
    if Input.trigger?(Input::R)
      cursor_pagedown
    end
    if Input.trigger?(Input::L)
      cursor_pageup
    end
    if Input.trigger?(Input::C) and is_mode_change
      cursor_pagedown
    end
    if @index != last_index or @mode != last_mode
      Sound.play_cursor
    end
    update_cursor
  end
end


v1.1
Spoiler:

Code:
######################################################################
#########                                                    #########
######    Note system V1.1          By Adurna                ######
###                                                                ###
######                      realise: 21.02.1                    ######
#########                                                    #########
######################################################################
module Adurna
 
  Actor_note= 1
  Nbr_carac_max = 100
  Font = "font_note"
  end



class Scene_Note < Scene_Base
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    @actor = $game_actors[Adurna::Actor_note]
    @edit_window = Window_NoteEdit.new(@actor,Adurna::Nbr_carac_max)
    @edit_window.opacity = 0
    @input_window = Window_NoteInput.new
    @input_window.opacity = 0
    @font = Sprite.new
    @font.bitmap = Cache.picture(Adurna::Font)
    @font.x =0
    @font.y =0
  end
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    super
    @font.dipose
    dispose_menu_background
    @edit_window.dispose
    @input_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    $scene = Scene_Map.new
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    @edit_window.update
    @input_window.update
    if Input.repeat?(Input::B)
      if @edit_window.index > 0            # Not at the left edge
        Sound.play_cancel
        @edit_window.back
      end
    elsif Input.trigger?(Input::C)
      if @input_window.is_decision          # If cursor is positioned on [OK]
        if @edit_window.name == ""          # If name is empty
          @edit_window.restore_default      # Return to default name
          if @edit_window.name == ""
            Sound.play_buzzer
          else
            Sound.play_decision
          end
        else
          Sound.play_decision
          @actor.name = @edit_window.name  # Change actor name
          return_scene
        end
      elsif @input_window.character != ""  # If text characters are not empty
        if @edit_window.index == @edit_window.max_char    # at the right edge
          Sound.play_buzzer
        else
          Sound.play_decision
          @edit_window.add(@input_window.character)      # Add text character
        end
      end
    end
  end
end

class Window_NoteEdit < Window_Base

  attr_reader  :name                    # name
  attr_reader  :index                    # cursor position
  attr_reader  :max_char                # maximum number of characters
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    actor    : actor
  #    max_char : maximum number of characters
  #--------------------------------------------------------------------------
  def initialize(actor, max_char)
    super(0, 0, 545, 170)
    @actor = actor
    @name = actor.name
    @max_char = max_char
    name_array = @name.split(//)[0...@max_char]  # Fit within max length
    @name = ""
    for i in 0...name_array.size
      @name += name_array[i]
    end
    @default_name = @name
    @index = name_array.size
    self.active = false
    refresh
    update_cursor
  end
  #--------------------------------------------------------------------------
  # * Return to Default Name
  #--------------------------------------------------------------------------
  def restore_default
    @name = @default_name
    @index = @name.split(//).size
    refresh
    update_cursor
  end
  #--------------------------------------------------------------------------
  # * Add Text Character
  #    character : text character to be added
  #--------------------------------------------------------------------------
  def add(character)
    if @index < @max_char and character != ""
      @name += character
      @index += 1
      refresh
      update_cursor
    end
  end
  #--------------------------------------------------------------------------
  # * Delete Text Character
  #--------------------------------------------------------------------------
  def back
    if @index > 0
      name_array = @name.split(//)          # Delete one character
      @name = ""
      for i in 0...name_array.size-1
        @name += name_array[i]
      end
      @index -= 1
      refresh
      update_cursor
    end
  end
  #--------------------------------------------------------------------------
  # * Get rectangle for displaying items
  #    index : item number
  #--------------------------------------------------------------------------
  def item_rect(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.x = 1212- (@max_char + 1) * 12 + index * 24
    rect.y = 0
    rect.width = 24
    rect.height = WLH
    return rect
  end
  def item_rect2(index)
    rect2 = Rect.new(0, 0, 0, 0)
    rect2.x = 732- (@max_char + 1) * 12 + index * 24
    rect2.y = 24
    rect2.width = 24
    rect2.height = WLH
    return rect2
  end
  def item_rect3(index)
    rect3 = Rect.new(0, 0, 0, 0)
    rect3.x = 252- (@max_char + 1) * 12 + index * 24
    rect3.y = 48
    rect3.width = 24
    rect3.height = WLH
    return rect3
  end
  def item_rect4(index)
    rect4 = Rect.new(0, 0, 0, 0)
    rect4.x = -228- (@max_char + 1) * 12 + index * 24
    rect4.y = 72
    rect4.width = 24
    rect4.height = WLH
    return rect4
  end
    def item_rect5(index)
    rect5 = Rect.new(0, 0, 0, 0)
    rect5.x = -708- (@max_char + 1) * 12 + index * 24
    rect5.y = 96
    rect5.width = 24
    rect5.height = WLH
    return rect5
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    name_array = @name.split(//)
    for i in 0...@max_char
      c = name_array[i]               
      c = '_' if c == nil
    if i<20
      self.contents.draw_text(item_rect(i), c, 1)
    end
    if i>19
      if i<40
    self.contents.draw_text(item_rect2(i), c, 1)
  end
  end
    if i>19
      if i<60
      self.contents.draw_text(item_rect3(i), c, 1)
      end
    end
    if i>59
      if i<80
      self.contents.draw_text(item_rect4(i), c, 1)
    end
    end
    if i>79
      self.contents.draw_text(item_rect5(i), c, 1)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update cursor
  #--------------------------------------------------------------------------
  def update_cursor
    self.cursor_rect = item_rect(@index)
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_cursor
  end
end

class Window_NoteInput < Window_Base
 ADURNA = [ 'A','B','C','D','E',  'a','b','c','d','e',  '/','*','-','+','=',
              'F','G','H','I','J',  'f','g','h','i','j',  '"','{','}','[',']',
              'K','L','M','N','O',  'k','l','m','n','o',  '~','(',')','@','|',
              'P','Q','R','S','T',  'p','q','r','s','t',  '?','.','/','§',',',
              'U','V','W','X','Y',  'u','v','w','x','y',  ';',':','!','µ','%',
              'Z',' ',' ',' ',' ',  'z',' ',' ',' ',' ',  '¤','¨','°','²','^',
              'Ä','Ë','Ï','Ö','Ü',  'ä','ë','ï','ö','ü',  '<','>','£','$','♪',
              '1','2','3','4','5',  'â','ê','î','ô','û',  'Â','Ê','Î','Ô','Û',
              '6','7','8','9','0',  'è','é','à','ù','ç',  '&',' ',' ',' ','OK']
  TABLE = [ADURNA]

  def initialize(mode = 0)
    super(0, 170, 545, 248)
    @mode = mode
    @index = 0
    refresh
    update_cursor
  end

  def character
    if @index < 133   
      return TABLE[@mode][@index]
    else
      return ""
    end
  end

  def is_mode_change
    return (@index == 133)
  end

  def is_decision
    return (@index == 134) 
  end

  def item_rect(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.x = index % 15 * 32 + index % 15 / 5 * 16
    rect.y = index / 15 * WLH
    rect.width = 32
    rect.height = WLH
    return rect
  end

  def refresh
    self.contents.clear
    for i in 0..134   
      rect = item_rect(i)
      rect.x += 2
      rect.width -= 4
      self.contents.draw_text(rect, TABLE[@mode][i], 1)
    end
  end

  def update_cursor
    self.cursor_rect = item_rect(@index)
  end

  def cursor_down(wrap)
    if @index <120     
      @index += 15   
    elsif wrap
      @index -= 120   
    end
  end

  def cursor_up(wrap)
    if @index >= 15     
      @index -= 15       
    elsif wrap
      @index += 120 
    end
  end

  def cursor_right(wrap)
    if @index % 15 < 14     
      @index += 1             
    elsif wrap
      @index -= 14             
    end
  end

  def cursor_left(wrap)
    if @index % 15 > 0         
      @index -= 1                 
    elsif wrap
      @index += 14                 
    end
  end

  def cursor_to_decision
    @index = 134       
  end
  #--------------------------------------------------------------------------
  # * Move to Next Page
  #--------------------------------------------------------------------------
  def cursor_pagedown
    @mode = (@mode + 1) % TABLE.size
    refresh
  end
  #--------------------------------------------------------------------------
  # * Move to Previous Page
  #--------------------------------------------------------------------------
  def cursor_pageup
    @mode = (@mode + TABLE.size - 1) % TABLE.size
    refresh
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    last_mode = @mode
    last_index = @index
    if Input.repeat?(Input::DOWN)
      cursor_down(Input.trigger?(Input::DOWN))
    end
    if Input.repeat?(Input::UP)
      cursor_up(Input.trigger?(Input::UP))
    end
    if Input.repeat?(Input::RIGHT)
      cursor_right(Input.trigger?(Input::RIGHT))
    end
    if Input.repeat?(Input::LEFT)
      cursor_left(Input.trigger?(Input::LEFT))
    end
    if Input.trigger?(Input::A)
      cursor_to_decision
    end
    if Input.trigger?(Input::R)
      cursor_pagedown
    end
    if Input.trigger?(Input::L)
      cursor_pageup
    end
    if Input.trigger?(Input::C) and is_mode_change
      cursor_pagedown
    end
    if @index != last_index or @mode != last_mode
      Sound.play_cursor
    end
    update_cursor
  end
end

pour cela il faut un image nommée font_note dans le dossier pictures
--------Note sytem-------- By Adurna et Skillo Font_n11
un grand merci à Mist' qui m'a tiré d'un bon ptit problème!!!


Dernière édition par Adurna le Lun 12 Juil 2010 - 23:07, édité 7 fois
Shadow of Life
Shadow of Life
Membre

Nombre de messages : 870
Age : 23
Localisation : Joyeux. Comment ça c'est pas la bonne case ?
Distinction : Artiste de la flagornerie.
Porte parole du Ô grand Voilà voilà.
Président du club des masochistes du forum
Fake Gentleman

Soumis ^^
Date d'inscription : 13/09/2009

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Dim 21 Fév 2010 - 15:02
Merci !!!
Merci beaucoup pour ce script Arduna !
Merci du partage !
Voila, voila.
avatar
Az'
Membre

Nombre de messages : 3317
Age : 74
Date d'inscription : 22/12/2007

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Dim 21 Fév 2010 - 15:02
Ca rend vraiment très très bien Adurna!
Joli code, bien joué Wink
Djidane
Djidane
Membre

Nombre de messages : 1444
Age : 26
Localisation : Paris
Distinction : Héritier d'Alexdream (mais on l'aime quand même).
Lèche cul professionnel
et il aime ça!!!
Date d'inscription : 30/12/2008

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Dim 21 Fév 2010 - 15:09
Sympas sa !

Merci du partage Adurna Wink
Balbereith
Balbereith
Staffeux retraité

Nombre de messages : 4129
Age : 27
Localisation : dans l'ombre...
Distinction : Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires --------Note sytem-------- By Adurna et Skillo 522164 ) [Coco' Smile]
Date d'inscription : 13/05/2009

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Dim 21 Fév 2010 - 15:33
par contre est-il possible de le combiner avec le script de menu, et ainsi multiplier les notes ?
avec ce schéma :
menu principal -> note -> note 1, note 2, note 3, note 4, note 5...
car ils est vrai que le script est très pratique pour des jeux d'intrigues, d'enquête ^^ jolie boulot, bien fait, rien à dire ^^
Dudu'
Dudu'
Staffeux retraité

Nombre de messages : 2060
Age : 29
Distinction : Apprenti KGB-boy en avenir
[Coco' Smile]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Dim 21 Fév 2010 - 15:37
oui facile mais par contre il faudra un héro par note
je m'occupe de ça dés que j'ai fini un ptite amélioration graphique
avatar
Az'
Membre

Nombre de messages : 3317
Age : 74
Date d'inscription : 22/12/2007

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Dim 21 Fév 2010 - 15:52
Faudrait contenir les strings (chaînes de caractères) des notes dans un tableau multidimensionnel, soit un Array, soit un Hash. On préfèrera l'Array. Je regarderais ça si j'ai un moment.
Dudu'
Dudu'
Staffeux retraité

Nombre de messages : 2060
Age : 29
Distinction : Apprenti KGB-boy en avenir
[Coco' Smile]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Dim 21 Fév 2010 - 17:49
nouvelle version:
--------Note sytem-------- By Adurna et Skillo Captur14
Code:
######################################################################
#########                                                    #########
######    Note system V1.0          By Adurna                ######
###                                                                ###
######                      realise: 21.02.1                    ######
#########                                                    #########
######################################################################
module Adurna
 
  Actor_note= 1
  Nbr_carac_max = 100
  Font = "font_note"
  end



class Scene_Note < Scene_Base
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    @actor = $game_actors[Adurna::Actor_note]
    @edit_window = Window_NoteEdit.new(@actor,Adurna::Nbr_carac_max)
    @edit_window.opacity = 0
    @input_window = Window_NoteInput.new
    @input_window.opacity = 0
    @Window_Font = Window_Font.new(0,0)
    @Window_Font .opacity = 0
  end
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    @edit_window.dispose
    @input_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    $scene = Scene_Map.new
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    @edit_window.update
    @input_window.update
    if Input.repeat?(Input::B)
      if @edit_window.index > 0            # Not at the left edge
        Sound.play_cancel
        @edit_window.back
      end
    elsif Input.trigger?(Input::C)
      if @input_window.is_decision          # If cursor is positioned on [OK]
        if @edit_window.name == ""          # If name is empty
          @edit_window.restore_default      # Return to default name
          if @edit_window.name == ""
            Sound.play_buzzer
          else
            Sound.play_decision
          end
        else
          Sound.play_decision
          @actor.name = @edit_window.name  # Change actor name
          return_scene
        end
      elsif @input_window.character != ""  # If text characters are not empty
        if @edit_window.index == @edit_window.max_char    # at the right edge
          Sound.play_buzzer
        else
          Sound.play_decision
          @edit_window.add(@input_window.character)      # Add text character
        end
      end
    end
  end
end

class Window_NoteEdit < Window_Base

  attr_reader  :name                    # name
  attr_reader  :index                    # cursor position
  attr_reader  :max_char                # maximum number of characters
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    actor    : actor
  #    max_char : maximum number of characters
  #--------------------------------------------------------------------------
  def initialize(actor, max_char)
    super(0, 0, 545, 170)
    @actor = actor
    @name = actor.name
    @max_char = max_char
    name_array = @name.split(//)[0...@max_char]  # Fit within max length
    @name = ""
    for i in 0...name_array.size
      @name += name_array[i]
    end
    @default_name = @name
    @index = name_array.size
    self.active = false
    refresh
    update_cursor
  end
  #--------------------------------------------------------------------------
  # * Return to Default Name
  #--------------------------------------------------------------------------
  def restore_default
    @name = @default_name
    @index = @name.split(//).size
    refresh
    update_cursor
  end
  #--------------------------------------------------------------------------
  # * Add Text Character
  #    character : text character to be added
  #--------------------------------------------------------------------------
  def add(character)
    if @index < @max_char and character != ""
      @name += character
      @index += 1
      refresh
      update_cursor
    end
  end
  #--------------------------------------------------------------------------
  # * Delete Text Character
  #--------------------------------------------------------------------------
  def back
    if @index > 0
      name_array = @name.split(//)          # Delete one character
      @name = ""
      for i in 0...name_array.size-1
        @name += name_array[i]
      end
      @index -= 1
      refresh
      update_cursor
    end
  end
  #--------------------------------------------------------------------------
  # * Get rectangle for displaying items
  #    index : item number
  #--------------------------------------------------------------------------
  def item_rect(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.x = 1212- (@max_char + 1) * 12 + index * 24
    rect.y = 0
    rect.width = 24
    rect.height = WLH
    return rect
  end
  def item_rect2(index)
    rect2 = Rect.new(0, 0, 0, 0)
    rect2.x = 732- (@max_char + 1) * 12 + index * 24
    rect2.y = 24
    rect2.width = 24
    rect2.height = WLH
    return rect2
  end
  def item_rect3(index)
    rect3 = Rect.new(0, 0, 0, 0)
    rect3.x = 252- (@max_char + 1) * 12 + index * 24
    rect3.y = 48
    rect3.width = 24
    rect3.height = WLH
    return rect3
  end
  def item_rect4(index)
    rect4 = Rect.new(0, 0, 0, 0)
    rect4.x = -228- (@max_char + 1) * 12 + index * 24
    rect4.y = 72
    rect4.width = 24
    rect4.height = WLH
    return rect4
  end
    def item_rect5(index)
    rect5 = Rect.new(0, 0, 0, 0)
    rect5.x = -708- (@max_char + 1) * 12 + index * 24
    rect5.y = 96
    rect5.width = 24
    rect5.height = WLH
    return rect5
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    name_array = @name.split(//)
    for i in 0...@max_char
      c = name_array[i]                 
      c = '_' if c == nil
    if i<20
      self.contents.draw_text(item_rect(i), c, 1)
    end
    if i>19
      if i<40
    self.contents.draw_text(item_rect2(i), c, 1)
  end
  end
    if i>19
      if i<60
      self.contents.draw_text(item_rect3(i), c, 1)
      end
    end
    if i>59
      if i<80
      self.contents.draw_text(item_rect4(i), c, 1)
    end
    end
    if i>79
      self.contents.draw_text(item_rect5(i), c, 1)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update cursor
  #--------------------------------------------------------------------------
  def update_cursor
    self.cursor_rect = item_rect(@index)
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_cursor
  end
end

class Window_NoteInput < Window_Base
 ADURNA = [ 'A','B','C','D','E',  'a','b','c','d','e',  '/','*','-','+','=',
              'F','G','H','I','J',  'f','g','h','i','j',  '"','{','}','[',']',
              'K','L','M','N','O',  'k','l','m','n','o',  '~','(',')','@','|',
              'P','Q','R','S','T',  'p','q','r','s','t',  '?','.','/','§',',',
              'U','V','W','X','Y',  'u','v','w','x','y',  ';',':','!','µ','%',
              'Z',' ',' ',' ',' ',  'z',' ',' ',' ',' ',  '¤','¨','°','²','^',
              'Ä','Ë','Ï','Ö','Ü',  'ä','ë','ï','ö','ü',  '<','>','£','$','♪',
              '1','2','3','4','5',  'â','ê','î','ô','û',  'Â','Ê','Î','Ô','Û',
              '6','7','8','9','0',  'è','é','à','ù','ç',  '&',' ',' ',' ','OK']
  TABLE = [ADURNA]

  def initialize(mode = 0)
    super(0, 170, 545, 248)
    @mode = mode
    @index = 0
    refresh
    update_cursor
  end

  def character
    if @index < 133     
      return TABLE[@mode][@index]
    else
      return ""
    end
  end

  def is_mode_change
    return (@index == 133)
  end

  def is_decision
    return (@index == 134)   
  end

  def item_rect(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.x = index % 15 * 32 + index % 15 / 5 * 16
    rect.y = index / 15 * WLH
    rect.width = 32
    rect.height = WLH
    return rect
  end

  def refresh
    self.contents.clear
    for i in 0..134     
      rect = item_rect(i)
      rect.x += 2
      rect.width -= 4
      self.contents.draw_text(rect, TABLE[@mode][i], 1)
    end
  end

  def update_cursor
    self.cursor_rect = item_rect(@index)
  end

  def cursor_down(wrap)
    if @index <120       
      @index += 15     
    elsif wrap
      @index -= 120     
    end
  end

  def cursor_up(wrap)
    if @index >= 15       
      @index -= 15         
    elsif wrap
      @index += 120   
    end
  end

  def cursor_right(wrap)
    if @index % 15 < 14       
      @index += 1               
    elsif wrap
      @index -= 14               
    end
  end

  def cursor_left(wrap)
    if @index % 15 > 0           
      @index -= 1                   
    elsif wrap
      @index += 14                   
    end
  end

  def cursor_to_decision
    @index = 134         
  end
  #--------------------------------------------------------------------------
  # * Move to Next Page
  #--------------------------------------------------------------------------
  def cursor_pagedown
    @mode = (@mode + 1) % TABLE.size
    refresh
  end
  #--------------------------------------------------------------------------
  # * Move to Previous Page
  #--------------------------------------------------------------------------
  def cursor_pageup
    @mode = (@mode + TABLE.size - 1) % TABLE.size
    refresh
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    last_mode = @mode
    last_index = @index
    if Input.repeat?(Input::DOWN)
      cursor_down(Input.trigger?(Input::DOWN))
    end
    if Input.repeat?(Input::UP)
      cursor_up(Input.trigger?(Input::UP))
    end
    if Input.repeat?(Input::RIGHT)
      cursor_right(Input.trigger?(Input::RIGHT))
    end
    if Input.repeat?(Input::LEFT)
      cursor_left(Input.trigger?(Input::LEFT))
    end
    if Input.trigger?(Input::A)
      cursor_to_decision
    end
    if Input.trigger?(Input::R)
      cursor_pagedown
    end
    if Input.trigger?(Input::L)
      cursor_pageup
    end
    if Input.trigger?(Input::C) and is_mode_change
      cursor_pagedown
    end
    if @index != last_index or @mode != last_mode
      Sound.play_cursor
    end
    update_cursor
  end
end





class Window_Font < Window_Base
  def initialize(x, y)
    super(x, y,999, 999)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  def refresh
    self.contents.clear
      @font = Sprite.new
    @font.bitmap = Cache.picture(Adurna::Font)
    @font.ox =0
    @font.oy =0
  end
 
  def update
    @font.ox = 0
    @font.oy =0
    end
end


pour cela il faut un image nommée font_note dans le dossier pictures
--------Note sytem-------- By Adurna et Skillo Font_n11
avatar
Az'
Membre

Nombre de messages : 3317
Age : 74
Date d'inscription : 22/12/2007

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Dim 21 Fév 2010 - 17:58
Ouah. C'est vraiment esthétique, ça rend très bien.
Faudra qu'on voit ensemble pour les améliorations qu'on a dit x)

En tout cas, je trouve le rendu superbe, facile à custom. Bien joué Wink
Kuro love
Kuro love
Membre

Nombre de messages : 580
Age : 23
Localisation : Dans la Soul society ;D
Distinction : Adepte du Tope Suicida.

Adepte du balai à chiottes venant de chez Paul.
[Coco' Smile]

Casse couille fini^^

Cuisinier au Crabe Croustillant °)°




Date d'inscription : 19/09/2009
http://topskull-testsastucesventes.e-monsite.com

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Dim 21 Fév 2010 - 17:58
C'est sympa tout ça, mais est-il possible d'enlever les "_", ça ne fait pas très beau...
Et je plussoie l'idée de Balbereith, ça m'intéresserais beaucoup
Shadow of Life
Shadow of Life
Membre

Nombre de messages : 870
Age : 23
Localisation : Joyeux. Comment ça c'est pas la bonne case ?
Distinction : Artiste de la flagornerie.
Porte parole du Ô grand Voilà voilà.
Président du club des masochistes du forum
Fake Gentleman

Soumis ^^
Date d'inscription : 13/09/2009

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Dim 21 Fév 2010 - 18:58
Merci encore pour la nouvelle version : tu es actif Arduna aujourd'hui.
Je te re-remercie . Continu comme ça.
Voila, voila.
Dudu'
Dudu'
Staffeux retraité

Nombre de messages : 2060
Age : 29
Distinction : Apprenti KGB-boy en avenir
[Coco' Smile]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Dim 21 Fév 2010 - 20:32
merci à tous de l'interé que vous porté à mon script
voila ptite mise à jour : http://www.mediafire.com/?g4y0czni4jm
ZangtherOld
ZangtherOld
Membre

Nombre de messages : 1711
Date d'inscription : 07/08/2009

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Sam 27 Fév 2010 - 15:55
Tu utilise les noms de héros pour stocker les notes ?
Pourquoi ne pas utiliser un tableau ?
avatar
Az'
Membre

Nombre de messages : 3317
Age : 74
Date d'inscription : 22/12/2007

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Sam 27 Fév 2010 - 16:34
Parce que c'est "plus simple", la table du héros est déjà créée, m'enfin, on peut facilement remplacer, effectivement, ce serait plus simple ;P
Djidane
Djidane
Membre

Nombre de messages : 1444
Age : 26
Localisation : Paris
Distinction : Héritier d'Alexdream (mais on l'aime quand même).
Lèche cul professionnel
et il aime ça!!!
Date d'inscription : 30/12/2008

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Dim 14 Mar 2010 - 23:55
Petit truc au sujet de ce script :

Un bug asser embêtant ce produit , le héros prend le nom de ce qui est écris sur la note !

Serais-ce possible de résoudre ce problème ?
Berka
Berka
Administrateur

Nombre de messages : 1832
Age : 29
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Lun 15 Mar 2010 - 0:34
A la place de :
Code:
@actor.name = @edit_window.name  # Change actor name
tu mets:
Code:
$note = @edit_window.name
ensuite, pour récupérer ton texte tu n'auras qu'à appeler cette variable.

D'ailleurs, adurna, tu devras ne pas utiliser le nom du héro mais un hash. Ca te permet de sauvegarder les notes en fonction d'un titre:

Code:
$notes = {}
$notes["Super titre"] = "ma très longue longue longue et longue note"
Djidane
Djidane
Membre

Nombre de messages : 1444
Age : 26
Localisation : Paris
Distinction : Héritier d'Alexdream (mais on l'aime quand même).
Lèche cul professionnel
et il aime ça!!!
Date d'inscription : 30/12/2008

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Lun 15 Mar 2010 - 0:52
Voilà une réponse bien claire Wink .

Merci à toi Berka pour ton aide Smile


EDIT :

Escuse moi de te déranger , mais la solution que tu m'as donner pour le script d'Adurna "bloc note" possède un petit problème :

une fois la manip que tu m'as dit faire est faite , pour rappeler la note je devis utiliser cette appel :

Code:
 $note = @edit_window.name

Mais il ce trouve qu'une fois celà appeler j'obtient ceci :

--------Note sytem-------- By Adurna et Skillo Captur17


Je crois compendre que l'appel de script ne devrais pas être celui là .
Dudu'
Dudu'
Staffeux retraité

Nombre de messages : 2060
Age : 29
Distinction : Apprenti KGB-boy en avenir
[Coco' Smile]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Lun 15 Mar 2010 - 19:21
bah en même temps Djidane je veux pas être méchant mais il faut apprendre à lire dans la présentation tout le bla bla autour de script s'est pas pour faire chier^^
Adurna a écrit:
il faut le configuré un tout petit peut
-gardé un héros vierge pour le script , il sert de mémoire comme décrit içi:
Code:
Actor_note= 1 #index du héros qui sert de "mémoire"


et oui Berka, Mist' me l'a déjà dit mais le truc s'est que je sais même pas se que s'est alors de la à savoir comment l'utilisé XD
Berka
Berka
Administrateur

Nombre de messages : 1832
Age : 29
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Lun 15 Mar 2010 - 20:38
Djidane, j'ai vu ce post. Si je n'y ai pas répondu, c'est que je n'avais pas le temps sur le moment. Pas besoin donc de me contacter par mp.

Tu dois faire la différenciation entre assignation et récupération
L'assignation:
a = b
La récupération:
a

Or, ce que tu fais en appelant
Code:
$note = @edit_window.name
Tu assignes la variable globale $note à une instance Window_NoteEdit et à son attribut name.
Cette instance est portée par une variable d'instance. Son n'accès n'est possible que dans l'instance meme, donc entre class XXX et le end final de la classe.
C'est donc normale que tu aies un message d'erreur: dans ton événement, donc traité par la classe Game_Interpreter tu cherches à appeler une variable d'instance de la classe Scene_Note
La variable @edit_window est donc nulle, elle n'a pas de propriété name.

Il faut que tu fasses une récupération:
seulement:
$note
Naël
Naël
Membre

Nombre de messages : 558
Age : 23
Localisation : n.f. : repérage, dans l'espace ou dans le temps.
Distinction : aucune
Date d'inscription : 07/02/2010

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Lun 15 Mar 2010 - 20:57
Merci beaucoup, je le teste dès que je peux !

J'attendais vraiment ce script et je me préparais à faire une demande !
Dudu'
Dudu'
Staffeux retraité

Nombre de messages : 2060
Age : 29
Distinction : Apprenti KGB-boy en avenir
[Coco' Smile]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Lun 15 Mar 2010 - 21:11
tu t'apprêtais à faire une demande XD
ça va faire un mois que je l'ai fait ce script!!!
Djidane
Djidane
Membre

Nombre de messages : 1444
Age : 26
Localisation : Paris
Distinction : Héritier d'Alexdream (mais on l'aime quand même).
Lèche cul professionnel
et il aime ça!!!
Date d'inscription : 30/12/2008

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Sam 20 Mar 2010 - 2:13
Ah ouais daccord .

Merci à toi Berka pour cette explication et encore merci pour ton script Adurna Wink
Naël
Naël
Membre

Nombre de messages : 558
Age : 23
Localisation : n.f. : repérage, dans l'espace ou dans le temps.
Distinction : aucune
Date d'inscription : 07/02/2010

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Sam 20 Mar 2010 - 15:45
Disons que je l'ai vu au bon moment, alors ^^
Dudu'
Dudu'
Staffeux retraité

Nombre de messages : 2060
Age : 29
Distinction : Apprenti KGB-boy en avenir
[Coco' Smile]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Mar 8 Juin 2010 - 20:06
--------Note sytem-------- By Adurna et Skillo Sans_t12
Un grand merci à Skillo pour l'énorme travaille qu'il à fournie pour amélioré mon script et donc sortir une nouvelle version^^
bien voici la démo:
Auteur: Adurna et Skillo
et les screens:
--------Note sytem-------- By Adurna et Skillo C110
--------Note sytem-------- By Adurna et Skillo C210
Dudu'
Dudu'
Staffeux retraité

Nombre de messages : 2060
Age : 29
Distinction : Apprenti KGB-boy en avenir
[Coco' Smile]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009

--------Note sytem-------- By Adurna et Skillo Empty Re: --------Note sytem-------- By Adurna et Skillo

le Lun 12 Juil 2010 - 23:09
et hop maj
version amélioré pour il y a un bonus pour ce qui utilise un de mes menu^^(menu qui sont également à mettre à jours ^^)
les notes sont accessible depuis celui si^^
voila sinon pas de changement
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum