查看: 2446|回复: 11

[已经过期] 想问下:魔塔公共事件中的战斗脚本

[复制链接]
梦石
0
星屑
4761
在线时间
285 小时
注册时间
2013-10-13
回帖
580
发表于 2016-11-29 14:38:01 | 显示全部楼层 |阅读模式

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

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

×
$game_variables[4]=$game_map.events[\
    @event_id].event.name[6,3].to_i
#直接从怪物事件名得到怪物编号
e=Enemy_property.new($game_variables[4])
$game_variables[10]=-e.got_damage
#上一句得到怪物的伤害值
@p1=e.got_p1
@p2=e.got_p2

其中的[\@event_id]是什么意思?event又是什么意思?name[6,3]是什么意思?to_i是什么意思?

点评

event是事件  发表于 2016-11-30 00:25
梦石
0
星屑
4761
在线时间
285 小时
注册时间
2013-10-13
回帖
580
 楼主| 发表于 2016-11-30 14:21:03 | 显示全部楼层
顶起!!
回复

使用道具 举报

梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2016-11-30 17:49:14 | 显示全部楼层
1.$game_variables[4]=$game_map.events[\
@event_id].event.name[6,3].to_i
等于$game_variables[4]=$game_map.events[@event_id].event.name[6,3].to_i 这里是可以不用连接的,可以在这里换行的

2.name[6,3].to_i  这里是获取敌人名字第6个字符起的三个字符然后转为整数比如敌人的 名字叫 "怪物的伤害值9.8" 那么name[6,3].to_i 就得到 9
在xp里面遇到一些不明白的地方,可以试试用 p 来返回它的值从而去试着了解它

点评

嗯,试了下默认的这样是取不出来的  发表于 2016-12-2 11:38
event是RPG::Event,被修改为attr_accessor了  发表于 2016-12-2 09:06
需要注意,每个中文字符算3个字符。事件名起名叫“怪物001”。这个是根据事件名获得怪物编号,[6,3]获得的ID就是"001",然后放到4号变量中。  发表于 2016-12-2 09:05
那个event是一个方法,里面提供了名称处理等其他方法吧  发表于 2016-12-1 15:43
基本明白,可以event不知道在什么地方P,它出现 在公共事件中的  发表于 2016-12-1 15:12
回复

使用道具 举报

梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2016-12-1 16:35:46 | 显示全部楼层
本帖最后由 夜狠简单 于 2016-12-2 11:40 编辑

比如简单的改了一个脚本,调试模式下,在地图上按下键盘S键可以显示当前事件执行页有物品增减指令的事件出来
QQ截图20161201163304.png 360截图20161201163437783.jpg
xp的[pre lang="ruby"]#任意地图的任意事件 -> 事件 -> 脚本 -> Reisen::MapCommonEvent.new
#调试模式下按S键显示地图上含增减道具指令的事件  by 买买提
class Game_Player < Game_Character
  alias old_161201_update update
  def update
    old_161201_update
    # 调试模式为 ON 并且 按下 S 键的情况下
    Reisen::MapCommonEvent.new if $DEBUG and Input.press?(Input::Y)
  end
end
module Reisen
  Animation_plus=598#增加道具播放的动画id
  Animation_sub=599#减少道具播放的动画id
  Animation_unknown=600#不方便准确判断得失的动画id
  class MapCommonEvent
    def initialize
       @map=$game_map
       write_event
    end
    def write_event
    @map.events.each {|key,value|next if !value.list
    value.list.each{|list|@plus=Animation_plus
    @sub=Animation_sub;@unknown=Animation_unknown
     case list.code
     when 125..128#钱、物品、武器、防具,因变量操作判断复杂.视为未知情况
       i=list.code>125 ?1:0;animation_id=list.parameters<1 ?
       (list.parameters[i+1]<1 ?(list.parameters[i+2]>0 ?@plus:@sub):@unknown):
       (list.parameters[i+1]<1 ?(list.parameters[i+2]<0 ?@plus:@sub):@unknown)
       $game_map.events[key].animation_id = animation_id
     when 655,355  # 脚本事件
       list.parameters.each { |parameter|
       $game_map.events[key].animation_id = @unknown if
       parameter =~ /\s*\S*(gain_item[(])/  or
       parameter =~ /\s*\S*(gain_gold[(])/  or
       parameter =~ /\s*\S*(gain_armor[(])/ or
       parameter =~ /\s*\S*(gain_weapon[(])/ }
     end}}
   end
  end
end[/pre]

原脚本VX[pre lang="ruby"]#任意地图的任意事件 -> 事件 -> 脚本 -> Reisen::MapCommonEvent.new(start, end)
#start 表示要搜索的地图ID 的开始序号, end 是结尾序号.
#by 铃仙·优昙华院·因幡、夜RK
module Reisen
  class MapCommonEvent
    def initialize(startID = 1, endID = 100)
      @map_id ||= startID
      @fp = File.open("CommonEvent.log", "w")
        begin
          @map = load_data(sprintf("Data/Map%03d.rvdata", @map_id))
          @fp.write("地图ID:#{@map_id}\n")
          write_event
          @map_id += 1
        rescue
          @fp.write("地图ID:#{@map_id}\s<不存在>\n")
          @map_id += 1
        end until @map_id > endID
      @fp.close
    end
    def write_event
      @map.events.each {|key,value|value.pages.each{|page|page.list.each{|list|
            case list.code
            when 117  # 事件调用公共事件
              @fp.write("\t\s\s事件ID:#{key},事件坐标(#{value.x},#{value.y})"+
              "调用的公共事件ID为#{list.parameters[0]}\n")
            when 655,355  # 脚本事件
              list.parameters.each { |parameter|
              parameter =~ /\$game_temp.common_event_id\s*=\s*(\d+)/
              @fp.write("\t\s\s事件ID:#{key},事件坐标(#{value.x},#{value.y})"+"
              调用的公共事件ID为#{$1}\n") if $1}
            end}}}
    end
  end
end[/pre]

点评

我弄明白了  发表于 2016-12-8 06:21
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部