Project1

标题: 如何把这张图片的一部分显示在指定事件名称格式的事件下 [打印本页]

作者: chd114    时间: 2012-6-23 15:06
标题: 如何把这张图片的一部分显示在指定事件名称格式的事件下
本帖最后由 chd114 于 2012-6-23 15:16 编辑

@hcm [attachimg]116909[/atta@hys111111 chimg][attachimg]@zhixin1997 116909[/attachimg]
当事件名称开头为“怪物”,名字中带有“X”就显示这张图片第一个图案在脚下,带有“N”就显示这张图片的第4个团在脚下,像这样

X  X  X
X  O  X
X  X  X
(X代表图案,O代表事件)

求案例或者做法



难道真的没办法做么?
作者: chd114    时间: 2012-6-26 18:05
@kangxi0109  如果给你一个类似的脚本你能想办法帮我改下吗?我先前试着修改那个脚本结果老师挂点···
作者: kangxi0109    时间: 2012-6-26 19:20
chd114 发表于 2012-6-26 18:05
@kangxi0109  如果给你一个类似的脚本你能想办法帮我改下吗?我先前试着修改那个脚本结果老师挂点··· ...

可以,但我先前没研究过这类的,所以不敢打包票。
作者: chd114    时间: 2012-6-26 19:46
kangxi0109 发表于 2012-6-26 19:20
可以,但我先前没研究过这类的,所以不敢打包票。
  1. class Map_Damage
  2. attr_accessor :pic
  3. def initialize
  4.   @pic=Sprite.new
  5.   @front1=RPG::Cache.picture("front1")
  6.   @front2=RPG::Cache.picture("front2")
  7.   @front3=RPG::Cache.picture("front3")
  8.   @front4=RPG::Cache.picture("front4")
  9.   @front5=RPG::Cache.picture("front5")
  10.   @front6=RPG::Cache.picture("front6")
  11.   @pic.bitmap=Bitmap.new(640,480)
  12.   @pic.z=50
  13. end
  14. def mapupdate
  15.   if $game_switches[56]==true and $game_switches[8]==true
  16.     @pic.bitmap.clear

  17.     for i in $game_variables[90][0]...$game_variables[90][0]+$game_variables[90][1]
  18.       for j in $game_variables[90][2]...$game_variables[90][2]+$game_variables[90][3]
  19.         if $game_map.have_an_event?(i,j)
  20.           k=$game_map.check_event(i,j)
  21.           if $game_map.events[k].event.name[0,6]=="怪物" and $game_map.events[k].event.name[10,1]!="h"
  22.             draw_mapdamage($game_map.events[k].event.name[6,3].to_i,i,j)
  23.           end
  24.         end
  25.       end
  26.     end
  27.   end
  28. end
  29. def draw_mapdamage(number,i,j)

  30.   e=Enemy_property.new(number)
  31.   if !e.got_p(11)
  32.   e=Enemy_property.new(number)
  33.   damage=e.got_damage
  34.   if damage>=999999999999999999999999999999999 or $game_switches[8]==false
  35.     @pic.bitmap.blt(i*32+8, j*32+20, @front6, Rect.new(0,0,24,12))
  36.   else
  37.     if damage>=$game_actors[$game_variables[1]+1].hp
  38.       a=damage.to_s
  39.       for q in 0...a.size
  40.         @pic.bitmap.blt(i*32-a.size*8+q*8+32, j*32+20, @front5, Rect.new(a[q,1].to_i*15-1,0,12,12))
  41.       end
  42.     end
  43.     if damage<$game_actors[$game_variables[1]+1].hp/25
  44.       a=damage.to_s
  45.         for q in 0...a.size
  46.           @pic.bitmap.blt(i*32-a.size*8+q*8+32, j*32+20, @front1, Rect.new(a[q,1].to_i*15-1,0,12,12))
  47.         end
  48.       end
  49.       if damage>=$game_actors[$game_variables[1]+1].hp/25 and damage<$game_actors[$game_variables[1]+1].hp/8
  50.         a=damage.to_s
  51.         for q in 0...a.size
  52.           @pic.bitmap.blt(i*32-a.size*8+q*8+32, j*32+20, @front2, Rect.new(a[q,1].to_i*15,0,12,12))
  53.         end
  54.       end
  55.       if damage>=$game_actors[$game_variables[1]+1].hp/8 and damage<$game_actors[$game_variables[1]+1].hp/3
  56.         a=damage.to_s
  57.         for q in 0...a.size
  58.           @pic.bitmap.blt(i*32-a.size*8+q*8+32, j*32+20, @front3, Rect.new(a[q,1].to_i*15-1,0,12,12))
  59.         end
  60.       end
  61.       if damage>=$game_actors[$game_variables[1]+1].hp/3 and damage<$game_actors[$game_variables[1]+1].hp
  62.         a=damage.to_s
  63.         for q in 0...a.size
  64.           @pic.bitmap.blt(i*32-a.size*8+q*8+32, j*32+20, @front4, Rect.new(a[q,1].to_i*15-1,0,12,12))
  65.         end
  66.       end
  67.     end
  68.   end
  69. end
  70. end
复制代码
那你帮我看下吧···表示这脚本改得很纠结···front1、2什么的是图片名称···
作者: chd114    时间: 2012-6-26 23:07
我只有解密的游戏没有简单的范例···
作者: jilok3    时间: 2012-7-3 11:21
麻煩方法,設9個事件,同時移動
作者: chd114    时间: 2012-7-3 11:39
jilok3 发表于 2012-7-3 11:21
麻煩方法,設9個事件,同時移動

纯事件的话你可以闪边去了···我放的是靶子事件,一个射击场有几十个靶子就是把整个地图的事件占满了也未必够用吧···
作者: hys111111    时间: 2012-7-3 18:14
本帖最后由 hys111111 于 2012-7-3 18:14 编辑
  1. class Window_Light < Window_Base
  2.   def initialize
  3.     super(-16,-16,672,512)
  4.     @name = "文件名称"
  5.     @fat_x = (Bitmap.new(@name).width/4).to_i
  6.     @fat_y = (Bitmap.new(@name).height).to_i
  7.     self.opacity = 0
  8.     self.back_opacity = 0
  9.     self.contents = Bitmap.new(width - 32, height - 32)
  10.     refresh
  11.   end
  12.   def refresh
  13.     self.contents.clear
  14.     for event_a in $game_map.events.values
  15.       for enemy_id in 0..999
  16.         if event_a.event.name == sprintf("怪物%03dX",enemy_id)
  17.           bitmap = Bitmap.new(@name)
  18.           real_x = event_a.screen_x - ((@fat_x/2).to_i - 32)
  19.           real_y = event_a.screen_y - ((@fat_y/2).to_i - 32)
  20.           self.contents.blt(real_x ,real_y, bitmap, Rect.new(0, 0, @fat_x, @fat_y))
  21.         end
  22.         if event_a.event.name == sprintf("怪物%03dN",enemy_id)
  23.           bitmap = Bitmap.new(@name)
  24.           real_x = event_a.screen_x - ((@fat_x/2).to_i - 32)
  25.           real_y = event_a.screen_y - ((@fat_y/2).to_i - 32)
  26.           self.contents.blt(real_x ,real_y, bitmap, Rect.new(@fat_x * 3, 0, @fat_x, @fat_y))
  27.         end
  28.       end
  29.     end
  30.   end
  31. end

  32. class Game_Event
  33.   attr_accessor :event #如果这部分已定义,可删掉
  34. end

  35. class Scene_Map
  36.   alias hys_light_initialize initialize
  37.   def initialize
  38.     @light_window = Window_Light.new
  39.     hys_light_initialize
  40.     @light_window.dispose
  41.   end
  42.   alias hys_light_update update
  43.   def update
  44.     @light_window.update
  45.     @light_window.refresh if $game_map.scrolling?
  46.     hys_light_update
  47.   end
  48. end
复制代码
……
作者: chd114    时间: 2012-7-3 18:53
hys111111 发表于 2012-7-3 18:14
……

如果前面同样是“怪物001”,但是其中一个的事件名称是“怪物001H2”怎样才能判定让名字中带有H的显示1号图案?




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