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

Project1

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

[已经解决] 如何用脚本召唤战斗画面,并自设将参战的敌人属性?

[复制链接]

Lv2.观梦者

梦石
0
星屑
701
在线时间
511 小时
注册时间
2012-4-8
帖子
255
跳转到指定楼层
1
发表于 2015-3-7 21:20:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
RUBY 代码复制
  1. def command_301
  2.     return if $game_party.in_battle
  3.     if @params[0] == 0                      # 直接指定
  4.       troop_id = @params[1]
  5.     elsif @params[0] == 1                   # 变量指定
  6.       troop_id = $game_variables[@params[1]]
  7.     else                                    # 地图指定的敌群
  8.       troop_id = $game_player.make_encounter_troop_id
  9.     end
  10.     if $data_troops[troop_id]
  11.       BattleManager.setup(troop_id, @params[2], @params[3])
  12.       BattleManager.event_proc = Proc.new {|n| @branch[@indent] = n }
  13.       $game_player.make_encounter_count
  14.       SceneManager.call(Scene_Battle)
  15.     end
  16.     Fiber.yield
  17.   end

以上是VA自带的战斗事件的写法,改了n次都跳错误

不引用数据库中的敌群。
敌群只一个敌人,如何用脚本设定该敌人的属性、掉落等,并开始战斗?
武侠|养成|战棋游戏《以武证道》头秃开发中...
开发日记在此

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2015-3-7 21:26:01 | 只看该作者
本帖最后由 taroxd 于 2015-3-7 21:31 编辑

因为 $game_troop 非常依赖数据库,所以要实现这个很难。

不如把数据库里面的其中一栏专门留给自定义敌群吧。
比如说第 60 号敌群用作自定义的话,就通过 $data_troops[60] 对数据库进行修改(修改姿势见 F1 的 RPG::Troop 文档),然后与 60 号敌群战斗即可。
但是,记住以后不要在任何其他地方使用 60 号敌群。修改也不建议直接更改属性(当然不是不可以),而是用 $data_troop[60] = RPG::Troop.new 赋予新值后再进行更改。

或者完全推倒默认系统,构建一个自己的系统也可以。这样想怎么自定义就怎么自定义(我认真的)
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
701
在线时间
511 小时
注册时间
2012-4-8
帖子
255
3
 楼主| 发表于 2015-3-7 21:33:22 | 只看该作者
taroxd 发表于 2015-3-7 21:26
因为 $game_troop 非常依赖数据库,所以要实现这个很难。

不如把数据库里面的其中一栏专门留给自定义敌群 ...

思路我了解了。
其他代码我大概能猜出意思,但是
  1.       BattleManager.event_proc = Proc.new {|n| @branch[@indent] = n }
复制代码
是什么意思?
武侠|养成|战棋游戏《以武证道》头秃开发中...
开发日记在此
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

4
发表于 2015-3-7 21:36:28 | 只看该作者
本帖最后由 taroxd 于 2015-3-7 21:39 编辑
黑白界 发表于 2015-3-7 21:33
思路我了解了。
其他代码我大概能猜出意思,但是是什么意思?


设置事件分支。

在战斗结束后,BattleManager 负责调用这段代码 @branch[@indent] = n,其中 n 代表战斗的结果。
然后事件解释器就会根据这个 n 来决定进入哪个事件分支(胜利的场合/失败的场合/撤退的场合)

当你不用事件时,这句代码不加亦可

针对战斗事件转译成事件脚本,可以参考 https://rpg.blue/thread-374907-1-1.html
打开 DEBUG 模式,然后写个战斗事件,看看控制台中输出的脚本吧。缩进应该会十分混乱,但希望能对你有帮助。

评分

参与人数 2星屑 +50 梦石 +1 收起 理由
VIPArcher + 1 认可答案
黑白界 + 50 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
701
在线时间
511 小时
注册时间
2012-4-8
帖子
255
5
 楼主| 发表于 2015-3-7 22:16:46 | 只看该作者
本帖最后由 黑白界 于 2015-3-7 22:17 编辑
taroxd 发表于 2015-3-7 21:36
设置事件分支。

在战斗结束后,BattleManager 负责调用这段代码 @branch[@indent] = n,其中 n 代表战斗 ...


还有点问题。
怎么修改一个敌群中包含的敌人的编号?
$data_troops[n]只能调用RPG::Troop中定义的函数,
那么RPG::Troop的内部类RPG::Troop::Member里的函数怎么调用呢?
我写$data_troops[60].members.enemy_id=1,报错了
写$data_troops[60].enemy_id=1也报错

点评

已解决,先$data_troops[60].members[0]=RPG::Troop::Member.new,就可以调用这些方法了。。  发表于 2015-3-8 10:53
根据方法名即可推断 members 肯定是个数组……  发表于 2015-3-8 08:14
_(:з」∠)_ 你至少得确定以下你.的东西里有没有enemy_id的变量或者方法吧,然后再确定它是否可以赋值。  发表于 2015-3-7 22:49
武侠|养成|战棋游戏《以武证道》头秃开发中...
开发日记在此
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-21 00:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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