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

Project1

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

[已经解决] VX怎么制作接金币类型的小游戏

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
21 小时
注册时间
2010-8-22
帖子
28
跳转到指定楼层
1
发表于 2013-10-9 15:14:01 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
如题,想做一个接水果的小游戏,但是不知道应该怎么写事件,还是说要专门的脚本。
有谁知道吗,谢谢{:2_267:}

点评

呃,这礼拜比较忙,到周末再考虑做范例吧(没解决的情况下XD  发表于 2013-10-9 20:38

Lv1.梦旅人

梦石
0
星屑
50
在线时间
21 小时
注册时间
2010-8-22
帖子
28
16
 楼主| 发表于 2013-10-24 13:07:49 | 只看该作者
脚本我贴在上面了,怎么改成只接一种东西,他里面好多种,谢谢!

点评

哦,不好意思,忘记了。。。  发表于 2013-10-25 09:33
作者是設置收費的 請不要直接發出來 還有這是一帖多問 請另開新帖  发表于 2013-10-25 06:48
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
21 小时
注册时间
2010-8-22
帖子
28
15
 楼主| 发表于 2013-10-24 13:06:38 | 只看该作者
  1. ##==============================================================================
  2. # ★【接 金 币】★ <VX>
  3. #==============================================================================
  4. #  by -> 芯☆淡如水
  5. #==============================================================================
  6. # ● 使用方法:复制该脚本,插入到 main 前。
  7. #              进入 接金币 场景,请在事件 -> 脚本 里写入:$scene = Take_Gold.new
  8. #==============================================================================
  9. #==============================================================================
  10. #============================================================================
  11. # 设置:
  12. #============================================================================
  13. # 输出该场游戏所得分数,代入下面设置的变量(ID)
  14. VAR_ID = 1
  15. #------------------------------------------------
  16. # 每得到 ?分增加一次速度?
  17. LEVEL_MARK = 500
  18. #------------------------------------------------
  19. # 游戏 BGM
  20. GAME_BGM_NAME = "Scene7"
  21. #------------------------------------------------
  22. # 角色受伤 SE (刀)
  23. BI_SE_NAME1 = "Slash1"
  24. #------------------------------------------------
  25. # 角色受伤 SE (炸弹)
  26. BI_SE_NAME2 = "Earth3"
  27. #------------------------------------------------
  28. # 加分 SE
  29. GOLD_SE_NAME = "Shop"
  30. #------------------------------------------------
  31. # 减分 SE
  32. LG_SE_NAME = "Fog1"
  33. #------------------------------------------------
  34. # 回复 SE
  35. RV_SE_NAME = "Item1"
  36. #============================================================================
  37. module Goods       # 刀 炸弹 小金币 大金币 钱袋 钻石 加血 恶魔
  38. GOODS_TYPE       = [0,   1,   2,     3,     4,   5,   6,   7]
  39.   
  40. GOODS_ICON_NAMES = ["刀", "炸弹","金币1", "金币2", "钱袋", "钻石", "加血", "恶魔"]
  41.   
  42. GOODS_MOVE_SPEED = [3, 4, 3, 4, 4, 5, 6, 4]
  43. end
  44. #============================================================================
  45. class Game_Good
  46.   attr_accessor :type
  47.   attr_accessor :x
  48.   attr_accessor :y
  49.   attr_accessor :icon_name
  50.   attr_accessor :move_speed
  51.   attr_accessor :count
  52.   #-----------------------------------------------------------------------
  53.   def initialize(type)
  54.     @type = type
  55.     @x = rand 266
  56.     @y = 0
  57.     @icon_name = Goods::GOODS_ICON_NAMES[type]
  58.     @move_speed = Goods::GOODS_MOVE_SPEED[type]
  59.     @count = 0
  60.   end
  61.   #-----------------------------------------------------------------------
  62. end
  63. #============================================================================  
  64. class Window_Player < Window_Base
  65.   #--------------------------------------------------------------------------
  66.   def initialize
  67.     [url=home.php?mod=space&uid=95897]@actor[/url] = $game_party.members[0]
  68.     @bitmap = Cache.character(@actor.character_name)
  69.     sign = @actor.character_name[/^[\!\$]./]
  70.     if sign != nil and sign.include?(')
  71.       @cw = @bitmap.width / 3
  72.       @ch = @bitmap.height / 4
  73.     else
  74.       @cw = @bitmap.width / 12
  75.       @ch = @bitmap.height / 8
  76.     end
  77.     width = @cw + 32
  78.     height = @ch + 32
  79.     super(356, 415 - height, width, height)
  80.     self.contents = Bitmap.new(width - 32, height - 32)
  81.     self.opacity = 0
  82.     self.z = 999
  83.     set_player(0, 0)
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   def set_player(direction, count)
  87.     self.contents.clear
  88.     index = @actor.character_index
  89.     sx = (index % 4 * 3 + count) * @cw
  90.     sy = (index / 4 * 4 + direction + 1) * @ch
  91.     src_rect = Rect.new(sx, sy, @cw, @ch)
  92.     self.contents.blt(0, 0, @bitmap, src_rect)
  93.   end
  94. end
  95. #=============================================================================
  96. class Window_Title < Window_Base
  97.   #--------------------------------------------------------------------------
  98.   def initialize
  99.     super(0, 0, 260, 164)
  100.     self.contents = Bitmap.new(width - 32, height - 32)
  101.     self.opacity = 0
  102.     self.z = 999
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   def set_start(a)
  106.     self.contents.clear
  107.     self.contents.font.color = Color.new(255, 120, 255, a)
  108.     self.contents.font.size = 46
  109.     self.contents.draw_text(34, 0, 220, 64, "接 金 币")
  110.     self.contents.draw_text(54, 64, 220, 64, "Start!")
  111.     self.visible = true
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   def set_end
  115.     self.contents.clear
  116.     self.contents.font.size = 46
  117.     self.contents.font.color = text_color(2)
  118.     self.contents.draw_text(14, 30, 220, 64, "游戏结束")
  119.     self.contents.font.size = 26
  120.     self.contents.font.color = text_color(5)
  121.     self.contents.draw_text(34, 76, 68, 64, "得分:")
  122.     self.contents.font.color = text_color(6)
  123.     self.contents.draw_text(106, 76, 196, 64, $take_gold.to_s)
  124.     self.visible = true
  125.   end
  126. end
  127. #==============================================================================
  128. class Window_Goods < Window_Base
  129.   #--------------------------------------------------------------------------
  130.   def initialize
  131.     super(220, 0, 322, 415)
  132.     self.contents = Bitmap.new(width - 32, height - 32)
  133.     self.opacity = 0
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   def set_goods(goods)
  137.     self.contents.clear
  138.     return if goods == []
  139.     for good in goods
  140.       bitmap = Cache.picture(good.icon_name)
  141.       x = good.x
  142.       y = good.y
  143.       self.contents.blt(x, y, bitmap, Rect.new(0, 0, 24, 24))
  144.     end
  145.   end
  146. end
  147. #=============================================================================
  148. class Window_Message_Show < Window_Base
  149.   #--------------------------------------------------------------------------
  150.   def initialize
  151.     super(0, 0, 252, 186)
  152.     self.contents = Bitmap.new(width - 32, height - 32)
  153.     self.opacity = 0
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   def set_txt(hp, gold)
  157.     self.contents.clear
  158.     bitmap = Cache.picture("hp")
  159.     width = bitmap.width * hp / 100
  160.     rect = Rect.new(0, 0, width, bitmap.height)
  161.     self.contents.blt(67, 56, bitmap, rect)
  162.     cx = contents.text_size(gold.to_s).width
  163.     self.contents.font.color = text_color(6)
  164.     self.contents.font.size = 32
  165.     self.contents.draw_text(100, 94, cx, 32, gold.to_s)
  166.   end
  167. end
  168. #==============================================================================
  169. class Window_Top < Window_Base
  170.   #--------------------------------------------------------------------------
  171.   def initialize
  172.     super(0, 0, 160, 64)
  173.     self.contents = Bitmap.new(width - 32, height - 32)
  174.     self.visible = false
  175.     self.opacity = 0
  176.     self.z = 9999
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   def set_txt(type, txt)
  180.     self.contents.clear
  181.     case type
  182.     when 0
  183.       text = "H P:"
  184.     when 1
  185.       text = "Gold:"
  186.     end
  187.     self.contents.font.size = 20
  188.     self.contents.font.color = Color.new(255, 255, 128, 255)
  189.     self.contents.draw_text(0, 0, 64, 32, text)
  190.     self.contents.font.color = Color.new(255, 128, 255, 255)
  191.     self.contents.draw_text(54, 0, 96, 32, txt)
  192.     self.visible = true
  193.   end
  194. end
  195. #==============================================================================
  196. #==============================================================================
  197. class Take_Gold
  198.   #--------------------------------------------------------------------------
  199.   def main
  200.     @menu_com = Sprite.new
  201.     @menu_com.bitmap = Cache.picture("背景.png")
  202.     @command_window = Window_Command.new(160, ["结束游戏", "返回"])
  203.     @command_window.x = 300
  204.     @command_window.y = 200
  205.     @command_window.z = 999
  206.     @command_window.opacity = 0
  207.     @command_window.active = false
  208.     @command_window.visible = false
  209.     @player_window = Window_Player.new
  210.     @goods_window = Window_Goods.new
  211.     @ms_window = Window_Message_Show.new
  212.     [url=home.php?mod=space&uid=35023]@top[/url] = Window_Top.new
  213.     @tit_window = Window_Title.new
  214.     @game_hp = 100
  215.     @direction = 0
  216.     @move_count = 0
  217.     @move_speed = 4
  218.     @count = 0
  219.     @goods = []
  220.     @top_mess = []
  221.     $take_gold = 0
  222.     @game_end = false
  223.     Audio.bgm_play("Audio/BGM/" + GAME_BGM_NAME, 100, 100)
  224.     Graphics.transition(40, "Graphics/System/BattleStart")
  225.     loop do
  226.       Graphics.update
  227.       update_start
  228.       if @count >= 130
  229.         break
  230.       end
  231.     end
  232.     @count = 0
  233.     loop do
  234.       Graphics.update
  235.       Input.update
  236.       update
  237.       if $scene != self
  238.         break
  239.       end
  240.     end
  241.     RPG::BGM.stop
  242.     Graphics.transition
  243.     Graphics.freeze
  244.     @menu_com.dispose
  245.     @player_window.dispose
  246.     @goods_window.dispose
  247.     @ms_window.dispose
  248.     @top.dispose
  249.     @tit_window.dispose
  250.     @command_window.dispose
  251.   end
  252.   #--------------------------------------------------------------------------
  253.   def update_start
  254.     @count += 1
  255.     @tit_window.x = 260
  256.     @tit_window.y = 80
  257.     a = 255 - @count * 2
  258.     @tit_window.set_start(a)
  259.     @tit_window.visible = false if @count >= 130
  260.   end
  261.   #--------------------------------------------------------------------------
  262.   def update
  263.     @command_window.update
  264.     @ms_window.set_txt(@game_hp, $take_gold)
  265.     if @game_end
  266.       game_end
  267.       return
  268.     end
  269.     if @command_window.active
  270.       update_command
  271.       return
  272.     end
  273.     if Input.trigger?(Input::B)
  274.       Sound.play_cancel
  275.       @command_window.active = true
  276.       @command_window.visible = true
  277.       return
  278.     end
  279.     take_gold
  280.   end
  281.   #---------------------------------------------------------------------------
  282.   def update_command
  283.     if Input.trigger?(Input::B)
  284.       Sound.play_cancel
  285.       @command_window.active = false
  286.       @command_window.visible = false
  287.       return
  288.     end
  289.     if Input.trigger?(Input::C)
  290.       case @command_window.index
  291.       when 0
  292.         Sound.play_decision
  293.         @command_window.active = false
  294.         @command_window.visible = false
  295.         @count = 0
  296.         @game_end = true
  297.       when 1
  298.         Sound.play_cancel
  299.         @command_window.active = false
  300.         @command_window.visible = false
  301.       end
  302.     end
  303.   end
  304.   #---------------------------------------------------------------------------
  305.   def take_gold
  306.     include_goods
  307.     @count += 1
  308.     case Input.dir4
  309.     when 4
  310.       @direction = 0
  311.       @move_count += 1
  312.       @player_window.x -= @move_speed if @player_window.x > @goods_window.x
  313.     when 6
  314.       @direction = 1
  315.       @move_count += 1
  316.       if @player_window.x < @goods_window.x + @goods_window.width - @player_window.width
  317.         @player_window.x += @move_speed
  318.       end
  319.     end
  320.     @player_window.set_player(@direction, @move_count % 30 / 10)
  321.     for good in @goods
  322.       next if good == nil
  323.       if touch_jude(good.x, good.y)
  324.         @goods.delete(good)
  325.         good_effect(good.type)
  326.         next
  327.       end
  328.       good.count += 1
  329.       move_speed = good.move_speed + $take_gold / LEVEL_MARK
  330.       good.y = good.count * move_speed
  331.       if good.y > 400
  332.         @goods.delete(good)
  333.         next
  334.       end
  335.     end
  336.     @goods_window.set_goods(@goods)
  337.     if @top_mess != []
  338.       @top.x = [@player_window.x - 10, 550 - @top.width].min
  339.       @top.y = @player_window.y
  340.       @top.set_txt(@top_mess[0], @top_mess[1])
  341.       @top_mess = []
  342.     end
  343.     if @top.visible
  344.       @top.visible = false if @top.y <= @player_window.y - 50
  345.       @top.y -= 1 if @count % 2 == 0
  346.     end      
  347.   end
  348.   #---------------------------------------------------------------------------
  349.   def include_goods
  350.     v = [10 - $take_gold / LEVEL_MARK, 1].max
  351.     if @count % v == 0
  352.       case rand 100
  353.       when 0..3
  354.         for i in 1..4
  355.           @goods.push(Game_Good.new(make_type))
  356.         end
  357.       when 4..10
  358.         for i in 1..3
  359.           @goods.push(Game_Good.new(make_type))
  360.         end
  361.       when 11..20
  362.         for i in 1..2
  363.           @goods.push(Game_Good.new(make_type))
  364.         end
  365.       when 21..55
  366.         @goods.push(Game_Good.new(make_type))
  367.       end
  368.     end
  369.   end
  370.   #---------------------------------------------------------------------------
  371.   def make_type
  372.     case rand 100
  373.     when 0..1
  374.       type = 6
  375.     when 2..5
  376.       type = 5
  377.     when 6..12
  378.       type = 4
  379.     when 13..25
  380.       type = 3
  381.     when 26..30
  382.       type = 2
  383.     when 30..55
  384.       type = 1
  385.     when 56..70
  386.       type = 7
  387.     else
  388.       type = 0
  389.     end
  390.     return type
  391.   end
  392.   #---------------------------------------------------------------------------
  393.   def good_effect(type)
  394.     @top_mess = []
  395.     case type
  396.     when 0
  397.       Audio.se_play("Audio/SE/" + BI_SE_NAME1, 80, 100)
  398.       @game_hp -= 10
  399.       @top_mess.push(0, "-10")
  400.     when 1
  401.       Audio.se_play("Audio/SE/" + BI_SE_NAME2, 80, 100)
  402.       @game_hp -= 30
  403.       @top_mess.push(0, "-30")
  404.     when 2
  405.       Audio.se_play("Audio/SE/" + GOLD_SE_NAME, 80, 100)
  406.       $take_gold += 5
  407.       @top_mess.push(1, "+5")
  408.     when 3
  409.       Audio.se_play("Audio/SE/" + GOLD_SE_NAME, 80, 100)
  410.       $take_gold += 10
  411.       @top_mess.push(1, "+10")
  412.     when 4
  413.       Audio.se_play("Audio/SE/" + GOLD_SE_NAME, 80, 100)
  414.       $take_gold += 50
  415.       @top_mess.push(1, "+50")
  416.     when 5
  417.       Audio.se_play("Audio/SE/" + GOLD_SE_NAME, 80, 100)
  418.       $take_gold += 100
  419.       @top_mess.push(1, "+100")
  420.     when 6
  421.       Audio.se_play("Audio/SE/" + RV_SE_NAME, 80, 100)
  422.       txt = "+" + (100 - @game_hp).to_s
  423.       @game_hp = 100
  424.       @top_mess.push(0, txt)
  425.     when 7
  426.       Audio.se_play("Audio/SE/" + BI_SE_NAME2, 80, 100)
  427.       @game_hp -= 10
  428.       Audio.se_play("Audio/SE/" + LG_SE_NAME, 80, 100)
  429.       $take_gold -= 100
  430.       @top_mess.push(1, "-100")
  431.     end
  432.     @game_hp = [[@game_hp, 100].min, 0].max
  433.     @count = 0 if @game_hp <= 0
  434.     @game_end = true if @game_hp <= 0
  435.     $take_gold = [$take_gold, 0].max
  436.     @ms_window.set_txt(@game_hp, $take_gold)
  437.   end
  438.   #---------------------------------------------------------------------------
  439.   def touch_jude(x, y)
  440.     wx = @player_window.x - @goods_window.x - 16
  441.     wy = @player_window.y
  442.     xmin = wx + 16
  443.     xmax = wx + @player_window.width - 16
  444.     if wy + 16 > y + 24
  445.       return false
  446.     end
  447.     if x + 12 < xmin or x + 12 > xmax
  448.       return false
  449.     end
  450.     return true
  451.   end
  452.   #---------------------------------------------------------------------------
  453.   def game_end
  454.     @count += 1
  455.     @tit_window.set_end
  456.     if Input.trigger?(Input::C) and @count > 80 or @count > 180
  457.       Sound.play_decision
  458.       $game_variables[VAR_ID] = $take_gold
  459.       $scene = Scene_Map.new
  460.     end
  461.   end
  462. end
  463. #==============================================================================
复制代码
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
362
在线时间
1292 小时
注册时间
2013-1-12
帖子
3590

贵宾

14
发表于 2013-10-22 12:19:08 | 只看该作者

点评

我看了那个VX范例,我想把多余的东西都去掉,只能接一种金币,脚本应该怎么改呢?麻烦你啦  发表于 2013-10-24 13:05
我瞅瞅去,万分感谢呀~  发表于 2013-10-24 12:25

评分

参与人数 2星屑 +230 收起 理由
铃仙·优昙华院·因幡 + 150 认可答案
Password + 80 精品文章

查看全部评分


回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
21 小时
注册时间
2010-8-22
帖子
28
13
 楼主| 发表于 2013-10-22 12:15:02 | 只看该作者
到底怎么弄。。麻烦给看看嘛
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
21 小时
注册时间
2010-8-22
帖子
28
12
 楼主| 发表于 2013-10-17 15:05:33 | 只看该作者
。。。没人知道吗
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
21 小时
注册时间
2010-8-22
帖子
28
11
 楼主| 发表于 2013-10-14 15:01:58 | 只看该作者
本帖最后由 mj42000 于 2013-10-14 15:13 编辑
上贺茂润 发表于 2013-10-12 15:01
Fc-变量赋值,简单随机【事件-变量赋值【从1-n】】
SC-组合随机,多个变量迭代【变量A 变量B 组合算式】
...


看了你的回复,我现在弄明白怎么生成随机数值了。但是还是不会写完整的事件。
这个生成的事件页触发方式是什么,是放在掉落的水果事件点上还是单独放在一边?
麻烦你啦~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
21 小时
注册时间
2010-8-22
帖子
28
10
 楼主| 发表于 2013-10-12 17:03:55 | 只看该作者
上贺茂润 发表于 2013-10-12 15:01
Fc-变量赋值,简单随机【事件-变量赋值【从1-n】】
SC-组合随机,多个变量迭代【变量A 变量B 组合算式】
...

大神,我听不懂。。。肿么办啊。。点哪个选项可以设置呀
是需要写脚本吗?

点评

不用脚本,在事件第一页-变量操作-赋值-随机1-n;然后下面判断不同的数值对应等候多时时间,这样就可以出现混乱金币掉落效果  发表于 2013-10-13 21:43
回复 支持 反对

使用道具 举报

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
9
发表于 2013-10-12 15:14:48 | 只看该作者
如果要使用神宝重力脚本可以这样设置:
-改变重力加速度为1 触发事件不变【金币】至于跳跃初速和连跳LZ可以自己设置
-关键还是在随机掉金币的事情,此处有个技巧:
-设置地图上下循环,金币穿透
-设置LS的时间控制事件“把金币移到最顶一行”
-算分
这样以来金币就不停的掉掉掉……【会越来越快……】
效果类似
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
8
发表于 2013-10-12 15:01:04 | 只看该作者
本帖最后由 上贺茂润 于 2013-10-12 15:06 编辑
mj42000 发表于 2013-10-12 13:03
啊,谢谢你,我终于弄明白这个事件怎么写了,现在就是不知道怎么才能随机生成事件,能麻烦你教教我吗 ...


Fc-变量赋值,简单随机【事件-变量赋值【从1-n】】
SC-组合随机,多个变量迭代【变量A 变量B 组合算式】
3rd-脚本:增强随机数【脚本】
自带的事件随机数是伪随机,单数的概率比双数高(rand函数取整四舍五入),增强随机数脚本能持平这个概率。
简单随机事件受数值计算影响,前一个数值和后数值出现相同概率高,可采用迭代算式的方法祛除。
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 14:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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