查看: 5643|回复: 7

[已经过期] 新人请教思路(战斗系统和宠物系统)

[复制链接]
梦石
0
星屑
50
在线时间
11 小时
注册时间
2015-5-27
回帖
5
发表于 2015-6-9 13:42:23 | 显示全部楼层 |阅读模式

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

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

×
新人,不做伸手党,请教思路,脚本什么的我自己慢慢研究...

我想做个类似手机的卡牌游戏的战斗系统,但是一直找不到适合的,现在想要自己慢慢做,顺便学习一下脚本,以下是我想要知道的,先谢过各位大侠了

1, 进入战斗后,排阵问题,怎样设定比较好.有想过用横版坐标和战棋系统,但是都不是很适合,敌我都是3*3方阵

2,添加自动结束选项(脚本就以普攻来计算胜负就好),怎样弄比较好

3,宠物系统,不想在敌人中一个一个的设置,也参考过宠物系统,但是我想自己写,因为资源里面的很多设定不是自己想要的
请教一下这个系统的思路是什么
意思是,如何不用在敌人数据中设置就可以添加非常庞大的敌人数据系统(还有我方角色系统)

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-6-9 21:39:19 来自手机 | 显示全部楼层
本帖最后由 taroxd 于 2015-6-9 21:40 编辑

1. 游戏设计的问题,不在我可以解答的范围之内

2. 我记得有国外的脚本有自动战斗功能的。
要自己实现的话,可以在 Scene_Battle 里面,如果开了自动战斗就把所有的指令输入都跳过,自动选择普攻。选择普攻应该是有一个对应的方法的。

3. 或者用备注,或者在脚本编辑器内用常量定义。或者外置一个yaml的数据库也是可以的,只要你愿意去写读取的代码的话

点评

csv!!听起来很有趣的样子~而且我怪兽的数据差不多都是用excel表做好的了~~~求大神赐教~  发表于 2015-6-10 10:43
换我就直接用CSV了,Excel一拉一读也方便  发表于 2015-6-9 21:57
回复

使用道具 举报

梦石
0
星屑
50
在线时间
11 小时
注册时间
2015-5-27
回帖
5
 楼主| 发表于 2015-6-10 10:40:46 | 显示全部楼层
taroxd 发表于 2015-6-9 21:39
1. 游戏设计的问题,不在我可以解答的范围之内

2. 我记得有国外的脚本有自动战斗功能的。

{:2_275:}感谢~
回复

使用道具 举报

梦石
0
星屑
62
在线时间
839 小时
注册时间
2010-6-26
回帖
652
发表于 2015-6-10 11:19:52 | 显示全部楼层
本帖最后由 企鹅达达 于 2015-6-10 12:23 编辑

http://www.rpgmakervxace.net/topic/12218-import-parameters/
csv转成数据库内置数据的脚本比如这个。不过你要改成怪物数据的话得先懂一点脚本知识,反正我改了之后技能、道具、武器、防具、怪物数据全都在excel里弄了

嗯,吐槽一下,简介、备注会换行所以只能编辑器里编辑,不然会错位,编辑过后还得改后缀、转码其实蛮麻烦的← ← 楼上高手有其它好招不?
下面是举例一个,另外其实还有其他数据库的导入方式,只要懂脚本的话就能自己改,反正来来去去就那几句

[pre lang="ruby"]
#     PG::output_enemies
#     PG::run_enemy
=begin
==============使用方法=======================
1. 执行事件脚本  PG::output_enemies
2. 导出文本之后部分说明部分的转行符需要手动删除
3. 将文本内容粘贴到excel之中,执行数据>分列,分割标志为|
4. 编辑数据,其中特征、习得技能、效果、掉落物、敌人行动
   等格式为数组的数据无法直接从表格导入
5. 表格编辑完成之后保存成csv格式,再用记事本另存为utf-8编码(否则无法读取中文)
6.执行事件脚本   PG::run_enemy
7.关掉编辑器再打开,数据库里的数据就弄好了
=end
module PG
#--------------------------------------------------------------------------
  # ●
  #--------------------------------------------------------------------------
  def self.output_enemies
    ret = ""
    $data = load_data("Data/Enemies.rvdata2")
      ret += "id"
      ret += "|"+ "name"
      ret += "|"+ "battler_name"
      ret += "|"+ "battler_hue"
      ret += "|"+ "params[0]"
      ret += "|"+ "params[1]"
      ret += "|"+ "params[2]"
      ret += "|"+ "params[3]"
      ret += "|"+ "params[4]"
      ret += "|"+ "params[5]"
      ret += "|"+ "params[6]"
      ret += "|"+ "params[7]"
      ret += "|"+ "exp"
      ret += "|"+ "gold"
      ret += "|"+ "drop_items"
      ret += "|"+ "actions"
      ret += "|"+ "features"
    for i in 1..$data.size
      break if $data == nil
      ret += "\n" + $data.id.to_s
      ret += "|"+ $data.name
      ret += "|"+ $data.battler_name
      ret += "|"+ $data.battler_hue.to_s
      ret += "|"+ $data.params[0].to_s
      ret += "|"+ $data.params[1].to_s
      ret += "|"+ $data.params[2].to_s
      ret += "|"+ $data.params[3].to_s
      ret += "|"+ $data.params[4].to_s
      ret += "|"+ $data.params[5].to_s
      ret += "|"+ $data.params[6].to_s
      ret += "|"+ $data.params[7].to_s
      ret += "|"+ $data.exp.to_s
      ret += "|"+ $data.gold.to_s
      ret += "|["
      if $data.drop_items.size>0
        for j in 0...$data.drop_items.size
          ret += "["+ $data.drop_items[j].kind.to_s
          ret += ","+ $data.drop_items[j].data_id.to_s
          ret += ","+ $data.drop_items[j].denominator.to_s
          ret += "],"
        end
      end
      ret += "],"
      ret += "|["
      if $data.actions.size>0
        for j in 0...$data.actions.size
          ret += "["+ $data.actions[j].skill_id.to_s
          ret += ","+ $data.actions[j].condition_type.to_s
          ret += ","+ $data.actions[j].condition_param1.to_s
          ret += ","+ $data.actions[j].condition_param2.to_s
          ret += ","+ $data.actions[j].rating.to_s
          ret += "],"
        end
      end
      ret += "],"
      ret += "|["
      if $data.features.size>0
        for j in 0...$data.features.size
          ret += "["+ $data.features[j].code.to_s
          ret += ","+ $data.features[j].data_id.to_s
          ret += ","+ $data.features[j].value.to_s
          ret += "],"
        end
      end
      ret += "],"
    end
    File.open("Enemies.txt", 'w') { |file| file.write(ret) }
  end
  #--------------------------------------------------------------------------
  # ●
  #--------------------------------------------------------------------------
  def self.run_enemy
    $data = load_data("Data/Enemies.rvdata2")
    File.open("Enemies.csv", 'r') {|f|
      @inFile = f
      line = read_line
      while !@inFile.eof?
        line = read_line
        i = line[0].to_i
        $data << RPG::Enemy.new if $data == nil
        $data.name = line[1]
        $data.battler_name = line[2]
        $data.battler_hue = line[3].to_i
        $data.params[0] = line[4].to_i
        $data.params[1] = line[5].to_i
        $data.params[2] = line[6].to_i
        $data.params[3] = line[7].to_i
        $data.params[4] = line[8].to_i
        $data.params[5] = line[9].to_i
        $data.params[6] = line[10].to_i
        $data.params[7] = line[11].to_i
        $data.exp = line[12].to_i
        $data.gold = line[13].to_i
      end
    }
    save_data($data, "Data/Enemies.rvdata2")
    SceneManager::exit
  end
end
[/pre]
新手们!不要被看扁了!我们也会用论坛搜索,我们也会自己找脚本,我们也会自己点击关闭按钮旁边的小问号!
回复

使用道具 举报

梦石
0
星屑
50
在线时间
11 小时
注册时间
2015-5-27
回帖
5
 楼主| 发表于 2015-6-10 15:32:44 | 显示全部楼层
企鹅达达 发表于 2015-6-10 11:19
http://www.rpgmakervxace.net/topic/12218-import-parameters/
csv转成数据库内置数据的脚本比如这个。不 ...

感谢,看来要懂这个真的需要一段时间,不过我会努力学习的了...

点评

只是编辑怪物属性的话,我写的脚本就能做到了,不过掉落物、特征、备注得另外想方法导入,虽然我已经写了,但用法解释很麻烦所以我不发  发表于 2015-6-10 15:51
回复

使用道具 举报

梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
回帖
659

开拓者

发表于 2015-6-10 19:29:13 | 显示全部楼层
据我理解,手机游戏的宠物系统基本就是按一下放个技能,或者纯粹的被动技能般的存在。楼主也是想要这种效果?
回复

使用道具 举报

梦石
0
星屑
50
在线时间
11 小时
注册时间
2015-5-27
回帖
5
 楼主| 发表于 2015-6-10 22:22:18 | 显示全部楼层
jianyulei 发表于 2015-6-10 19:29
据我理解,手机游戏的宠物系统基本就是按一下放个技能,或者纯粹的被动技能般的存在。楼主也是想要这种效果 ...

我要的是他们的站位,技能我方可以选择..
怎么表达呢,就是我方如果普攻就只能攻击对方前排,要攻击其他位置就必须用技能.例如A技能是攻击后排全体这样子的效果...
其实就是想远离常规战斗方式,更有策略性...

最后请问大神有好方法吗?请教请教{:2_275:}
回复

使用道具 举报

梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
回帖
659

开拓者

发表于 2015-6-13 09:10:59 | 显示全部楼层
crixin 发表于 2015-6-10 22:22
我要的是他们的站位,技能我方可以选择..
怎么表达呢,就是我方如果普攻就只能攻击对方前排,要攻击其他位置 ...

你放置敌人的时候刻意进行排列,将单数敌人(如1号)放前面,双数(2号)放后面,技能导入事件分歧:如果敌人1已经出现就对2进行强制攻击。这样也能做出打一列的感觉,同理,你也需要设置目标是后排时,前排也挨打,毕竟是贯穿伤害嘛。
当然,如果技能目标是单体就会出现因为前排存在不能打后排的条件,但因为事件是在技能的其他处理之后,因此纯事件的话你需要在多做一个空白的技能让玩家学会,实际造成伤害效果的技能不学,内容是给敌人叠加个异常状态,然后导入个公共事件,以叠加的状态来判定受攻击的敌人位置,然后再判定他前面有没有敌人,如果有就强制有实际伤害的技能在前排上,后排不被攻击,如果没有,就强制打后排。
还有就是游戏内原本设置当1号敌人没有了会自动打2号,所以排列才会是我那种样子。怕运气值的原因状态附加不上就在技能公式里面写。但这样敌人受攻击就会多个0的伤害数字。怕技能数目不够就用扩限脚本。
纯事件就是这种做法了,非常麻烦与愚笨,不推荐使用。虽然这种方法我自己都在用……

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部