赞 | 0 |
VIP | 11 |
好人卡 | 1 |
积分 | 1 |
经验 | 5947 |
最后登录 | 2013-7-22 |
在线时间 | 111 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 111 小时
- 注册时间
- 2012-4-21
- 帖子
- 299
|
直接脚本。如下:
- #==============================================================================
- # 本脚本来自www.66RPG.com,使用和转载请保留此信息
- #==============================================================================
- class Scene_Name
- # -------------------------
- def main
- @actor = $game_actors[$game_temp.name_actor_id]
- @edit_window = Window_NameEdit.new(@actor, $game_temp.name_max_char)
- @input_window = Window_NameInput.new
- @alert_window = Window_Base.new(188, 208, 264, 64)
- @alert_window.contents = Bitmap.new(228, 32)
- @alert_window.contents.font.name = "黑体"
- @alert_window.contents.font.size = 24
- @alert_window.contents.draw_text(0, 0, 228, 32, "名字不能为空!")
- @alert_window.z = 1001
- @alert_window.visible = false
- c1 = " English"
- c2 = " 输入日文"
- c3 = " 输入中文"
- c4 = " 空格"
- c5 = " 退格"
- c6 = " 默认姓名"
- c7 = " 确定"
- commands = [c1, c2, c3, c4, c5, c6, c7]
- @command_window = Window_NameCommand.new(160, commands)
- @input_window.active = false
- @input_window.visible = true
- @command_window.index = 0
- @command_window.visible = true
- @command_window.active = true
- @command_window.x = 0
- @command_window.y = 128
- @command_window.z = 1000
- @alert_count = 0
- Graphics.transition
- loop do
- Graphics.update
- Input.update
- update
- if $scene != self
- break
- end
- end
- Graphics.freeze
- @edit_window.dispose
- @input_window.dispose
- @command_window.dispose
- @alert_window.dispose
- end
- # -------------------------
- def update
- @edit_window.update
- @input_window.update
- @command_window.update
- @alert_window.update
- if @alert_window.visible == true && @alert_count > 0
- @alert_count -= 1
- if @alert_count <= 0
- @command_window.active = true
- @alert_window.visible = false
- end
- return
- end
- if @input_window.active == false
- @command_window.active = true
- end
- if @command_window.active == false
- @input_window.active = true
- end
- if Input.repeat?(Input::B) && @input_window.active == true
- if @edit_window.index == 0
- return
- else
- $game_system.se_play($data_system.cancel_se)
- @edit_window.back
- end
- end
- if Input.repeat?(Input::B) && @command_window.active == true
- $game_system.se_play($data_system.buzzer_se)
- return
- end
- if Input.trigger?(Input::C)
- if @command_window.active == true
- case @command_window.index
- when 0
- $game_system.se_play($data_system.decision_se)
- @input_window.mode = 1
- @input_window.refresh
- @command_window.active = false
- @input_window.active = true
- @input_window.index = 0
- return
- when 1
- $game_system.se_play($data_system.decision_se)
- @input_window.mode = 2
- @input_window.refresh
- @command_window.active = false
- @input_window.active = true
- @input_window.index = 0
- return
- when 2
- $game_system.se_play($data_system.decision_se)
- @input_window.mode = 3
- @input_window.refresh
- @command_window.active = false
- @input_window.active = true
- @input_window.index = 0
- return
- when 3
- if @edit_window.index < $game_temp.name_max_char
- $game_system.se_play($data_system.decision_se)
- @edit_window.add(" ")
- else
- $game_system.se_play($data_system.buzzer_se)
- end
- return
- when 4
- $game_system.se_play($data_system.decision_se)
- @edit_window.back
- return
- when 5
- $game_system.se_play($data_system.decision_se)
- @edit_window.restore_default
- return
- when 6
- if @edit_window.name == ""
- $game_system.se_play($data_system.buzzer_se)
- @alert_window.visible = true
- @command_window.active = false
- @alert_count = 60
- return
- end
- $game_system.se_play($data_system.decision_se)
- @actor.name = @edit_window.name
- $game_system.se_play($data_system.decision_se)
- $scene = Scene_Map.new
- return
- end
- end
- if @edit_window.index == $game_temp.name_max_char &&
- @input_window.active == true
- $game_system.se_play($data_system.buzzer_se)
- return
- end
- if @input_window.character == "" && @input_window.active == true
- $game_system.se_play($data_system.buzzer_se)
- return
- end
- if @input_window.character != nil && @input_window.active == true &&
- @edit_window.index <= $game_temp.name_max_char
- $game_system.se_play($data_system.decision_se)
- if @input_window.mode == 1
- @edit_window.char_type[@edit_window.index] = 1
- else
- @edit_window.char_type[@edit_window.index] = 2
- end
- @edit_window.add(@input_window.character)
- end
- return
- end
- end
- end
- class Window_NameEdit < Window_Base
- # ---------------------------
- attr_accessor :char_type
- attr_reader :name
- attr_reader :index
- # ---------------------------
- def initialize(actor, max_char)
- super(0, 0, 640, 128)
- self.contents = Bitmap.new(width - 32, height - 32)
- @actor = actor
- @name = actor.name
- @max_char = max_char
- @char_type = []
- name_array = @name.split(//)[0...@max_char]
- @name = ""
- for i in 0...name_array.size
- @name += name_array[i]
- @char_type[i] = 1
- end
- @default_name = @name
- @index = name_array.size
- refresh
- update_cursor_rect
- end
- # ---------------------------
- def restore_default
- @name = @default_name
- for i in 0..@default_name.size
- @char_type[i] = 1
- end
- @index = @name.split(//).size
- refresh
- update_cursor_rect
- end
- # ---------------------------
- def add(character)
- if @index < @max_char and character != ""
- @name += character
- @index += 1
- refresh
- update_cursor_rect
- end
- end
- # ---------------------------
- def back
- if @index > 0
- name_array = @name.split(//)
- @name = ""
- for i in 0...name_array.size-1
- @name += name_array[i]
- end
- @index -= 1
- refresh
- update_cursor_rect
- end
- end
- # ---------------------------
- def refresh
- self.contents.clear
- name_array = @name.split(//)
- for i in 0...@max_char
- c = name_array[i]
- if c == nil
- c = "_"
- end
- x = 320 - @max_char * 14 + i * 28
- if @char_type[i] == 1
- self.contents.font.name = "黑体"
- self.contents.font.size = 24
- else
- self.contents.font.name = "黑体"
- self.contents.font.size = 22
- end
- self.contents.draw_text(x, 32, 28, 32, c, 1)
- end
- draw_actor_graphic(@actor, 320 - @max_char * 14 - 40, 80)
- end
- # ---------------------------
- def update_cursor_rect
- x = 320 - @max_char * 14 + @index * 28
- self.cursor_rect.set(x, 32, 28, 32)
- end
- # ---------------------------
- def update
- super
- update_cursor_rect
- end
- end
- class Window_NameInput < Window_Base
- # ----------------------------------
- attr_accessor :mode
- # ----------------------------------
- ENGLISH_TABLE =
- [
- "A","B","C","D","E",
- "F","G","H","I","J",
- "K","L","M","N","O",
- "P","Q","R","S","T",
- "U","V","W","X","Y",
- "Z","","","","",
- "0","1","2","3","4",
- "5", "6" ,"7", "8" ,"9",
- "","","","","",
- "a", "b" ,"c", "d" ,"e",
- "f","g","h","i","j",
- "k","l","m","n","o",
- "p","q","r","s","t",
- "u","v","w","x","y",
- "z","","","","",
- ".",",","?","!","/",
- "\\","<",">",";",":",
- "","", "" , "" , "" ,
- "@","#","$","%","^",
- "&","*","(",")","",
- "[","]","'","\"","~",
- "","","","","",
- "","","","","",
- "","","","","",
- "","","","","",
- "", "" ,"", "" ,"",
- "","","","","",
- ]
- HIRAGANA_TABLE =
- [
- "あ","い","う","え","お",
- "か","き","く","け","こ",
- "さ","し","す","せ","そ",
- "た","ち","つ","て","と",
- "な","に","ぬ","ね","の",
- "は","ひ","ふ","へ","ほ",
- "ま","み","む","め","も",
- "や", "" ,"ゆ", "" ,"よ",
- "ら","り","る","れ","ろ",
- "わ", "" ,"を", "" ,"ん",
- "が","ぎ","ぐ","げ","ご",
- "ざ","じ","ず","ぜ","ぞ",
- "だ","ぢ","づ","で","ど",
- "ば","び","ぶ","べ","?",
- "ぱ","ぴ","ぷ","ぺ","ぽ",
- "ゃ","ゅ","ょ","っ","ゎ",
- "ぁ","ぃ","ぅ","ぇ","ぉ",
- "ー","・", "" , "" , "" ,
- "","","","","",
- "","","","","",
- "","","","","",
- "","","","","",
- "","","","","",
- "","","","","",
- "","","","","",
- "","","","","",
- "","","","","",
- "","","","","",
- ]
- KATAKANA_TABLE =
- [
- "怒","尼","者","非","开",
- "斯","皮","乐","多","西",
- "神","月","腾","克","劳",
- "得","拉","克","罗","萨",
- "满","风","影","红","火",
- "马","灵","丸","幻","海",
- "卡","多","米","修","尔",
- "波","比" ,"达", "伊" ,"利",
- "雅","蒂","娜","丝","小",
- "忍","浪" ,"龙", "飞" ,"刀",
- "无","名","剑","血","战",
- "刀","宗","介","大","黄",
- "向","良","春","雪","左",
- "助","明","人","会","有",
- "心","思","去","找","超",
- "之","兔","冥","暗","光",
- "正","太","熙","安","奇",
- "炫","舞","梦", "文" , "世" ,
- "界","结","坦","瓦","伦",
- "青","凤","蛟","鸟","日",
- "恶","魔","士","兵","圣",
- "元","坂","禀","宫","卫",
- "郎","樱","赛","亚","级",
- "蜘","蛛","侠","想","冒",
- "险","不","斩","再","路",
- "真","行","鸣","克","布",
- "孔","明","云","公","关",
- "羽","维","姜","鹤","仙",
- ]
- # ----------------------------------
- def initialize
- super(160, 128, 480, 352)
- self.contents = Bitmap.new(width - 32, height - 32)
- self.active = false
- @index = -1
- @mode = 1
- refresh
- update_cursor_rect
- end
- # ----------------------------------
- def index=(value)
- @index = value
- update_cursor_rect
- end
- #--------------------------------------
- def character
- if @mode == 1
- return ENGLISH_TABLE[@index]
- elsif @mode == 2
- return HIRAGANA_TABLE[@index]
- else
- return KATAKANA_TABLE[@index]
- end
- end
- # ----------------------------------
- def refresh
- self.contents.clear
- for i in 0..134
- x = 4 + i / 5 / 9 * 152 + i % 5 * 28
- y = i / 5 % 9 * 32
- if @mode == 1
- self.contents.font.name = "黑体"
- self.contents.font.size = 24
- self.contents.draw_text(x, y, 28, 32, ENGLISH_TABLE[i], 1)
- elsif @mode == 2
- self.contents.font.name = "黑体"
- self.contents.font.size = 22
- self.contents.draw_text(x, y, 28, 32, HIRAGANA_TABLE[i], 1)
- else
- self.contents.font.name = "黑体"
- self.contents.font.size = 22
- self.contents.draw_text(x, y, 28, 32, KATAKANA_TABLE[i], 1)
- end
- end
- end
- # ----------------------------------
- def update_cursor_rect
- if self.active == false
- self.cursor_rect.empty
- else
- x = 4 + @index / 5 / 9 * 152 + @index % 5 * 28
- y = @index / 5 % 9 * 32
- self.cursor_rect.set(x, y, 28, 32)
- end
- end
- # ----------------------------------
- def update
- super
- if @index >= 0 && @index <= 134
- if Input.repeat?(Input::RIGHT)
- $game_system.se_play($data_system.cursor_se)
- if @index % 5 == 4
- if @index < 94
- @index += 41
- end
- else
- @index += 1
- end
- end
- if Input.repeat?(Input::LEFT)
- $game_system.se_play($data_system.cursor_se)
- if @index % 5 == 0
- if @index < 45
- self.active = false
- @index = -999
- return
- else
- @index -= 41
- end
- else
- @index -= 1
- end
- end
- if Input.repeat?(Input::DOWN)
- $game_system.se_play($data_system.cursor_se)
- if @index % 45 < 40
- @index += 5
- end
- end
- if Input.repeat?(Input::UP)
- if Input.trigger?(Input::UP) or @index % 45 >= 5
- $game_system.se_play($data_system.cursor_se)
- if @index % 45 >= 5
- @index -= 5
- end
- end
- end
- end
- update_cursor_rect
- end
- end
- class Window_NameCommand < Window_Command
- # -------------------------------
- def refresh
- self.contents.clear
- for i in 0...@item_max
- if i == 1 or i == 2
- font = 1
- self.contents.font.name = "黑体"
- self.contents.font.size = 22
- else
- font = 0
- self.contents.font.name = "黑体"
- self.contents.font.size = 24
- end
- draw_item(i, normal_color, font)
- end
- end
- # -------------------------------
- def draw_item(index, color, f)
- if f == 0
- self.contents.font.color = color
- self.contents.font.name = "黑体"
- self.contents.font.size = 24
- else
- self.contents.font.name = "黑体"
- self.contents.font.size = 22
- end
- rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
- self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
- self.contents.draw_text(rect, @commands[index])
- end
- end
- #==============================================================================
- # 本脚本来自www.66RPG.com,使用和转载请保留此信息
- #==============================================================================
复制代码
然后在事件中:
就OK了。
|
评分
-
查看全部评分
|