查看: 2508|回复: 3

[已经解决] 关于农场脚本出错

[复制链接]
梦石
0
星屑
240
在线时间
125 小时
注册时间
2013-12-20
回帖
44
发表于 2013-12-25 11:13:00 | 显示全部楼层 |阅读模式

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

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

×
[pre lang="ruby" line="1"]#encoding:utf-8
#==============================================================================
# ■ Window_KeyItem
#------------------------------------------------------------------------------
#  此視窗使用於事件指令中的“選擇物品”功能。
#==============================================================================

class Window_KeyItem < Window_ItemList
  #--------------------------------------------------------------------------
  # ● 查詢清單中是否含有此物品
  #--------------------------------------------------------------------------
  def include?(item)
    if @category==:key_item
      if ($game_variables[5000]!="")&&($game_variables[5000]!=0)
        item.is_a?(RPG::Item) &&(item.read_note('itype_id')==$game_variables[5000])
      else
        item.is_a?(RPG::Item) &&item.key_item?
      end
    else
      false
    end
   
  end
end[/pre]


这是和农场一起的 发现物品 脚本 就是他的第15行出错


[pre lang="ruby" line="1"]$time = {}
code_time = Thread.new{
loop do
  $time.each do |k,v|
    $time[k] = [v - 1,0].max
  end
  sleep 1
end
}
class Sprite_time < Sprite_Base
  attr_accessor   :ch
  def initialize(view_port,ch)
    super(view_port)
    @ch = ch
    @time = $time[[$game_map.map_id,@ch.id]]
    @new = true
    @item_inde=0
    @plant_index=0
    @plant_count=0
    @plant_time=[]
    @plant_name=[]
    self.bitmap = Bitmap.new(96,36)
  end
  
  def clear_self
    if $time[[$game_map.map_id,@ch.id]] == 0
      $time.delete([$game_map.map_id,@ch.id])
      self.dispose
      return true
    else
      return false
    end
  end
  
  def update
      if @ch.name=~ /%(\d[,,])?(\d+[,,])(\d+[,,])(\d+)/
        @item_index=$2.to_i
        @plant_index=$3.to_i
        @plant_count=$4.to_i
        @plant_time=$data_items[@item_index].read_note('Plant_Time')
        @plant_name=$data_items[@item_index].read_note('Plant_S')
      end
    if @time == nil
        if @plant_count>0
          @plant_index=@plant_time.length-1
          @ch.name='%1,'+@item_index.to_s+','+@plant_index.to_s+','+@plant_count.to_s
        end
      $time[[$game_map.map_id,@ch.id]] =@plant_time[@plant_index]
    end
    if @time != $time[[$game_map.map_id,@ch.id]] || @new
      @time = $time[[$game_map.map_id,@ch.id]]
      @new = false
      if @time != 0
        ho = @time / 3600
        mi = @time / 60 - ho * 60
        se = @time % 60
        string = sprintf("%02d:%02d:%02d", ho,mi,se) if ho >0
        string = sprintf("%02d:%02d",mi,se) if ho == 0        
      else
        @plant_index+=1
        @ch.name='%1,'+@item_index.to_s+','+@plant_index.to_s+','+@plant_count.to_s
        if @plant_index>=@plant_time.length
          string = "收获啦~"
        else
          $time[[$game_map.map_id,@ch.id]] =@plant_time[@plant_index]
        end
      end        
      self.bitmap.clear
      self.bitmap.font.size = 14
      self.bitmap.draw_text(0,18,96,18,string,1)
      self.bitmap.draw_text(0,0,96,18,@plant_name[@plant_index],1)
    end
    self.x = @ch.screen_x - 48
    self.y = @ch.screen_y - 72
  end
  
end

class Game_Interpreter
  
  def add_self(item_index,count)
    if $time[[$game_map.map_id,@event_id]] == nil
      $game_map.events[@event_id].name='%1,'+item_index.to_s+",0,"+count.to_s#+($data_items[item_index].read_note('Plant_Time_First')).to_s
      view_port = Viewport.new(0, 0, 544, 416)
      sprite = Sprite_time.new(view_port,$game_map.events[@event_id])
      SceneManager.scene.spriteset.character_sprites.push(sprite)
      SceneManager.scene.spriteset.update
    end
  end
  
  def get_result
    if $time[[$game_map.map_id,@event_id]] > 0
      return false
    elsif $time[[$game_map.map_id,@event_id]] == 0
      SceneManager.scene.spriteset.clear_time($game_map.events[@event_id])
      return true
    end
  end
  
  alias :iisnow_command_201 :command_201
  def command_201
    $flag = @params[0] == 0 ? @params[1] : $game_variables[@params[1]]
    iisnow_command_201
  end
end

   
class Scene_Map < Scene_Base
  attr_accessor :spriteset
  
  alias :iisnow_start :start
  def start
    $flag = $game_map.map_id
    iisnow_start
  end

end
class Spriteset_Map
  attr_accessor :character_sprites
  
  alias :iisnow_update :update
  def update
    if $flag
    $time.each do |k,v|
      if k[0] == $flag && $flag == $game_map.map_id
        view_port = Viewport.new(0, 0, 544, 416)
        sprite = Sprite_time.new(view_port,$game_map.events[k[1]])
        @character_sprites.push(sprite)
      end
    end
    $flag = nil if $flag == $game_map.map_id
    end
    iisnow_update
  end
  
  def clear_time(d)
    @character_sprites.each do |s|
      c = s.clear_self if s.is_a?(Sprite_time)&&s.ch==d
      @character_sprites[@character_sprites.index(s)] = nil if c
    end
    @character_sprites.compact!
  end
  
end
[/pre]

这是农场脚本

而作者发的范例使用起来就没问题

我觉得不是脚本冲突问题 因为我新创建的工程也是这个错误

是不是作者在某个脚本里添加了什么被我忽略了

脚本盲 只会照猫画虎 求大神笼罩

这是出错的截图
360截图20131225110833549.jpg

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2013-12-25 12:43:45 | 显示全部楼层
范例工程里面应该有个读取备注栏脚本吧,那个也复制到你的工程中去

点评

或者,插入这个脚本到那两个脚本之上 http://bbs.66rpg.com/thread-99474-1-1.html  发表于 2013-12-25 12:45

评分

参与人数 1星屑 +100 收起 理由
Sion + 100 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
240
在线时间
125 小时
注册时间
2013-12-20
回帖
44
 楼主| 发表于 2013-12-25 17:01:37 | 显示全部楼层
喵呜喵5 发表于 2013-12-25 12:43
范例工程里面应该有个读取备注栏脚本吧,那个也复制到你的工程中去

第一个脚本不就是读取备注栏脚本吗?
范例里只有这2个脚本啊
回复

使用道具 举报

梦石
0
星屑
240
在线时间
125 小时
注册时间
2013-12-20
回帖
44
 楼主| 发表于 2013-12-25 17:12:56 | 显示全部楼层
喵呜喵5 发表于 2013-12-25 12:43
范例工程里面应该有个读取备注栏脚本吧,那个也复制到你的工程中去

多谢大神指导,问题果然出在你说的脚本上 只是作者太欺负新人了把脚本藏的太隐秘了!呵呵

再次感谢!!!
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部