设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2003|回复: 13
打印 上一主题 下一主题

帮忙!帮忙!要紧事

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
80
在线时间
5 小时
注册时间
2008-2-17
帖子
125
跳转到指定楼层
1
发表于 2008-11-7 03:07:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
为什么我一起用上主站的射击ARPG和图片标题就出错?
谁能帮我改改?


  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. #==============================================================================
  5. # ■ 图片标题菜单1.0
  6. # Scene_Title
  7. #------------------------------------------------------------------------------
  8. # 作者:chaochao
  9. # http://zhuchao.go1.icpcn.com
  10. #==============================================================================
  11. class Scene_Title
  12.   def main
  13.     if $BTEST
  14.       battle_test
  15.       return
  16.     end
  17.     $data_actors = load_data("Data/Actors.rxdata")
  18.     $data_classes = load_data("Data/Classes.rxdata")
  19.     $data_skills = load_data("Data/Skills.rxdata")
  20.     $data_items = load_data("Data/Items.rxdata")
  21.     $data_weapons = load_data("Data/Weapons.rxdata")
  22.     $data_armors = load_data("Data/Armors.rxdata")
  23.     $data_enemies = load_data("Data/Enemies.rxdata")
  24.     $data_troops = load_data("Data/Troops.rxdata")
  25.     $data_states = load_data("Data/States.rxdata")
  26.     $data_animations = load_data("Data/Animations.rxdata")
  27.     $data_tilesets = load_data("Data/Tilesets.rxdata")
  28.     $data_common_events = load_data("Data/CommonEvents.rxdata")
  29.     $data_system = load_data("Data/System.rxdata")
  30.     $game_system = Game_System.new
  31.     # 生成标题图形
  32.     @sprite = [Sprite.new]
  33.     for i in 0..6
  34.       @sprite[i] = Sprite.new
  35.       @sprite[i].opacity = 0
  36.     end
  37.     @sprite[0].bitmap = RPG::Cache.title($data_system.title_name)
  38.     @sprite[0].opacity = 0
  39.     #开始游戏的图片
  40.     @sprite[1].bitmap = Bitmap.new("Graphics/Pictures/start-1.png")
  41.     @sprite[2].bitmap = Bitmap.new("Graphics/Pictures/start-2.png")
  42.     #继续游戏的图片
  43.     @sprite[3].bitmap = Bitmap.new("Graphics/Pictures/continue-1.png")
  44.     @sprite[4].bitmap = Bitmap.new("Graphics/Pictures/continue-2.png")
  45.     #结束游戏的图片
  46.     @sprite[5].bitmap = Bitmap.new("Graphics/Pictures/exit-1.png")
  47.     @sprite[6].bitmap = Bitmap.new("Graphics/Pictures/exit-2.png")
  48.     #图片位置
  49.     for i in 1..6
  50.       x=170
  51.       y=(i+1)/2*35+240
  52.       @sprite[i].x =x
  53.       @sprite[i].y =y
  54.     end
  55.     @continue_enabled = false
  56.     for i in 0..3
  57.       if FileTest.exist?("Save#{i+1}.rxdata")
  58.         @continue_enabled = true
  59.       end
  60.     end
  61.     if @continue_enabled
  62.       @command_index = 1
  63.     else
  64.       @command_index = 0
  65.       @sprite[3].tone = Tone.new(0, 0, 0, 255)
  66.       @sprite[4].tone = Tone.new(0, 0, 0, 255)
  67.     end
  68.     $game_system.bgm_play($data_system.title_bgm)
  69.     Audio.me_stop
  70.     Audio.bgs_stop
  71.     Graphics.transition
  72.     loop do
  73.       Graphics.update
  74.       #淡出背景圖形
  75.       if @sprite[0].opacity <= 255
  76.         @sprite[0].opacity += 15
  77.       end
  78.       Input.update
  79.       update
  80.       if $scene != self
  81.         break
  82.       end
  83.     end
  84.     Graphics.freeze
  85.     # 釋放圖形
  86.     for i in 0..6
  87.       @sprite[i].bitmap.dispose
  88.       @sprite[i].dispose
  89.     end
  90.   end
  91.   def update
  92.   chaochaocommandchaochao
  93.   if Input.trigger?(Input::C)
  94.     case @command_index
  95.       when 0
  96.         command_new_game
  97.       when 1
  98.         command_continue
  99.       when 2
  100.         command_shutdown
  101.       end
  102.     end
  103.   end
  104.   def chaochaocommandchaochao
  105.     if Input.trigger?(Input::UP)
  106.       @command_index -= 1
  107.       if @command_index < 0
  108.         @command_index = 2
  109.       end
  110.       $game_system.se_play($data_system.cursor_se)
  111.     end
  112.     if Input.trigger?(Input::DOWN)
  113.       @command_index += 1
  114.       if @command_index > 2
  115.         @command_index = 0
  116.       end
  117.       $game_system.se_play($data_system.cursor_se)
  118.     end
  119.     case @command_index
  120.     when 0
  121.       if @sprite[1].opacity >= 0
  122.         @sprite[1].opacity -= 30
  123.       end
  124.       if @sprite[2].opacity <= 240
  125.         @sprite[2].opacity += 30
  126.       end
  127.       if @sprite[3].opacity <= 210
  128.         @sprite[3].opacity += 30
  129.       end
  130.       if @sprite[4].opacity >= 0
  131.         @sprite[4].opacity -= 30
  132.       end
  133.       if @sprite[5].opacity <= 210
  134.         @sprite[5].opacity += 30
  135.       end
  136.       if @sprite[6].opacity >= 0
  137.         @sprite[6].opacity -= 30
  138.       end
  139.     when 1
  140.       if @sprite[1].opacity <= 210
  141.         @sprite[1].opacity += 30
  142.       end
  143.       if @sprite[2].opacity >= 0
  144.         @sprite[2].opacity -= 30
  145.       end
  146.       if @sprite[3].opacity >= 0
  147.         @sprite[3].opacity -= 30
  148.       end
  149.       if @sprite[4].opacity <= 240
  150.         @sprite[4].opacity += 30
  151.       end
  152.       if @sprite[5].opacity <= 210
  153.         @sprite[5].opacity += 30
  154.       end
  155.       if @sprite[6].opacity >= 0
  156.         @sprite[6].opacity -= 30
  157.       end
  158.     when 2
  159.       if @sprite[1].opacity <= 210
  160.         @sprite[1].opacity += 30
  161.       end
  162.       if @sprite[2].opacity >= 0
  163.         @sprite[2].opacity -= 30
  164.       end
  165.       if @sprite[3].opacity <= 210
  166.         @sprite[3].opacity += 30
  167.       end
  168.       if @sprite[4].opacity >= 0
  169.         @sprite[4].opacity -= 30
  170.       end
  171.       if @sprite[5].opacity >= 0
  172.         @sprite[5].opacity -= 30
  173.       end
  174.       if @sprite[6].opacity <= 240
  175.         @sprite[6].opacity += 30
  176.       end
  177.     end
  178.   end
  179. end

  180. #==============================================================================
  181. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  182. #==============================================================================
复制代码



谁来帮帮我啊??
此贴于 2008-11-7 3:15:14 被版主天圣的马甲提醒,请楼主看到后对本贴做出回应。
此贴于 2008-11-10 14:51:02 被版主darkten提醒,请楼主看到后对本贴做出回应。

Lv1.梦旅人

綾川司の姫様<

梦石
0
星屑
50
在线时间
796 小时
注册时间
2007-12-20
帖子
4520

贵宾第3届短篇游戏大赛R剧及RMTV组亚军

2
发表于 2008-11-7 11:14:27 | 只看该作者
某处的参数未定义。问题是Title的脚本怎么可能和战斗脚本冲突= =
把你的那些核心脚本和工程都弄上来。然后修改标题,否则D字大刀伺候。

生命即是责任。自己即是世界。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
5 小时
注册时间
2008-2-17
帖子
125
3
 楼主| 发表于 2008-11-8 01:20:39 | 只看该作者
  1. =begin


  2.   脚本:【怨念产物 - GIF图片播放】
  3.   
  4.   功能:在游戏中播放GIF图片 ※ 表情优先。
  5.   
  6.   说明: 使用步骤:
  7.   
  8.         1、使用 @gs = GIFSprite.new([viewport,[x,[,y,[loop_counts]]]])
  9.            创建GIF图片对象;
  10.            
  11.         2、然后使用 @gs.bitmap = "gif_filename" ※ 包含文件夹路径;
  12.         
  13.         3、可以 @gs.loop_counts = n   
  14.            
  15.            设置循环次数,-1表示无限循环(默认的),0就释放图片。
  16.            
  17.         4、@gs.x = x,@gs.y = y,@gs.z = z 等设置各种坐标值。
  18.   
  19.   补充:1、由于考虑的效率问题,提供了生成临时文件技术,即第一运行之后以后每次运
  20.   
  21.         行会直接读取临时文件生成对象,可以使用 GIFSprite.TmpFileclear 清空临时
  22.         
  23.         文件。
  24.         
  25.         2、可以使用 GIFSprite.pre_load(filename_arr) 数组预加载一组图片。        
  26.         
  27.   版本:v1.0
  28.         
  29.   作者:灼眼的夏娜
  30.   
  31. =end


  32. #==============================================================================
  33. # ■ System
  34. #------------------------------------------------------------------------------
  35. #  处理系统相关的模块 。
  36. #==============================================================================
  37. module System
  38.   
  39.   #--------------------------------------------------------------------------
  40.   # ● 模块函数
  41.   #--------------------------------------------------------------------------
  42.   module_function
  43.   
  44.   #--------------------------------------------------------------------------
  45.   # ● API函数声明
  46.   #--------------------------------------------------------------------------
  47.   WinExec = Win32API.new("kernel32","WinExec",'pi','i')

  48.   #--------------------------------------------------------------------------
  49.   # ● 查看或修改文件及文件夹属性
  50.   #  filename :文件或文件夹名字
  51.   #
  52.   #  +a -a    :添加、删除 存档 属性
  53.   #  +r -r    :添加、删除 只读 属性
  54.   #  +s -s    :添加、删除 系统 属性
  55.   #  +h -h    :添加、删除 隐藏 属性
  56.   #--------------------------------------------------------------------------
  57.   def attrib(filename,*args)
  58.     if args.empty?
  59.       astr = `attrib #{filename}`
  60.       attri_arr = Array.new
  61.       astr = astr.split(/:/)[0]
  62.       astr = astr[0,astr.size - 1]
  63.       astr.gsub!(/ /,"")
  64.       return astr.split(//)
  65.     else
  66.       cmdline = ""
  67.       for cmdchar in args
  68.         cmdchar.downcase!
  69.         next if cmdline.include? cmdchar
  70.         if ["+a","-a","+r","-r","+s","-s","+h","-h"].include? cmdchar
  71.           cmdline += " " + cmdchar
  72.         end
  73.       end
  74.       cmdline += " "
  75.       result = WinExec.call("attrib #{cmdline}#{filename}",0)
  76.       if result < 31
  77.         return
  78.       end
  79.     end
  80.   end
  81.   
  82. end

  83. #==============================================================================
  84. # ■ GIF
  85. #------------------------------------------------------------------------------
  86. #  分析处理GIF图片的核心模块 。
  87. #==============================================================================
  88. module GIF
  89.   
  90.   # 定义常量
  91.   SIZE_GIFH = 6
  92.   
  93.   SIZE_GIFS = 7
  94.   
  95.   SIZE_GIFI = 9
  96.   
  97.   SIZE_GIFC = 6
  98.   
  99.   SIZE_GIFP = 13
  100.   
  101.   SIZE_GIFA = 12
  102.   
  103.   CODE_MASK = [0x0000,
  104.                0x0001,0x0003,0x0007,0x000f,
  105.                0x001f,0x003f,0x007f,0x00ff,
  106.                0x01ff,0x03ff,0x07ff,0x0fff]
  107.   
  108.   INC_TABLE = [8,8,4,2,0]
  109.   
  110.   BGN_TABLE = [0,4,2,1,0]
  111.   
  112.   # 建立文件夹
  113.   Dir.mkdir("GIF") unless Dir["*"].include?("GIF")
  114.   
  115.   # 函数定义
  116.   module_function
  117.   
  118.   #--------------------------------------------------------------------------
  119.   # ● 分解gif图片
  120.   #--------------------------------------------------------------------------
  121.   def analyze_gif
  122.     @old_dir = Dir.pwd
  123.     Dir.chdir("GIF")
  124.     @total_gif = []
  125.     for g in Dir["*"]
  126.       suf = g.split(/\./)
  127.       if suf[1].is_a?(String) and suf[1].downcase == "gif"
  128.         @total_gif.push(g)
  129.         Dir.mkdir(suf[0]) unless Dir["*"].include? suf[0]
  130.       end
  131.     end
  132.     @total_gif.each{|file| self.readdata(file)}
  133.     Dir.chdir(@old_dir)
  134.     p '全部分解完毕,点击确定退出'
  135.     exit
  136.   end
  137.   
  138.   #--------------------------------------------------------------------------
  139.   # ● 读取文件数据:成功返回@gif_infos,失败返回nil
  140.   #--------------------------------------------------------------------------
  141.   def readdata(filename)
  142.     # 检查是否有临时记忆文件
  143.     tmp_filename = File.basename(filename,".*")
  144.     unless Dir["~TEMP/#{tmp_filename}_infos.fmd"].empty?
  145.       begin
  146.         giffr = open("~TEMP/#{tmp_filename}_infos.fmd","rb")
  147.         tmp_infos = Marshal.load(giffr)
  148.         giffr.close
  149.         if Dir["~TEMP/#{tmp_filename}_*.png"].size == tmp_infos.total_frames
  150.           return tmp_infos
  151.         end
  152.       rescue
  153.       end
  154.     end
  155.     # 初始化数据
  156.     self.initial_var(filename)
  157.     # 打开文件
  158.     begin
  159.       @f = open(filename,"rb")
  160.       # 读取文件头
  161.       self.read_gifh
  162.       # 读取逻辑屏幕描述块
  163.       self.read_gifs
  164.       # 读取下一个字节
  165.       @temp = @f.read(1)[0]
  166.       # 循环读取每个图象描述块
  167.       while true
  168.         if @temp == 0x2c
  169.           # 读取图象描述块
  170.           self.read_gifi
  171.         end
  172.         if @temp == 0x21
  173.           # 读取图象扩展块
  174.           self.read_gife
  175.         end
  176.         if @temp == 0x3b
  177.           break
  178.         end
  179.         # 读取下一个字节
  180.         @temp = @f.read(1)[0]
  181.       end
  182.       # ※ 设置图象帧数
  183.       @gif_infos.total_frames = @frame_count
  184.       # ※ 写入图象分解数据
  185.       giffw = open("~TEMP/#{@filename}_infos.fmd","wb")
  186.       Marshal.dump(@gif_infos,giffw)
  187.       giffw.close
  188.     rescue
  189.       return nil
  190.     ensure
  191.       @f.close
  192.     end
  193.     return @gif_infos
  194.   end
  195.   
  196.   #--------------------------------------------------------------------------
  197.   # ● 初始化变量
  198.   #--------------------------------------------------------------------------
  199.   def initial_var(filename)
  200.     # ※ 生成图象数据对象
  201.     @gif_infos = GIFSprite::Infos.new
  202.     # 帧数计数
  203.     @frame_count = 0
  204.     @f = nil
  205.     @temp = nil
  206.     # 获取文件名
  207.     @filename = File.basename(filename,".*")
  208.   end
  209.   
  210.   #--------------------------------------------------------------------------
  211.   # ● 读取文件头
  212.   #--------------------------------------------------------------------------
  213.   def read_gifh
  214.     @gifh = @f.read(SIZE_GIFH)
  215.     if @gifh[0,3] != "GIF"
  216.       raise "不是GIF文件!"
  217.     end
  218.     if @gifh[3,3] != "87a" and @gifh[3,3] != "89a"
  219.       raise "不支持的版本!"
  220.     end
  221.   end
  222.   
  223.   #--------------------------------------------------------------------------
  224.   # ● 读取逻辑屏幕描述块
  225.   #--------------------------------------------------------------------------
  226.   def read_gifs
  227.     @gifs = @f.read(SIZE_GIFS).unpack("S2C3")
  228.     # 获取调色板位数
  229.     @_pal_bits = (@gifs[2] & 7) + 1
  230.     # ※ 获取图象宽度
  231.     @gif_infos.width = @gifs[0]
  232.     # ※ 获取图象高度
  233.     @gif_infos.height = @gifs[1]
  234.     # 是否有全局调色板
  235.     if @gifs[2] >> 7 == 1
  236.       # 全局调色板大小
  237.       @g_pal_size = 3 * (1 << @_pal_bits)
  238.       # 读取全局调色板数据
  239.       @g_pal = @f.read(@g_pal_size).unpack("C*")
  240.     end
  241.   end
  242.   
  243.   #--------------------------------------------------------------------------
  244.   # ● 读取图象描述块
  245.   #--------------------------------------------------------------------------
  246.   def read_gifi
  247.     # 读取图象描述块
  248.     @gifi = @f.read(SIZE_GIFI).unpack("S4C")
  249.     # ※ 生成临时帧数据对象
  250.     @gif_fd = GIFSprite::Infos::FrameData.new if @gif_fd.nil?
  251.     # ※ 获取帧偏移
  252.     @gif_fd.offset_x = @gifi[0]
  253.     @gif_fd.offset_y = @gifi[1]
  254.     # 获取宽度和高度
  255.     @_width = @gifi[2]
  256.     @_height = @gifi[3]
  257.     # 清空局部调色板
  258.     @l_pal = nil
  259.     # 是否有局部调色板
  260.     if @gifi[4] >> 7 == 1
  261.       # 获取调色板位数
  262.       @_pal_bits = (@gifi[4] & 7) + 1
  263.       # 局部调色板大小
  264.       @l_pal_size = 3 * (1 << @_pal_bits)
  265.       # 读取局部调色板数据
  266.       @l_pal = @f.read(@l_pal_size).unpack("C*")
  267.     end
  268.     # 获取交错标记
  269.     @_lace = (@gifi[4] >> 6) & 1
  270.     # 修正调色板位数
  271.     @_pal_bits = @_pal_bits == 1 ? 1 : (@_pal_bits <= 4 ? 4 : 8)
  272.     # 获取行字节数
  273.     @_width_bytes = (((@_width * @_pal_bits) + 31) >> 5) << 2
  274.     # 读取图象压缩数据
  275.     self.read_lzw_data
  276.     # ※ 设置GIF帧数据
  277.     @gif_infos.frame_data[@frame_count - 1] = @gif_fd
  278.     # ※ 清除帧数据
  279.     @gif_fd = nil
  280.   end
  281.   
  282.   #--------------------------------------------------------------------------
  283.   # ● 读取图象压缩数据
  284.   #--------------------------------------------------------------------------
  285.   def read_lzw_data
  286.     # 解码用
  287.     lzw_mincodelen = @f.read(1)[0]
  288.     # 帧数加 1
  289.     @frame_count += 1
  290.     # 图象块数据
  291.     image_data = ""
  292.     # 块大小
  293.     blocksize = @f.read(1)[0]
  294.     while blocksize > 0
  295.       image_data += @f.read(blocksize)
  296.       blocksize = @f.read(1)[0]
  297.     end
  298.     # 导出图象
  299.     self.dump_imgs(image_data,lzw_mincodelen)
  300.   end

  301.   #--------------------------------------------------------------------------
  302.   # ● 读取扩充块
  303.   #--------------------------------------------------------------------------
  304.   def read_gife
  305.     label = @f.read(1)[0]
  306.     case label
  307.     when 0xf9 # 图形控制扩展块
  308.       @gifc = @f.read(SIZE_GIFC).unpack("C2SC2")
  309.       # ※ 生成帧数据对象
  310.       @gif_fd = GIFSprite::Infos::FrameData.new   
  311.       # ※ 获取帧数据 延迟时间
  312.       @gif_fd.delay_time = @gifc[2]
  313.       # ※ 获取下一帧的处理方法
  314.       @gif_fd.disposal_method = (@gifc[1] & 28) >> 2
  315.       # 获取透明颜色
  316.       @_trans_index = nil
  317.       if @gifc[1] & 1 > 0
  318.         @_trans_index = @gifc[3]
  319.       end
  320.     when 0x01 # 图形说明扩展块
  321.       @gifp = @f.read(SIZE_GIFP).unpack("CS4C4")
  322.       blocksize = @f.read(1)[0]
  323.       while blocksize > 0
  324.         @f.read(blocksize)
  325.         blocksize = @f.read(1)[0]
  326.       end
  327.     when 0xfe # 注解说明扩展块
  328.       blocksize = @f.read(1)[0]
  329.       while blocksize > 0
  330.         @f.read(blocksize)
  331.         blocksize = @f.read(1)[0]
  332.       end
  333.     when 0xff # 应用程序扩展块
  334.       @gifa = @f.read(SIZE_GIFA).unpack("C*")
  335.       blocksize = @f.read(1)[0]
  336.       while blocksize > 0
  337.         @f.read(blocksize)
  338.         blocksize = @f.read(1)[0]
  339.       end
  340.     end
  341.   end
  342.   
  343.   #--------------------------------------------------------------------------
  344.   # ● 设置调色板
  345.   #--------------------------------------------------------------------------
  346.   def set_pal
  347.     @_pal = []
  348.     if @l_pal != nil
  349.       @_pal = @l_pal
  350.     elsif @g_pal != nil
  351.       @_pal = @g_pal
  352.     else
  353.       for i in 0...1 << @_pal_bits
  354.         @_pal.push i,i,i
  355.       end
  356.     end
  357.   end
  358.   
  359.   #--------------------------------------------------------------------------
  360.   # ● 解码图形数据
  361.   #--------------------------------------------------------------------------
  362.   def dump_imgs(image_data,lze_len)
  363.     @image_data = image_data.unpack("C*")
  364.    
  365.     self.set_pal
  366.    
  367.     @png_data = []

  368.     @stack = []
  369.     @images = []
  370.    
  371.     @prefix = []
  372.     @suffix = []
  373.    
  374.     @bitcount = @_pal_bits
  375.     @widthcount = 0
  376.    
  377.     @left_bits = 0x00
  378.     @current_bits = lze_len + 0x01
  379.    
  380.     @lzw_clear = 1 << lze_len
  381.     @lzw_eoi = @lzw_clear + 1
  382.     @nowtablendx = @lzw_clear + 2
  383.     @toptablendx = 1 << @current_bits
  384.    
  385.     @wdata = 0
  386.     @wcode = 0
  387.     @oldcode = 0xffff
  388.     @row_num = 0
  389.     @tempchar = 0x00
  390.     @pass = 0x00
  391.     @firstchar = 0
  392.     @tempndx = 0
  393.     # 读取编码字符
  394.     self.read_byte
  395.     # 不是@lzw_eoi则循环
  396.     while @wcode != @lzw_eoi
  397.       # @lzw_clear码
  398.       if @wcode == @lzw_clear
  399.         for i in 0...@lzw_clear
  400.           @prefix[i] = 0xffff
  401.           @suffix[i] = i
  402.         end
  403.         for i in @nowtablendx...4096
  404.           @prefix[i] = 0xffff
  405.           @suffix[i] = 0x00
  406.         end
  407.         @current_bits = lze_len + 0x01
  408.         @nowtablendx = @lzw_clear + 2
  409.         @toptablendx = 1 << @current_bits
  410.         @oldcode = 0xffff
  411.         # 读取编码字符
  412.         self.read_byte
  413.         if @wcode != @lzw_eoi
  414.           while @prefix[@wcode] != 0xffff
  415.             @stack.push(@suffix[@wcode])
  416.             @wcode = @prefix[@wcode]
  417.           end
  418.           @stack.push(@suffix[@wcode])
  419.           @firstchar = @stack[-1]
  420.           # 输出解码数据
  421.           self.output_data
  422.         end
  423.       else
  424.         if @wcode < @nowtablendx
  425.           @tempndx = @wcode
  426.         else
  427.           @tempndx = @oldcode
  428.           @stack.push(@firstchar)
  429.         end
  430.         while @prefix[@tempndx] != 0xffff
  431.           @stack.push(@suffix[@tempndx])
  432.           @tempndx = @prefix[@tempndx]
  433.         end
  434.         @stack.push(@suffix[@tempndx])
  435.         @firstchar = @stack[-1]
  436.         @prefix[@nowtablendx] = @oldcode
  437.         @suffix[@nowtablendx] = @firstchar
  438.         @nowtablendx += 1
  439.         if @nowtablendx == @toptablendx and @current_bits < 12
  440.           @current_bits += 1
  441.           @toptablendx = 1 << @current_bits
  442.         end
  443.         # 输出解码数据
  444.         self.output_data
  445.       end
  446.       @oldcode = @wcode
  447.       # 读取编码字符
  448.       self.read_byte
  449.     end
  450.     Graphics.update
  451.     # 生成png图
  452.     self.make_png
  453.   end

  454.   #--------------------------------------------------------------------------
  455.   # ● 读取下一个字节
  456.   #--------------------------------------------------------------------------
  457.   def read_byte
  458.     while @left_bits < @current_bits
  459.       @next_char = @image_data.shift
  460.       @wdata |= (@next_char << @left_bits)
  461.       @left_bits += 0x08
  462.     end
  463.     @wcode = @wdata & CODE_MASK[@current_bits]
  464.     @wdata >>= @current_bits
  465.     @left_bits -= @current_bits
  466.   end
  467.   
  468.   #--------------------------------------------------------------------------
  469.   # ● 输出解码数据
  470.   #--------------------------------------------------------------------------
  471.   def output_data
  472.     while [email protected]?
  473.       @tempchar |= (@stack.pop << (8 - @bitcount))
  474.       if @bitcount == 8
  475.         @images.push(@tempchar)
  476.         @tempchar = 0x00
  477.         @bitcount = @_pal_bits
  478.       else
  479.         @bitcount += @_pal_bits
  480.       end
  481.       @widthcount += 1
  482.       if @widthcount == @_width
  483.         if @bitcount != @_pal_bits
  484.           @images.push(@tempchar)
  485.           @tempchar = 0x00
  486.           @bitcount = @_pal_bits
  487.         end
  488.         @png_data[@row_num] = @images.clone
  489.         @images.clear
  490.         if @_lace > 0
  491.           @row_num += INC_TABLE[@pass]
  492.           if @row_num >= @_height
  493.             @pass += 1
  494.             @row_num = BGN_TABLE[@pass]
  495.           end
  496.         else
  497.           @row_num += 1
  498.         end
  499.         @widthcount = 0
  500.       end
  501.     end
  502.   end
  503.   
  504.   #--------------------------------------------------------------------------
  505.   # ● 生成png图片
  506.   #--------------------------------------------------------------------------
  507.   def make_png
  508.     fp = open("~TEMP/#@filename" + sprintf("_%02d",@frame_count)+".png","wb")
  509.     fp.write(self.make_png_header)
  510.     fp.write(self.make_png_ihdr)
  511.     fp.write(self.make_png_plte) if @_trans_index.nil?
  512.     fp.write(self.make_png_idat)
  513.     fp.write(self.make_png_iend)
  514.     fp.close
  515.   end
  516.    
  517.   #--------------------------------------------------------------------------
  518.   # ● png头文件
  519.   #--------------------------------------------------------------------------
  520.   def make_png_header
  521.     return [0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a].pack("C*")
  522.   end
  523.   
  524.   #--------------------------------------------------------------------------
  525.   # ● png信息头块
  526.   #--------------------------------------------------------------------------
  527.   def make_png_ihdr
  528.     ih_size = [13].pack("N")
  529.     ih_sign = "IHDR"
  530.     ih_width = [@_width].pack("N")
  531.     ih_height = [@_height].pack("N")
  532.     if @_trans_index != nil
  533.       ih_bit_depth = [@_pal_bits > 8 ? 16 : 8].pack("C")
  534.       ih_color_type = [6].pack("C")
  535.     else
  536.       ih_bit_depth = [@_pal_bits].pack("C")
  537.       ih_color_type = [3].pack("C")
  538.     end
  539.     ih_compression_method = [0].pack("C")
  540.     ih_filter_method = [0].pack("C")
  541.     ih_interlace_method = [0].pack("C")
  542.     string = ih_sign + ih_width + ih_height + ih_bit_depth + ih_color_type +
  543.              ih_compression_method + ih_filter_method + ih_interlace_method
  544.     ih_crc = [Zlib.crc32(string)].pack("N")
  545.     return ih_size + string + ih_crc
  546.   end
  547.   
  548.   #--------------------------------------------------------------------------
  549.   # ● png调色板块
  550.   #--------------------------------------------------------------------------
  551.   def make_png_plte
  552.     pl_size = [@_pal.size].pack("N")
  553.     pl_sign = "PLTE"
  554.     pl_data = @_pal.pack("C*")
  555.     pl_crc = [Zlib.crc32(pl_sign + pl_data)].pack("N")
  556.     return pl_size + pl_sign + pl_data + pl_crc
  557.   end
  558.   
  559.   #--------------------------------------------------------------------------
  560.   # ● png数据块
  561.   #--------------------------------------------------------------------------
  562.   def make_png_idat
  563.     lz_data = []
  564.     if @_trans_index != nil
  565.       for i in 0...@png_data.size
  566.         lz_data.push 0
  567.         for j in @png_data[i]
  568.           if j == @_trans_index
  569.             lz_data.push @_pal[j*3],@_pal[j*3+1],@_pal[j*3+2],0
  570.           else
  571.             lz_data.push @_pal[j*3],@_pal[j*3+1],@_pal[j*3+2],255
  572.           end
  573.         end
  574.       end
  575.     else
  576.       for i in 0...@png_data.size
  577.         lz_data.push 0
  578.         lz_data += @png_data[i]
  579.       end
  580.     end
  581.     id_data = Zlib::Deflate.deflate(lz_data.pack("C*"),9)
  582.     id_size = [id_data.size].pack("N")
  583.     id_sign = "IDAT"
  584.     id_crc = [Zlib.crc32(id_sign + id_data)].pack("N")
  585.     return id_size + id_sign + id_data + id_crc
  586.   end
  587.   
  588.   #--------------------------------------------------------------------------
  589.   # ● png 结尾块
  590.   #--------------------------------------------------------------------------
  591.   def make_png_iend
  592.     ie_size = [0].pack("N")
  593.     ie_sign = "IEND"
  594.     ie_crc = [Zlib.crc32(ie_sign)].pack("N")
  595.     return ie_size + ie_sign + ie_crc
  596.   end
  597.   
  598. end

  599. #==============================================================================
  600. # ■ Graphics
  601. #------------------------------------------------------------------------------
  602. #  处理画面的模块 。
  603. #==============================================================================
  604. class << Graphics

  605.   #--------------------------------------------------------------------------
  606.   # ● 添加别名、线程、临界区
  607.   #--------------------------------------------------------------------------
  608.   unless method_defined? :origin_update
  609.     alias origin_update update
  610.     def update_critical
  611.       Thread.critical = true
  612.       origin_update
  613.       Thread.critical = false
  614.     end
  615.     Thread.new{loop{Graphics.update_critical;sleep(9)}}
  616.   end
  617.   
  618.   #--------------------------------------------------------------------------
  619.   # ● 定义类变量
  620.   #--------------------------------------------------------------------------
  621.   @@gif_sprites = Array.new
  622.   
  623.   #--------------------------------------------------------------------------
  624.   # ● 添加GIF图片精灵
  625.   #--------------------------------------------------------------------------
  626.   def add(gs)
  627.     @@gif_sprites << gs
  628.   end
  629.   
  630.   #--------------------------------------------------------------------------
  631.   # ● 删除GIF图片精灵
  632.   #--------------------------------------------------------------------------
  633.   def del(gs)
  634.     @@gif_sprites.delete gs
  635.   end

  636.   #--------------------------------------------------------------------------
  637.   # ● 更新画面
  638.   #--------------------------------------------------------------------------
  639.   def update
  640.     update_critical
  641.     @@gif_sprites.each{|gs| gs.update}
  642.   end
  643.   
  644. end

  645. #==============================================================================
  646. # ■ GIFSprite
  647. #------------------------------------------------------------------------------
  648. #  GIF精灵的核心类 。
  649. #==============================================================================
  650. class GIFSprite
  651.   
  652.   #============================================================================
  653.   # ● GIFSprite::Infos
  654.   #----------------------------------------------------------------------------
  655.   #  GIF图片信息类 。
  656.   #============================================================================
  657.   class Infos
  658.    
  659.     #------------------------------------------------------------------------
  660.     # ● 定义实例变量
  661.     #------------------------------------------------------------------------
  662.     attr_accessor :total_frames
  663.     attr_accessor :width
  664.     attr_accessor :height
  665.     attr_accessor :frame_data
  666.    
  667.     #------------------------------------------------------------------------
  668.     # ● 初始化
  669.     #------------------------------------------------------------------------
  670.     def initialize
  671.       @total_frames = 0
  672.       @width = 0
  673.       @height = 0
  674.       @frame_data = Array.new
  675.     end
  676.    
  677.     #==========================================================================
  678.     # ● GIFSprite::Infos::FrameData
  679.     #--------------------------------------------------------------------------
  680.     #  GIF图片每帧信息类 。
  681.     #==========================================================================
  682.     class FrameData
  683.       
  684.       #----------------------------------------------------------------------
  685.       # ● 定义实例变量
  686.       #----------------------------------------------------------------------
  687.       attr_accessor :offset_x
  688.       attr_accessor :offset_y
  689.       attr_accessor :delay_time
  690.       attr_accessor :disposal_method
  691.       
  692.       #----------------------------------------------------------------------
  693.       # ● 初始化
  694.       #----------------------------------------------------------------------
  695.       def initialize
  696.         @offset_x = 0
  697.         @offset_y = 0
  698.         @delay_time = 0
  699.         @disposal_method = 0
  700.       end
  701.       
  702.     end
  703.    
  704.   end
  705.   
  706.   #--------------------------------------------------------------------------
  707.   # ● 预处理:建立临时文件夹
  708.   #--------------------------------------------------------------------------
  709.   unless Dir["*"].include?("~TEMP")
  710.     Dir.mkdir("~TEMP")
  711.     System.attrib("~TEMP","+h","+s")
  712.   end
  713.   
  714.   #--------------------------------------------------------------------------
  715.   # ● 清空硬缓存
  716.   #--------------------------------------------------------------------------
  717.   def self.TmpFileclear
  718.     begin
  719.       Dir["~TEMP/*"].each{|filename| File.delete filename}
  720.     rescue
  721.     end
  722.   end
  723.   
  724.   #--------------------------------------------------------------------------
  725.   # ● 预加载图片
  726.   #--------------------------------------------------------------------------
  727.   def self.pre_load(filename_arr)
  728.     filename_arr.each{|fn| GIF.readdata(fn)}
  729.   end
  730.   
  731.   #--------------------------------------------------------------------------
  732.   # ● 定义实例变量
  733.   #--------------------------------------------------------------------------
  734.   attr_accessor :x
  735.   attr_accessor :y
  736.   attr_reader   :z
  737.   attr_accessor :loop_counts
  738.   attr_accessor :viewport
  739.   
  740.   #--------------------------------------------------------------------------
  741.   # ● 创建对象
  742.   #--------------------------------------------------------------------------
  743.   def self.new(viewport = nil,x = 0,y = 0,loop_counts = -1)
  744.     obj = super()
  745.     obj.viewport = viewport
  746.     obj.x = x
  747.     obj.y = y
  748.     obj.loop_counts = loop_counts
  749.     Graphics.add(obj)
  750.     obj
  751.   end
  752.   
  753.   #--------------------------------------------------------------------------
  754.   # ● 获取图片信息
  755.   #--------------------------------------------------------------------------
  756.   def bitmap
  757.     @gif_infos
  758.   end
  759.   
  760.   #--------------------------------------------------------------------------
  761.   # ● 设置图片文件名
  762.   #--------------------------------------------------------------------------
  763.   def bitmap=(filename)
  764.     @gif_infos = GIF.readdata(filename)
  765.     if @gif_infos != nil
  766.       @sp_arr = Array.new
  767.       basename = File.basename(filename,".*")
  768.       for i in 0...@gif_infos.total_frames
  769.         sp   = Sprite.new(@viewport)
  770.         sp.bitmap = Bitmap.new(sprintf("~TEMP/#{basename}_%02d.png",i + 1))
  771.         sp.visible = i == 0
  772.         sp.x = @gif_infos.frame_data[i].offset_x
  773.         sp.y = @gif_infos.frame_data[i].offset_y
  774.         @sp_arr << sp
  775.       end
  776.       @update_frame_count = 0
  777.       @current_show_frame = 0
  778.       @next_frame_counts =
  779.       (@gif_infos.frame_data[0].delay_time * Graphics.frame_rate / 100)
  780.     end
  781.   end
  782.   
  783.   #--------------------------------------------------------------------------
  784.   # ● 定义x=
  785.   #--------------------------------------------------------------------------
  786.   def x=(x)
  787.     if @gif_infos.nil?
  788.       @x = 0
  789.       return
  790.     end
  791.     @x = x
  792.     for i in 0...@gif_infos.total_frames
  793.       @sp_arr[i].x = @gif_infos.frame_data[i].offset_x + @x
  794.     end
  795.   end
  796.   
  797.   #--------------------------------------------------------------------------
  798.   # ● 定义y=
  799.   #--------------------------------------------------------------------------
  800.   def y=(y)
  801.     if @gif_infos.nil?
  802.       @y = 0
  803.       return
  804.     end
  805.     @y = y
  806.     for i in 0...@gif_infos.total_frames
  807.       @sp_arr[i].y = @gif_infos.frame_data[i].offset_y + @y
  808.     end
  809.   end
  810.   
  811.   #--------------------------------------------------------------------------
  812.   # ● 定义z=
  813.   #--------------------------------------------------------------------------
  814.   def z=(z)
  815.     if @gif_infos.nil?
  816.       @z = 0
  817.       return
  818.     end
  819.     @z = z
  820.     for i in 0...@gif_infos.total_frames
  821.       @sp_arr[i].z = @z
  822.     end
  823.   end
  824.   
  825.   #--------------------------------------------------------------------------
  826.   # ● 获取宽度
  827.   #--------------------------------------------------------------------------
  828.   def width
  829.     return @gif_infos.nil? ? 0 : @gif_infos.width
  830.   end
  831.   
  832.   #--------------------------------------------------------------------------
  833.   # ● 获取高度
  834.   #--------------------------------------------------------------------------
  835.   def height
  836.     return @gif_infos.nil? ? 0 : @gif_infos.height
  837.   end
  838.   
  839.   #--------------------------------------------------------------------------
  840.   # ● 释放精灵
  841.   #--------------------------------------------------------------------------
  842.   def dispose
  843.     Graphics.del(self)
  844.     @sp_arr.each{|sp|
  845.       sp.bitmap.dispose
  846.       sp.dispose
  847.     }
  848.     @sp_arr.clear
  849.     @gif_infos = nil
  850.   end
  851.   
  852.   #--------------------------------------------------------------------------
  853.   # ● 更新精灵
  854.   #--------------------------------------------------------------------------
  855.   def update
  856.     if @gif_infos.nil?
  857.       return
  858.     end
  859.     @update_frame_count += 1
  860.     if @update_frame_count >= @next_frame_counts
  861.       @current_show_frame = (@current_show_frame + 1) % @gif_infos.total_frames
  862.       case @gif_infos.frame_data[@current_show_frame - 1].disposal_method
  863.       when 0 # 不处理
  864.         
  865.       when 1 # 图象保留在原处
  866.         
  867.       when 2 # 当前图象消失
  868.         @sp_arr[@current_show_frame - 1].visible = false
  869.       when 3 # 尚不明 = =
  870.         
  871.       end
  872.       @sp_arr[@current_show_frame].visible = true
  873.       if @current_show_frame == 0
  874.         @loop_counts -= 1 if @loop_counts > 0
  875.         if @loop_counts == 0
  876.           self.dispose
  877.           return
  878.         end
  879.         for i in 0...@sp_arr.size
  880.           @sp_arr[i].visible = i == @current_show_frame
  881.         end
  882.       end
  883.       @update_frame_count = 0
  884.       @next_frame_counts = (@gif_infos.frame_data[@current_show_frame].      delay_time * Graphics.frame_rate / 100)
  885.     end
  886.   end
  887.   
  888. end
复制代码

  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================
  4. #
  5. # 脚本功能:给不同物品显示不同颜色,类似暗黑破坏神,比如套装为绿色,超级为金色
  6. #           可以更改的种类包括物品、防具、特技、武器。
  7. #
  8. # 使用方法:对于不想为白色表示的物品,在描述中最后添加@6,@4一类的即可。
  9. #           数字为颜色编号,和对话框中的一样。
  10. # ——————————————————————————————————————
  11. module RPG
  12.   class Skill
  13.     def description
  14.       description = @description.split(/@/)[0]
  15.       return description != nil ? description : ''
  16.     end
  17.     def name_color_66RPG
  18.       name_color = @description.split(/@/)[1]
  19.       return name_color != nil ? name_color.to_i : 0
  20.     end
  21.   end
  22.   class Weapon

  23.     def description
  24.       description = @description.split(/@/)[0]
  25.       return description != nil ? description : ''
  26.     end
  27.     def name_color_66RPG
  28.       name_color = @description.split(/@/)[1]
  29.       return name_color != nil ? name_color.to_i : 0
  30.     end
  31.   end
  32.   class Item
  33.    
  34.     def description
  35.       description = @description.split(/@/)[0]
  36.       return description != nil ? description : ''
  37.     end
  38.     def name_color_66RPG
  39.       name_color = @description.split(/@/)[1]
  40.       return name_color != nil ? name_color.to_i : 0
  41.     end
  42.   end
  43.   class Armor
  44.    
  45.     def description
  46.       description = @description.split(/@/)[0]
  47.       return description != nil ? description : ''
  48.     end
  49.     def name_color_66RPG
  50.       name_color = @description.split(/@/)[1]
  51.       return name != nil ? name_color.to_i : 0
  52.     end
  53.   end
  54. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
5 小时
注册时间
2008-2-17
帖子
125
4
 楼主| 发表于 2008-11-8 01:23:24 | 只看该作者
  1. #==============================================================================
  2. # ■ Window_Help
  3. #------------------------------------------------------------------------------
  4. #  特技及物品的说明、角色的状态显示的窗口。
  5. #   若要更改属性,请搜索element_set={1=>"火",2=>"冰",3=>"光",4=>"暗"} 改成对应属性即可
  6. #==============================================================================

  7. class Window_Help_Self < Window_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #--------------------------------------------------------------------------
  11.   def initialize
  12.     super(150,200, 180, 430)
  13.     self.opacity = 150
  14.     self.z=3001
  15.     self.visible = false
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 设置文本
  19.   #     text  : 窗口显示的字符串
  20.   #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  21.   #--------------------------------------------------------------------------
  22.   def set_text(data)
  23.     @data=data
  24.     case @data
  25.     when RPG::Item
  26.       set_item_text(@data)
  27.     when RPG::Weapon
  28.       set_weapon_text(@data)
  29.     when RPG::Armor
  30.       set_armor_text(@data)
  31.     when RPG::Skill
  32.       set_skill_text(@data)
  33.       
  34.     end
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 物品帮助窗口
  38.   #--------------------------------------------------------------------------
  39.   def set_item_text(item)
  40.     @item=item
  41.     [email protected]
  42.     x=0
  43.     y=0
  44.     height=1     #依要显示的内容确定高
  45.     #由描叙确定高
  46.     height+=description.size/3/10
  47.     if description.size%10!=0
  48.       height+=1
  49.     end
  50.     height+=3  #空行,效果范围,价格
  51.     if @item.recover_hp_rate!=0 #HP 回复率。
  52.       height+=1
  53.     end   
  54.     if @item.recover_hp!=0 #HP 回复量。
  55.       height+=1
  56.     end
  57.     if @item.recover_sp_rate!=0 #SP 回复率。
  58.       height+=1
  59.     end
  60.     if @item.recover_sp!=0 #SP 回复量。
  61.       height+=1
  62.     end
  63.     if @item.parameter_type!=0 #增加能力值
  64.       height+=1
  65.     end      
  66.     if @item.element_set.empty?!=true  #属性。为属性 ID 的数组
  67.       height+=1
  68.     end  
  69.     if @item.plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
  70.       [email protected]_state_set.size  
  71.     end
  72.     if @item.minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
  73.       [email protected]_state_set.size   
  74.     end     
  75.     self.height=height*15+40+15   
  76.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  77.     self.contents.clear
  78.     #描绘名字
  79.     [email protected]
  80.     self.contents.font.color =text_color(4)
  81.     self.contents.font.size=18
  82.     if text!=nil
  83.       self.visible = true
  84.       self.contents.draw_text(0,0, @item.name.size*7, 20, text, 0)
  85.     else
  86.       self.visible = false
  87.     end
  88.     x=0
  89.     y+=1
  90.     text=description
  91.     #描绘描叙
  92.     while ((text = description.slice!(/./m)) != nil)
  93.       self.contents.font.color = normal_color
  94.       self.contents.font.size=14
  95.       self.contents.draw_text(x*15, y*15+5, 14, 14, text, 0)
  96.       x+=1
  97.       if x==10#每行10个字
  98.         x=0
  99.         y+=1      
  100.       end
  101.     end
  102.     #由特技属性确定高
  103.     #效果范围
  104.     scope = {0=>"特殊物品",1=>"敌单体",2=>"敌全体",3=>"己方单体",4=>"己方全体",5=>"己方昏死单体",6=>"己方昏死全体",7=>"使用者"}#HASH表
  105.     text="范围:"+scope[@item.scope]
  106.     x=0
  107.     y+=2  #空一行
  108.     self.contents.font.color = normal_color
  109.     self.contents.font.size=14
  110.     self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  111.     #价格
  112.       x=0
  113.       y+=1      
  114.       text="价格:"[email protected]_s
  115.       self.contents.font.color = normal_color
  116.       self.contents.font.size=14   
  117.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  118.    
  119.     #HP 回复率   
  120.     if @item.recover_hp_rate!=0
  121.       x=0
  122.       y+=1      
  123.       text="回复HP:"[email protected]_hp_rate.to_s+"%"
  124.       self.contents.font.color = normal_color
  125.       self.contents.font.size=14   
  126.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)      
  127.     end
  128.     #HP回复量
  129.     if @item.recover_hp!=0
  130.       x=0
  131.       y+=1      
  132.       text="回复HP:"[email protected]_hp.to_s
  133.       self.contents.font.color = normal_color
  134.       self.contents.font.size=14   
  135.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  136.     end
  137.      #SP 回复率
  138.     if @item.recover_sp_rate!=0
  139.       x=0
  140.       y+=1      
  141.       text="回复MP:"[email protected]_sp_rate.to_s+"%"
  142.       self.contents.font.color = normal_color
  143.       self.contents.font.size=14   
  144.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  145.     end
  146.     #SP 回复量
  147.     if @item.recover_sp!=0
  148.       x=0
  149.       y+=1      
  150.       text="回复MP:"[email protected]_sp.to_s
  151.       self.contents.font.color = normal_color
  152.       self.contents.font.size=14   
  153.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  154.     end
  155.     #增加能力值
  156.     if @item.parameter_type!=0
  157.       parameter_type={1=>"MaxHP",2=>"MaxSP",3=>$data_system.words.str,4=>$data_system.words.dex,5=>$data_system.words.agi,6=>$data_system.words.int}
  158.       x=0
  159.       y+=1      
  160.       text="增益:"+parameter_type[@item.parameter_type]+" +"[email protected]_points.to_s
  161.       self.contents.font.color = normal_color
  162.       self.contents.font.size=14   
  163.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  164.     end      
  165.    
  166.     #物品属性   
  167.     if @item.element_set.empty?!=true  #属性。为属性 ID 的数组
  168.       element_set={1=>"火",2=>"冰",3=>"光",4=>"暗"}
  169.       text="属性:"
  170.       for i in [email protected]_set.size
  171.         text+=element_set[@item.element_set[i]]+" "
  172.       end
  173.       x=0
  174.       y+=1
  175.       self.contents.font.color = normal_color
  176.       self.contents.font.size=14
  177.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  178.     end
  179.     #附加状态
  180.     if @item.plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
  181.       text="附加状态:"
  182.       x=0
  183.       y+=1
  184.       self.contents.font.color = normal_color
  185.       self.contents.font.size=14
  186.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  187.       y-=1
  188.       x+=text.size*5      
  189.       for i in [email protected]_state_set.size
  190.         y+=1
  191.         text=$data_states[@item.plus_state_set[i]].name        
  192.         self.contents.font.color = normal_color
  193.         self.contents.font.size=14
  194.         self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)        
  195.       end  
  196.     end
  197.     #解除状态
  198.     if @item.minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
  199.       text="解除状态:"
  200.       x=0
  201.       y+=1
  202.       self.contents.font.color = normal_color
  203.       self.contents.font.size=14
  204.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  205.       y-=1
  206.       x+=text.size*5      
  207.       for i in [email protected]_state_set.size
  208.         y+=1
  209.         text=$data_states[@item.minus_state_set[i]].name        
  210.         self.contents.font.color = normal_color
  211.         self.contents.font.size=14
  212.         self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)        
  213.       end  
  214.     end     
  215.   end
  216.   #--------------------------------------------------------------------------
  217.   # ● 武器帮助窗口
  218.   #--------------------------------------------------------------------------
  219.   
  220.   def set_weapon_text(weapon)
  221.     @weapon=weapon
  222.     [email protected]
  223.     x=0
  224.     y=0
  225.     height=1     #依要显示的内容确定高
  226.     #由描叙确定高
  227.     height+=description.size/3/10
  228.     if description.size%10!=0
  229.       height+=1
  230.     end
  231.     height+=4  #2个空行,攻击,价格
  232.     if @weapon.pdef!=0 #物理防御
  233.       height+=1
  234.     end      
  235.     if @weapon.mdef!=0 #魔法防御
  236.       height+=1
  237.     end
  238.     if @weapon.str_plus!=0 #力量
  239.       height+=1
  240.     end
  241.     if @weapon.dex_plus!=0#体质
  242.       height+=1
  243.     end
  244.     if @weapon.agi_plus!=0#敏捷
  245.       height+=1
  246.     end
  247.     if @weapon.int_plus!=0 #智力
  248.       height+=1
  249.     end      
  250.     if @weapon.element_set.empty?!=true  #属性。为属性 ID 的数组
  251.       height+=1
  252.     end  
  253.     if @weapon.plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
  254.       [email protected]_state_set.size  
  255.     end
  256.     if @weapon.minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
  257.       [email protected]_state_set.size   
  258.     end     
  259.     self.height=height*15+40+15   
  260.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  261.     self.contents.clear
  262.     #描绘名字
  263.     [email protected]
  264.     self.contents.font.color = text_color(weapon.name_color_66RPG)#颜色脚本
  265.     self.contents.font.size=18
  266.     if text!=nil
  267.       self.visible = true
  268.       self.contents.draw_text(0,0, @weapon.name.size*7, 20, text, 0)
  269.     else
  270.       self.visible = false
  271.     end
  272.     x=0
  273.     y+=1
  274.     text=description
  275.     #描绘描叙
  276.     while ((text = description.slice!(/./m)) != nil)
  277.       self.contents.font.color = normal_color
  278.       self.contents.font.size=14
  279.       self.contents.draw_text(x*15, y*15+5, 14, 14, text, 0)
  280.       x+=1
  281.       if x==10#每行10个字
  282.         x=0
  283.         y+=1      
  284.       end
  285.     end
  286.     #由特技属性确定高
  287.     #攻击
  288.       x=0
  289.       y+=2 #空行     
  290.       text="攻击:"[email protected]_s
  291.       self.contents.font.color = text_color(weapon.name_color_66RPG)#颜色脚本
  292.       self.contents.font.size=14   
  293.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)      
  294.     #价格
  295.       x=0
  296.       y+=1      
  297.       text="价格:"[email protected]_s
  298.       self.contents.font.color = normal_color
  299.       self.contents.font.size=14   
  300.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  301.     if @weapon.pdef!=0 #物理防御
  302.       x=0
  303.       y+=1      
  304.       text="物理防御:"[email protected]_s
  305.       self.contents.font.color = text_color(weapon.name_color_66RPG)#颜色脚本
  306.       self.contents.font.size=14   
  307.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  308.     end      
  309.     if @weapon.mdef!=0 #魔法防御
  310.       x=0
  311.       y+=1      
  312.       text="魔法防御:"[email protected]_s
  313.       self.contents.font.color = text_color(weapon.name_color_66RPG)#颜色脚本
  314.       self.contents.font.size=14   
  315.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  316.     end

  317.     #武器属性   
  318.     if @weapon.element_set.empty?!=true  #属性。为属性 ID 的数组
  319.       element_set={1=>"火",2=>"冰",3=>"光",4=>"暗"}
  320.       text="属性:"
  321.       for i in [email protected]_set.size
  322.         text+=element_set[@weapon.element_set[i]]+" "
  323.       end
  324.       x=0
  325.       y+=1
  326.       self.contents.font.color = normal_color
  327.       self.contents.font.size=14
  328.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  329.     end
  330.     #附加状态
  331.     if @weapon.plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
  332.       text="附加状态:"
  333.       x=0
  334.       y+=1
  335.       self.contents.font.color = normal_color
  336.       self.contents.font.size=14
  337.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  338.       y-=1
  339.       x+=text.size*5      
  340.       for i in [email protected]_state_set.size
  341.         y+=1
  342.         text=$data_states[@weapon.plus_state_set[i]].name        
  343.         self.contents.font.color = normal_color
  344.         self.contents.font.size=14
  345.         self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)        
  346.       end  
  347.     end
  348.     #解除状态
  349.     if @weapon.minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
  350.       text="解除状态:"
  351.       x=0
  352.       y+=1
  353.       self.contents.font.color = normal_color
  354.       self.contents.font.size=14
  355.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  356.       y-=1
  357.       x+=text.size*5      
  358.       for i in [email protected]_state_set.size
  359.         y+=1
  360.         text=$data_states[@weapon.minus_state_set[i]].name        
  361.         self.contents.font.color = normal_color
  362.         self.contents.font.size=14
  363.         self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)        
  364.       end  
  365.     end
  366.     y+=1 #空行
  367.     if @weapon.str_plus!=0 #力量
  368.       x=0
  369.       y+=1      
  370.       text=$data_system.words.str+"  + "[email protected]_plus.to_s
  371.       self.contents.font.color = text_color(weapon.name_color_66RPG)#颜色脚本
  372.       self.contents.font.size=14   
  373.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  374.     end
  375.     if @weapon.dex_plus!=0#体质
  376.       x=0
  377.       y+=1      
  378.       text=$data_system.words.dex+"  + "[email protected]_plus.to_s
  379.       self.contents.font.color = text_color(weapon.name_color_66RPG)#颜色脚本
  380.       self.contents.font.size=14   
  381.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  382.     end
  383.     if @weapon.agi_plus!=0#敏捷
  384.       x=0
  385.       y+=1      
  386.       text=$data_system.words.agi+"  + "[email protected]_plus.to_s
  387.       self.contents.font.color = text_color(weapon.name_color_66RPG)#颜色脚本
  388.       self.contents.font.size=14   
  389.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  390.     end
  391.     if @weapon.int_plus!=0 #智力
  392.       x=0
  393.       y+=1      
  394.       text=$data_system.words.int+"  + "[email protected]_plus.to_s
  395.       self.contents.font.color = text_color(weapon.name_color_66RPG)#颜色脚本
  396.       self.contents.font.size=14   
  397.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  398.     end
  399.   end
  400.   #--------------------------------------------------------------------------
  401.   # ● 防具帮助窗口
  402.   #--------------------------------------------------------------------------
  403.   def set_armor_text(armor)
  404.     def set_armor_text(armor)
  405.     @armor=armor
  406.     [email protected]
  407.     x=0
  408.     y=0
  409.     height=1     #依要显示的内容确定高
  410.     #由描叙确定高
  411.     height+=description.size/3/10
  412.     if description.size%10!=0
  413.       height+=1
  414.     end
  415.     height+=2  #2个空行,价格
  416.     if @armor.pdef!=0 #物理防御
  417.       height+=1
  418.     end      
  419.     if @armor.mdef!=0 #魔法防御
  420.       height+=1
  421.     end
  422.     if @armor.str_plus!=0 #力量
  423.       height+=1
  424.     end
  425.     if @armor.dex_plus!=0#体质
  426.       height+=1
  427.     end
  428.     if @armor.agi_plus!=0#敏捷
  429.       height+=1
  430.     end
  431.     if @armor.int_plus!=0 #智力
  432.       height+=1
  433.     end      
  434.     if @armor.guard_element_set.empty?!=true  #属性防御。为属性 ID 的数组
  435.       height+=1
  436.     end  
  437.     if @armor.guard_state_set.empty?!=true  #状态防御。为状态 ID 的数组
  438.       [email protected]_state_set.size  
  439.     end   
  440.     self.height=height*15+40+15   
  441.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  442.     self.contents.clear
  443.     #描绘名字
  444.     [email protected]
  445.     self.contents.font.color = text_color(armor.name_color_66RPG)#颜色脚本
  446.     self.contents.font.size=18
  447.     if text!=nil
  448.       self.visible = true
  449.       self.contents.draw_text(0,0, @armor.name.size*7, 20, text, 0)
  450.     else
  451.       self.visible = false
  452.     end
  453.     x=0
  454.     y+=1
  455.     text=description
  456.     #描绘描叙
  457.     while ((text = description.slice!(/./m)) != nil)
  458.       self.contents.font.color = normal_color
  459.       self.contents.font.size=14
  460.       self.contents.draw_text(x*15, y*15+5, 14, 14, text, 0)
  461.       x+=1
  462.       if x==10#每行10个字
  463.         x=0
  464.         y+=1      
  465.       end
  466.     end
  467.     #由特技属性确定高
  468.      
  469.       
  470.     #价格
  471.       x=0
  472.       y+=2#空行      
  473.       text="价格:"[email protected]_s
  474.       self.contents.font.color = normal_color
  475.       self.contents.font.size=14   
  476.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  477.     if @armor.pdef!=0 #物理防御
  478.       x=0
  479.       y+=1      
  480.       text="物理防御:"[email protected]_s
  481.       self.contents.font.color = text_color(armor.name_color_66RPG)#颜色脚本
  482.       self.contents.font.size=14   
  483.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  484.     end      
  485.     if @armor.mdef!=0 #魔法防御
  486.       x=0
  487.       y+=1      
  488.       text="魔法防御:"[email protected]_s
  489.       self.contents.font.color = text_color(armor.name_color_66RPG)#颜色脚本
  490.       self.contents.font.size=14   
  491.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  492.     end

  493.     #属性防御   
  494.     if @armor.guard_element_set.empty?!=true  #属性。为属性 ID 的数组
  495.       element_set={1=>"火",2=>"冰",3=>"光",4=>"暗"}
  496.       text="属性防御:"
  497.       for i in [email protected]_element_set.size
  498.         text+=element_set[@armor.guard_element_set[i]]+" "
  499.       end
  500.       x=0
  501.       y+=1
  502.       self.contents.font.color = normal_color
  503.       self.contents.font.size=14
  504.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  505.     end
  506.     #状态防御
  507.     if @armor.guard_state_set.empty?!=true  #附加状态。为状态 ID 的数组
  508.       text="状态防御:"
  509.       x=0
  510.       y+=1
  511.       self.contents.font.color = normal_color
  512.       self.contents.font.size=14
  513.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  514.       y-=1
  515.       x+=text.size*5      
  516.       for i in [email protected]_state_set.size
  517.         y+=1
  518.         text=$data_states[@armor.guard_state_set[i]].name        
  519.         self.contents.font.color = normal_color
  520.         self.contents.font.size=14
  521.         self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)        
  522.       end  
  523.     end

  524.     y+=1 #空行
  525.     if @armor.str_plus!=0 #力量
  526.       x=0
  527.       y+=1      
  528.       text=$data_system.words.str+"  + "[email protected]_plus.to_s
  529.       self.contents.font.color = text_color(armor.name_color_66RPG)#颜色脚本
  530.       self.contents.font.size=14   
  531.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  532.     end
  533.     if @armor.dex_plus!=0#体质
  534.       x=0
  535.       y+=1      
  536.       text=$data_system.words.dex+"  + "[email protected]_plus.to_s
  537.       self.contents.font.color = text_color(armor.name_color_66RPG)#颜色脚本
  538.       self.contents.font.size=14   
  539.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  540.     end
  541.     if @armor.agi_plus!=0#敏捷
  542.       x=0
  543.       y+=1      
  544.       text=$data_system.words.agi+"  + "[email protected]_plus.to_s
  545.       self.contents.font.color = text_color(armor.name_color_66RPG)#颜色脚本
  546.       self.contents.font.size=14   
  547.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  548.     end
  549.     if @armor.int_plus!=0 #智力
  550.       x=0
  551.       y+=1      
  552.       text=$data_system.words.int+"  + "[email protected]_plus.to_s
  553.       self.contents.font.color = text_color(armor.name_color_66RPG)#颜色脚本
  554.       self.contents.font.size=14   
  555.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  556.     end
  557.   end
  558.   end

  559.   #--------------------------------------------------------------------------
  560.   # ● 技能帮助窗口
  561.   #--------------------------------------------------------------------------
  562.   def set_skill_text(skill)
  563.     @skill=skill
  564.     [email protected]
  565.     x=0
  566.     y=0
  567.     height=1     #依要显示的内容确定高
  568.     #由描叙确定高
  569.     height+=description.size/3/10
  570.     if description.size%10!=0
  571.       height+=1
  572.     end
  573.     height+=4  #空行,效果范围,消费SP,命中率
  574.     if @skill.power!=0  #威力,威力为0,则可能为状态魔法
  575.       height+=1
  576.     end
  577.     if @skill.element_set.empty?!=true  #属性。为属性 ID 的数组
  578.       height+=1
  579.     end  
  580.     if @skill.plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
  581.       [email protected]_state_set.size  
  582.     end
  583.     if @skill.minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
  584.       [email protected]_state_set.size   
  585.     end     
  586.     self.height=height*15+40+15   
  587.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  588.     self.contents.clear
  589.     #描绘名字
  590.     [email protected]
  591.     self.contents.font.color =text_color(6)
  592.     self.contents.font.size=18
  593.     if text!=nil
  594.       self.visible = true
  595.       self.contents.draw_text(0,0, @skill.name.size*7, 20, text, 0)
  596.     else
  597.       self.visible = false
  598.     end
  599.     x=0
  600.     y+=1
  601.     text=description
  602.     #描绘描叙
  603.     while ((text = description.slice!(/./m)) != nil)
  604.       self.contents.font.color = normal_color
  605.       self.contents.font.size=14
  606.       self.contents.draw_text(x*15, y*15+5, 14, 14, text, 0)
  607.       x+=1
  608.       if x==10#每行10个字
  609.         x=0
  610.         y+=1      
  611.       end
  612.     end
  613.     #由特技属性确定高
  614.     #效果范围
  615.    
  616.     scope = {0=>"特殊技能",1=>"敌单体",2=>"敌全体",3=>"己方单体",4=>"己方全体",5=>"己方昏死单体",6=>"己方昏死全体",7=>"使用者"}#HASH表
  617.     text="范围:"+scope[@skill.scope]
  618.     x=0
  619.     y+=2  #空一行
  620.     self.contents.font.color = normal_color
  621.     self.contents.font.size=14
  622.     self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  623.    
  624.     #威力
  625.     if @skill.power!=0
  626.       x=0
  627.       y+=1
  628.       [email protected] > 0 ? @skill.power : -1* @skill.power
  629.       text="威力:"+c.to_s
  630.       self.contents.font.color = normal_color
  631.       self.contents.font.size=14   
  632.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  633.     end  
  634.     #描绘消费SP
  635.     x=0
  636.     y+=1
  637.     text="消耗SP:"[email protected]_cost.to_s
  638.     self.contents.font.color = normal_color
  639.     self.contents.font.size=14   
  640.     self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  641.     #命中率
  642.     x=0
  643.     y+=1
  644.     text="命中率:"[email protected]_s+"%"
  645.     self.contents.font.color = normal_color
  646.     self.contents.font.size=14
  647.     self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  648.     #攻击属性
  649.    
  650.     if @skill.element_set.empty?!=true  #属性。为属性 ID 的数组
  651.       element_set={1=>"火",2=>"冰",3=>"光",4=>"暗"}
  652.       text="属性:"
  653.       for i in [email protected]_set.size
  654.         text+=element_set[@skill.element_set[i]]+" "
  655.       end
  656.       x=0
  657.       y+=1
  658.       self.contents.font.color = normal_color
  659.       self.contents.font.size=14
  660.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  661.     end
  662.     #附加状态
  663.     if @skill.plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
  664.       text="附加状态:"
  665.       x=0
  666.       y+=1
  667.       self.contents.font.color = normal_color
  668.       self.contents.font.size=14
  669.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  670.       y-=1
  671.       x+=text.size*5      
  672.       for i in [email protected]_state_set.size
  673.         y+=1
  674.         text=$data_states[@skill.plus_state_set[i]].name        
  675.         self.contents.font.color = normal_color
  676.         self.contents.font.size=14
  677.         self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)        
  678.       end  
  679.     end
  680.     #解除状态
  681.     if @skill.minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
  682.       text="解除状态:"
  683.       x=0
  684.       y+=1
  685.       self.contents.font.color = normal_color
  686.       self.contents.font.size=14
  687.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  688.       y-=1
  689.       x+=text.size*5      
  690.       for i in [email protected]_state_set.size
  691.         y+=1
  692.         text=$data_states[@skill.minus_state_set[i]].name        
  693.         self.contents.font.color = normal_color
  694.         self.contents.font.size=14
  695.         self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)        
  696.       end  
  697.     end     
  698.   end
  699.   #--------------------------------------------------------------------------
  700.   # ● 设置角色
  701.   #     actor : 要显示状态的角色
  702.   #--------------------------------------------------------------------------
  703.   def set_actor(actor)
  704.     if actor != @actor
  705.       self.contents.clear
  706.       draw_actor_name(actor, 4, 0)
  707.       draw_actor_state(actor, 140, 0)
  708.       draw_actor_hp(actor, 284, 0)
  709.       draw_actor_sp(actor, 460, 0)
  710.       @actor = actor
  711.       @text = nil
  712.       self.visible = true
  713.     end
  714.   end
  715.   #--------------------------------------------------------------------------
  716.   # ● 设置敌人
  717.   #     enemy : 要显示名字和状态的敌人
  718.   #--------------------------------------------------------------------------
  719.   def set_enemy(enemy)
  720.     text = enemy.name
  721.     state_text = make_battler_state_text(enemy, 112, false)
  722.     if state_text != ""
  723.       text += "  " + state_text
  724.     end
  725.     set_text(text, 1)
  726.   end
  727.   #--------------------------------------------------------------------------
  728.   # ● 校正帮助窗口位置
  729.   #--------------------------------------------------------------------------
  730.   def set_pos(x,y,width,oy,index,column_max)
  731.     #光标坐标
  732.     cursor_width = width / column_max - 32
  733.     xx = index % column_max * (cursor_width + 32)
  734.     yy = index / column_max * 32 - oy
  735.     self.x=xx+x
  736.     self.y=yy+y+30
  737.     if self.x+self.width>320
  738.       self.x=320-self.width
  739.     end
  740.     if self.y+self.height>480
  741.       self.y=480-self.height
  742.     end  
  743.   end
  744. end
复制代码

  1. #==============================================================================
  2. # ■ Window_Item
  3. #------------------------------------------------------------------------------
  4. #  物品画面、战斗画面、显示浏览物品的窗口。
  5. #==============================================================================

  6. class Window_Item < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 64-64, 180, 416+64)#★★★★★★★★★★★★★★★★★★★★
  12.     @column_max = 4
  13.     refresh
  14.     self.index = 0
  15.     # 战斗中的情况下将窗口移至中央并将其半透明化
  16.     self.y = 110
  17.     self.height = 256
  18.     self.back_opacity = 255
  19.     self.z=3000
  20.   end
  21.   #--------------------------------------------------------------------------
  22.   # ● 获取物品
  23.   #--------------------------------------------------------------------------
  24.   def item
  25.     return @data[self.index]
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● 刷新
  29.   #--------------------------------------------------------------------------
  30.   def refresh
  31.     if self.contents != nil
  32.       self.contents.dispose
  33.       self.contents = nil
  34.     end
  35.     @data = []
  36.     # 添加报务
  37.     for i in 1...$data_items.size
  38.       if $game_party.item_number(i) > 0
  39.         @data.push($data_items[i])
  40.       end
  41.     end
  42.     # 在战斗中以外添加武器、防具
  43.     unless $game_temp.in_battle
  44.       for i in 1...$data_weapons.size
  45.         if $game_party.weapon_number(i) > 0
  46.           @data.push($data_weapons[i])
  47.         end
  48.       end
  49.       for i in 1...$data_armors.size
  50.         if $game_party.armor_number(i) > 0
  51.           @data.push($data_armors[i])
  52.         end
  53.       end
  54.     end
  55.     # 如果项目数不是 0 就生成位图、重新描绘全部项目
  56.     @item_max = @data.size
  57.     if @item_max > 0
  58.       self.contents = Bitmap.new(width - 32, row_max * 32)
  59.       for i in 0...@item_max
  60.         draw_item(i)
  61.       end
  62.     end

  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 描绘项目
  66.   #     index : 项目编号
  67.   #--------------------------------------------------------------------------
  68.   def draw_item(index)
  69.     item = @data[index]
  70.     case item
  71.     when RPG::Item
  72.       number = $game_party.item_number(item.id)
  73.     when RPG::Weapon
  74.       number = $game_party.weapon_number(item.id)
  75.     when RPG::Armor
  76.       number = $game_party.armor_number(item.id)
  77.     end
  78.     if item.is_a?(RPG::Item) and
  79.        $game_party.item_can_use?(item.id)
  80.       self.contents.font.color = normal_color
  81.     else
  82.       self.contents.font.color = disabled_color
  83.     end
  84.     x = index % 4 * 35
  85.     y = -2 + index / 4 * 35
  86.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  87.     self.contents.fill_rect(rect, Color.new(-255, -255, -255, 0))
  88.     bitmap = RPG::Cache.icon(item.icon_name)
  89.     opacity = self.contents.font.color == normal_color ? 255 : 128
  90.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  91.     self.contents.draw_text(x + 1, y+5, 24, 32, number.to_s, 2)
  92.     self.contents.draw_text(5, 250, 120, 32, $game_party.gold.to_s, 2)
  93.     end
  94.   #--------------------------------------------------------------------------
  95.   # ● 刷新帮助文本
  96.   #--------------------------------------------------------------------------
  97.   def update_help
  98.     #@help_window.set_text(self.item == nil ? "" : self.item.description)
  99.     #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★   
  100.     @help_window.set_text(item)
  101.     #校正帮助窗口位置
  102.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  103.   end
  104. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
5 小时
注册时间
2008-2-17
帖子
125
5
 楼主| 发表于 2008-11-8 01:27:31 | 只看该作者
  1. #==============================================================================
  2. # ■ Window_Message
  3. #------------------------------------------------------------------------------
  4. #  显示文章的信息窗口。
  5. #==============================================================================

  6. class Window_Message < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化状态
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(80, 304, 480, 160)
  12.     self.contents = Bitmap.new(width - 32, height - 32)
  13.     self.visible = false
  14.     self.z = 9998
  15.     @fade_in = false
  16.     @fade_out = false
  17.     @contents_showing = false
  18.     @cursor_width = 0
  19.     self.active = false
  20.     self.index = -1
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ● 释放
  24.   #--------------------------------------------------------------------------
  25.   def dispose
  26.     terminate_message
  27.     $game_temp.message_window_showing = false
  28.     if @input_number_window != nil
  29.       @input_number_window.dispose
  30.     end
  31.     super
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ● 处理信息结束
  35.   #--------------------------------------------------------------------------
  36.   def terminate_message
  37.     self.active = false
  38.     self.pause = false
  39.     self.index = -1
  40.     self.contents.clear
  41.     # 清除显示中标志
  42.     @contents_showing = false
  43.     # 呼叫信息调用
  44.     if $game_temp.message_proc != nil
  45.       $game_temp.message_proc.call
  46.     end
  47.     # 清除文章、选择项、输入数值的相关变量
  48.     $game_temp.message_text = nil
  49.     $game_temp.message_proc = nil
  50.     $game_temp.choice_start = 99
  51.     $game_temp.choice_max = 0
  52.     $game_temp.choice_cancel_type = 0
  53.     $game_temp.choice_proc = nil
  54.     $game_temp.num_input_start = 99
  55.     $game_temp.num_input_variable_id = 0
  56.     $game_temp.num_input_digits_max = 0
  57.     # 开放金钱窗口
  58.     if @gold_window != nil
  59.       @gold_window.dispose
  60.       @gold_window = nil
  61.     end
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 刷新
  65.   #--------------------------------------------------------------------------
  66.   def refresh
  67.     self.contents.clear
  68.     self.contents.font.color = normal_color
  69.     x = y = 0
  70.     @cursor_width = 0
  71.     # 到选择项的下一行字
  72.     if $game_temp.choice_start == 0
  73.       x = 8
  74.     end
  75.     # 有等待显示的文字的情况下
  76.     if $game_temp.message_text != nil
  77.       text = $game_temp.message_text
  78.       # 限制文字处理
  79.       begin
  80.         last_text = text.clone
  81.         text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  82.       end until text == last_text
  83.       text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  84.         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  85.       end
  86.       # 为了方便、将 "\\\\" 变换为 "\000"
  87.       text.gsub!(/\\\\/) { "\000" }
  88.       # "\\C" 变为 "\001" に、"\\G" 变为 "\002"
  89.       text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  90.       text.gsub!(/\\[Gg]/) { "\002" }
  91.       
  92.       # GIF图片播放
  93.       text.gsub!(/\\[Gg][Ss]\[(.*?)\]/) { "\003[#{$1}]" }
  94.       
  95.       # c 获取 1 个字 (如果不能取得文字就循环)
  96.       while ((c = text.slice!(/./m)) != nil)
  97.         # \\ 的情况下
  98.         if c == "\000"
  99.           # 还原为本来的文字
  100.           c = "\\"
  101.         end
  102.         # \C[n] 的情况下
  103.         if c == "\001"
  104.           # 更改文字色
  105.           text.sub!(/\[([0-9]+)\]/, "")
  106.           color = $1.to_i
  107.           if color >= 0 and color <= 7
  108.             self.contents.font.color = text_color(color)
  109.           end
  110.           # 下面的文字
  111.           next
  112.         end
  113.         # \G 的情况下
  114.         if c == "\002"
  115.           # 生成金钱窗口
  116.           if @gold_window == nil
  117.             @gold_window = Window_Gold.new
  118.             @gold_window.x = 560 - @gold_window.width
  119.             if $game_temp.in_battle
  120.               @gold_window.y = 192
  121.             else
  122.               @gold_window.y = self.y >= 128 ? 32 : 384
  123.             end
  124.             @gold_window.opacity = self.opacity
  125.             @gold_window.back_opacity = self.back_opacity
  126.           end
  127.           # 下面的文字
  128.           next
  129.         end
  130.         # 另起一行文字的情况下
  131.         if c == "\n"
  132.           # 刷新选择项及光标的高
  133.           if y >= $game_temp.choice_start
  134.             @cursor_width = [@cursor_width, x].max
  135.           end
  136.           # y 加 1
  137.           y += 1
  138.           x = 0
  139.           # 移动到选择项的下一行
  140.           if y >= $game_temp.choice_start
  141.             x = 8
  142.           end
  143.           # 下面的文字
  144.           next
  145.         end
  146.         # 描绘文字
  147.         self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
  148.         # x 为要描绘文字的加法运算
  149.         x += self.contents.text_size(c).width
  150.       end
  151.     end
  152.     # 选择项的情况
  153.     if $game_temp.choice_max > 0
  154.       @item_max = $game_temp.choice_max
  155.       self.active = true
  156.       self.index = 0
  157.     end
  158.     # 输入数值的情况
  159.     if $game_temp.num_input_variable_id > 0
  160.       digits_max = $game_temp.num_input_digits_max
  161.       number = $game_variables[$game_temp.num_input_variable_id]
  162.       @input_number_window = Window_InputNumber.new(digits_max)
  163.       @input_number_window.number = number
  164.       @input_number_window.x = self.x + 8
  165.       @input_number_window.y = self.y + $game_temp.num_input_start * 32
  166.     end
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ● 设置窗口位置与不透明度
  170.   #--------------------------------------------------------------------------
  171.   def reset_window
  172.     if $game_temp.in_battle
  173.       self.y = 16
  174.     else
  175.       case $game_system.message_position
  176.       when 0  # 上
  177.         self.y = 16
  178.       when 1  # 中
  179.         self.y = 160
  180.       when 2  # 下
  181.         self.y = 304
  182.       end
  183.     end
  184.     if $game_system.message_frame == 0
  185.       self.opacity = 255
  186.     else
  187.       self.opacity = 0
  188.     end
  189.     self.back_opacity = 160
  190.   end
  191.   #--------------------------------------------------------------------------
  192.   # ● 刷新画面
  193.   #--------------------------------------------------------------------------
  194.   def update
  195.     super
  196.     # 渐变的情况下
  197.     if @fade_in
  198.       self.contents_opacity += 24
  199.       if @input_number_window != nil
  200.         @input_number_window.contents_opacity += 24
  201.       end
  202.       if self.contents_opacity == 255
  203.         @fade_in = false
  204.       end
  205.       return
  206.     end
  207.     # 输入数值的情况下
  208.     if @input_number_window != nil
  209.       @input_number_window.update
  210.       # 确定
  211.       if Input.trigger?(Input::C)
  212.         $game_system.se_play($data_system.decision_se)
  213.         $game_variables[$game_temp.num_input_variable_id] =
  214.           @input_number_window.number
  215.         $game_map.need_refresh = true
  216.         # 释放输入数值窗口
  217.         @input_number_window.dispose
  218.         @input_number_window = nil
  219.         terminate_message
  220.       end
  221.       return
  222.     end
  223.     # 显示信息中的情况下
  224.     if @contents_showing
  225.       # 如果不是在显示选择项中就显示暂停标志
  226.       if $game_temp.choice_max == 0
  227.         self.pause = true
  228.       end
  229.       # 取消
  230.       if Input.trigger?(Input::B)
  231.         if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
  232.           $game_system.se_play($data_system.cancel_se)
  233.           $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
  234.           terminate_message
  235.         end
  236.       end
  237.       # 确定
  238.       if Input.trigger?(Input::C)
  239.         if $game_temp.choice_max > 0
  240.           $game_system.se_play($data_system.decision_se)
  241.           $game_temp.choice_proc.call(self.index)
  242.         end
  243.         terminate_message
  244.       end
  245.       return
  246.     end
  247.     # 在渐变以外的状态下有等待显示的信息与选择项的场合
  248.     if @fade_out == false and $game_temp.message_text != nil
  249.       @contents_showing = true
  250.       $game_temp.message_window_showing = true
  251.       reset_window
  252.       refresh
  253.       Graphics.frame_reset
  254.       self.visible = true
  255.       self.contents_opacity = 0
  256.       if @input_number_window != nil
  257.         @input_number_window.contents_opacity = 0
  258.       end
  259.       @fade_in = true
  260.       return
  261.     end
  262.     # 没有可以显示的信息、但是窗口为可见的情况下
  263.     if self.visible
  264.       @fade_out = true
  265.       self.opacity -= 48
  266.       if self.opacity == 0
  267.         self.visible = false
  268.         @fade_out = false
  269.         $game_temp.message_window_showing = false
  270.       end
  271.       return
  272.     end
  273.   end
  274.   #--------------------------------------------------------------------------
  275.   # ● 刷新光标矩形
  276.   #--------------------------------------------------------------------------
  277.   def update_cursor_rect
  278.     if @index >= 0
  279.       n = $game_temp.choice_start + @index
  280.       self.cursor_rect.set(8, n * 32, @cursor_width, 32)
  281.     else
  282.       self.cursor_rect.empty
  283.     end
  284.   end
  285. end
复制代码
  1. #==============================================================================
  2. # ■ Scene_Item
  3. #------------------------------------------------------------------------------
  4. #  处理物品画面的类。
  5. #==============================================================================

  6. class Scene_Item  
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     make_sprite
  12.     # 生成帮助窗口、物品窗口
  13.     #@help_window = Window_Help.new
  14.     @help_window = Window_Help_Self.new#★★★★★★★★★★★★★★★★
  15.     @item_window = Window_Item.new
  16.     # 关联帮助窗口
  17.     @item_window.help_window = @help_window
  18.     # 生成目标窗口 (设置为不可见・不活动)
  19.     @target_window = Window_Target.new
  20.     @target_window.visible = false
  21.     @target_window.active = false
  22.     # 执行过度
  23.     Graphics.transition
  24.     # 主循环
  25.     loop do
  26.       # 刷新游戏画面
  27.       Graphics.update
  28.       # 刷新输入信息
  29.       Input.update
  30.       # 刷新画面
  31.       update
  32.       # 如果画面切换就中断循环
  33.       if $scene != self
  34.         break
  35.       end
  36.     end
  37.     # 装备过渡
  38.     Graphics.freeze
  39.     # 释放窗口
  40.     @help_window.dispose
  41.     @item_window.dispose
  42.     @target_window.dispose
  43.   end
  44.   def make_sprite
  45.     @spriteset = Spriteset_Map.new
  46.   end
  47.   def dispose_sprite
  48.     @spriteset.dispose
  49.   end
  50.   #--------------------------------------------------------------------------
  51.   # ● 刷新画面
  52.   #--------------------------------------------------------------------------
  53.   def update
  54.     # 刷新窗口
  55.     @help_window.update
  56.     @item_window.update
  57.     @target_window.update
  58.     # 物品窗口被激活的情况下: 调用 update_item
  59.     if @item_window.active
  60.       update_item
  61.       return
  62.     end
  63.     # 目标窗口被激活的情况下: 调用 update_target
  64.     if @target_window.active
  65.       update_target
  66.       return
  67.     end
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● 刷新画面 (物品窗口被激活的情况下)
  71.   #--------------------------------------------------------------------------
  72.   def update_item
  73.     # 按下 B 键的情况下
  74.     if Input.trigger?(Input::B)
  75.       # 演奏取消 SE
  76.       $game_system.se_play($data_system.cancel_se)
  77.       # 切换到菜单画面
  78.       $scene = Scene_Map.new
  79.       return
  80.     end
  81.     # 按下 C 键的情况下
  82.     if Input.trigger?(Input::C)
  83.       # 获取物品窗口当前选中的物品数据
  84.       @item = @item_window.item
  85.       # 不使用物品的情况下
  86.       unless @item.is_a?(RPG::Item)
  87.         # 演奏冻结 SE
  88.         $game_system.se_play($data_system.buzzer_se)
  89.         return
  90.       end
  91.       # 不能使用的情况下
  92.       unless $game_party.item_can_use?(@item.id)
  93.         # 演奏冻结 SE
  94.         $game_system.se_play($data_system.buzzer_se)
  95.         return
  96.       end
  97.       # 演奏确定 SE
  98.       $game_system.se_play($data_system.decision_se)
  99.       # 效果范围是我方的情况下
  100.       if @item.scope >= 3
  101.         # 激活目标窗口
  102.         @item_window.active = false
  103.         @target_window.x = (@item_window.index + 1) % 2 * 304
  104.         @target_window.visible = true
  105.         @target_window.active = true
  106.         # 设置效果范围 (单体/全体) 的对应光标位置
  107.         if @item.scope == 4 || @item.scope == 6
  108.           @target_window.index = -1
  109.         else
  110.           @target_window.index = 0
  111.         end
  112.       # 效果在我方以外的情况下
  113.       else
  114.         # 公共事件 ID 有效的情况下
  115.         if @item.common_event_id > 0
  116.           # 预约调用公共事件
  117.           $game_temp.common_event_id = @item.common_event_id
  118.           # 演奏物品使用时的 SE
  119.           $game_system.se_play(@item.menu_se)
  120.           # 消耗品的情况下
  121.           if @item.consumable
  122.             # 使用的物品数减 1
  123.             $game_party.lose_item(@item.id, 1)
  124.             # 再描绘物品窗口的项目
  125.             @item_window.draw_item(@item_window.index)
  126.           end
  127.           # 切换到地图画面
  128.           $scene = Scene_Map.new
  129.           return
  130.         end
  131.       end
  132.       return
  133.     end
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ● 刷新画面 (目标窗口被激活的情况下)
  137.   #--------------------------------------------------------------------------
  138.   def update_target
  139.     # 按下 B 键的情况下
  140.     if Input.trigger?(Input::B)
  141.       # 演奏取消 SE
  142.       $game_system.se_play($data_system.cancel_se)
  143.       # 由于物品用完而不能使用的场合
  144.       unless $game_party.item_can_use?(@item.id)
  145.         # 再次生成物品窗口的内容
  146.         @item_window.refresh
  147.       end
  148.       # 删除目标窗口
  149.       @item_window.active = true
  150.       @target_window.visible = false
  151.       @target_window.active = false
  152.       return
  153.     end
  154.     # 按下 C 键的情况下
  155.     if Input.trigger?(Input::C)
  156.       # 如果物品用完的情况下
  157.       if $game_party.item_number(@item.id) == 0
  158.         # 演奏冻结 SE
  159.         $game_system.se_play($data_system.buzzer_se)
  160.         return
  161.       end
  162.       # 目标是全体的情况下
  163.       if @target_window.index == -1
  164.         # 对同伴全体应用物品使用效果
  165.         used = false
  166.         for i in $game_party.actors
  167.           used |= i.item_effect(@item)
  168.         end
  169.       end
  170.       # 目标是单体的情况下
  171.       if @target_window.index >= 0
  172.         # 对目标角色应用物品的使用效果
  173.         target = $game_party.actors[@target_window.index]
  174.         used = target.item_effect(@item)
  175.       end
  176.       # 使用物品的情况下
  177.       if used
  178.         # 演奏物品使用时的 SE
  179.         $game_system.se_play(@item.menu_se)
  180.         # 消耗品的情况下
  181.         if @item.consumable
  182.           # 使用的物品数减 1
  183.           $game_party.lose_item(@item.id, 1)
  184.           # 再描绘物品窗口的项目
  185.           @item_window.draw_item(@item_window.index)
  186.         end
  187.         # 再生成目标窗口的内容
  188.         @target_window.refresh
  189.         # 全灭的情况下
  190.         if $game_party.all_dead?
  191.           # 切换到游戏结束画面
  192.           $scene = Scene_Gameover.new
  193.           return
  194.         end
  195.         # 公共事件 ID 有效的情况下
  196.         if @item.common_event_id > 0
  197.           # 预约调用公共事件
  198.           $game_temp.common_event_id = @item.common_event_id
  199.           # 切换到地图画面
  200.           $scene = Scene_Map.new
  201.           return
  202.         end
  203.       end
  204.       # 无法使用物品的情况下
  205.       unless used
  206.         # 演奏冻结 SE
  207.         $game_system.se_play($data_system.buzzer_se)
  208.       end
  209.       return
  210.     end
  211.   end
  212. end[code]
  213. #==============================================================================
  214. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  215. #==============================================================================

  216. #==============================================================================
  217. # ■ 图片标题菜单1.0
  218. # Scene_Title
  219. #------------------------------------------------------------------------------
  220. # 作者:chaochao
  221. # http://zhuchao.go1.icpcn.com
  222. #==============================================================================
  223. class Scene_Title
  224.   def main
  225.     if $BTEST
  226.       battle_test
  227.       return
  228.     end
  229.     $data_actors = load_data("Data/Actors.rxdata")
  230.     $data_classes = load_data("Data/Classes.rxdata")
  231.     $data_skills = load_data("Data/Skills.rxdata")
  232.     $data_items = load_data("Data/Items.rxdata")
  233.     $data_weapons = load_data("Data/Weapons.rxdata")
  234.     $data_armors = load_data("Data/Armors.rxdata")
  235.     $data_enemies = load_data("Data/Enemies.rxdata")
  236.     $data_troops = load_data("Data/Troops.rxdata")
  237.     $data_states = load_data("Data/States.rxdata")
  238.     $data_animations = load_data("Data/Animations.rxdata")
  239.     $data_tilesets = load_data("Data/Tilesets.rxdata")
  240.     $data_common_events = load_data("Data/CommonEvents.rxdata")
  241.     $data_system = load_data("Data/System.rxdata")
  242.     $game_system = Game_System.new
  243.     # 生成标题图形
  244.     @sprite = [Sprite.new]
  245.     for i in 0..6
  246.       @sprite[i] = Sprite.new
  247.       @sprite[i].opacity = 0
  248.     end
  249.     @sprite[0].bitmap = RPG::Cache.title($data_system.title_name)
  250.     @sprite[0].opacity = 0
  251.     #开始游戏的图片
  252.     @sprite[1].bitmap = Bitmap.new("Graphics/Pictures/start-1.png")
  253.     @sprite[2].bitmap = Bitmap.new("Graphics/Pictures/start-2.png")
  254.     #继续游戏的图片
  255.     @sprite[3].bitmap = Bitmap.new("Graphics/Pictures/continue-1.png")
  256.     @sprite[4].bitmap = Bitmap.new("Graphics/Pictures/continue-2.png")
  257.     #结束游戏的图片
  258.     @sprite[5].bitmap = Bitmap.new("Graphics/Pictures/exit-1.png")
  259.     @sprite[6].bitmap = Bitmap.new("Graphics/Pictures/exit-2.png")
  260.     #图片位置
  261.     for i in 1..6
  262.       x=170
  263.       y=(i+1)/2*35+240
  264.       @sprite[i].x =x
  265.       @sprite[i].y =y
  266.     end
  267.     @continue_enabled = false
  268.     for i in 0..3
  269.       if FileTest.exist?("Save#{i+1}.rxdata")
  270.         @continue_enabled = true
  271.       end
  272.     end
  273.     if @continue_enabled
  274.       @command_index = 1
  275.     else
  276.       @command_index = 0
  277.       @sprite[3].tone = Tone.new(0, 0, 0, 255)
  278.       @sprite[4].tone = Tone.new(0, 0, 0, 255)
  279.     end
  280.     $game_system.bgm_play($data_system.title_bgm)
  281.     Audio.me_stop
  282.     Audio.bgs_stop
  283.     Graphics.transition
  284.     loop do
  285.       Graphics.update
  286.       #淡出背景圖形
  287.       if @sprite[0].opacity <= 255
  288.         @sprite[0].opacity += 15
  289.       end
  290.       Input.update
  291.       update
  292.       if $scene != self
  293.         break
  294.       end
  295.     end
  296.     Graphics.freeze
  297.     # 釋放圖形
  298.     for i in 0..6
  299.       @sprite[i].bitmap.dispose
  300.       @sprite[i].dispose
  301.     end
  302.   end
  303.   def update
  304.   chaochaocommandchaochao
  305.   if Input.trigger?(Input::C)
  306.     case @command_index
  307.       when 0
  308.         command_new_game
  309.       when 1
  310.         command_continue
  311.       when 2
  312.         command_shutdown
  313.       end
  314.     end
  315.   end
  316.   def chaochaocommandchaochao
  317.     if Input.trigger?(Input::UP)
  318.       @command_index -= 1
  319.       if @command_index < 0
  320.         @command_index = 2
  321.       end
  322.       $game_system.se_play($data_system.cursor_se)
  323.     end
  324.     if Input.trigger?(Input::DOWN)
  325.       @command_index += 1
  326.       if @command_index > 2
  327.         @command_index = 0
  328.       end
  329.       $game_system.se_play($data_system.cursor_se)
  330.     end
  331.     case @command_index
  332.     when 0
  333.       if @sprite[1].opacity >= 0
  334.         @sprite[1].opacity -= 30
  335.       end
  336.       if @sprite[2].opacity <= 240
  337.         @sprite[2].opacity += 30
  338.       end
  339.       if @sprite[3].opacity <= 210
  340.         @sprite[3].opacity += 30
  341.       end
  342.       if @sprite[4].opacity >= 0
  343.         @sprite[4].opacity -= 30
  344.       end
  345.       if @sprite[5].opacity <= 210
  346.         @sprite[5].opacity += 30
  347.       end
  348.       if @sprite[6].opacity >= 0
  349.         @sprite[6].opacity -= 30
  350.       end
  351.     when 1
  352.       if @sprite[1].opacity <= 210
  353.         @sprite[1].opacity += 30
  354.       end
  355.       if @sprite[2].opacity >= 0
  356.         @sprite[2].opacity -= 30
  357.       end
  358.       if @sprite[3].opacity >= 0
  359.         @sprite[3].opacity -= 30
  360.       end
  361.       if @sprite[4].opacity <= 240
  362.         @sprite[4].opacity += 30
  363.       end
  364.       if @sprite[5].opacity <= 210
  365.         @sprite[5].opacity += 30
  366.       end
  367.       if @sprite[6].opacity >= 0
  368.         @sprite[6].opacity -= 30
  369.       end
  370.     when 2
  371.       if @sprite[1].opacity <= 210
  372.         @sprite[1].opacity += 30
  373.       end
  374.       if @sprite[2].opacity >= 0
  375.         @sprite[2].opacity -= 30
  376.       end
  377.       if @sprite[3].opacity <= 210
  378.         @sprite[3].opacity += 30
  379.       end
  380.       if @sprite[4].opacity >= 0
  381.         @sprite[4].opacity -= 30
  382.       end
  383.       if @sprite[5].opacity >= 0
  384.         @sprite[5].opacity -= 30
  385.       end
  386.       if @sprite[6].opacity <= 240
  387.         @sprite[6].opacity += 30
  388.       end
  389.     end
  390.   end
  391. end
复制代码
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================
  4. #
  5. # 使用方法:
  6. #
  7. # ★、对角色显示伤害,如下3步:
  8. #
  9. # 1、设置伤害内容:$game_player.damage = 数值
  10. #    注意:如果数值是负数,就变成补血的颜色了。
  11. #
  12. # 2、设置是否会心一击:$game_player.critical = true/false
  13. #    如果不是会心一击,就不用这一步了
  14. #
  15. # 3、释放伤害:$game_player.damage_pop = true
  16. #
  17. #
  18. # ★、对普通NPC和事件进行伤害,类似的3步:
  19. #
  20. # 1、设置伤害内容:$game_map.events[事件编号].damage = 数值
  21. #
  22. # 2、设置是否会心一击:$game_map.events[事件编号].critical = true/false
  23. #
  24. # 3、释放伤害:$game_map.events[事件编号].damage_pop = true
  25. #
  26. # 注意,事件编号是事件的ID号,如果目标是“本事件”,那么在事件编号输入@event_id
  27. #
  28. #------------------------------------------------------------------------------
  29. # 预祝有人能早日做出华丽的ARPG来,别忘了到网站发布哦~
  30. #------------------------------------------------------------------------------
  31. class Sprite_Character < RPG::Sprite
  32.   alias carol3_66RPG_damage_pop_update update
  33.   def update
  34.     carol3_66RPG_damage_pop_update
  35.     if @character.damage_pop
  36.       damage(@character.damage, @character.critical)
  37.       @character.damage = nil
  38.       @character.critical = false
  39.       @character.damage_pop = false
  40.     end
  41.     #------------------------------
  42.     # 动画 ID 与当前的情况有差异的情况下
  43.     if @character.damage == nil and
  44.        @character.state_animation_id != @state_animation_id
  45.       @state_animation_id = @character.state_animation_id
  46.       loop_animation($data_animations[@state_animation_id])
  47.     end
  48.    
  49.     #collapse
  50.     # 明灭
  51.     if @character.blink
  52.       blink_on
  53.     else
  54.       blink_off
  55.     end
  56.     # 白色闪烁
  57.     if @character.white_flash
  58.       whiten
  59.       @character.white_flash = false
  60.     end
  61.     # 死亡
  62.     if @character.dead
  63.       collapse
  64.       @character.dead = false
  65.     end
  66.     #------------------------------
  67.   end  
  68. end
  69. class Game_Character
  70.   attr_accessor :damage_pop
  71.   attr_accessor :damage
  72.   attr_accessor :critical
  73.   attr_accessor :white_flash              # 白色屏幕闪烁标志
  74.   attr_accessor :blink                    # 闪烁标志
  75.   attr_accessor :dead                     # 死亡消失标志
  76.   attr_accessor :state_animation_id       # 状态动画ID
  77.   alias carol3_66RPG_damage_pop_initialize initialize
  78.   def initialize
  79.     @damage_pop = false
  80.     @damage = nil
  81.     @critical = false
  82.     carol3_66RPG_damage_pop_initialize
  83.     @white_flash = false
  84.     @blink = false
  85.     @dead = false
  86.   end
  87. end

  88. #==============================================================================
  89. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  90. #==============================================================================
  91. [code]
  92. [code]Graphics.frame_rate = 40
复制代码
  1. #==============================================================================
  2. # ◎ Window_MapVar
  3. #------------------------------------------------------------------------------
  4. # ◎ 地图右下显示变量窗口
  5. #------------------------------------------------------------------------------
  6. # 制作者:绿梨子红苹果
  7. # 个人主页:vbgm.9126.com
  8. # E-Mail:[email protected]
  9. # QQ:42378361
  10. #==============================================================================

  11. class Window_MapVar < Window_Base
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化窗口
  14.   #--------------------------------------------------------------------------
  15.   def initialize
  16.     super(116,410,640,100)   
  17.     self.opacity=0
  18.     self.contents_opacity=255
  19.     self.z = 9000
  20.     self.contents = Bitmap.new(width, height)
  21.     @var_value_old = -1
  22.     @var_icon = Bitmap.new("Graphics/Icons/#{$data_weapons[$game_actors[1].weapon_id].icon_name}")
  23.     refresh
  24.   end
  25.   #--------------------------------------------------------------------------
  26.   # ● 刷新
  27.   #--------------------------------------------------------------------------
  28.   def refresh
  29.     # 在这里加上判断语句,就可以完成变量值改变才刷新的效果,节约资源
  30.     if @var_value_old==$game_party.gold then
  31.       return
  32.     end
  33.     # 先清空内容啦
  34.     self.contents.clear
  35.     # 设定字色为白色。生成RGB颜色参数(红,绿,蓝),这个不用我来说吧...
  36.     self.contents.font.color = Color.new(255,255,255)
  37.     # 绘制金钱数字。记住要用“.to_s”将数字转换为字符!
  38.     # 注:这里24是留着画24*24图标的,104表示所有字符总宽
  39.     self.contents.font.size = 15
  40.     if $game_actors[1].sp >= 10
  41.     self.contents.draw_text(0, 0, 30, 30, $game_actors[1].sp.to_s, 2)
  42.   else
  43.     self.contents.draw_text(-4, 0, 30, 30, $game_actors[1].sp.to_s, 2)
  44.   end
  45.   self.contents.draw_text(0, 10, 375, 40,$game_party.item_number(1).to_s, 2)
  46.   self.contents.draw_text(0, 10, 407, 40,$game_party.item_number(2).to_s, 2)
  47.   self.contents.draw_text(0, 10, 439, 40,$game_party.item_number(3).to_s, 2)
  48.   self.contents.draw_text(0, 10, 471, 40,$game_party.item_number(4).to_s, 2)
  49.   self.contents.blt(476, 25, @var_icon, Rect.new(0, 0, 24, 24))
  50. # 设定字色为金色
  51.     self.contents.font.color = Color.new(255,255,0)
  52.   end
  53. end
复制代码
  1. #==========================================================================
  2. # ■ Window_ARPGStatus
  3. #--------------------------------------------------------------------------
  4. #  顯示腳色基本狀態畫面與及時變化的狀態窗口。
  5. #==========================================================================

  6. class Window_ARPGStatus < Window_Base
  7. #------------------------------------------------------------------------
  8. # ● 初始化對像
  9. # actor : 角色
  10. #------------------------------------------------------------------------
  11. def initialize(actor)
  12. super(70, 20, 105, 130)
  13. self.contents = Bitmap.new(width - 32, height - 32)
  14. refresh
  15. end
  16. #------------------------------------------------------------------------
  17. # ● 刷新
  18. #------------------------------------------------------------------------
  19. def refresh
  20. self.contents.clear
  21. self.back_opacity = 0 #背景透明
  22. self.opacity = 0 #外框透明
  23. draw_arpg_hp_bar(1,0,$t1, width = 72)
  24. draw_arpg_mp_bar(1,0,$t2, width = 72)
  25. draw_arpg_exp_bar(1,0,$t3, width = 72)
  26. end
  27. #------------------------------------------------------------------------
  28. # ● 更新資料
  29. #------------------------------------------------------------------------
  30. def update
  31. super
  32. refresh
  33. end
  34. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
5 小时
注册时间
2008-2-17
帖子
125
6
 楼主| 发表于 2008-11-8 01:29:34 | 只看该作者
  1. #--------------------------------------------------------------------------
  2. # ● 定义ARPG
  3. #--------------------------------------------------------------------------
  4. class ARPG_zhadan
  5. #--------------------------------------------------------------------------
  6. # ● 初始化对象
  7. #--------------------------------------------------------------------------
  8.   def initialize
  9.     @zhadan_ID = $game_variables[152]
  10.     @zhadan_x = $game_map.events[$game_variables[152]].x
  11.     @zhadan_y = $game_map.events[$game_variables[152]].y
  12.     update
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 更新数值变化
  16.   #--------------------------------------------------------------------------
  17.   def refresh(type)
  18.     case type
  19.     when 0
  20.        if $game_switches[21] == true
  21.         if (@zhadan_x - $game_player.x).abs <=10
  22.         if (@zhadan_y - $game_player.y).abs <=10
  23.     if Input.trigger?(Input::UP)
  24.     $game_map.events[$game_variables[152]].move_up
  25. end
  26.     if Input.trigger?(Input::DOWN)
  27.       $game_map.events[$game_variables[152]].move_down
  28.     end
  29.     if Input.trigger?(Input::RIGHT)
  30.     $game_map.events[$game_variables[152]].move_right
  31.     end
  32.     if Input.trigger?(Input::LEFT)
  33.     $game_map.events[$game_variables[152]].move_left
  34.     end
  35.     if Input.trigger?(Input::C)
  36.           x = $game_map.events[$game_variables[152]].x - $game_map.events[$game_variables[151]].x
  37.           y = $game_map.events[$game_variables[152]].y - $game_map.events[$game_variables[151]].y
  38.           $game_map.events[$game_variables[151]].jump(x,y)
  39.           $game_switches[22] = true      
  40.     end
  41.     return
  42.   else
  43.     $game_map.events[$game_variables[152]].move_backward
  44.     end
  45.   else
  46.     $game_map.events[$game_variables[152]].move_backward
  47.   end
  48.   end
  49. end
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # ● 刷新
  53.   #--------------------------------------------------------------------------
  54.   def update
  55.         @zhadan_x = $game_map.events[$game_variables[152]].x
  56.     @zhadan_y = $game_map.events[$game_variables[152]].y
  57.       refresh(0)
  58.   end
  59. end
  60. #--------------------------------------------------------------------------
  61. # ● 定义ARPG
  62. #--------------------------------------------------------------------------
  63. class ARPG_zhadan2
  64. #--------------------------------------------------------------------------
  65. # ● 初始化对象
  66. #--------------------------------------------------------------------------
  67.   def initialize
  68.     @zhadan2_ID = $game_variables[151]
  69.     @zhadan2_x = $game_map.events[$game_variables[151]].x
  70.     @zhadan2_y = $game_map.events[$game_variables[151]].y
  71.     update
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 更新数值变化
  75.   #--------------------------------------------------------------------------
  76.   def refresh(type)
  77.     case type
  78.     when 0
  79. $n2 = 0
  80. $game_map.events[$game_variables[151]].animation_id =7
  81. while $n2 <= $game_variables[123]
  82. $n2 += 1
  83. if $game_variables[200+$n2] >= 0
  84. if ($game_map.events[$n2].x - @zhadan2_x).abs <= 3
  85. if ($game_map.events[$n2].y - @zhadan2_y).abs <= 3
  86. $攻击1=$game_actors[1].str * 4
  87. $攻击1 /= 2
  88. $攻击3 = $攻击1
  89. $攻击3 +=$game_actors[1].atk
  90. $攻击3 -= rand(10)
  91. $攻击3 += rand(10)
  92. $game_map.events[$n2].damage=$攻击3
  93. $game_map.events[$n2].damage_pop = true
  94. $game_variables[200+$n2] -= $攻击3
  95. Audio.se_play("Audio/SE/052-Cannon01",90,100)
  96. end
  97. end
  98. end
  99. end
  100. if ($game_player.x - @zhadan2_x).abs <= 3
  101. if ($game_player.y - @zhadan2_y).abs <= 3
  102. $攻击1=$game_actors[1].str * 4
  103. $攻击1 /= 2
  104. $攻击3 = $攻击1
  105. $攻击3 +=$game_actors[1].atk
  106. $攻击3 -= rand(10)
  107. $攻击3 += rand(10)
  108. $game_player.damage= $攻击3
  109. $game_player.damage_pop = true
  110. $game_actors[1].hp -= $攻击3
  111. Audio.se_play("Audio/SE/052-Cannon01",90,100)
  112. $game_switches[24] = true
  113. end
  114. end

  115.       
  116. end
  117. end
  118.   #--------------------------------------------------------------------------
  119.   # ● 刷新
  120.   #--------------------------------------------------------------------------
  121.   def update
  122.     @zhadan2_x = $game_map.events[$game_variables[151]].x
  123.     @zhadan2_y = $game_map.events[$game_variables[151]].y
  124.       refresh(0)
  125.   end
  126. end
复制代码
  1. #--------------------------------------------------------------------------
  2. # ● 定义ARPG怪物
  3. #--------------------------------------------------------------------------
  4. class ARPG_gw
  5. #--------------------------------------------------------------------------
  6. # ● 初始化对象
  7. #--------------------------------------------------------------------------
  8.   def initialize
  9.     update
  10.   end
  11. #--------------------------------------------------------------------------
  12. # ● 更新数值变化
  13. #--------------------------------------------------------------------------
  14.   def refresh(type)
  15.     case type
  16.     when 0
  17. if $n3 >= $game_variables[123]
  18.         $n3 = 0
  19. else
  20. $n3 +=1
  21. if $game_variables[200+$n3] >= 0

  22. if $game_map.events[$n3].y == $game_player.y
  23. if ($game_map.events[$n3].x - $game_player.x).abs <= 5
  24. xianggongji = rand (100)
  25. xianggongji - 20
  26. if xianggongji >= 20
  27.   if $game_switches[47] == false
  28.   $game_map.events[$game_variables[139]].moveto($game_map.events[$n3].x,$game_map.events[$n3].y)
  29.   $game_variables[141] = $game_map.events[$n3].direction
  30.   $game_switches[47] = true
  31. end
  32.   if $game_switches[48] == false
  33.   $game_map.events[$game_variables[140]].moveto($game_map.events[$n3].x,$game_map.events[$n3].y)
  34.   $game_variables[142] = $game_map.events[$n3].direction
  35. $game_switches[48] = true
  36. end
  37. $time2 +=1
  38. if $time2 >= 2
  39.   $game_switches[47] = false
  40.   $game_switches[48] = false
  41.   $time2 =0
  42. end
  43. end
  44. end
  45. end
  46. if $game_map.events[$n3].x == $game_player.x
  47. if ($game_map.events[$n3].y - $game_player.y).abs <= 5
  48. xianggongji = rand (100)
  49. xianggongji - 20
  50. if xianggongji >= 30
  51.   if $game_switches[47] == false
  52.   $game_map.events[$game_variables[139]].moveto($game_map.events[$n3].x,$game_map.events[$n3].y)
  53.   $game_variables[141] = $game_map.events[$n3].direction
  54.   $game_switches[47] = true
  55. end
  56.   if $game_switches[48] == false
  57.   $game_map.events[$game_variables[140]].moveto($game_map.events[$n3].x,$game_map.events[$n3].y)
  58.   $game_variables[142] = $game_map.events[$n3].direction
  59. $game_switches[48] = true
  60. end
  61. $time2 +=1
  62. if $time2 >= 5
  63.   $game_switches[47] = false
  64.   $game_switches[48] = false
  65.   $time2 =0
  66. end
  67. end
  68. end
  69. end
  70. end
  71. end
  72. return
  73. end
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● 刷新
  77.   #--------------------------------------------------------------------------
  78.   def update
  79.     refresh(0)
  80. end
  81. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
5 小时
注册时间
2008-2-17
帖子
125
7
 楼主| 发表于 2008-11-8 01:30:11 | 只看该作者
  1. ==============================================================================

  2. 彩虹神剑(伤害分段显示)显示总伤害版 v1.0d

  3. ==============================================================================

  4. 彩虹神剑 -柳柳

  5. 6-20-2006 v1.0 -叶子
  6. 在彩虹神剑的基础上增加了显示总伤害的功能,而且总伤害的数字是弹出伤害时逐渐增加的

  7. v1.0a -叶子
  8. 修正了显示伤害和实际伤害有差别的问题
  9. 修正了miss的情况下显示miss混乱的问题
  10. 修正了对己方技能重复显示伤害的问题
  11. 未修正播放目标动画第一帧时目标有时无端跳动的BUG

  12. v1.0b -叶子
  13. 修改了总伤害数字的位置和z坐标
  14. 未修正播放目标动画第一帧时目标有时无端跳动的BUG

  15. v1.0c -柳柳
  16. ? ? ?

  17. v1.0d -柳柳
  18. 1.0d最终解决了那个闪光问题,还有最末帧伤害多次的算法

  19. 7-24-2006 v1.0e -叶子
  20. 修正全屏幕闪烁弹出伤害错误的问题
  21. 修正连续伤害不会弹出伤害的问题
  22. 仍然未修正播放目标动画第一帧时目标有时无端跳动的BUG

  23. 我鼓起很大勇气才敢动偶像们的脚本的,不知道会不会出问题啊......  -cftx
  24. 修正了总伤害显示
  25. 增加了伤害美化和HIT数显示
  26. 修正了两次音效

  27. ==============================================================================
  28. =end
  29. # 核心的说明:
  30. # damage_pop 不再附带damage()的功能,这个放到animation里面去了

  31. module RPG
  32. #--------------------------------------------------------------------------
  33. # ● 常量设定
  34. #--------------------------------------------------------------------------
  35. # 是否显示总伤害
  36. SHOW_TOTAL_DAMAGE = true
  37. # 角色受攻击时是否跳一下
  38. BATTLER_JUMP = false
  39. # 连续伤害的动画ID
  40. SLIP_DAMAGE_ANIMATION_ID = 10

  41. class Sprite < ::Sprite
  42.    #==========================================
  43.    # 修改说明:
  44.    # @flash_shake用来制作挨打时候跳跃
  45.    # @_damage    用来记录每次打击之后弹出数字
  46.    # @_total_damage 记录总伤害
  47.    # @_total_damage_duration 总伤害持续帧
  48.    #==========================================
  49.    #alias 66RPG_rainbow_initialize : initialize
  50.    
  51.    def initialize(viewport = nil)
  52.      #66RPG_rainbow_initialize(viewport)
  53.      super(viewport)
  54.      @_whiten_duration = 0
  55.      @_appear_duration = 0
  56.      @_escape_duration = 0
  57.      @_collapse_duration = 0
  58.      @_damage_duration = 0
  59.      @_animation_duration = 0
  60.      @_blink = false
  61.      # 挨打时候跳跃
  62.      @flash_shake = 0
  63.      # 伤害记录数组
  64.      @_damage = []
  65.      # 总伤害数字
  66.      @_total_damage = 0
  67.      # 总伤害持续帧
  68.      @_total_damage_duration = 0
  69.      #记录已经发生的伤害的变量★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  70.      @p_dam=0
  71.      @hits=0
  72.    end
  73. #美化的伤害处理★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  74. def damage(value, critical)
  75.       # 释放伤害,效果是伤害数字快速消失,觉得不如不消失好看......
  76.       #dispose_damage
  77.       #清除hit数
  78.       dispose_hit
  79.       # 如果伤害值是数值
  80.       if value.is_a?(Numeric)
  81.         # 绝对值转为字符串
  82.         damage_string = value.abs.to_s
  83.       else
  84.         # 转为字符串
  85.         damage_string = value.to_s
  86.       end
  87.       # 初始化位图
  88.       bitmap = Bitmap.new(162, 64)
  89.       bitmap.font.name = ["黑体","华文行楷", "宋体"]
  90.       bitmap.font.size = 32
  91.       # 伤害值是数值的情况下
  92.       if value.is_a?(Numeric)
  93.         # 分割伤害值字符串
  94.         damage_array = damage_string.scan(/./)
  95.         damage_x = 81 - damage_string.size * 9
  96.         # 伤害值为负的情况下
  97.         if value < 0
  98.           # 调用回复数字表
  99.           rect_y = 32
  100.         else
  101.           # 调用伤害数字表
  102.           rect_y = 0
  103.         end
  104.         # 循环伤害值字符串
  105.         for char in damage_array
  106.           number = char.to_i
  107.           # 显示伤害数字
  108.           bitmap.blt(damage_x, 32, RPG::Cache.picture("Damage"),
  109.           Rect.new(number * 18, rect_y, 18, 32))
  110.           # 后移一位
  111.           damage_x += 18
  112.         end
  113.       # 伤害值不是数值的情况
  114.       else
  115.         if $game_variables[6] <= $game_variables[5]
  116.           # 系统默认描画字符串
  117.           bitmap.font.color.set(0, 0, 0)
  118.           bitmap.draw_text(-1, 27, 162, 36, damage_string, 1)
  119.           bitmap.draw_text(+1, 27, 162, 36, damage_string, 1)
  120.           bitmap.draw_text(-1, 29, 162, 36, damage_string, 1)
  121.           bitmap.draw_text(+1, 29, 162, 36, damage_string, 1)
  122.           bitmap.font.color.set(255, 255, 255)
  123.           bitmap.draw_text(0, 28, 162, 36, damage_string, 1)
  124.         # Miss 的情况下
  125.         else
  126.           # 显示未击中图画
  127.           bitmap.blt(36, 28, RPG::Cache.picture("Damage"), Rect.new(90, 64, 90, 32))
  128.         end
  129.       end
  130.       # 会心一击标志打开的情况
  131.       if critical
  132.         # 显示会心一击图画
  133.         bitmap.blt(36, 0, RPG::Cache.picture("Damage"), Rect.new(0, 64, 90, 32))
  134.       end
  135.       # 伤害值定位
  136.       @_damage_sprite = ::Sprite.new(self.viewport)
  137.       @_damage_sprite.bitmap = bitmap
  138.       @_damage_sprite.ox = 81
  139.       @_damage_sprite.oy = 20
  140.       @_damage_sprite.x = self.x
  141.       @_damage_sprite.y = self.y - self.oy / 2
  142.       @_damage_sprite.z = 3000
  143.       @_damage_duration = 40
  144.       @_damage.push([@_damage_sprite,@_damage_duration-10,0, rand(30) - 15, rand(3)])
  145.       make_total_damage(value)  

  146.     end

  147. #   ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  148. # hit数的美化描绘
  149.     def hit

  150.       # 如果伤害值是数值
  151.       # 转为字符串
  152.       value=@hits
  153.         hits_string = value.to_s
  154.       # 初始化位图
  155.        bitmap = Bitmap.new(320, 64)
  156.        bitmap.font.name = "Arial Black"
  157.        bitmap.font.size = 32
  158.        # 分割伤害值字符串
  159.         hits_array = hits_string.scan(/./)
  160.         hits_x = 81 - hits_string.size * 18.1
  161.           rect_y = 0
  162.         # 循环伤害值字符串
  163.         for char in hits_array
  164.           number = char.to_i
  165.           # 显示伤害数字
  166.           bitmap.blt(hits_x, 0, RPG::Cache.picture("Number"),
  167.           Rect.new(number * 36.2, rect_y, 36.2, 50))
  168.           # 后移一位
  169.           hits_x += 36.2
  170.         end
  171.         bitmap.blt(hits_x, 0, RPG::Cache.picture("HITS"),
  172.         Rect.new(0, -21, 90, 50))

  173.       # 伤害值定位
  174.       @_hits_sprite = ::Sprite.new(self.viewport)
  175.       @_hits_sprite.bitmap = bitmap
  176.       @_hits_sprite.ox = 81
  177.       @_hits_sprite.oy = 20
  178.       @_hits_sprite.x = 300
  179.       @_hits_sprite.y = 20
  180.       @_hits_sprite.z = 3000
  181.       @_hits_duration = 40
  182.     end
  183. #--------------------------------------------------------------------------
  184.    # ● 总伤害处理
  185.    #--------------------------------------------------------------------------
  186.    def make_total_damage(value)
  187.      if value.is_a?(Numeric) and SHOW_TOTAL_DAMAGE
  188.        @_total_damage += value
  189.         # 绝对值转为字符串
  190.         damage_string = @_total_damage.abs.to_s
  191.       else
  192.         return
  193.       end
  194.       # 初始化位图
  195.       bitmap = Bitmap.new(300, 150)
  196.       bitmap.font.name = "Arial Black"
  197.       bitmap.font.size = 32
  198.       # 伤害值是数值的情况下
  199.       if value.is_a?(Numeric)
  200.         # 分割伤害值字符串
  201.         damage_array = damage_string.scan(/./)
  202.         damage_x = 40 - damage_string.size * 9
  203.         # 伤害值为负的情况下
  204.           if value < 0
  205.             name="Number3"

  206.         else
  207.           # 调用伤害数字表
  208.             name="Number2"

  209.         end

  210.         
  211.         # 循环伤害值字符串
  212.         for char in damage_array
  213.           number = char.to_i
  214.           # 显示伤害数字
  215.           bitmap.blt(damage_x, 0, RPG::Cache.picture(name),
  216.           Rect.new(number * 36.2, 0, 36.2, 50))
  217.           # 后移一位
  218.           damage_x += 36.2
  219.         end
  220.       end
  221.       
  222.       
  223.         
  224.         
  225. #     if value.is_a?(Numeric) and SHOW_TOTAL_DAMAGE
  226. #       @_total_damage += value
  227. #     else
  228. #       return
  229. #     end
  230. #     bitmap = Bitmap.new(300, 150)
  231. #     bitmap.font.name = "Arial Black"
  232. #     bitmap.font.size = 40
  233. #     bitmap.font.color.set(0, 0, 0)
  234. #     bitmap.draw_text(+2, 12+2, 160, 40, @_total_damage.abs.to_s, 1)
  235. #     if @_total_damage < 0
  236. #       bitmap.font.color.set(80, 255, 00)
  237. #    else
  238. #       bitmap.font.color.set(255, 140, 0)
  239. #     end
  240. #     bitmap.draw_text(0, 12, 160, 40, @_total_damage.abs.to_s, 1)
  241. #     bitmap.font.color.set(55, 55,255)
  242.      
  243.      
  244.      if @_total_damage_sprite.nil?
  245.        @_total_damage_sprite = ::Sprite.new(self.viewport)
  246.        @_total_damage_sprite.ox = 80
  247.        @_total_damage_sprite.oy = 20
  248.        @_total_damage_sprite.z = 3000

  249.      end
  250.      @_total_damage_sprite.bitmap = bitmap
  251.      @_total_damage_sprite.zoom_x = 0.8
  252.      @_total_damage_sprite.zoom_y = 0.8
  253.      @_total_damage_sprite.x = self.x
  254.      @_total_damage_sprite.y = self.y  - self.oy / 2 - 64
  255.      @_total_damage_sprite.z = 3001
  256.      @_total_damage_duration = 80
  257.      #hit数描绘
  258.      @hits+=1
  259.     if @_total_damage > 0
  260.       hit
  261.     end
  262.    end


  263.    def animation(animation, hit, battler_damage="", battler_critical=false)
  264.      dispose_animation      
  265.      #=======================================
  266.      # 修改:记录伤害和critical
  267.      #=======================================
  268.      @battler_damage = battler_damage
  269.      @battler_critical = battler_critical
  270.      @_animation = animation
  271.      return if @_animation == nil
  272.      @_animation_hit = hit
  273.      @_animation_duration = @_animation.frame_max
  274.      animation_name = @_animation.animation_name
  275.      animation_hue = @_animation.animation_hue
  276.      bitmap = RPG::Cache.animation(animation_name, animation_hue)
  277.      #=======================================
  278.      # 修改:计算总闪光权限值
  279.      #=======================================
  280.      for timing in @_animation.timings
  281.        quanzhong = animation_process_timing(timing, @_animation_hit,true)
  282.        @all_quanzhong += quanzhong
  283.        # 记录最后一次闪光
  284.        @_last_frame = timing.frame if quanzhong != 0
  285.      end      
  286.      if @@_reference_count.include?(bitmap)
  287.        @@_reference_count[bitmap] += 1
  288.      else
  289.        @@_reference_count[bitmap] = 1
  290.      end
  291.      #=======================================
  292.      # 修改:行动方动画不显示伤害
  293.      #=======================================
  294.      if $scene.is_a?(Scene_Battle)
  295.        if $scene.animation1_id == @battler.animation_id
  296.          @battler_damage = ""
  297.        end
  298.      end
  299.      @_animation_sprites = []
  300.      if @_animation.position != 3 or not @@_animations.include?(animation)
  301.        for i in 0..15
  302.          sprite = ::Sprite.new(self.viewport)
  303.          sprite.bitmap = bitmap
  304.          sprite.visible = false
  305.          @_animation_sprites.push(sprite)
  306.        end
  307.        unless @@_animations.include?(animation)
  308.          @@_animations.push(animation)
  309.        end
  310.      end
  311.      update_animation
  312.   end
  313.    #=======================================
  314.    # 修改:更换清除伤害的算法,以防万一
  315.    #       本内容在脚本中没有使用过
  316.    #=======================================
  317.    def dispose_damage
  318.      for damage in @_damage.reverse
  319.        damage[0].bitmap.dispose
  320.        damage[0].dispose
  321.        @_damage.delete(damage)
  322.      end
  323.      @_total_damage = 0
  324.      @_last_frame = -1
  325.      if @_total_damage_sprite != nil
  326.        @_total_damage_duration = 0
  327.        @_total_damage_sprite.bitmap.dispose
  328.        @_total_damage_sprite.dispose
  329.        @_total_damage_sprite = nil
  330.      end
  331.    end
  332.    #=======================================
  333.    # 清除hit数★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  334.    #=======================================
  335.    def dispose_hit
  336.      if @_hits_sprite != nil
  337.        @_hits_sprite.bitmap.dispose
  338.        @_hits_sprite.dispose
  339.        @_hits_sprite = nil
  340.      end
  341.    end
  342.    def dispose_animation
  343.      #=======================================
  344.      # 修改:清除记录的伤害,清除权重记录
  345.      #=======================================
  346.      @battler_damage = nil
  347.      @battler_critical = nil
  348.      @all_quanzhong = 1
  349.      @_total_damage = 0
  350.      @_last_frame = -1
  351.      if @_animation_sprites != nil
  352.        sprite = @_animation_sprites[0]
  353.        if sprite != nil
  354.          @@_reference_count[sprite.bitmap] -= 1
  355.          if @@_reference_count[sprite.bitmap] == 0
  356.            sprite.bitmap.dispose
  357.          end
  358.        end
  359.        for sprite in @_animation_sprites
  360.          sprite.dispose
  361.        end
  362.        @_animation_sprites = nil
  363.        @_animation = nil
  364.      end
  365.    end
  366.    def update
  367.      super
  368.      if @_whiten_duration > 0
  369.        @_whiten_duration -= 1
  370.        self.color.alpha = 128 - (16 - @_whiten_duration) * 10
  371.      end
  372.      if @_appear_duration > 0
  373.        @_appear_duration -= 1
  374.        self.opacity = (16 - @_appear_duration) * 16
  375.      end
  376.      if @_escape_duration > 0
  377.        @_escape_duration -= 1
  378.        self.opacity = 256 - (32 - @_escape_duration) * 10
  379.      end
  380.      if @_collapse_duration > 0
  381.        @_collapse_duration -= 1
  382.        self.opacity = 256 - (48 - @_collapse_duration) * 6
  383.      end
  384.      #=======================================
  385.      # 修改:更新算法,更新弹出
  386.      #=======================================
  387.      if @_damage_duration > 0
  388.        @_damage_duration -= 1
  389.        for damage in @_damage
  390.          damage[0].x = self.x + self.viewport.rect.x
  391.          damage[0].y -= 3
  392.          damage[0].opacity = damage[1]*20
  393.          damage[1] -= 1
  394.          if damage[1]==0
  395.            damage[0].bitmap.dispose
  396.            damage[0].dispose
  397.            @_damage.delete(damage)

  398.            next
  399.          end
  400.        end
  401.      end
  402.      #=======================================
  403.      # 添加:弹出总伤害
  404.      #=======================================
  405.      if @_total_damage_duration > 0
  406.        @_total_damage_duration -= 1
  407.        @_total_damage_sprite.y -= 1 if @_total_damage_duration % 2 == 0
  408.        if @_total_damage_sprite.zoom_x > 1.0
  409.          @_total_damage_sprite.zoom_x -= 0.05
  410.        end
  411.        if @_total_damage_sprite.zoom_y > 1.0
  412.          @_total_damage_sprite.zoom_y -= 0.05
  413.        end
  414.        @_total_damage_sprite.opacity = 256 - (24 - @_total_damage_duration) * 16
  415.        if @_total_damage_duration <= 0
  416.          dispose_hit#★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  417.          @_total_damage = 0
  418.          @_total_damage_duration = 0
  419.          @_total_damage_sprite.bitmap.dispose
  420.          @_total_damage_sprite.dispose
  421.          @_total_damage_sprite = nil
  422.        end
  423.      end
  424.      #=======================================
  425.      if @_animation != nil and (Graphics.frame_count % 2 == 0)
  426.        @_animation_duration -= 1
  427.        update_animation
  428.      end
  429.      if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
  430.        update_loop_animation
  431.        @_loop_animation_index += 1
  432.        @_loop_animation_index %= @_loop_animation.frame_max
  433.      end
  434.      if @_blink
  435.        @_blink_count = (@_blink_count + 1) % 32
  436.        if @_blink_count < 16
  437.          alpha = (16 - @_blink_count) * 6
  438.        else
  439.          alpha = (@_blink_count - 16) * 6
  440.        end
  441.        self.color.set(255, 255, 255, alpha)
  442.      end
  443.      @@_animations.clear
  444.    end
  445.    def update_animation
  446.     if @_animation_duration > 0
  447.        frame_index = @_animation.frame_max - @_animation_duration
  448.        cell_data = @_animation.frames[frame_index].cell_data
  449.        position = @_animation.position
  450.        animation_set_sprites(@_animation_sprites, cell_data, position)
  451.        #=======================================
  452.        # 修改:弹出伤害,权重计算
  453.        #=======================================
  454.        for timing in @_animation.timings
  455.          if timing.frame == frame_index
  456.            t = 1.0 * animation_process_timing(timing, @_animation_hit)  
  457.                    if timing.se.name != ""
  458.           se=timing.se
  459.           Audio.se_play("Audio/SE/" + se.name, se.volume, se.pitch)
  460.         end
  461.            #p t,"当前权重", @all_quanzhong,"总权重"
  462.            if @battler_damage.is_a?(Numeric) and t != 0
  463.              t *= @battler_damage
  464.              t /= @all_quanzhong
  465.              t = t.to_i
  466.              #在闪光不是最后一次的情况下,把这次伤害加入到已经发生的伤害中★★★★★★★★★★★★★★★★★★★★★★★★★★
  467.              if frame_index != @_last_frame
  468.              @p_dam+= t
  469.              end
  470.              #p @p_dam,"已发生伤害",@battler_damage,"总伤害"(调试用)★★★★★★★★★★★★★★★★★★★★★★★★★★
  471.              #闪光为最后一次的情况下,改变这次伤害的计算方法(总伤害-已经发生伤害)★★★★★★★★★★★★★★★★★★★★★★★★★★
  472.              if frame_index == @_last_frame
  473.                t=@battler_damage-@p_dam
  474.              end
  475.              #p t,"当前伤害",@battler_damage,"总伤害"
  476.              # 最后一次闪光的话,伤害修正
  477.              if frame_index == @_last_frame
  478.                @_total_damage = @battler_damage - t
  479.                @p_dam=0      #已经发生的伤害归0★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  480.             end
  481.              #p t,@battler_damage,@all_quanzhong
  482.              damage(t,@battler_critical)
  483.             #连击次数归0★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  484.             if frame_index == @_last_frame
  485.                       @hits=0  
  486.             end
  487.            # 防止重复播放miss
  488.            elsif !@battler_damage.is_a?(Numeric) and timing.flash_scope != 0
  489.              damage(@battler_damage,@battler_critical)
  490.            end
  491.          end
  492.        end
  493.      else
  494.        dispose_animation
  495.      end
  496.    end
  497.    #=======================================
  498.    # 修改:敌人跳跃的功能 + 添加返回数值
  499.    #=======================================
  500.     def animation_process_timing(timing, hit,dontflash=false)
  501.       if (timing.condition == 0) or
  502.          (timing.condition == 1 and hit == true) or
  503.          (timing.condition == 2 and hit == false)
  504.         case timing.flash_scope
  505.         when 1
  506.           unless dontflash
  507.             self.flash(timing.flash_color, timing.flash_duration * 2)
  508.             if @_total_damage >0
  509.               @flash_shake_switch = true
  510.               @flash_shake = 10
  511.             end
  512.           end
  513.           return timing.flash_color.alpha * timing.flash_duration
  514.         when 2
  515.           unless dontflash
  516.             if self.viewport != nil
  517.               self.viewport.flash(timing.flash_color, timing.flash_duration * 2)
  518.             end
  519.           end
  520.           return timing.flash_color.alpha * timing.flash_duration
  521.         when 3
  522.           unless dontflash
  523.             self.flash(nil, timing.flash_duration * 2)
  524.           end
  525.           return timing.flash_color.alpha * timing.flash_duration
  526.         end
  527.       end      
  528.       return 0
  529.     end   
  530. end
  531. end
  532. #==============================================================================
  533. # ■ Sprite_Battler
  534. #==============================================================================
  535. class Sprite_Battler < RPG::Sprite
  536. #--------------------------------------------------------------------------
  537. # ● 初始化对像
  538. #    添加跳跃记录
  539. #--------------------------------------------------------------------------
  540. def initialize(viewport, battler = nil)
  541.   super(viewport)
  542.   @battler = battler
  543.   @battler_visible = false
  544.   @flash_shake_switch = true
  545. end
  546. #--------------------------------------------------------------------------
  547. # ● 刷新画面
  548. #    增添跳跃功能
  549. #--------------------------------------------------------------------------
  550. def update
  551.   super
  552.   # 战斗者为 nil 的情况下
  553.   if @battler == nil
  554.     self.bitmap = nil
  555.     loop_animation(nil)
  556.     return
  557.   end
  558.   # 文件名和色相与当前情况有差异的情况下
  559.   if @battler.battler_name != @battler_name or
  560.      @battler.battler_hue != @battler_hue
  561.     # 获取、设置位图
  562.     @battler_name = @battler.battler_name
  563.     @battler_hue = @battler.battler_hue
  564.     self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  565.     @width = bitmap.width
  566.     @height = bitmap.height
  567.     self.ox = @width / 2
  568.     self.oy = @height
  569.     # 如果是战斗不能或者是隐藏状态就把透明度设置成 0
  570.     if @battler.dead? or @battler.hidden
  571.       self.opacity = 0
  572.     end
  573.   end
  574.   # 动画 ID 与当前的情况有差异的情况下
  575.   if @battler.damage == nil and
  576.      @battler.state_animation_id != @state_animation_id
  577.     @state_animation_id = @battler.state_animation_id
  578.     loop_animation($data_animations[@state_animation_id])
  579.   end
  580.   # 应该被显示的角色的情况下
  581.   if @battler.is_a?(Game_Actor) and @battler_visible
  582.     # 不是主状态的时候稍稍降低点透明度
  583.     if $game_temp.battle_main_phase
  584.       self.opacity += 3 if self.opacity < 255
  585.     else
  586.       self.opacity -= 3 if self.opacity > 207
  587.     end
  588.   end
  589.   # 明灭
  590.   if @battler.blink
  591.     blink_on
  592.   else
  593.     blink_off
  594.   end
  595.   # 不可见的情况下
  596.   unless @battler_visible
  597.     # 出现
  598.     if not @battler.hidden and not @battler.dead? and
  599.        (@battler.damage == nil or @battler.damage_pop)
  600.       appear
  601.       @battler_visible = true
  602.     end
  603.   end
  604.   # 可见的情况下
  605.   if @battler_visible
  606.     # 逃跑
  607.     if @battler.hidden
  608.       $game_system.se_play($data_system.escape_se)
  609.       escape
  610.       @battler_visible = false
  611.     end
  612.     # 白色闪烁
  613.     if @battler.white_flash
  614.       whiten
  615.       @battler.white_flash = false
  616.     end
  617.     # 动画
  618.     if @battler.animation_id != 0
  619.       animation = $data_animations[@battler.animation_id]
  620.       animation(animation, @battler.animation_hit,@battler.damage, @battler.critical)
  621.       @battler.animation_id = 0
  622.     end
  623.     # 伤害
  624.     if @battler.damage_pop
  625.       @battler.damage = nil
  626.       @battler.critical = false
  627.       @battler.damage_pop = false
  628.     end
  629.     # korapusu
  630.     if @battler.damage == nil and @battler.dead?
  631.       if @battler.is_a?(Game_Enemy)
  632.         $game_system.se_play($data_system.enemy_collapse_se)
  633.       else
  634.         $game_system.se_play($data_system.actor_collapse_se)
  635.       end
  636.       collapse
  637.       @battler_visible = false
  638.     end
  639.   end
  640.   # 设置活动块的坐标
  641.   if @flash_shake_switch == true
  642.     self.x = @battler.screen_x
  643.     self.y = @battler.screen_y
  644.     self.z = @battler.screen_z
  645.     @flash_shake_switch = false
  646.   end
  647.   if @flash_shake != 0 and @battler.damage != nil and RPG::BATTLER_JUMP
  648.     case @flash_shake
  649.     when 9..10
  650.       self.x = @battler.screen_x
  651.       self.y -=4
  652.       self.z = @battler.screen_z
  653.     when 6..8
  654.       self.x = @battler.screen_x
  655.       self.y -=2
  656.       self.z = @battler.screen_z
  657.     when 3..5
  658.       self.x = @battler.screen_x
  659.       self.y +=2
  660.       self.z = @battler.screen_z
  661.     when 2
  662.       self.x = @battler.screen_x
  663.       self.y += 4
  664.       self.z = @battler.screen_z
  665.     when 1
  666.       self.x = @battler.screen_x
  667.       self.y = @battler.screen_y
  668.       self.z = @battler.screen_z
  669.     end
  670.     @flash_shake -= 1
  671.   end
  672. end
  673. end

  674. #==============================================================================
  675. # ■ Scene_Battle
  676. #------------------------------------------------------------------------------
  677. #  处理战斗画面的类。
  678. #==============================================================================

  679. class Scene_Battle
  680. #--------------------------------------------------------------------------
  681. # ● 定义实例变量
  682. #--------------------------------------------------------------------------
  683. attr_reader   :animation1_id                    # 行动方动画ID
  684. end

  685. #==============================================================================
  686. # ■ Game_Battler
  687. #------------------------------------------------------------------------------
  688. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  689. # 超级类来使用。
  690. #==============================================================================

  691. #class Game_Battler
  692. #  #--------------------------------------------------------------------------
  693. #  # ● 应用连续伤害效果
  694. #  #--------------------------------------------------------------------------
  695. #  alias rainbow_sword_slip_damage_effect slip_damage_effect
  696. #  def slip_damage_effect
  697. #    self.animation_id = RPG::SLIP_DAMAGE_ANIMATION_ID
  698. #    self.animation_hit = true
  699. #    rainbow_sword_slip_damage_effect
  700. #  end
  701. #end
复制代码
  1. #--------------------------------------------------------------------------
  2. # ● 定义ARPG
  3. #--------------------------------------------------------------------------
  4. class ARPG_map
  5. #--------------------------------------------------------------------------
  6. # ● 初始化对象
  7. #--------------------------------------------------------------------------
  8.   def initialize
  9.     @maxsp = $game_actors[1].maxsp - 1
  10.     @maxsp2 = $game_actors[1].maxsp - 1
  11.     update
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ● 更新数值变化
  15.   #--------------------------------------------------------------------------
  16.   def refresh(type)
  17.     case type
  18.     when 0
  19. if $game_actors[1].sp <= @maxsp2
  20. if $game_player.moving?
  21. $cdjc = 0
  22. else
  23.   $cd -= rand(2)
  24.   $cdjc +=1
  25.   if $cdjc >= 80
  26.     $cd -= rand(2)
  27.     $game_actors[1].hp += rand(1)
  28.     end
  29.    if $cdjc >= 160
  30.     $cd -= rand(3)
  31.     $game_actors[1].hp += rand(2)
  32.     end
  33.     if $cdjc >= 320
  34.     $cd -= rand(3)
  35.   end
  36. end
  37. else
  38. $cdjc = 0
  39. end
复制代码
  1. #--------------------------------------------------------------------------
  2. # ● 华丽的跟随
  3. #--------------------------------------------------------------------------
  4. class ARPG_gensui
  5. #--------------------------------------------------------------------------
  6. # ● 初始化对象
  7. #--------------------------------------------------------------------------
  8.   def initialize
  9.     update
  10.   end
  11.   #--------------------------------------------------------------------------
  12.   # ● 刷新
  13.   #--------------------------------------------------------------------------
  14.   def update
  15.     if $game_player.direction == 8
  16.       $主角画面X = $game_player.screen_x
  17.       $主角画面Y = $game_player.screen_y
  18.       $主角画面X -= 34
  19.       $主角画面Y -= 18
  20.     $game_screen.pictures[1].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)
  21.       $主角画面X = $game_player.screen_x
  22.       $主角画面Y = $game_player.screen_y
  23.       $主角画面X -= 34
  24.       $主角画面Y += 12
  25.       $game_screen.pictures[2].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)
  26.       $主角画面X = $game_player.screen_x
  27.       $主角画面Y = $game_player.screen_y
  28.       $主角画面X -= 34
  29.       $主角画面Y += 42
  30.             $game_screen.pictures[3].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)   
  31.     $主角画面X = $game_player.screen_x
  32.       $主角画面Y = $game_player.screen_y
  33.       $主角画面X -= 34
  34.       $主角画面Y += 72
  35.           $game_screen.pictures[4].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)   
  36.       $主角画面X = $game_player.screen_x
  37.       $主角画面Y = $game_player.screen_y
  38.       $主角画面X -= 34
  39.       $主角画面Y += 102
  40.     $game_screen.pictures[5].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)
  41.       $主角画面X = $game_player.screen_x
  42.       $主角画面Y = $game_player.screen_y
  43.       $主角画面X -= 34
  44.       $主角画面Y += 132
  45.       $game_screen.pictures[6].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)
  46.     end
  47.         if $game_player.direction == 2
  48.       $主角画面X = $game_player.screen_x
  49.       $主角画面Y = $game_player.screen_y
  50.       $主角画面X -= 34
  51.       $主角画面Y -= 78
  52.      $game_screen.pictures[1].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)
  53.       $主角画面X = $game_player.screen_x
  54.       $主角画面Y = $game_player.screen_y
  55.       $主角画面X -= 34
  56.       $主角画面Y -= 108
  57.       $game_screen.pictures[2].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)
  58.       $主角画面X = $game_player.screen_x
  59.       $主角画面Y = $game_player.screen_y
  60.       $主角画面X -= 34
  61.       $主角画面Y -= 138
  62.             $game_screen.pictures[3].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)   

  63.      $主角画面X = $game_player.screen_x
  64.       $主角画面Y = $game_player.screen_y
  65.       $主角画面X -= 34
  66.       $主角画面Y -= 168
  67.             $game_screen.pictures[4].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)   

  68.     $主角画面X = $game_player.screen_x
  69.       $主角画面Y = $game_player.screen_y
  70.       $主角画面X -= 34
  71.       $主角画面Y -= 198
  72.             $game_screen.pictures[5].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)   

  73.     $主角画面X = $game_player.screen_x
  74.       $主角画面Y = $game_player.screen_y
  75.       $主角画面X -= 34
  76.       $主角画面Y -= 228
  77.       $game_screen.pictures[6].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)   
  78.     end
  79.         if $game_player.direction == 4
  80.       $主角画面X = $game_player.screen_x
  81.       $主角画面Y = $game_player.screen_y
  82.       $主角画面X -= 4
  83.       $主角画面Y -= 34
  84.     $game_screen.pictures[1].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)
  85.       $主角画面X = $game_player.screen_x
  86.       $主角画面Y = $game_player.screen_y
  87.       $主角画面X += 26
  88.       $主角画面Y -= 34
  89.       $game_screen.pictures[2].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)
  90.       $主角画面X = $game_player.screen_x
  91.       $主角画面Y = $game_player.screen_y
  92.       $主角画面X += 56
  93.       $主角画面Y -= 34
  94.             $game_screen.pictures[3].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)   
  95.     $主角画面X = $game_player.screen_x
  96.       $主角画面Y = $game_player.screen_y
  97.       $主角画面X += 86
  98.       $主角画面Y -= 34
  99.           $game_screen.pictures[4].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)   
  100.       $主角画面X = $game_player.screen_x
  101.       $主角画面Y = $game_player.screen_y
  102.       $主角画面X += 116
  103.       $主角画面Y -= 34
  104.     $game_screen.pictures[5].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)
  105.       $主角画面X = $game_player.screen_x
  106.       $主角画面Y = $game_player.screen_y
  107.       $主角画面X += 146
  108.       $主角画面Y -= 34
  109.       $game_screen.pictures[6].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)
  110.     end
  111.     if $game_player.direction == 6
  112.       $主角画面X = $game_player.screen_x
  113.       $主角画面Y = $game_player.screen_y
  114.       $主角画面X -= 64
  115.       $主角画面Y -= 34
  116.     $game_screen.pictures[1].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)
  117.       $主角画面X = $game_player.screen_x
  118.       $主角画面Y = $game_player.screen_y
  119.       $主角画面X -= 94
  120.       $主角画面Y -= 34
  121.       $game_screen.pictures[2].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)
  122.       $主角画面X = $game_player.screen_x
  123.       $主角画面Y = $game_player.screen_y
  124.       $主角画面X -= 124
  125.       $主角画面Y -= 34
  126.             $game_screen.pictures[3].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)   
  127.     $主角画面X = $game_player.screen_x
  128.       $主角画面Y = $game_player.screen_y
  129.       $主角画面X -= 154
  130.       $主角画面Y -= 34
  131.           $game_screen.pictures[4].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)   
  132.       $主角画面X = $game_player.screen_x
  133.       $主角画面Y = $game_player.screen_y
  134.       $主角画面X -= 184
  135.       $主角画面Y -= 34
  136.     $game_screen.pictures[5].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)
  137.       $主角画面X = $game_player.screen_x
  138.       $主角画面Y = $game_player.screen_y
  139.       $主角画面X -= 214
  140.       $主角画面Y -= 34
  141.       $game_screen.pictures[6].move(40, 0, $主角画面X, $主角画面Y, 100, 100, 255, 0)
  142.     end
  143.   end
  144. end
复制代码
  1. # ————————————————————————————————————
  2. # 本脚本来自www.66rpg.com,转载请保留此信息
  3. # ————————————————————————————————————

  4. #==============================================================================
  5. # ■ Game_Player
  6. #==============================================================================
  7. class Game_Player
  8.   #--------------------------------------------------------------------------
  9.   # ● フレーム更新
  10.   #--------------------------------------------------------------------------
  11.   alias old_update update
  12.   def update
  13.     unless moving? or $game_system.map_interpreter.running? or
  14.       @move_route_forcing or $game_temp.message_window_showing
  15.       if $城市中 ==true
  16.         if Kboard.keyb($R_Key_S) == 1
  17.                 @move_speed = 5
  18.       else
  19.         @move_speed = 4
  20.           end  
  21.         end
  22.         if $cd <= 155
  23.       if Kboard.keyb($R_Key_S) == 1
  24.         $cd += 6
  25.         $game_actors[1].hp -= rand(5)
  26.         if $cd >=310
  27.         $cd =310
  28.           end
  29.         @move_speed = 5
  30.       else
  31.         @move_speed = 4
  32.       end
  33.     end
  34.     end
  35.     old_update
  36.   end
  37. end

  38. #==============================================================================
  39. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  40. #==============================================================================
复制代码
  1. #==============================================================================
  2. # ■ ARPG_Actor
  3. #------------------------------------------------------------------------------
  4. #  处理ARPG角色的类。
  5. #==============================================================================
  6. class ARPG_Actor
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对象
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     @parameter = []
  12.     make_sprite
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 主处理
  16.   #--------------------------------------------------------------------------
  17.   def visible=(val)
  18.     @parameter.each{|pict|pict.visible = val}
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● 释放
  22.   #--------------------------------------------------------------------------
  23.   def dispose
  24.     @parameter.each{|pict|pict.dispose}
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● 生成精灵的实例
  28.   #--------------------------------------------------------------------------
  29.   def make_sprite

  30.    
  31.     @parameter[0] = Sprite.new
  32.     @parameter[0].bitmap = Bitmap.new(310,50)
  33.     w = $cd * 310 / $cdmax
  34.     @parameter[0].bitmap.blt(0,0,RPG::Cache.picture("充弹条"),Rect.new(0,0,310-w,50))
  35.     @parameter[0].x = 0;@parameter[0].y = 430
  36.    
  37.     @parameter[1] = Sprite.new
  38.     @parameter[1].bitmap = Bitmap.new(310,50)
  39.     @parameter[1].bitmap.blt(0,0,RPG::Cache.picture("充弹底框"),Rect.new(0,0,310,50))
  40.     @parameter[1].x = 0;@parameter[1].y = 430
  41.    
  42.     @parameter.each{|e|e.z += 1}   
  43.     @parameter.each{|e|e.z += 2}
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 更新数值变化
  47.   #--------------------------------------------------------------------------
  48.   def refresh(type)
  49.     case type
  50.     when 0
  51.     @parameter[0].bitmap.clear
  52.     w = $cd * 310 / $cdmax
  53.     @parameter[0].bitmap.blt(0,0,RPG::Cache.picture("充弹条"),Rect.new(0,0,310-w,50))      
  54.     @parameter[1].bitmap.clear
  55.     @parameter[1].bitmap.blt(0,0,RPG::Cache.picture("充弹底框"),Rect.new(0,0,310,50))

  56.     return
  57.     end
  58.   end
  59.   #--------------------------------------------------------------------------
  60.   # ● 刷新
  61.   #--------------------------------------------------------------------------
  62.   def update
  63.       refresh(0)
  64.   end
  65. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

穿越一季:朔

梦石
0
星屑
50
在线时间
333 小时
注册时间
2007-4-11
帖子
5369

贵宾

8
发表于 2008-11-8 01:31:36 | 只看该作者
为什么我一起用上主站的射击ARPG和图片标题就出错?

我感觉我知道为什么出错了..

我要是这样的话也出错...

这里有几个脚本看来貌似是冲突的

-----------------------------

天圣接的单???

To 天圣   {/hx}别累死了
6R复活?别扯淡了.

柳柳一旦接手66RPG,我果断呵呵啊。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
5 小时
注册时间
2008-2-17
帖子
125
9
 楼主| 发表于 2008-11-8 01:33:57 | 只看该作者
哪几个?
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-9-20
帖子
132
10
发表于 2008-11-8 02:12:55 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-21 22:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表