Project1

标题: 如何进行事件“人物选择”?? [打印本页]

作者: 流星的瞬间    时间: 2012-5-26 11:13
标题: 如何进行事件“人物选择”??
本帖最后由 流星的瞬间 于 2012-5-26 11:13 编辑


事件人物选择的思路:按“A”显示文本,按“右”转移地图(每个人物选择的分歧都是一个地图)

用了条件分歧他会按“右”过完所有地图?

可以用变量么??(表示不会用变量)

求各位教教我,

最好附上事件截图!dsu_plus_rewardpost_czw
作者: LOVE丶莫颜    时间: 2012-5-26 11:30
表示没看懂提问..
是每一个地图都有一个事件是选择不同的人物?
作者: 流星的瞬间    时间: 2012-5-26 11:50
LOVE丶莫颜 发表于 2012-5-26 11:30
表示没看懂提问..
是每一个地图都有一个事件是选择不同的人物?

这个……反正你可以教教我变量么??
反正就是事件人物选择就对了  如果你有更好的处理方法的话

新NPC堡垒-芙蓉.png (535.16 KB, 下载次数: 5)

新NPC堡垒-芙蓉.png

新NPC堡垒-路飞.png (533.38 KB, 下载次数: 4)

新NPC堡垒-路飞.png

作者: 月下耶鲁夫    时间: 2012-5-26 13:13
这个我不会,但是我有朋友会,回头他上线了,我让他来帮帮你~
作者: LOVE丶莫颜    时间: 2012-5-26 14:24
本帖最后由 hcm 于 2012-5-26 17:06 编辑

已经找到了,但是不知道是不是你想要的效果好..(别建议啊。)
脚本调用:$scene = Scene_SelectActor.new
↓下面是脚本↓
  1. #============角色选择=========By凌冰==========================================
  2. #用法 $scene = Scene_SelectActor.new
  3. #=============================================================================
  4. #参与选择的角色ID

  5. ACT_SEL = [1,2,3,4]

  6. #====================================
  7. #存储选择结果的变量ID

  8. VA_ID = 1

  9. #====================================
  10. #窗口设置

  11. WIDTH = 600#窗口宽度
  12. HEIGHT = 320#窗口高度
  13. OPACITY = 180#窗口透明度
  14. BACK_OPACITY = 180#窗口透明度

  15. #====================================
  16. #选择显示图形

  17. CHAORBAT = 1
  18. #0为显示人物战斗图,1为显示人物行走图
  19. #2为显示Pictures文件夹下的自定义图片(图片名为角色名)
  20. #其他为不显示图片

  21. #====================================
  22. #人物说明= =暂时仅限一行

  23. DES_SWI = true#说明开关
  24. ACT_DES = []#初始化,请不要修改
  25. #以下填写格式为ACT_DES[角色ID] = "说明文字"
  26. ACT_DES[1] = "小色狼"
  27. ACT_DES[2] = "小流氓"
  28. ACT_DES[3] = "小荡妇"
  29. ACT_DES[4] = "小贱人"

  30. #====================================
  31. #背景图片

  32. BGP_SWI = false#背景开关= =打开后PDE_SWI被屏蔽
  33. BGP_PIC = "Logo"#背景图片文件名Pictures文件夹下
  34. BGP_OPA = 180#开关打开后,窗口透明度
  35. BGP_BOP = 0#开关打开后,窗口(不包括边框)透明度

  36. #====================================
  37. #说明图片
  38. #移动光标矩形时自动切换图片

  39. PDE_SWI = true#图片开关= =BGP_SWI打开后被屏蔽
  40. PIC_DES = []#初始化,请不要修改
  41. #以下填写格式为PIC_DES[角色ID] = "图片文件名"
  42. PIC_DES[1] = "Logo1"
  43. PIC_DES[2] = "Logo2"
  44. PIC_DES[3] = "Logo1"
  45. PIC_DES[4] = "Logo2"
  46. PDE_OPA = 180#开关打开后,窗口透明度
  47. PDE_BOP = 0#开关打开后,窗口(不包括边框)透明度

  48. #====================================
  49. class Window_SelectActor < Window_Selectable
  50.   def initialize
  51.     super(0, 0, WIDTH, HEIGHT)
  52.     self.contents = Bitmap.new(width - 32, height - 32)
  53.     @item_max = ACT_SEL.size
  54.     @column_max = ACT_SEL.size
  55.     @index = 0
  56.     self.x = (640-self.width)/2
  57.     self.y = (480-self.height)/2
  58.     refresh
  59.   end
  60.   def refresh
  61.     self.contents.clear
  62.     for i in 0...ACT_SEL.size
  63.       x = (self.width-32)/ACT_SEL.size * i
  64.       actor = $game_actors[ACT_SEL[i]]
  65.       x_plus = contents.text_size(actor.name).width
  66.       x_plus = ((self.width-32)/ACT_SEL.size - x_plus)/2
  67.       draw_actor_name(actor, x+4+x_plus, 4)
  68.       case CHAORBAT
  69.       when 0
  70.         bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
  71.         src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  72.         x_plus = bitmap.width
  73.         x_plus = ((self.width-32)/ACT_SEL.size - x_plus)/2
  74.         self.contents.blt(x+x_plus, 36, bitmap, src_rect)
  75.       when 1
  76.         bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
  77.         y_plus = bitmap.height/4
  78.         x_plus = bitmap.width/4
  79.         x_plus2 = ((self.width-32)/ACT_SEL.size - x_plus)/2
  80.         draw_actor_graphic(actor, x+x_plus/2+x_plus2, y_plus+36)
  81.       when 2
  82.         bitmap = RPG::Cache.picture(actor.name)
  83.         src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  84.         x_plus = bitmap.width
  85.         x_plus = ((self.width-32)/ACT_SEL.size - x_plus)/2
  86.         self.contents.blt(x+x_plus, 36, bitmap, src_rect)
  87.       end
  88.     end
  89.   end
  90.   def update_cursor_rect
  91.     if @index < 0
  92.       self.cursor_rect.empty
  93.     else
  94.       self.cursor_rect.set( @index * (self.width-32)/ACT_SEL.size,0, (self.width-32)/ACT_SEL.size, self.height-32)
  95.     end
  96.   end
  97. end
  98. class Window_Help_New < Window_Help
  99.   def initialize
  100.     super
  101.     self.contents = Bitmap.new(width, height)
  102.     self.width = WIDTH
  103.     self.contents = Bitmap.new(width - 32, height - 32)
  104.   end
  105. end
  106. class Scene_SelectActor
  107.   def main
  108.     @window = Window_SelectActor.new
  109.     @help_window = Window_Help_New.new
  110.     @help_window.visible = DES_SWI
  111.     @help_window.x = @window.x
  112.     @help_window.y = @window.y + @window.height
  113.     @help_window.width = @window.width
  114.     @help_window.back_opacity = @window.back_opacity = PDE_SWI ? PDE_BOP : BACK_OPACITY
  115.     @help_window.opacity = @window.opacity = PDE_SWI ? PDE_OPA : OPACITY
  116.     @help_window.back_opacity = @window.back_opacity = BGP_BOP if BGP_SWI
  117.     @help_window.opacity = @window.opacity = BGP_OPA if BGP_SWI
  118.     if BGP_SWI
  119.       @sprite = Sprite.new
  120.       @sprite.bitmap = RPG::Cache.picture(BGP_PIC)
  121.     elsif PDE_SWI
  122.       @sprite = Sprite.new
  123.       @sprite.bitmap = RPG::Cache.picture(PIC_DES[1])
  124.     else
  125.       @sprite = Spriteset_Map.new
  126.     end
  127.     # 执行过度4
  128.     Graphics.transition
  129.     # 主循环
  130.     loop do
  131.       # 刷新游戏画面
  132.       Graphics.update
  133.       # 刷新输入信息
  134.       Input.update
  135.       # 刷新画面
  136.       update
  137.       # 如果画面切换就中断循环
  138.       if $scene != self
  139.         break
  140.       end
  141.     end
  142.     # 装备过渡
  143.     Graphics.freeze
  144.     @window.dispose
  145.     @help_window.dispose
  146.     @sprite.dispose
  147.   end
  148.   def update
  149.     @window.update
  150.     @sprite.update
  151.     if DES_SWI
  152.       @help_window_update
  153.       actor_id = ACT_SEL[@window.index]
  154.       text = ACT_DES[actor_id]
  155.       @help_window.set_text(text,1) if text != nil
  156.     end
  157.     if !BGP_SWI and PDE_SWI
  158.       pic = PIC_DES[ACT_SEL[@window.index]]
  159.       @sprite.bitmap = RPG::Cache.picture(pic) if pic != nil
  160.     end
  161.     if Input.trigger?(Input::C)
  162.       $game_system.se_play($data_system.decision_se)
  163.       for i in 0...$game_party.actors.size
  164.         id = $game_party.actors[i].id
  165.         actors_id = [] if actors_id == nil
  166.         actors_id.push(id)
  167.       end
  168.       actors_id.each do |i|
  169.         $game_party.remove_actor(i)
  170.       end
  171.       id = ACT_SEL[@window.index]
  172.       $game_party.add_actor(id)
  173.       $game_variables[VA_ID] = id
  174.       $scene = Scene_Map.new
  175.     end
  176.   end
  177. end
复制代码
↓效果图↓


作者: 流星的瞬间    时间: 2012-5-26 22:48
LOVE丶莫颜 发表于 2012-5-26 14:24
已经找到了,但是不知道是不是你想要的效果好..(别建议啊。)
脚本调用:$scene = Scene_SelectActor.new
...

这是人物创建吧

其实我那图片是NPC选择

按右按钮就选择另外一个角色 按下a键就显示文本那些

表示不会用变量啊
作者: LOVE丶莫颜    时间: 2012-5-27 07:19
流星的瞬间 发表于 2012-5-26 22:48
这是人物创建吧

其实我那图片是NPC选择

那是人物选择..不是创建....
可以自己插图片进去的..

作者: kxx1997    时间: 2012-5-27 17:26
好久没回答问题了
不多说
放范例
Project1.zip (255.02 KB, 下载次数: 57)
事件什么的我最拿手了




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