Project1

标题: 【脚本问题】请问如何在队伍全灭后弹出文本,而不是立..... [打印本页]

作者: woyodo    时间: 2014-6-1 13:24
标题: 【脚本问题】请问如何在队伍全灭后弹出文本,而不是立.....
允许失败的情况下,友方队伍全灭,不要直接退出战斗,而是像VA一样,显示“队伍全灭”的提示语,然后按确认键再退出,怎么改脚本?多谢!!
作者: 上贺茂润    时间: 2014-6-1 16:44
你直接用VA不就好了……
作者: woyodo    时间: 2014-6-1 16:47
上贺茂润 发表于 2014-6-1 16:44
你直接用VA不就好了……

现在是要改一个现成的XP游戏,所以要用XP
作者: 1162350858    时间: 2014-6-1 17:56
woyodo 发表于 2014-6-1 16:47
现在是要改一个现成的XP游戏,所以要用XP

游戏制作者最好不要盗用别人做好的游戏.
作者: woyodo    时间: 2014-6-1 20:32
1162350858 发表于 2014-6-1 17:56
游戏制作者最好不要盗用别人做好的游戏.

兄台你想多了,改游戏只是为了研究脚本,它不可能变成盗版的游戏,而且我也没有时间去制作游戏内容,我现在只是想实现一个战斗全灭不退出战斗,而做出战斗评价的功能,其中需要显示文本,所以询问一下论坛里的高手们,就是这样:)
作者: 1162350858    时间: 2014-6-2 12:36
woyodo 发表于 2014-6-1 20:32
兄台你想多了,改游戏只是为了研究脚本,它不可能变成盗版的游戏,而且我也没有时间去制作游戏内容,我现 ...

阿勒,不好意思啊我会错意了。个人是个脚本新手。不可能帮你写脚本。不过我可以给你一些想法。你直接找到战斗的那个脚本。然后在怪物全灭的后面添加一个脚本(就是你说的那个评价脚本)

(我的想法是你在游戏放素材的那个文件甲新建一个文件夹,然后把评价的评分图片放入比如s级ss级sss级之类的图片。然后在游戏脚本里引用图片显示)

(至于怎么评分呢你可以在建立一个新的脚本然后记录在战斗时候的损血和被击中的次数之类的数据,然后在用算法计算出评分。)(到时候这个脚本真能实现的话联系我,我现在做的游戏也可以加入这个系统)
作者: woyodo    时间: 2014-6-2 16:52
1162350858 发表于 2014-6-2 12:36
阿勒,不好意思啊我会错意了。个人是个脚本新手。不可能帮你写脚本。不过我可以给你一些想法。你直接找到 ...

非常感谢!其实我试了在scence_battle1里的胜负判定的if $game_temp.battle_can_lose?(就是允许失败的条件下)插入$game_temp.text="XXX" $game_temp.text_showing=true,但是它显示$game_temp是未定义(undefined)的变量。
但是据教程说$开头的是全局变量,可以在整个脚本里调用,为什么还是undefined?
还有就是:$game_temp这个全局变量是在哪里定义的?还是说只要有类(class),就自动生成同名全局变量?
比如:有class Game_Temp,就自动生成(小写字母的)$game_temp?
多谢解答!
作者: 天地有正气    时间: 2014-6-2 18:03
woyodo 发表于 2014-6-2 16:52
非常感谢!其实我试了在scence_battle1里的胜负判定的if $game_temp.battle_can_lose?(就是允许失败的条 ...

估计您把报错的信息看错了吧。
应该是找不到text=这个方法。
显示文本的脚本应该是$game_message_text = "46748"
作者: woyodo    时间: 2014-6-2 18:17
天地有正气 发表于 2014-6-2 18:03
估计您把报错的信息看错了吧。
应该是找不到text=这个方法。
显示文本的脚本应该是$game_message_text =  ...

首先感谢你回我帖!
我写的全局变量不一定正确,只是凭记忆写的。
对于你所说的方法,我已经试过,发现这是一个事件用脚本,即在事件设置页里的“脚本...”是可以使用的,但是在脚本编辑器里不能调用。
另外一个问题:事件里使用$game_temp.message_text="",弹出的对话框将反复弹出,按确认键不能退出对话,请问怎么解决?
作者: 天地有正气    时间: 2014-6-2 19:29
woyodo 发表于 2014-6-2 18:17
首先感谢你回我帖!
我写的全局变量不一定正确,只是凭记忆写的。
对于你所说的方法,我已经试过,发现这 ...


对话框不一定美观,可以使用图片来做到(用对话框有些麻烦………………)。
@sprite (防止出错)
用:(把一张名为“Battle”的png格式图片放入Graphics/Windowskins文件夹里)
  1. @sprite = Sprite.new
  2. @sprite.opacity = 0
  3. @sprite.bitmap = RPG::Cache.windowskin("Battle.png")
  4. for i in 0.. 255/15
  5. @sprite.opacity += 15
  6. Graphics.update
  7. end
  8. for i in 0.. 255/15
  9. @sprite.opacity -= 15
  10. Graphics.update
  11. end
  12. @sprite.bitmap.dispose
  13. @sprite.dispose
复制代码
这段脚本可以结合F1看一下。

未经测试………………
应该可以的吧……
效果就是显示一张图片,然后消失。
作者: woyodo    时间: 2014-6-3 14:16
天地有正气 发表于 2014-6-2 19:29
对话框不一定美观,可以使用图片来做到(用对话框有些麻烦………………)。
@sprite (防止出错)
用:( ...

非常感谢!可以使用!
但是我想要实现图片出现之后按确认键才退出游戏,什么时候退出由玩家决定的效果。刚才做了初步尝试,仍不能等待按键输入,代码如下:
  1.   def judge
  2.     # 全灭判定是真、并且同伴人数为 0 的情况下
  3.     if $game_party.all_dead? or $game_party.actors.size == 0
  4.       # 允许失败的情况下
  5.       if $game_temp.battle_can_lose
  6.         [url=home.php?mod=space&uid=114926]@sprite[/url] = Sprite.new
  7. @sprite.opacity = 0
  8. @sprite.bitmap = RPG::Cache.windowskin("Battle.png")
  9. for i in 0.. 255/15
  10. @sprite.opacity += 15
  11. Graphics.update
  12. @sprite.bitmap.draw_text(100, 100, 500, 100, "YOU DIE!")

  13. end
  14. # 按下 C 键的情况下
  15.     if Input.trigger?(Input::C)
  16. for i in 0.. 255/15
  17. @sprite.opacity -= 15
  18. Graphics.update
  19. end
  20. @sprite.bitmap.dispose
  21. @sprite.dispose
  22. end
  23.         # 还原为战斗开始前的 BGM
  24.         $game_system.bgm_play($game_temp.map_bgm)
  25.         # 战斗结束
  26.         battle_end(2)
  27.         # 返回 true
  28.         return true
  29.       end
  30.       # 设置游戏结束标志
  31.       $game_temp.gameover = true
  32.       # 返回 true
  33.       return true
  34.     end
复制代码
主要问题在:
  1. # 按下 C 键的情况下
  2.     if Input.trigger?(Input::C)
  3. for i in 0.. 255/15
  4. @sprite.opacity -= 15
  5. Graphics.update
  6. end
  7. @sprite.bitmap.dispose
  8. @sprite.dispose
  9. end
复制代码
根本不等我输入按键就直接退出了,这是什么原因呢?
作者: 天地有正气    时间: 2014-6-4 09:58
woyodo 发表于 2014-6-3 14:16
非常感谢!可以使用!
但是我想要实现图片出现之后按确认键才退出游戏,什么时候退出由玩家决定的效果。 ...


建议您将这个脚本手动输一遍,我没有用脚本编辑器所以没有缩进.
问题出在您没有设置循环,可以这样.
  1. loop do
  2. Graphics.update # 刷新图像
  3. Input.update # 刷新输入信息
  4. if Input.trigger?(Input::C)
  5. break # 跳出循环
  6. end
  7. end
复制代码

作者: woyodo    时间: 2014-6-4 14:43
天地有正气 发表于 2014-6-4 09:58
建议您将这个脚本手动输一遍,我没有用脚本编辑器所以没有缩进.
问题出在您没有设置循环,可以这样. ...

是不是想要设置Input的检测,必需要用Input.update刷新才可?
Input是不是内部定义的类,脚本里看不到?那么怎么查找Input的相关代码呢?
作者: moy    时间: 2014-6-4 14:59
woyodo 发表于 2014-6-4 14:43
是不是想要设置Input的检测,必需要用Input.update刷新才可?
Input是不是内部定义的类,脚本里看不到? ...

你没有循环的话,就不会等待。判断发现没输入就立刻跳过了。
Input可以在F1查看
不用刷新,不如说,一般都在刷新中调用Input进行输入按键判断。
没有相关环境(Scene之类自带刷新的)就只好用loop创造刷新条件了




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