Project1

标题: 如何实现通关后保留角色属性,等级归1并重新开始? [打印本页]

作者: 黑白界    时间: 2012-5-12 12:06
标题: 如何实现通关后保留角色属性,等级归1并重新开始?
本帖最后由 黑白界 于 2012-5-12 23:02 编辑

类似轮回的设置,通关后重新开始,事件和第一次一样,等级归1可以再次提升,属性在原来的基础上增加。
作者: end55rpg    时间: 2012-5-12 12:06
黑白界 发表于 2012-5-12 18:17
嗯,属性尽量保持不变
还有,你原来编写的脚本用事件里的“插入脚本”插入后一触发就出错
错误信息:

终于写好了,刚刚那个错误真的很多= =!现在添家了还原属性,防御和敏捷,灵巧不允许修改= =HP MP ATK都OK了......
把下面脚本插入MAIN前面
  1. ############################################################
  2. #      脚本部分
  3. ############################################################
  4. def pek55rpg
  5.   #PART 1
  6. $game_map.events.values.each{
  7. |id|["A","B","C","D"].each{|com|
  8. $game_self_switches[[$game_map.map_id, id.id, com]]=false}}
  9.   #PART 2
  10. (0..3).each{|i|
  11. id = $game_party.actors[i]
  12. %w(hp maxhp mp maxmp atk).each{|a|
  13. eval("@#{a} = $game_actors[#{id}].#{a}")}
  14. $game_actors[id].setup(id)
  15. %w(hp maxhp mp maxmp atk).each{|a|
  16. eval("$game_actors[#{id}].#{a} = @#{a} ")}}
  17. $game_player.refresh
  18. $game_map.refresh
  19. end
  20. class Game_Party < Game_Unit;attr_accessor :actors;end
  21. ###########################################################
复制代码
然后在事件中输入脚本调用:
pek55rpg()
这一句就可以实现全部要求咯!试下?
作者: kfflX    时间: 2012-5-12 12:28
LZ说的不太详细,所以在下不知道这个方法对不对。
事件:等级减为1、场所移动:第一张地图、开关、变量全部复位。
作者: bvn    时间: 2012-5-12 12:31
战斗事件可以?
作者: LOVE丶莫颜    时间: 2012-5-12 12:44
在角色里加多一个原本角色的数据值,保留角色,自己调数据等级,
通关时,执行角色更换,
作者: 真空包装    时间: 2012-5-12 12:45
先把属性记录好设定为几个值
等级减为1后把属性重新改成值里的数
作者: hcm    时间: 2012-5-12 13:08
1.在游戏结束时场所移动到一空地图(色调全黑),
2.所有开关关闭,所有变量变回游戏开始,
3.用多个事件指令修改角色的HP、等级、攻击防御精神等各个参数,
4.场所移动到玩家初始位置(色调恢复游戏开头的)。
作者: end55rpg    时间: 2012-5-12 13:24
本帖最后由 end55rpg 于 2012-5-12 20:14 编辑

ok 见楼下

作者: 黑白界    时间: 2012-5-12 18:17
本帖最后由 黑白界 于 2012-5-12 18:19 编辑
end55rpg 发表于 2012-5-12 13:24
先站楼................


嗯,属性尽量保持不变
还有,你原来编写的脚本用事件里的“插入脚本”插入后一触发就出错
错误信息:
-------------66RPG-------------------
◆ 2012-05-12 15:32:04
错误类型 :
        参数错误
错误信息 :
        (eval):5:in `[]'wrong number of arguments(3 for 1)
错误可能发生的相关位置 :
        Game_Interpreter : 第 1688 行 : command_355
         : 第  行
         : 第  行
         : 第  行
         : 第  行
         : 第  行
        Game_Interpreter : 第 390 行 : eval
        Game_Interpreter : 第 1688 行 : command_355
        Game_Interpreter : 第 390 行 : execute_command
        Game_Interpreter : 第 136 行 : update
        Game_Interpreter : 第 101 行 : loop
        Game_Interpreter : 第 138 行 : update
        生命显示 : 第 60 行 : _update
        地图名显示 : 第 244 行 : update
        Scene_Base : 第 19 行 : main
        Scene_Base : 第 16 行 : loop
        Scene_Base : 第 21 行 : main
        error(错误提示) : 第 33 行 : run
        error(错误提示) : 第 147 行
-------------66RPG-------------------

作者: 黑白界    时间: 2012-5-12 22:34
end55rpg 发表于 2012-5-12 20:17
终于写好了,刚刚那个错误真的很多= =!现在添家了还原属性,防御和敏捷,灵巧不允许修改= =HP MP ATK都OK了. ...

非常感谢你的尽力帮助,但是不知道你的脚本有没有经过测试?从语法上看就有点别扭,比如第20行把end写到最后,有的括号有前面没有后面……这个不要紧,不过……经过测试:
-------------66RPG-------------------
◆ 2012-05-12 22:30:46
错误类型 :
        参数错误
错误信息 :
        Section092:13:in `pek55rpg'(eval):1:in `[]'wrong number of arguments(0 for 1)
错误可能发生的相关位置 :
        Game_Interpreter : 第 1688 行 : command_355
         : 第  行
        轮回 : 第 12 行 : eval
        轮回 : 第 13 行 : pek55rpg
        轮回 : 第 12 行 : each
        轮回 : 第 12 行 : pek55rpg
        轮回 : 第 10 行 : each
        轮回 : 第 10 行 : pek55rpg
         : 第  行
        Game_Interpreter : 第 390 行 : eval
        Game_Interpreter : 第 1688 行 : command_355
        Game_Interpreter : 第 390 行 : execute_command
        Game_Interpreter : 第 136 行 : update
        Game_Interpreter : 第 101 行 : loop
        Game_Interpreter : 第 138 行 : update
        生命显示 : 第 60 行 : _update
        地图名显示 : 第 244 行 : update
        Scene_Base : 第 19 行 : main
        Scene_Base : 第 16 行 : loop
        Scene_Base : 第 21 行 : main
        error(错误提示) : 第 33 行 : run
        error(错误提示) : 第 147 行
-------------66RPG-------------------
以上是脚本原封复制,事件调用pek55rpg()的结果

之后我在事件中调用pek55rpg(1),然后:
-------------66RPG-------------------
◆ 2012-05-12 22:32:37
错误类型 :
        参数错误
错误信息 :
        (eval):1:in `pek55rpg'wrong number of arguments(1 for 0)
错误可能发生的相关位置 :
        Game_Interpreter : 第 1688 行 : command_355
         : 第  行
        Game_Interpreter : 第 390 行 : eval
        Game_Interpreter : 第 1688 行 : command_355
        Game_Interpreter : 第 390 行 : execute_command
        Game_Interpreter : 第 136 行 : update
        Game_Interpreter : 第 101 行 : loop
        Game_Interpreter : 第 138 行 : update
        生命显示 : 第 60 行 : _update
        地图名显示 : 第 244 行 : update
        Scene_Base : 第 19 行 : main
        Scene_Base : 第 16 行 : loop
        Scene_Base : 第 21 行 : main
        error(错误提示) : 第 33 行 : run
        error(错误提示) : 第 147 行
-------------66RPG-------------------

作者: 505681468    时间: 2012-5-13 00:32
本帖最后由 505681468 于 2012-5-13 00:36 编辑

代码苦逼的我决定变身纯事件君了

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

设置游戏开始时记录角色0001初始属性值事件


然后轮回的时候,等级归1,角色0001属性保留事件


因为是纯事件...所以只能保留一人...
所以...要想保留其他人物属性,多公共事件即可

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

详细过程:

游戏开始时:

并行事件:
公共事件001
独立开关A开启
新建事件页,条件,独立开关A开启时

轮回时:
公共事件002

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

没法...代码苦逼的我只能这样了...
望能采纳...


作者: 黑白界    时间: 2012-5-13 07:52
505681468 发表于 2012-5-13 00:32
代码苦逼的我决定变身纯事件君了

-------------------------------------------------------------------- ...

那如何做到让所有事件的独立开关都关闭呢?这个用纯事件好像做不到。
作者: 仲秋启明    时间: 2012-5-13 09:22
黑白界 发表于 2012-5-13 07:52
那如何做到让所有事件的独立开关都关闭呢?这个用纯事件好像做不到。

●独立开关操作…
$game_self_switches[[地图编号,事件编号,"A"]] =开关
作者: 灵魂の补给    时间: 2012-5-13 13:58
黑白界 发表于 2012-5-12 22:34
非常感谢你的尽力帮助,但是不知道你的脚本有没有经过测试?从语法上看就有点别扭,比如第20行把end写到 ...

请在11行脚本处下加入一排
break if !id
忘记写判断了!我测试的是4个人,抱歉
作者: end55rpg    时间: 2012-5-13 20:43
本帖最后由 end55rpg 于 2012-5-13 20:50 编辑

  1. ############################################################
  2. #      脚本部分
  3. ############################################################
  4. def pek55rpg
  5.   #PART 1
  6. $game_map.events.values.each{
  7. |id|["A","B","C","D"].each{|com|
  8. $game_self_switches[[$game_map.map_id, id.id, com]]=false}}
  9.   #PART 2
  10. (0..3).each{|i|
  11. id = $game_party.actors[i]
  12. break if id != true#新添加的一行。。
  13. %w(hp maxhp mp maxmp atk).each{|a|
  14. eval("@#{a} = $game_actors[#{id}].#{a}")}
  15. $game_actors[id].setup(id)
  16. %w(hp maxhp mp maxmp atk).each{|a|
  17. eval("$game_actors[#{id}].#{a} = @#{a} ")}}
  18. $game_player.refresh
  19. $game_map.refresh
  20. end
  21. class Game_Party < Game_Unit;attr_accessor :actors;end
  22. ###########################################################
复制代码
试一下?(之前忘记判断队伍人了)可以不,那个你用的独立开关这样会把其他其地图事件的一起毁灭的,不可用:
这样:
$game_map.events.values.each{
|id|["A","B","C","D"].each{|com|
$game_self_switches[[$game_map.map_id, id.id, com]]=false}}
上面脚本里有的,直接用这段脚本就可以了!

我测试是可以的,你看: Project1.rar (239.24 KB, 下载次数: 25)




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1