Project1

标题: 小LIM的脚本:如何通过事件改变武器说明的后缀? [打印本页]

作者: stella    时间: 2007-12-25 20:36
标题: 小LIM的脚本:如何通过事件改变武器说明的后缀?
用的还是小LIM的打造属于自己的装备,在里面通过28、29、30三个属性来判断某武器最多有三个镶嵌孔,找NPC镶嵌一个就减去一个属性,这部分已经完成了。

现在想在NPC镶嵌完之后立即判断装备着的武器是否有28、29与30号属性,如果三个属性都没有就把$last_des这个有多少孔的描述去除,能不能做到?



我在脚本里的描述是:
  if @new_weapon.element_set.include?(28) and  @new_weapon.element_set.include?(29) and @new_weapon.element_set.include?(30)
    $last_des = "3个镶嵌孔"
  elsif @new_weapon.element_set.include?(28) and  @new_weapon.element_set.include?(29)
    $last_des = "2个镶嵌孔"
  elsif @new_weapon.element_set.include?(29) and  @new_weapon.element_set.include?(30)
    $last_des = "2个镶嵌孔"
  elsif @new_weapon.element_set.include?(28)
    $last_des = "1个镶嵌孔"
  elsif @new_weapon.element_set.include?(29)
    $last_des = "1个镶嵌孔"
  elsif @new_weapon.element_set.include?(30)
    $last_des = "1个镶嵌孔"
  end
  @new_weapon.description = $start_des + $first_des + $last_des + $font_color
end [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: stella    时间: 2007-12-25 20:36
标题: 小LIM的脚本:如何通过事件改变武器说明的后缀?
用的还是小LIM的打造属于自己的装备,在里面通过28、29、30三个属性来判断某武器最多有三个镶嵌孔,找NPC镶嵌一个就减去一个属性,这部分已经完成了。

现在想在NPC镶嵌完之后立即判断装备着的武器是否有28、29与30号属性,如果三个属性都没有就把$last_des这个有多少孔的描述去除,能不能做到?



我在脚本里的描述是:
  if @new_weapon.element_set.include?(28) and  @new_weapon.element_set.include?(29) and @new_weapon.element_set.include?(30)
    $last_des = "3个镶嵌孔"
  elsif @new_weapon.element_set.include?(28) and  @new_weapon.element_set.include?(29)
    $last_des = "2个镶嵌孔"
  elsif @new_weapon.element_set.include?(29) and  @new_weapon.element_set.include?(30)
    $last_des = "2个镶嵌孔"
  elsif @new_weapon.element_set.include?(28)
    $last_des = "1个镶嵌孔"
  elsif @new_weapon.element_set.include?(29)
    $last_des = "1个镶嵌孔"
  elsif @new_weapon.element_set.include?(30)
    $last_des = "1个镶嵌孔"
  end
  @new_weapon.description = $start_des + $first_des + $last_des + $font_color
end [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 黑撒旦    时间: 2007-12-25 22:09
LZ的脚本稍加整理,加上方法定义如下:

def set_element(arg)
  $last_des = ""
  s = (arg.find_all{|n| @new_weapon.element_set.include?(n)}).size
  $last_des = "#{s}个镶嵌孔" if s > 0
  @new_weapon.description = $start_des + $first_des + $last_des + $font_color
end

之后,在事件页利用方法所在类的全局实例的调用即可。

比如:$类.set_element([28,29,30])
作者: stella    时间: 2007-12-25 22:55
不大懂。。。如何在事件页利用方法所在类的全局实例的调用啊??事件里的脚本该怎么写?{/gg}


比如在事件里判断1号角色装备着的武器是否有28、29与30号属性,如果三个属性都没有也就是那个s=0的情况下去除$last_des?
作者: 黑撒旦    时间: 2007-12-25 23:05
就是这个脚本所定义的类
如果,已经全局实例化了,在事件的脚本直接用全局变量调用相关方法就行了。

比如:类名如果为Weapon,且脚本中已经实例化了:
$aa = Weapon.new

那么如果想判断28,29,30属性
在事件页的脚本里就可以这样调用:
$aa.set_element([28,29,30]) [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: stella    时间: 2007-12-25 23:18
我自己原来那一段删了,把脚本替换成这样,怎么本来装备有几个孔的描述部分再也没有了?
。。。。。。

。。。。。。
if @new_weapon.agi_plus != 0
    $first_des += "速度,"
  end
  if @new_weapon.dex_plus != 0
    $first_des += "灵巧,"
  end

def set_element(arg)
  $last_des = ""
  s = (arg.find_all{|n| @new_weapon.element_set.include?(n)}).size
  if s > 0
  $last_des = "#{s}个镶嵌孔"   
  end
  @new_weapon.description = $start_des + $first_des + $last_des + $font_color
  end
  @new_weapon.description = $start_des + $first_des + $last_des + $font_color
end

作者: 黑撒旦    时间: 2007-12-25 23:47
$last_des = "#{s}个镶嵌孔"  

这句就是根据属性的多少判定有几个孔。




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