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

Project1

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

[讨论] 提供一个思路,可解决烦躁的数据库设置的一小部分。

[复制链接]

Lv2.观梦者

梦石
0
星屑
780
在线时间
924 小时
注册时间
2006-6-26
帖子
1529
跳转到指定楼层
1
发表于 2012-9-25 19:53:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
、。之所以只提供思路,是因为这套思路定然需要脚本才能完成,而我根本不会脚本。。。


思路如下:

  我发现大多数人,都很有兴趣去做地图、剧情、事件、系统,但却对制作数据库感到烦躁,我也是其中一个。繁琐的武器设置、技能设置、敌人设置,计算伤害,真的相当让人感觉头大,因为你无法估计,当玩家得到XX武器的时候,他应该是个什么样的等级,遇到什么样的怪。。。怪遇小了,游戏变简单,怪遇大了,游戏太难。


我所提供的思路,可以解决敌人设置的问题。

就是,设置一种敌人成长的系统。他会随着玩家的等级、攻击力、防御力、HP、MP等等数据,进行一个比例性的生长。也就是说,玩家有多厉害,怪物就会在作者预先设置的比例上面,长到多厉害。那么我们就不用考虑怪物的数据了,只需要考虑他的种类就行了。

当然,此系统脚本,可以设置一些特殊类敌人,诸如使用when   return 这种语句来定义,某几个敌人编号。这几个编号,不会受到成长比例的影响,而这几个编号的作用,主要就是用于制作BOSS。

评分

参与人数 1星屑 +2 收起 理由
咕噜 + 2 我很赞同

查看全部评分

我是不是可以签名了?

Lv3.寻梦者

孤独守望

梦石
0
星屑
3132
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

2
发表于 2012-9-25 20:04:27 手机端发表。 | 只看该作者
已采集。考虑嵌入中
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3582
在线时间
3065 小时
注册时间
2011-11-17
帖子
980
3
发表于 2012-9-25 20:11:06 | 只看该作者
我也这么偷懒的设定的 只要个怪物加个新属性 LV ,数据库里的数据都是成长值 怪物实际能力是成长值*LV 脚本改动很简单的 省不少时间

点评

我去写个 我早这么设想了 由于还没做到怪物方面 所以还没开工 你稍等  发表于 2012-9-25 20:14
原来早就有人这样做了? 求脚本和使用方法教程。  发表于 2012-9-25 20:12
回复 支持 反对

使用道具 举报

Lv4.逐梦者

送快递的水表员

梦石
10
星屑
4857
在线时间
3303 小时
注册时间
2012-6-27
帖子
7160

开拓者贵宾

4
发表于 2012-9-25 20:14:45 | 只看该作者
看到这个我还是老老实实去捣鼓数据库吧
一碰脚本就晕死……
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1641
在线时间
2205 小时
注册时间
2010-6-27
帖子
1299
5
发表于 2012-9-25 20:26:25 | 只看该作者
老早就有了 ……
不过有想法不错

于是我也广告下…
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3582
在线时间
3065 小时
注册时间
2011-11-17
帖子
980
6
发表于 2012-9-25 20:29:46 | 只看该作者
  1. module RPG
  2.   class Enemy
  3.      def lv
  4.    return 1 if @name.split(/@/)[1] == nil
  5.    return @name.split(/@/)[1].to_i
  6. end
  7. def name
  8.       return @name.split(/@/)[0]
  9.     end

  10. end
  11. end
复制代码
  1. #==============================================================================
  2. # ■ Game_Enemy
  3. #------------------------------------------------------------------------------
  4. #  处理敌人的类。本类在 Game_Troop 类 ($game_troop) 的
  5. # 内部使用。
  6. #==============================================================================

  7. class Game_Enemy < Game_Battler
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #     troop_id     : 循环 ID
  11.   #     member_index : 循环成员的索引
  12.   #--------------------------------------------------------------------------
  13.   def initialize(troop_id, member_index)
  14.     super()
  15.     @troop_id = troop_id
  16.     @member_index = member_index
  17.     troop = $data_troops[@troop_id]
  18.     @enemy_id = troop.members[@member_index].enemy_id
  19.     enemy = $data_enemies[@enemy_id]
  20.     @battler_name = enemy.battler_name
  21.     @battler_hue = enemy.battler_hue
  22.     @hp = maxhp
  23.     @sp = maxsp
  24.     @hidden = troop.members[@member_index].hidden
  25.     @immortal = troop.members[@member_index].immortal
  26.   end
  27.   
  28.   
  29.   #--------------------------------------------------------------------------
  30.   # ● 获取敌人 ID
  31.   #--------------------------------------------------------------------------
  32.   def id
  33.     return @enemy_id
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 获取索引
  37.   #--------------------------------------------------------------------------
  38.   def index
  39.     return @member_index
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● 获取名称
  43.   #--------------------------------------------------------------------------
  44.   def name
  45.     return $data_enemies[@enemy_id].name
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 获取基本 MaxHP
  49.   #--------------------------------------------------------------------------
  50.   def base_maxhp
  51.     return $data_enemies[@enemy_id].maxhp * $data_enemies[@enemy_id].lv
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   # ● 获取基本 MaxSP
  55.   #--------------------------------------------------------------------------
  56.   def base_maxsp
  57.     return $data_enemies[@enemy_id].maxsp * $data_enemies[@enemy_id].lv
  58.   end
  59.   #--------------------------------------------------------------------------
  60.   # ● 获取基本力量
  61.   #--------------------------------------------------------------------------
  62.   def base_str
  63.     return $data_enemies[@enemy_id].str * $data_enemies[@enemy_id].lv
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ● 获取基本灵巧
  67.   #--------------------------------------------------------------------------
  68.   def base_dex
  69.     return $data_enemies[@enemy_id].dex * $data_enemies[@enemy_id].lv
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ● 获取基本速度
  73.   #--------------------------------------------------------------------------
  74.   def base_agi
  75.     return $data_enemies[@enemy_id].agi * $data_enemies[@enemy_id].lv
  76.   end
  77.   #--------------------------------------------------------------------------
  78.   # ● 获取基本魔力
  79.   #--------------------------------------------------------------------------
  80.   def base_int
  81.     return $data_enemies[@enemy_id].int * $data_enemies[@enemy_id].lv
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 获取基本攻击力
  85.   #--------------------------------------------------------------------------
  86.   def base_atk
  87.     return $data_enemies[@enemy_id].atk * $data_enemies[@enemy_id].lv
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 获取基本物理防御
  91.   #--------------------------------------------------------------------------
  92.   def base_pdef
  93.     return $data_enemies[@enemy_id].pdef * $data_enemies[@enemy_id].lv
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ● 获取基本魔法防御
  97.   #--------------------------------------------------------------------------
  98.   def base_mdef
  99.     return $data_enemies[@enemy_id].mdef * $data_enemies[@enemy_id].lv
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ● 获取基本回避修正
  103.   #--------------------------------------------------------------------------
  104.   def base_eva
  105.     return $data_enemies[@enemy_id].eva
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 普通攻击 获取攻击方动画 ID
  109.   #--------------------------------------------------------------------------
  110.   def animation1_id
  111.     return $data_enemies[@enemy_id].animation1_id
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● 普通攻击 获取对像方动画 ID
  115.   #--------------------------------------------------------------------------
  116.   def animation2_id
  117.     return $data_enemies[@enemy_id].animation2_id
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ● 获取属性修正值
  121.   #     element_id : 属性 ID
  122.   #--------------------------------------------------------------------------
  123.   def element_rate(element_id)
  124.     # 获取对应属性有效度的数值
  125.     table = [0,200,150,100,50,0,-100]
  126.     result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
  127.     # 状态能防御本属性的情况下效果减半
  128.     for i in @states
  129.       if $data_states[i].guard_element_set.include?(element_id)
  130.         result /= 2
  131.       end
  132.     end
  133.     # 过程结束
  134.     return result
  135.   end
  136.   #--------------------------------------------------------------------------
  137.   # ● 获取属性有效度
  138.   #--------------------------------------------------------------------------
  139.   def state_ranks
  140.     return $data_enemies[@enemy_id].state_ranks
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ● 属性防御判定
  144.   #     state_id : 状态 ID
  145.   #--------------------------------------------------------------------------
  146.   def state_guard?(state_id)
  147.     return false
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ● 获取普通攻击属性
  151.   #--------------------------------------------------------------------------
  152.   def element_set
  153.     return []
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # ● 获取普通攻击的状态变化 (+)
  157.   #--------------------------------------------------------------------------
  158.   def plus_state_set
  159.     return []
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● 获取普通攻击的状态变化 (-)
  163.   #--------------------------------------------------------------------------
  164.   def minus_state_set
  165.     return []
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # ● 获取行动
  169.   #--------------------------------------------------------------------------
  170.   def actions
  171.     return $data_enemies[@enemy_id].actions
  172.   end
  173.   #--------------------------------------------------------------------------
  174.   # ● 获取 EXP
  175.   #--------------------------------------------------------------------------
  176.   def exp
  177.     return $data_enemies[@enemy_id].exp
  178.   end
  179.   #--------------------------------------------------------------------------
  180.   # ● 获取金钱
  181.   #--------------------------------------------------------------------------
  182.   def gold
  183.     return $data_enemies[@enemy_id].gold
  184.   end
  185.   #--------------------------------------------------------------------------
  186.   # ● 获取物品 ID
  187.   #--------------------------------------------------------------------------
  188.   def item_id
  189.     return $data_enemies[@enemy_id].item_id
  190.   end
  191.   #--------------------------------------------------------------------------
  192.   # ● 获取武器 ID
  193.   #--------------------------------------------------------------------------
  194.   def weapon_id
  195.     return $data_enemies[@enemy_id].weapon_id
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ● 获取防具 ID
  199.   #--------------------------------------------------------------------------
  200.   def armor_id
  201.     return $data_enemies[@enemy_id].armor_id
  202.   end
  203.   #--------------------------------------------------------------------------
  204.   # ● 获取宝物出现率
  205.   #--------------------------------------------------------------------------
  206.   def treasure_prob
  207.     return $data_enemies[@enemy_id].treasure_prob
  208.   end
  209.   #--------------------------------------------------------------------------
  210.   # ● 取得战斗画面 X 坐标
  211.   #--------------------------------------------------------------------------
  212.   def screen_x
  213.     return $data_troops[@troop_id].members[@member_index].x
  214.   end
  215.   #--------------------------------------------------------------------------
  216.   # ● 取得战斗画面 Y 坐标
  217.   #--------------------------------------------------------------------------
  218.   def screen_y
  219.     return $data_troops[@troop_id].members[@member_index].y
  220.   end
  221.   #--------------------------------------------------------------------------
  222.   # ● 取得战斗画面 Z 坐标
  223.   #--------------------------------------------------------------------------
  224.   def screen_z
  225.     return screen_y
  226.   end
  227.   #--------------------------------------------------------------------------
  228.   # ● 逃跑
  229.   #--------------------------------------------------------------------------
  230.   def escape
  231.     # 设置隐藏标志
  232.     @hidden = true
  233.     # 清除当前行动
  234.     self.current_action.clear
  235.   end
  236.   #--------------------------------------------------------------------------
  237.   # ● 变身
  238.   #     enemy_id : 变身为的敌人 ID
  239.   #--------------------------------------------------------------------------
  240.   def transform(enemy_id)
  241.     # 更改敌人 ID
  242.     @enemy_id = enemy_id
  243.     # 更改战斗图形
  244.     @battler_name = $data_enemies[@enemy_id].battler_name
  245.     @battler_hue = $data_enemies[@enemy_id].battler_hue
  246.     # 再生成行动
  247.     make_action
  248.   end
  249.   #--------------------------------------------------------------------------
  250.   # ● 生成行动
  251.   #--------------------------------------------------------------------------
  252.   def make_action
  253.     # 清除当前行动
  254.     self.current_action.clear
  255.     # 无法行动的情况
  256.     unless self.movable?
  257.       # 过程结束
  258.       return
  259.     end
  260.     # 抽取现在有效的行动
  261.     available_actions = []
  262.     rating_max = 0
  263.     for action in self.actions
  264.       # 确认回合条件
  265.       n = $game_temp.battle_turn
  266.       a = action.condition_turn_a
  267.       b = action.condition_turn_b
  268.       if (b == 0 and n != a) or
  269.          (b > 0 and (n < 1 or n < a or n % b != a % b))
  270.         next
  271.       end
  272.       # 确认 HP 条件
  273.       if self.hp * 100.0 / self.maxhp > action.condition_hp
  274.         next
  275.       end
  276.       # 确认等级条件
  277.       if $game_party.max_level < action.condition_level
  278.         next
  279.       end
  280.       # 确认开关条件
  281.       switch_id = action.condition_switch_id
  282.       if switch_id > 0 and $game_switches[switch_id] == false
  283.         next
  284.       end
  285.       # 符合条件 : 添加本行动
  286.       available_actions.push(action)
  287.       if action.rating > rating_max
  288.         rating_max = action.rating
  289.       end
  290.     end
  291.     # 最大概率值作为 3 合计计算(0 除外)
  292.     ratings_total = 0
  293.     for action in available_actions
  294.       if action.rating > rating_max - 3
  295.         ratings_total += action.rating - (rating_max - 3)
  296.       end
  297.     end
  298.     # 概率合计不为 0 的情况下
  299.     if ratings_total > 0
  300.       # 生成随机数
  301.       value = rand(ratings_total)
  302.       # 设置对应生成随机数的当前行动
  303.       for action in available_actions
  304.         if action.rating > rating_max - 3
  305.           if value < action.rating - (rating_max - 3)
  306.             self.current_action.kind = action.kind
  307.             self.current_action.basic = action.basic
  308.             self.current_action.skill_id = action.skill_id
  309.             self.current_action.decide_random_target_for_enemy
  310.             return
  311.           else
  312.             value -= action.rating - (rating_max - 3)
  313.           end
  314.         end
  315.       end
  316.     end
  317.   end
  318. end
复制代码

点评

唉,,,可惜,我用的是VA  发表于 2012-9-25 21:39
XP  发表于 2012-9-25 20:43
这是XP的还是?  发表于 2012-9-25 20:43
用法是 敌人名字后面加@等级 比如 幽灵@10 数据库里的属性都是成长率 比如力量设定10 幽灵 力量就是10 幽灵@10 力量就是100  发表于 2012-9-25 20:31
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

7
发表于 2012-9-25 20:31:29 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

8
发表于 2012-9-25 20:49:54 | 只看该作者
我会说我很喜欢搞弄数据库么?
你只需要一个大致的数字即可。不用考虑太高的,也不用考虑太低的。实际上我都是这么想,然后平衡一般都没问题。

点评

↓比如我-。-  发表于 2012-9-25 21:07
居然还有人喜欢搞弄数据库……  发表于 2012-9-25 20:58
主要是对那个伤害度,没有一个概念。  发表于 2012-9-25 20:56
其实实际操作起来,那个大致数据不好拿捏。。  发表于 2012-9-25 20:55
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
758
在线时间
2064 小时
注册时间
2011-10-3
帖子
1686
9
发表于 2012-9-25 21:00:50 | 只看该作者
我一般是先考虑打到这个阶段主角有几级,然后设个几级,再慢慢测试

评分

参与人数 1星屑 +2 收起 理由
Password + 2 我也是……

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
23
在线时间
585 小时
注册时间
2012-7-3
帖子
2123
10
发表于 2012-9-25 21:14:15 | 只看该作者
设置数据库确实让人头疼...
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-20 00:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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