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

Project1

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

[高手进]读档之后,信息全没了

 关闭 [复制链接]

Lv2.观梦者

梦石
0
星屑
290
在线时间
258 小时
注册时间
2007-3-1
帖子
27
跳转到指定楼层
1
发表于 2009-1-31 02:48:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
Iselia雪 的抓宠物系统
http://rpg.blue/viewthread.php?tid=80116&ntime=2008%2D9%2D19+9%3A31%3A58
读档之后,信息全没了。。。。
我郁闷啊.
其实突出了一个问题就是,数据不是存在 Actors 999个以内的,而是实有虚无的,一旦存档,在读取就没了.
例如,我之前得到了物品,存档之后,再读取,那些"实有虚无"的物品全没了,而Items 数据库里正常设置的物品还存在。

高手,精英们,是你们一展才华的时候了,这个问题如果能解决掉,真才了!

下面是他的主脚本,可以借助理解下
  1. #============================================================================
  2. #宠物系统 By Iselia雪
  3. #数据库中可以捕捉的敌人格式这样写 敌人,捕捉后的职业
  4. #捕捉特技的属性下面设定。
  5. #敌人捕捉的几率和这个属性抵抗力反比,和使用者速度+敏捷与目标速度+敏捷比值成正比。
  6. #具体设置参考范例~
  7. #整合了chaochao的人物仓库(新建的宠物$game_party.actors.include?不认?!)
  8. #不过这个难不住我ORZ……^__________^
  9. #捕捉后敌人的行走图和战斗图名字相同,没有行走图则为空。
  10. #============================================================================
  11. $捕捉 = "抓宠物啦"
  12. module RPG
  13.   class Skill
  14.     def catch?
  15.       return @element_set.include?($data_system.elements.index($捕捉))
  16.     end
  17.   end
  18. end
  19. module RPG
  20.   class Enemy
  21.     def name
  22.       return @name.split(/,/)[0]
  23.     end
  24.     def mold
  25.       return @name.split(/,/)[1]
  26.     end
  27.   end
  28. end
  29. class Game_Enemy < Game_Battler
  30.   def mold
  31.     return $data_enemies[@enemy_id].mold
  32.   end
  33.   def element_ranks
  34.     return $data_enemies[@enemy_id].element_ranks
  35.   end
  36.   def make_pet
  37.     pet = $data_actors[mold.to_i]
  38.     pet.battler_name = self.battler_name
  39.     pet.battler_hue = self.battler_hue
  40.     begin
  41.       RPG::Cache.character(self.battler_name,self.battler_hue)
  42.       pet.character_name = self.battler_name
  43.       pet.character_hue = self.battler_hue
  44.     rescue Errno::ENOENT
  45.       
  46.     end
  47.     pet.name = self.name
  48.     $data_actors[$data_actors.size] = pet
  49.     pet2 = Game_Actor.new($data_actors.size - 1)
  50.     $game_actors.push(pet2)
  51.     $data_actors.delete_at($data_actors.size)
  52.     p $data_actors[$data_actors.size]
  53.     if $game_party.actors.size == 4
  54.       $game_party.add_actor($game_actors.size-1,2)
  55.     else
  56.       $game_party.add_actor($game_actors.size-1)
  57.     end
  58.     $scene.status_window.refresh
  59.   end
  60. end
  61. class Game_Actors
  62.   def push(val)
  63.     if @data.size < 999
  64.      @data.push(val)
  65.     end  
  66.   end
  67.   def size
  68.     return @data.size
  69.   end
  70.   def [](actor_id)
  71.     if actor_id > 999
  72.       return nil
  73.     end
  74.     if @data[actor_id] == nil
  75.       @data[actor_id] = Game_Actor.new(actor_id)
  76.     end
  77.     return @data[actor_id]
  78.   end
  79. end
  80. class Game_Battler
  81.   alias skill_effect_iselia :skill_effect
  82.     def skill_effect(user,skill)
  83.       if skill.element_set.include?($data_system.elements.index($捕捉))
  84.         catch(user)
  85.         return true
  86.       end
  87.     skill_effect_iselia(user,skill)
  88.   end
  89.   #捕捉
  90.   def catch(user)
  91.     percent = (user.agi + user.dex) / (self.agi + self.dex) * percent_base
  92.     if self.can_catch and rand(100) < percent
  93.       self.hidden = true
  94.       self.current_action.kind = 3
  95.       make_pet
  96.     end
  97.   end
  98.   #可否捕捉
  99.   def can_catch
  100.     return self.is_a?(Game_Enemy) && self.mold != nil
  101.   end
  102.   #宠物资料
  103.   def percent_base
  104.     return 0 if self.is_a?(Game_Actor)
  105.     return [100,80,60,40,20,10,5][self.element_ranks[$data_system.elements.index($捕捉)]]
  106.   end
  107. end
  108. class Scene_Battle
  109.   attr_accessor :status_window
  110.   def make_skill_action_result
  111.     # 获取特技
  112.     @skill = $data_skills[@active_battler.current_action.skill_id]
  113.     # 如果不是强制行动
  114.     unless @active_battler.current_action.forcing
  115.       # 因为 SP 耗尽而无法使用的情况下
  116.       unless @active_battler.skill_can_use?(@skill.id)
  117.         # 清除强制行动对像的战斗者
  118.         $game_temp.forcing_battler = nil
  119.         # 移至步骤 1
  120.         @phase4_step = 1
  121.         return
  122.       end
  123.     end
  124.     # 消耗 SP
  125.     @active_battler.sp -= @skill.sp_cost
  126.     # 刷新状态窗口
  127.     @status_window.refresh
  128.     # 在帮助窗口显示特技名
  129.     @help_window.set_text(@skill.name, 1)
  130.     # 设置动画 ID
  131.     @animation1_id = @skill.animation1_id
  132.     @animation2_id = @skill.animation2_id
  133.     # 设置公共事件 ID
  134.     @common_event_id = @skill.common_event_id
  135.     # 设置对像侧战斗者
  136.     set_target_battlers(@skill.scope)
  137.     if @skill.catch?
  138.       @active_battler.animation_id = @animation1_id
  139.     ($data_animations[@animation1_id].frame_max + 8).times do
  140.       Graphics.update
  141.       @spriteset.update
  142.     end
  143.     @target_battlers.each do |v|
  144.       v.animation_id = @animation2_id
  145.     end
  146.     ($data_animations[@animation2_id].frame_max + 8).times do
  147.       Graphics.update
  148.       @spriteset.update
  149.     end
  150.     end
  151.     # 应用特技效果
  152.     for target in @target_battlers
  153.       target.skill_effect(@active_battler, @skill)
  154.     end
  155.     if @skill.catch?
  156.     @phase4_step = 5
  157.     end
  158.   end
  159. end
复制代码

此贴于 2009-2-4 13:49:49 被版主darkten提醒,请楼主看到后对本贴做出回应。
版务信息:版主帮忙结贴~

Lv1.梦旅人

綾川司の姫様<

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

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

2
发表于 2009-2-3 11:48:30 | 只看该作者
- -数据库新生的东西要连着存档一起写回去
http://rpg.blue/web/htm/news521.htm
系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-18 13:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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