Project1
标题:
这段代码的优化方案求解
[打印本页]
作者:
负零
时间:
2013-4-25 10:45
标题:
这段代码的优化方案求解
本帖最后由 负零 于 2013-4-25 11:04 编辑
class Scene_Ectoplasmer
def ectoplasmer
scence(651,501)
scence(652,502)
scence(653,503)
end
def scence(skill_id,state_id)
for i in 1..6
if $game_actors[i].skill_learn?($data_skills[skill_id])
$game_actors[i].add_state(state_id)
else
end
end
end
end
复制代码
这段代码我怎么看怎么不合理(我自己写的,菜鸟一个)希望有脚本大神能提供一个解决方案,满足需求,最好能照顾一下我,给点关键性的提示。最终目的:授我以渔~谢谢。
作者:
沙漠点灰
时间:
2013-4-25 12:06
这是干什么的= =
任何游戏教程第一章都会提到强烈建议不使用硬编码.建议充分利用数据库.
scence下的for循环
可改为
$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.脚本位置查找:
搜索"領悟技能"(我的是繁体版)
找到
#--------------------------------------------------------------------------
# ● 領悟技能
#--------------------------------------------------------------------------
def learn_skill(skill_id)
unless skill_learn?($data_skills[skill_id])
@skills.push(skill_id)
@skills_used_time[skill_id] = $data_skills[skill_id].mp_cost
@skills.sort!
end
end
复制代码
[习得状态附着:[5,4]]
格式是:
前中括号
习得状态附着:
状态数组
后中括号
需要蓝色的部分
匹配
/.*\[习得状态附着:(.+)\].*/
复制代码
所以修改为:
#--------------------------------------------------------------------------
# ● 領悟技能
#--------------------------------------------------------------------------
def learn_skill(skill_id)
unless skill_learn?($data_skills[skill_id])
@skills.push(skill_id)
@skills_used_time[skill_id] = $data_skills[skill_id].mp_cost
if $data_skills[skill_id].note[/.*\[习得状态附着:(.+)\].*/]
Kernel.eval($1).each{|s|add_state(s)}
end
@skills.sort!
end
end
复制代码
3.扫尾处理
看看lz的需求了
“遺忘技能”时是不是应该解除附着的"习得状态附着"状态
修改"forget_skill"就行了
作者:
负零
时间:
2013-4-25 17:05
沙漠点灰 发表于 2013-4-25 12:06
这是干什么的= =
任何游戏教程第一章都会提到强烈建议不使用硬编码.建议充分利用数据库.
scence下的for循环 ...
好的,受教受教。回去消化一下,看看效果。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1