赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 810 |
最后登录 | 2015-11-6 |
在线时间 | 2 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 2 小时
- 注册时间
- 2008-1-22
- 帖子
- 41
|
这是名字脚本(XP中自带 但默认是 日文
- )# --------------------------------------------------------------------
- # 本脚本来自www.66rpg.com,转载自www.phylomortis.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
复制代码
触发一个自动事件。 事件中设定一个更换角色姓名。
脚本太长,已经修改。
|
|