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

Project1

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

[已经解决] 如何突破战斗公式的字数限制!

[复制链接]

Lv2.观梦者

梦石
0
星屑
736
在线时间
532 小时
注册时间
2011-10-3
帖子
2237
跳转到指定楼层
1
发表于 2014-7-19 17:43:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
所以又来求助了嘛~

目前的战斗公式:

a.skill_learn?($data_skills[392])?(b.add_state(42)+a.atk*4-b.def*2+(a.mhp-a.hp)*0.25):(b.add_state(42)+a.atk*4-b.def*2)

当使用者学会392号技能时,执行左边的(b.add_state(42)+a.atk*4-b.def*2+(a.mhp-a.hp)*0.25),否则执行(b.add_state(42)+a.atk*4-b.def*2)

但是把这个战斗公式复制到数据库:

a.skill_learn?($data_skills[392])?(b.add_state(42)+a.atk*4-b.def*2+(a.mhp-a.hp)*0.25):(b.add_state(4

VA的战斗公式很好用,但是字数限制对这种情况来说略坑。
之所以(b.add_state(42)不添加到附加状态节省字数主要是想先附加状态再造成伤害(这个状态是减防,后附加的情况我没注意会不会影响本次伤害)

我的想法有两个但是目前来看都不太可行的样子啊:
1.调用写在注释栏的公式
2.专门开一个脚本页用于调用

如何突破战斗公式的字数限制呢?求解。

点评

这么长的公式,你写到脚本里去不就完了嘛~  发表于 2014-7-19 18:23

Lv3.寻梦者 (版主)

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

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

开拓者贵宾

2
发表于 2014-7-19 17:44:27 | 只看该作者
本帖最后由 taroxd 于 2014-7-19 17:46 编辑
我的想法有两个但是目前来看都不太可行的样子啊:
1.调用写在注释栏的公式
2.专门开一个脚本页用于调用


两个都是可行的:
1. eval $data_skills[技能id].note
2. 修改 Game_Battler#make_damage_value 的第一行即可。或者可以通过 $RGSS_SCRIPTS[脚本页编号][3] 获取脚本页的内容

点评

会,但你可以在其他注释前面打上 #(简单),或者修改技能公式使之只读取需要的部分(麻烦)  发表于 2014-7-20 11:18
那如果注释区里本身有其他注释,会不会冲突?  发表于 2014-7-20 11:14
不要,直接写公式  发表于 2014-7-19 19:03
在备注栏写公式要套什么东西吗?比如<>?  发表于 2014-7-19 19:00
第一种方法,技能公式就写 eval $data_skills[技能id].note, 然后备注栏里写公式  发表于 2014-7-19 18:45

评分

参与人数 2星屑 +25 梦石 +1 收起 理由
VIPArcher + 1 认可答案
神秘影子 + 25 谢谢啦

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

受到警告 3
发表于 2014-7-19 23:04:10 | 只看该作者
就按照楼上说的办吧···

评分

参与人数 1星屑 -30 收起 理由
VIPArcher -30 灌水 &amp;&amp; 屠版

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
帖子
799
4
发表于 2014-7-20 09:31:36 | 只看该作者
我给你我的做法吧。其实在救世小树里的计算公式我也问过了

# ■ Game_Battler
#==============================================================================
  1. class Game_Battler < Game_BattlerBase

  2. def make_damage_value(user, item)
  3.     value = item.damage.eval(user, self, $game_variables)
  4.   
  5.     if item.is_a?(RPG::Skill)
  6.      case item.id

  7.           when 83,84,88
  8.         if user.agi >= (self.agi + 20) && !self.guard? && (user.agi - self.agi + 20)* user.level/2.5 <= user.level * 15
  9.           value += (user.agi - self.agi + 20)* user.level/2.5
  10.           elsif user.agi >= (self.agi + 20) && !self.guard? && (user.agi - self.agi + 20)* user.level/2.5 > user.level * 15
  11.           value += user.level * 15
  12.           elsif user.agi >= (self.agi + 20) && self.guard?
  13.           value += (user.agi - self.agi + 20)* user.level/2.5
  14.           value *= 0.5
  15.           elsif user.agi < (self.agi + 20) && self.guard?
  16.           value *= 0.5
  17.         end
  18. #############################################
  19.        when 245  
  20.           if user.mdf >= 85 && user.mdf <= 155
  21.             value *= ( 1 + (user.mdf - 85) * 0.01)
  22.            elsif user.mdf >= 155
  23.             value *= 1.7
  24.           end
  25.           if user.state?(269)
  26.             if user.luk >= 100
  27.               $game_variables[101] = rand(1000)
  28.               elsif user.luk >= 92
  29.               $game_variables[101] = rand(850)
  30.               elsif user.luk >= 86
  31.               $game_variables[101] = rand(500)
  32.               elsif user.luk >= 70
  33.               $game_variables[101] = rand(300)            
  34.             end
  35.             if $game_variables[101] >= 150
  36.               $game_variables[121] = 1
  37.               value *= 2
  38.            end
  39.          end            
  40.             
  41.            value *= item_element_rate(user, item)
  42.     value *= pdr if item.physical?
  43.     value *= mdr if item.magical?
  44.     value *= rec if item.damage.recover?
  45.     value = apply_critical(value) if @result.critical
  46.     value = apply_variance(value, item.damage.variance)
  47.     value = apply_guard(value)
  48.     @result.make_damage(value.to_i, item)
  49.   end
复制代码
这两个举例的计算公式够长了吧

点评

嗯。A=USER,B=SELF。只写A.跟B.的话脚本是会出错的。  发表于 2014-7-20 17:15
user和self分别指的是使用者和被使用对象?  发表于 2014-7-20 11:16
嗯,我在看  发表于 2014-7-20 11:15
其中,WHEN后面的就是技能ID,要记住。技能ID只能出现一次,不然的话其中一个是会被覆盖住的。  发表于 2014-7-20 09:35

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 09:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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