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

Project1

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

[已经解决] 不知道大家有没有脚本伤害算法的教程之类的。

[复制链接]

Lv2.观梦者

梦石
0
星屑
524
在线时间
329 小时
注册时间
2013-5-16
帖子
740
跳转到指定楼层
1
发表于 2014-7-21 23:36:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
想自力更生,学习一下脚本算法。能有比较完善的教程或者是大家能把各个算法的代码列举出来吗?
如果可以,顺便说明下怎么写在事件脚本框里才能起效。
承接各类软件制作以及手机APP等...
我来开始为您讲述一个故事。
有一天,小明去了一个恐怖的森林。
他走了三天三夜,竟然发现了一位漂亮的公主。
公主指着遥远的另一边说。
   那里。才是我们的王堡

[零度火花论坛。原创游戏制作新城堡。请点击。期待来临。]
[零度火花论坛。原创游戏制作新城堡。请点击。期待来临。]
[零度火花论坛。原创游戏制作新城堡。请点击。期待来临。]
(温馨提示:我长达一年以及更久的时间内我没有打理也不会打理零度火花,广告机已经逆天,所以大家最好不要戳进去...)

Lv3.寻梦者 (版主)

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

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

开拓者贵宾

2
发表于 2014-7-22 05:28:04 | 只看该作者
本帖最后由 taroxd 于 2014-7-22 05:53 编辑

伤害算法……脚本里不都写着么……

VA在make_damage_value里面,XP我没看过,但是位置应该差不多的吧……

我只说,RGSS的脚本里几乎不涉及「算法」这个概念……

点评

所以高深只是一步步建立在基础之上的。  发表于 2014-7-22 09:29
高深只是相对而言。如果有领先地球一百年的科技,用它的算法来看现在所谓的高深算法,那就不高深了。  发表于 2014-7-22 09:28
RGSS里面又没什么很高深的算法啥的  发表于 2014-7-22 09:23
表达式  发表于 2014-7-22 09:22
算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。那 1+1=2 叫什么?  发表于 2014-7-22 09:20
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
165
在线时间
809 小时
注册时间
2013-8-23
帖子
804

开拓者

3
发表于 2014-7-22 08:34:14 | 只看该作者
xp的帮助里就有脚本教程
遗失的签名。。。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33071
在线时间
5103 小时
注册时间
2012-11-19
帖子
4878

开拓者

4
发表于 2014-7-22 09:16:54 | 只看该作者
XP 的在 Game_Battler 3
42 行:def attack_effect(attacker)  是普通攻击的计算。
103行:def skill_effect(user, skill)    是特技攻击的计算。
其实伤害的计算过程,只要LZ 清楚里面的每个变量代表什么,就知道是怎么计算的了。

点评

可以……  发表于 2014-7-22 09:57
俺可以吐槽“没有什么东西是绝对的”这句话是个悖论吗?  发表于 2014-7-22 09:57
↓俺的意思只是:1,没有什么东西是绝对的。2,不能忘本。3,学无止境。  发表于 2014-7-22 09:32
“学习一下脚本算法。能有比较完善的教程或者是大家能把各个算法的代码列举出来吗”可能是我们对这句话的理解不同吧  发表于 2014-7-22 09:24

评分

参与人数 1星屑 +252 收起 理由
弗雷德 + 252 好久不见

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
524
在线时间
329 小时
注册时间
2013-5-16
帖子
740
5
 楼主| 发表于 2014-7-22 13:21:17 | 只看该作者
芯☆淡茹水 发表于 2014-7-22 09:16
XP 的在 Game_Battler 3
42 行:def attack_effect(attacker)  是普通攻击的计算。
103行:def skill_effec ...

嗯,大概的意思就是想知道各个代码代表什么含义,怎么组合起来生效= =

点评

自己找教程学去,这个没法教  发表于 2014-7-22 13:23
承接各类软件制作以及手机APP等...
我来开始为您讲述一个故事。
有一天,小明去了一个恐怖的森林。
他走了三天三夜,竟然发现了一位漂亮的公主。
公主指着遥远的另一边说。
   那里。才是我们的王堡

[零度火花论坛。原创游戏制作新城堡。请点击。期待来临。]
[零度火花论坛。原创游戏制作新城堡。请点击。期待来临。]
[零度火花论坛。原创游戏制作新城堡。请点击。期待来临。]
(温馨提示:我长达一年以及更久的时间内我没有打理也不会打理零度火花,广告机已经逆天,所以大家最好不要戳进去...)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
6
发表于 2014-7-22 14:46:43 | 只看该作者
本帖最后由 恐惧剑刃 于 2014-7-22 14:58 编辑

不会被那个范例影响了吧?
提到的算法具体指的就是伤害的算法。
那个范例我现在都觉得几乎可以作废重写了…………
或许应该新建一个类专门记录敌人而不是直接写在Game_Event内,毕竟又不是所有的事件都是敌人…………

如果想要扩展
打开帮助搜索RPG::Enemy下方有内部原码,把所有“attr_accessor :”全部复制过去(当然actions可以删除)并且初始化
这样就定义了属性,至少再当  事件.maxhp 的时候不至于报错(默认事件又没有hp这一说)

新的敌人数据参考
  1. #事件敌人的类
  2. class Event_Enemy
  3.   #——直接从RPG::Enemy复制……
  4.   def initialize(id)#参数敌人id
  5.     #直接拉数据库
  6.     enemy = $data_enemies[id]
  7.    
  8.     @id = enemy.id
  9.     @name = enemy.name
  10.     #@battler_name = ""
  11.     #@battler_hue = 0
  12.     @maxhp = enemy.maxhp
  13.     @maxsp = enemy.maxsp
  14.     @str = enemy.str
  15.     @dex = enemy.dex
  16.     [url=home.php?mod=space&uid=6136]@agi[/url] = enemy.agi
  17.     @int = enemy.int
  18.     [url=home.php?mod=space&uid=101599]@atk[/url] = enemy.atk
  19.     @pdef = enemy.pdef
  20.     @mdef = enemy.mdef
  21.     [url=home.php?mod=space&uid=284635]@eva[/url] = enemy.eva
  22.     @animation1_id = enemy.animation1_id
  23.     @animation2_id = enemy.animation2_id
  24.     @element_ranks = enemy.element_ranks
  25.     @state_ranks = enemy.state_ranks
  26.     #@actions = [RPG::Enemy::Action.new]
  27.     @exp = enemy.exp
  28.     @gold = enemy.gold
  29.     @item_id = enemy.item_id
  30.     @weapon_id = enemy.weapon_id
  31.     @armor_id = enemy.armor_id
  32.     @treasure_prob = enemy.treasure_prob
  33.    
  34.    
  35.     #当前生命与精神
  36.     @hp = @maxhp
  37.     @sp = @maxsp
  38.   end
  39.   attr_accessor :id
  40.   attr_accessor :name
  41.   #attr_accessor :battler_name
  42.   #attr_accessor :battler_hue
  43.   attr_accessor :maxhp
  44.   attr_accessor :maxsp
  45.   attr_accessor :str
  46.   attr_accessor :dex
  47.   attr_accessor :agi
  48.   attr_accessor :int
  49.   attr_accessor :atk
  50.   attr_accessor :pdef
  51.   attr_accessor :mdef
  52.   attr_accessor :eva
  53.   attr_accessor :animation1_id
  54.   attr_accessor :animation2_id
  55.   attr_accessor :element_ranks
  56.   attr_accessor :state_ranks
  57.   #attr_accessor :actions
  58.   attr_accessor :exp
  59.   attr_accessor :gold
  60.   attr_accessor :item_id
  61.   attr_accessor :weapon_id
  62.   attr_accessor :armor_id
  63.   attr_accessor :treasure_prob#宝物出现率
  64.   
  65.   
  66.   #当前生命与精神
  67.   attr_accessor :hp, :sp
  68. end




  69. #系统Game_Temp数据
  70. class Game_Temp
  71.   attr_accessor :events#敌人事件们  
  72.   alias ini_events_old initialize
  73.   #初始化
  74.   def initialize
  75.     ini_events_old
  76.     @events = {}
  77.    
  78.   end
  79.   
  80.   
  81.   #设置敌人
  82.   def set_events(event_id, id)
  83.     @events[event_id] = Event_Enemy.new(id)
  84.   end
  85.   
  86. end






  87. #自动打开一些开关,并且设置敌人数据
  88. class Game_Map
  89.   alias setup_switch_old setup
  90.   def setup(map_id)
  91.     setup_switch_old(map_id)
  92.     # 判断事件
  93.     for event in @events.values
  94.       if event.list[0].code == 108 and
  95.         event.list[0].parameters[0].include?("敌人")
  96.         #禁用菜单
  97.        # $game_system.menu_disabled = true if !$game_system.menu_disabled
  98.         # 设置敌人数据
  99.         $game_temp.set_events(
  100.         event.id, event.list[0].parameters[0].split(/:/)[1].to_i)
  101.       end
  102.     end
  103.   end
  104. end
复制代码
敌人的设置,在事件页的第一页的第一行事件中输入注释  “敌人:敌人ID” 就自动生成了一个敌人
总之比之前写在Game_Event或许要好一些




如果还想使用默认的伤害算法,这可难了(至少比之前都难多了)~
因为Game_Event可不是Game_Battler的子类!!所以就算你补全各种attr,也不能   事件.attack_effect(角色)


不过可以这样,直接用更简单的方式应用伤害就好~
打开帮助找到 战斗计算式   参考计算式  开始写伤害算法

比如:普通攻击的算法
这里没有考虑,可能的状态附加效果
  1. def 普通攻击应用效果(攻击者, 被K者)
  2.   命中 = rand(100) < 攻击者.hit
  3.   if 命中#一般命中
  4.     会心一击 = rand(100) < 4 * 攻击者.dex / 被K者.agi
  5.     伤害 = 攻击者.atk - 被K者.pdef / 2
  6.     if 会心一击#必杀
  7.       伤害 *= 2 #伤害翻倍
  8.     end
  9.   else
  10.     伤害 = 0
  11.   end
  12.   #应用伤害
  13.   被K者.hp -= 伤害
  14.   return
  15. end
复制代码
总之那个范例可扩展和优化的地方很多 抱歉

如果LZ要自己研究的话,或许可以把那个范例当作一中思路参考,打造一个完全属于自己的战斗系统!

评分

参与人数 1星屑 +66 收起 理由
RyanBern + 66 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-22 04:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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