赞 | 0 |
VIP | 13 |
好人卡 | 13 |
积分 | 1 |
经验 | 7273 |
最后登录 | 2014-2-17 |
在线时间 | 37 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 37 小时
- 注册时间
- 2012-7-30
- 帖子
- 147
|
事件想得出来,那么脚本完全可以做得到的
请注意刚写的这个还是处于大部分完成阶段
测试时就是脚印位置错位,在下我实在是不想拿出标尺一pix一pix的量了/找xp的脚本了
哪位网友能帮忙修复一下在下十分感谢。
请直接无视f***等字样。- =begin
- 用于vx的脚印系统
- copywrong DevilG 版权没有 翻版。。翻吧。
- ※※※※※※※BUG WARNING※※※※※※※
- 由于在下我对任何图形/动画类脚本都不擅长,目前脚印的出现位置错位
- (具体表现时地图最上一行是显示不出脚印的,左边第一行一半也没有)
- 如果您愿意修复这个bug,在下我十分感谢。
- 目前调整位置的地点是第106行。
- 使用方法:
- 将脚印图块按照下面的格式放置在游戏中。
- 格式-脚步图块:
- 最好与图块大小相同。(默认32*32)
- 放置于graphics/footstep文件夹内
- 文件名格式:人物图名_人物图位_方向(比如people1_3_2)
- 请注意方向的定位是2↓4←6→8↑.
- 扩展功能:
- 1秒脚印自动消失。(line93)
- 不同图块显示不同脚印。(line53)
- 不同人物显示不同脚印。(line58)
- 特殊情况不显示脚印。(line48)
- 需要更多扩展功能请pm我。
- 技术支持:
- 新建类似于sprite_character的类(sprite_footstep,实际上是直接copy过来的)
- 在人物移动时(通过increase_step增加判定开关)向后显示一个sprite_footstep.
- 兼容性技术支持:
- 对大规模更改表示界面的系统可能不支持。
- =end
- module Cache
- def self.footstep(name)#增加了获取脚步图片的call。
- load_bitmap("Graphics/Footstep/", name)
- end
- end
- class Scene_Map < Scene_Base
- attr_accessor:spriteset#好像没有用
- end
-
- class Game_System
- attr_accessor :no_footstep#不显示脚印的开关。
- #打开方式:$game_system.no_footstep=true 关闭:换成false
- def Footstepfilename(x,y,name,index,facing)
- #获取脚步图块的call。
- #facing:2↓4←6→8↑
- case $game_map.data[x,y,0]#different footstep pattern casing tileID
- #不同圖塊的腳步更新,因為data的Table格式還不清楚這裡不作處理
- when 1
- type = 1
- end
- return "test_"+ facing.to_s#测试语句,使用时请删除
- return name.to_s + "_"+index.to_s + "_" + facing.to_s
- end
-
- alias initialize01 initialize#初始化无脚印开关的语句。
- def initialize
- initialize01
- @no_footstep = false
- end
-
- end
-
- class Game_Character
- attr_accessor:shadowfuck#人物是否移动的boolean开关。
-
- alias increase_steps01 increase_steps
- def increase_steps#移动时打开显示脚印开关。
- increase_steps01
- @shadowfuck=true
- end
- end
- class Spriteset_Map
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- alias initialize01 initialize
- def initialize#初始化包含脚印sprite的hash表。
- @footstep = {}#hash list
- initialize01
- #hash表索引格式:key format: [x,y] content:sprite_footstep
- end
-
- alias update01 update
- def update
- update01
- #update_footstep #将此项前面的"#"删除打开1秒脚印消失的功能。
- end
-
- def update_footstep #用于1秒脚印消失的call。如果1秒已过则删除脚印
- for shit in @footstep.values
- if shit.update
- shit.dispose
- shit = nil
- end
- end
- end
-
- def push_step(x,y,type)#添加脚印的call。如果当前x,y有脚印且脚印类一样则不更新,否则更新脚印
- =begin
- 下面的语句用于调整脚印位置。
- 以下调整不能用:
- y-=32
- type的格式是:"name_index_direction"
- direction信息可以通过删除两次"_"(type1 = type[type.index("_")+1,type.size-1]#这个语句可以删除一次"_")并to_i获得。
- 或者可以从源头添加direction信息。
- 参考预想的调整方式:
- 对direction不同进行x,y调整。(case direction并做处理)
- =end
- y-=32#仅供测试使用,调整完毕请删除此行
- if @footstep[[x,y]]!=nil#如果当前x,y有脚印
- if @footstep[[x,y]].name != type#脚印类不一样则清除当前脚印
- @footstep[[x,y]].dispose
- @footstep[[x,y]]=nil
- else#且脚印类一样则不更新
- return
- end
- end
- @footstep[[x,y]]=Sprite_Footstep.new(x,y,type,@viewport1)#更新脚印
- end
-
- def update_characters#若角色移动则提交更新脚印
- for sprite in @character_sprites
- shit = sprite.update
- if shit != nil
- push_step(shit[0],shit[1],shit[2])
- end
- end
- end
-
- end
- #==============================================================================
- # ■ Sprite_Character
- #------------------------------------------------------------------------------
- # 角色显示用脚本。监视 Game_Character 类的实例、自动变化脚本状态。
- #==============================================================================
- class Sprite_Footstep < Sprite_Base#脚印的sprite类。
- attr_accessor :name
- #--------------------------------------------------------------------------
- # ● 初始化对像
- # viewport : 显示端口
- # character : 角色 (Game_Character)
- #--------------------------------------------------------------------------
- def initialize(x,y,fileName,viewport)
- super(viewport)
- @name = fileName
- self.x = x
- self.y = y
- #self.z = 0
- @duracell = 60#脚印的持续时间。每秒为60帧,目前设置为60帧
- self.bitmap = Cache.footstep(fileName)
- end
- #--------------------------------------------------------------------------
- # ● 更新画面
- #--------------------------------------------------------------------------
- def update#对持续时间的更新。返回true时由源头call解放sprite
- if @duracell <= 0
- return true
- else
- @duracell -= 1
- return false
- end
- end
- end
- class Sprite_Character < Sprite_Base
- alias update01 update
- def update#如果角色移动过并显示脚步开关打开,则返回x,y,名称语句进行更新
- shit = nil
- shit = [self.x,self.y,$game_system.Footstepfilename(self.x,self.y,@character.character_name,@character.character_index,@character.direction)] if showFootstep?
- update01
- return shit
- end
-
- def showFootstep?#判定是否显示脚步的boolean call。
- return false if @character.character_name == ""
- return false if $game_system.no_footstep
- if @character.shadowfuck!=nil
- @character.shadowfuck=nil
- return true
- end
- return false
- end
- end
复制代码 |
评分
-
查看全部评分
|