Project1

标题: 关于道具属性修改的请教 [打印本页]

作者: urufu    时间: 2010-8-26 02:17
标题: 关于道具属性修改的请教
请问一下各位朋友,在人物属性中可以A B C D E F还决定命中率和伤害,但是道具却不可以。
比如我想火之戒指防御火20%,但是只有一个打√的框框,默认50%,这个一半可以修改吗?
还有状态也是一样,比如诅咒的铠甲我想强加状态,但是里面也只能打钩钩变成100%免疫。
这个50和100能不能让我活动的变动呢?变为-100%到200%等等。
希望大家能够帮忙,谢谢啦!
作者: urufu    时间: 2010-8-26 02:19
追加一点,能不能把那个框框改为填入百分比数值,默认100%。
这个可以通过脚本直接修改RPG maker执行程序吗?
作者: 冰舞蝶恋    时间: 2010-8-26 10:27
- -
框框,绝对不可能在编辑器里改。但是,也许可以通过脚本在游戏中改吧……
作者: urufu    时间: 2010-8-26 11:08
那么还如何改呢?需要改脚本吗?那么的话数值在哪里设定呢?
作者: wangswz    时间: 2010-8-26 13:31
我看了下脚本里的代码
Game_Actor
  1.   #--------------------------------------------------------------------------
  2.   # ● 取得属性修正值
  3.   #     element_id : 属性 ID
  4.   #--------------------------------------------------------------------------
  5.   def element_rate(element_id)
  6.     rank = self.class.element_ranks[element_id]
  7.     result = [0,200,150,100,50,0,-100][rank]
  8.     for armor in armors.compact
  9.       result /= 2 if armor.element_set.include?(element_id)
  10.     end
  11.     for state in states
  12.       result /= 2 if state.element_set.include?(element_id)
  13.     end
  14.     return result
  15.   end
  16.   #--------------------------------------------------------------------------
  17.   # ● 判断防御状态
  18.   #     state_id : 状态 ID
  19.   #--------------------------------------------------------------------------
  20.   def state_resist?(state_id)
  21.     for armor in armors.compact
  22.       return true if armor.state_set.include?(state_id)
  23.     end
  24.     return false
  25.   end
复制代码
设置if判断ID就能很容易了  火炕指环ID1
if armor.include?(1)
这样具体设置
作者: urufu    时间: 2010-8-26 14:11
我看了下脚本里的代码
Game_Actor设置if判断ID就能很容易了  火炕指环ID1
if armor.include?(1)
这样具体 ...
wangswz 发表于 2010-8-26 13:31


恩,太谢谢你了!不过我只学懂C、C++、C#编程语言,对这个脚本还真是不了解。
恩,知道了地点,但是怎样附加修改后的属性呢?
比如,我想改成20%火属性抗性,目前只能打钩(默认50%),那么我要修改的话应该在哪里添加这个属性呢?
可能我的话有些模糊,我举个例子吧。
================================================
  #--------------------------------------------------------------------------
  # * 主角HP自动恢复处理(呼叫于每回合结束时)
  #--------------------------------------------------------------------------
  def do_auto_recovery
    if auto_hp_recover and not dead?
      self.hp += maxhp / 20
    end
  end
============================================
上面是自动回复的代码,我想恢复10%,应该改成self.hp += maxhp / 10就行吧?
但是我想有5%和10%同时存在。
那么问题就来了
1 我应该在哪里添加新代码呢?
2 rpg maker页面上只有一个框框,默认5%,我要添加属性又该在哪里添加呢?在界面的哪一位置呢/

期待帮忙,谢谢啦!!!
作者: 八云紫    时间: 2010-8-26 14:16
回复 urufu 的帖子

但是我想有5%和10%同时存在。

这个需要摸个条件才可以混用吧,比如有佩戴装备的时候是 10%,没有的时候是 5%。
作者: wangswz    时间: 2010-8-26 14:21
本帖最后由 wangswz 于 2010-8-26 14:28 编辑

C.C++总会知道if吧...
我也是学的C.C++ rgss2看的基本没障碍啊...
if armor.include?(1)
判断/5
else #默认的50%
/2
end 貌似这样啊 armor数组push进的值是ID还是别的我也没看懂 多实践吧

或者@armor2_id按位置判断

自动恢复自然也是self.armor2_id = 2 这样分开判断
作者: urufu    时间: 2010-8-26 14:31
回复

但是我想有5%和10%同时存在。

这个需要摸个条件才可以混用吧,比如有佩戴装备的时候是 10%,没有的 ...
魔女真利亞 发表于 2010-8-26 14:16


你好,我不是那个意思的。
我的意思是
A道具战斗自动回复5%
B道具自动回复10%

恢复5%是默认,但是我想加一个自动回复10%
都是佩戴状态。
那么这个代码应该在那里加呢?


作者: urufu    时间: 2010-8-26 14:35
C.C++总会知道if吧...
我也是学的C.C++ rgss2看的基本没障碍啊...
if armor.include?(1)
判断/5
else #默认 ...
wangswz 发表于 2010-8-26 14:21


恩,非常谢谢啊。代码我倒是还看得懂,就是对结构不是很清楚。
如果我新写一段代码,是加在actor里面还是main呢?
然后,里面的变量我怎样在rpg maker上面反映呢?
默认的打够就行,那么我定义的一些属性改写在哪里呢?写在备注里吗?还是?重新全部修改?
不知道能不能把道具的代码全部提取出来?然后修改导入?

新手问题,大家见笑了……
作者: wangswz    时间: 2010-8-26 14:43
多接触接触吧 我的意思是直接if判断装备的防具id来增加回复和抵御的几率数值
只要在数值处分歧修改就好 自定义属性还需要脚本知识支持
你可以搜索一下论坛的新定义角色属性的帖子
还是比较麻烦的
而且数据库只能通过备注 物品名这样的来增改 比较不方便
提取的话不太清楚
道具的自动恢复只是一个关键字 如果人物身上有一件这样提供自动回复的装备就默认自动回复生命x%
如果要新定义数值修改道具是不行的 只能重定义角色自动恢复数值的函数
我觉得VX支持自定义方面不够 比较2
作者: trentswd    时间: 2010-8-27 02:53
{:nm_6:}既然会C,C++,C#,那么事情就好办多了。
把F1里面的脚本入门看完,再看游戏的自带脚本,基本上做游戏就够用了。而且不用从头开始熟悉oop,看完F1应该一个上午没问题。

对物品的自定义看注释吧,RPG::BaseItem.note。沉影不器有个读取这个脚本,把自定义的属性写进去,再在脚本里面读取判断,比直接写条件分歧要直观一些。
作者: urufu    时间: 2010-8-28 10:32
多接触接触吧 我的意思是直接if判断装备的防具id来增加回复和抵御的几率数值
只要在数值处分歧修改就好 自 ...
wangswz 发表于 2010-8-26 14:43


这说到我切身感受了,自定义的确很差。
如果我开发软件,我会在右下角弄一个打开代码,然后自己可以在代码里面修改基本数值。
看来只能通过备注了,不过属性一多,还真的特别麻烦啊……

作者: urufu    时间: 2010-8-28 10:33
既然会C,C++,C#,那么事情就好办多了。
把F1里面的脚本入门看完,再看游戏的自带脚本,基本上做游 ...
trentswd 发表于 2010-8-27 02:53


沉影不器有个读取这个脚本的工具?我搜索了论坛好久都没有发现,置顶帖东西太多了,不知从哪里找起。请问你讷讷个提供给我吗?O(∩_∩)O谢谢!

作者: Fencer_桜    时间: 2010-8-28 11:02
其实根本不需要说的怎么复杂 ~你假如想拉开属性上的防御差距~
你只要先设置 火A 火B 火C 然后敌人属性再 对火A 火B 火C 的防御降低~ 玩家是看不出来你这些手脚的
作者: urufu    时间: 2010-8-28 11:05
其实根本不需要说的怎么复杂 ~你假如想拉开属性上的防御差距~
你只要先设置 火A 火B 火C 然后敌人属性再 对 ...
Fencer_桜 发表于 2010-8-28 11:02

这个的确可以这么修改,但是碰到自动回复呢?
还有加暴击呢?

我想设计一个武器暴击100%,但是现有的工具肯定不行哦~
所以还是得从基础学起啊~


作者: urufu    时间: 2010-8-28 11:10
既然会C,C++,C#,那么事情就好办多了。
把F1里面的脚本入门看完,再看游戏的自带脚本,基本上做游 ...
trentswd 发表于 2010-8-27 02:53


RPG::BaseItem.note?
请问这个物品自定义的注释在哪里啊?

作者: trentswd    时间: 2010-8-29 12:04
RPG::BaseItem.note?
请问这个物品自定义的注释在哪里啊?
urufu 发表于 2010-8-28 11:10


注释就在数据库里面。右下角那一块就是。
脚本可以按照id搜索

作者: urufu    时间: 2010-8-29 17:55
本帖最后由 urufu 于 2010-8-29 18:00 编辑
注释就在数据库里面。右下角那一块就是。
脚本可以按照id搜索
trentswd 发表于 2010-8-29 12:04

谢谢啦。请教一下。
====================================
  def auto_hp_recovery2
    for armor in armors.compact
      return true if armor.auto_hp_recover2
    end
    return false
  end
=====================================
def do_auto_recovery2
    if auto_hp_recover2 and not dead?
      self.hp += maxhp / 10
    end
=====================================
我写了这样一段自动回复10%HP的代码,然后插入game_actor
那么注释怎么写呢?
填写auto_HP_recovery2
还是auto_HP_recovery2=true?
我试了一下,貌似都不行啊……
作者: trentswd    时间: 2010-8-29 19:29
当然不行,你要自己写函数来解析啊,note本身只是一个字符串而已
作者: urufu    时间: 2010-8-30 20:25
当然不行,你要自己写函数来解析啊,note本身只是一个字符串而已
trentswd 发表于 2010-8-29 19:29


果然对这个脚本还不是特别了解。
看来需要全部看一遍啊~ 谢谢你了!
作者: 冰舞蝶恋    时间: 2010-8-30 20:38
头都晕了
默认50%就50%吧,干嘛搞的那么麻烦= =




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1