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

Project1

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

[已经过期] 这段代码的优化方案求解

[复制链接]

Lv2.观梦者

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
帖子
840
跳转到指定楼层
1
发表于 2013-4-25 10:45:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 负零 于 2013-4-25 11:04 编辑
  1. class Scene_Ectoplasmer
  2. def ectoplasmer
  3.    scence(651,501)
  4.    scence(652,502)
  5.    scence(653,503)
  6.    
  7. end

  8. def scence(skill_id,state_id)
  9.   for i in 1..6
  10.   if $game_actors[i].skill_learn?($data_skills[skill_id])
  11.      $game_actors[i].add_state(state_id)
  12.    else
  13.   end
  14. end
  15. end
  16. end
复制代码
这段代码我怎么看怎么不合理(我自己写的,菜鸟一个)希望有脚本大神能提供一个解决方案,满足需求,最好能照顾一下我,给点关键性的提示。最终目的:授我以渔~谢谢。

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
2
发表于 2013-4-25 12:06:33 | 只看该作者
这是干什么的= =
任何游戏教程第一章都会提到强烈建议不使用硬编码.建议充分利用数据库.
scence下的for循环
可改为
  1. $game_party.members.each{|i|i.add_state(state_id) if i.skill_learn?($data_skills[skill_id])}
复制代码
当然,只是说说,正文在下面:






我猜lz的意思是学到一个技能后,自动附着一个(或多个??)状态.

1.数据库编写:
我想角色学习了59号技能后,自动附着5,4号这2个状态
于是在59号技能的备注上写上
[习得状态附着:[5,4]]

2.脚本位置查找:
搜索"領悟技能"(我的是繁体版)
找到

  1.   #--------------------------------------------------------------------------
  2.   # ● 領悟技能
  3.   #--------------------------------------------------------------------------
  4.   def learn_skill(skill_id)
  5.     unless skill_learn?($data_skills[skill_id])
  6.       @skills.push(skill_id)
  7.       @skills_used_time[skill_id] = $data_skills[skill_id].mp_cost
  8.       @skills.sort!
  9.     end
  10.   end
复制代码
[习得状态附着:[5,4]]

格式是:
前中括号习得状态附着:状态数组后中括号
需要蓝色的部分
匹配
  1. /.*\[习得状态附着:(.+)\].*/
复制代码
所以修改为:

  1.   #--------------------------------------------------------------------------
  2.   # ● 領悟技能
  3.   #--------------------------------------------------------------------------
  4.   def learn_skill(skill_id)
  5.     unless skill_learn?($data_skills[skill_id])
  6.       @skills.push(skill_id)
  7.       @skills_used_time[skill_id] = $data_skills[skill_id].mp_cost
  8.       if $data_skills[skill_id].note[/.*\[习得状态附着:(.+)\].*/]
  9.         Kernel.eval($1).each{|s|add_state(s)}
  10.       end
  11.       @skills.sort!
  12.     end
  13.   end
复制代码
3.扫尾处理
看看lz的需求了
“遺忘技能”时是不是应该解除附着的"习得状态附着"状态

修改"forget_skill"就行了
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
帖子
840
3
 楼主| 发表于 2013-4-25 17:05:53 | 只看该作者
沙漠点灰 发表于 2013-4-25 12:06
这是干什么的= =
任何游戏教程第一章都会提到强烈建议不使用硬编码.建议充分利用数据库.
scence下的for循环 ...

好的,受教受教。回去消化一下,看看效果。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 11:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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