设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1793|回复: 7
打印 上一主题 下一主题

[已经解决] 如何用RPG制作时开始有多个角色可供选择?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
200
在线时间
0 小时
注册时间
2012-1-31
帖子
3
跳转到指定楼层
1
发表于 2012-1-31 18:09:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RT,最好能说的详细点,越详细越好,谢谢!

Lv1.梦旅人

CHN·TY·A

梦石
0
星屑
50
在线时间
212 小时
注册时间
2012-1-14
帖子
213
2
发表于 2012-1-31 18:27:23 | 只看该作者
本帖最后由 iNG.天影-冰 于 2012-1-31 18:32 编辑

在数据库中"系统"界面,将初期同伴清空.
在游戏开始时 插入脚本  $scene = Scene_SelectActor.new
你的数据库中ID为1、2、3、4、5、6、7的角色就任你选了
  1. #============角色选择=========By凌冰==========================================
  2. #用法 $scene = Scene_SelectActor.new
  3. #=============================================================================
  4. #参与选择的角色ID

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

  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. #双排显示

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

点评

看见里边的角色后,我第一个反应就是想喷  发表于 2012-1-31 23:24
话说我对此次回复总有一种不祥的预感  发表于 2012-1-31 18:29
上联:金龙腾飞横扫东洋鬼魅
下联:银蛇劲舞彰显中华国威
横批:春泽钓岛
回复

使用道具 举报

Lv2.观梦者

路人

梦石
0
星屑
590
在线时间
943 小时
注册时间
2011-8-20
帖子
1011
3
发表于 2012-1-31 21:52:35 | 只看该作者
事件类的也行,显示选择项然后更改职业就行了
为填坑而修炼中……
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3176
在线时间
1442 小时
注册时间
2009-7-27
帖子
1454
4
发表于 2012-1-31 22:15:37 | 只看该作者
是选择多个,还是只能选一个?

点评

只能选一个那还要选择干嘛  发表于 2012-1-31 23:23

博客:我的博客
回复

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
5
发表于 2012-1-31 22:21:34 | 只看该作者
人物创建
如果链接打开不能请用搜索功能搜索以上关键词

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2012-1-29
帖子
51
6
发表于 2012-2-1 09:46:10 手机端发表。 | 只看该作者
把初期伙伴全去掉       在开始剧情后插入选择项
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2012-1-29
帖子
51
7
发表于 2012-2-1 09:46:22 手机端发表。 | 只看该作者
把初期伙伴全去掉       在开始剧情后插入选择项
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
200
在线时间
0 小时
注册时间
2012-1-31
帖子
3
8
 楼主| 发表于 2012-2-1 11:39:56 | 只看该作者
我说的是比如开始有A和B两个角色,然后只能选择一个角色进行游戏


‘‘

谢谢各位了,我自己已经解决了!


──Simple.D.S于2012-2-1 14:12补充以上内容’’
回复

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-20 17:15

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表