Project1

标题: 怎么简单做到同一把武器不同人或职业装备会有不同效果? [打印本页]

作者: 雷影    时间: 2015-1-15 23:59
标题: 怎么简单做到同一把武器不同人或职业装备会有不同效果?
比如一把短刀给战士装备仅仅是攻击力提升,给盗贼装备就会有速度提升的效果!
一把大剑战士装备就会攻击上升,盗贼装备就会速度下降!
作者: DivineCrow    时间: 2015-1-16 04:21
本帖最后由 DivineCrow 于 2015-1-16 04:22 编辑

亚梦梦回答过个类似的问题  @三途亚梦
https://rpg.blue/thread-370979-1-27.html

我觉得可以按照这个  然后把增减技能改成添加状态

不过缺点就是添加的东西在装备属性里面不会显示   (也可以算是优点?
作者: tseyik    时间: 2015-1-16 09:04
本帖最后由 tseyik 于 2015-1-16 09:12 编辑

1:為各職業/角色設定一些自動發動的專用状態或技能(能力増減)
2:再設定職業/角色,裝備某些裝備/裝備類那些專用状態或技能就自動有効
大約就是這様
作者: chd114    时间: 2015-1-17 17:37
  1. class Game_Actor
  2.   alias_method :c4_20150117, :param_plus
  3.   def param_plus(id)
  4.     old = c4_20150117(id)
  5.     for i in 0...equips.size
  6.       if equips[i]!=nil
  7.         if id == 3#物理防御
  8.           if class_id==8#职业是盗贼
  9.             old-=equips[i].params[3]/10 if equips[i].etype_id==1#则盾牌增加的物理防御减少10%
  10.           end
  11.         end
  12.       end
  13.     end
  14.     old
  15.   end
  16. end
复制代码
参照这个修改吧?
作者: 雷影    时间: 2015-1-17 23:22

整个代码看起来好像是,是符合条件时,修改数据库中指定装备的属性啊。哪不是装备第一人是数值改变了,取下来后装备不是已经是修改后的数值了么?第二人装备时不就是用被修改后的数值再计算么??
class Game_Actor
  alias_method :c4_20150117, :param_plus
  def param_plus(id)
    old = c4_20150117(id)
    for i in 0...equips.size
      if equips[i]!=nil
        if id == 3#物理防御  (id==3是数据库中3号位置的装备么?是怎么判断这ID武器还是防具的?)
          if class_id==8#职业是盗贼
            old-=equips[i].params[3]/10 if equips[i].etype_id==1#则盾牌增加的物理防御减少10%                                   
                               (params[3]/10要怎么理解?看起来是什么数值除以10的样子)
                                                                    (etype是装备类型吧!1是防具?哪2之后都是什么?)
          end
        end
      end
    end
    old
  end
end
作者: chd114    时间: 2015-1-18 09:28
雷影 发表于 2015-1-17 06:22
整个代码看起来好像是,是符合条件时,修改数据库中指定装备的属性啊。哪不是装备第一人是数值改变了,取 ...

id和param()的3都指物理防御···Game_BattlerBase里面有具体的设定,0为MHP、1为MMP、2为物理攻击···etype_id是装备的位置,p一下角色的equip_slots就会看到二刀流角色的装备位置是[0,0,2,3,4]而普通角色装备位置是[0,1,2,3,4]1默认是盾牌···2、3、4分别对应头盔、铠甲、饰品
作者: chd114    时间: 2015-1-18 12:01
chd114 发表于 2015-1-17 16:28
id和param()的3都指物理防御···Game_BattlerBase里面有具体的设定,0为MHP、1为MMP、2为物理攻击·· ...
点评


雷影  了解了!十分感谢,没有问题了。  发表于 4 分钟前

@taroxd @VIPArcher 问题解决···
作者: 雷影    时间: 2015-1-18 15:26
能不能帮看看,怎么优化这段代码吗??
#武器装备因职业,人物不同产生不同效果的设定
#id和param()的3都指物理防御···Game_BattlerBase里面有具体的设定,
#0为MHP、1为MMP、2为物理攻击···etype_id是装备的位置,
#p一下角色的equip_slots就会看到二刀流角色的装备位置是[0,0,2,3,4]而普通角色装备位置是[0,1,2,3,4]1默认是盾牌···2、3、4分别对应头盔、铠甲、饰品
#actor_id就是角色ID,class_id是职业ID
class Game_Actor
  alias_method :c4_20150117, :param_plus
  def param_plus(id)
    old = c4_20150117(id)
    for i in 0...equips.size  
      if equips[i]!=nil
        if equips[i].id==1 #ID为武器或者防具数据库里编号
          if id == 2 #处理物理攻击力的变化(当武器是1,2号主角装备时)
            if actor_id==1 #1号主角
              old+=equips[i].params[2]/10  if equips[i].etype_id==0#获得10%攻击力加成           
              end
            if actor_id==2 #2号主角
              old+=equips[i].params[2]/2 if equips[i].etype_id==0#获得50%攻击力加成
            end
          end
          if id == 6 #处理敏捷值的变化
            if actor_id==1#1号主角
              old+=equips[i].params[6]/10  if equips[i].etype_id==0#获得10%敏捷加成           
              end
            if actor_id==2#2号主角
              old+=equips[i].params[6]/2 if equips[i].etype_id==0#获得50%敏捷加成
            end
          end
        end
      end
    end
    old
  end
end
作者: chd114    时间: 2015-1-18 16:19
雷影 发表于 2015-1-17 22:26
能不能帮看看,怎么优化这段代码吗??
#武器装备因职业,人物不同产生不同效果的设定
#id和param()的3都指 ...
  1. if actor_id==1#1号主角
  2.    old+=equips[i].params[6]/10  if equips[i].etype_id==0#获得10%敏捷加成           
  3. end
复制代码
改成
  1.    old+=equips[i].params[6]/10  if equips[i].etype_id==0 and actor_id==1
复制代码
可以省2行···
作者: chd114    时间: 2015-1-23 09:55
VA的数据库设置本来就有装备武器后习得技能的特性···只要你能用那个类型的技能就可以···

作者: kyifae    时间: 2015-1-23 10:19
或者做一个分歧条件当为某个职业时增加某个效果
作者: chd114    时间: 2015-1-23 10:57
公共事件并行···

作者: tseyik    时间: 2015-1-23 20:53
我没用過
特徴欄拡張
http://blueredzone.com/script/vxace/vxace_featuresextension.html
たとえば職業IDを条件にして職業に応じて攻撃力上昇,攻撃力減少の特徴を武器に付けておくことで
職業による得意武器,苦手武器なんてものを作ることもできます.

もちろん複数の条件を組み合わせることも可能です.

また条件に指定できる項目は条件セットとして別スクリプトで追加する形になっています.
この中身をみると分かりますが,非常に簡単に条件セットを追加できるようになっているので
独自の条件を簡単につくることができます.




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