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

Project1

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

[已经过期] STG脚本怎么用

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1845
在线时间
367 小时
注册时间
2012-12-10
帖子
427
跳转到指定楼层
1
发表于 2014-10-29 22:58:36 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
下面是三个脚本和前面的说明:



说明:
STG脚本:
Srpite_aaaagq
Bul_aaaagq
Scene_Show
参数:
    $maxbul   = 100   #全弹量
    $maxenemy = 6     #敌人量
    $伤害显示 = true  #就是伤害显示





Srpite_aaaagq:
RUBY 代码复制
  1. class Srpite_aaaagq < RPG::Sprite
  2.     attr_accessor :hp               
  3.     attr_accessor :maxhp
  4.  
  5.     attr_accessor :nextpx               
  6.     attr_accessor :nextpy
  7.  
  8.     attr_accessor :tdam              
  9.     attr_accessor :dam              
  10.     attr_accessor :damagerange
  11.  
  12.     attr_accessor :wt              
  13.     attr_accessor :rwt
  14.  
  15.     attr_accessor :showdt
  16.     attr_accessor :speed
  17.  
  18.  
  19. #------------------------------------------------------------------------   
  20. #------------------------------------------------------------------------   
  21. #------------------------------------------------------------------------   
  22. #------------------------------------------------------------------------   
  23.     def init
  24.       initialize
  25.     end
  26.  
  27.     def initialize
  28.       super
  29.       @damagerange  =   20
  30.       @tdam         =   0
  31.       @dam          =   0
  32.       @nextpx       =   0
  33.       @nextpy       =   0
  34.       @maxhp        =   1000
  35.       @hp           =   @maxhp
  36.       @wt           =   0
  37.       @rwt          =   34
  38.       @showdt       =   0
  39.       @speed        =   2
  40.       update
  41.     end
  42.  
  43.     def recover
  44.       @wt=[@wt-@rwt,0].max
  45.     end
  46.  
  47.     def moving
  48.       if (self.x>-@damagerange) and (self.x<640+@damagerange) and
  49.          (self.y>-@damagerange) and (self.y<480+@damagerange)
  50.         tx = self.x
  51.         ty = self.y
  52.         self.x = @nextpx
  53.         self.y = @nextpy
  54.         @nextpx = @nextpx + @nextpx - tx
  55.         @nextpy = @nextpy + @nextpy - ty
  56.       else
  57.         self.x=-2000
  58.         self.y=-2000        
  59.       end
  60.     end
  61.  
  62. #------------------------------------------------------------------------   
  63. #------------------------------------------------------------------------   
  64. #------------------------------------------------------------------------   
  65.     def adddamage()
  66.       if @dam > @tdam
  67.         @tdam = @dam
  68.         damage(@dam, false)
  69.       end      
  70.     end
  71.  
  72.     def damage(value, critical)
  73.       if value.is_a?(Numeric)
  74.         damage_string = value.to_s
  75.       end
  76.       dispose_damage
  77.       bitmap = Bitmap.new(160, 48)
  78.       bitmap.font.name = "Arial Black"
  79.       bitmap.font.size = 32
  80.       bitmap.font.color.set(0, 0, 0)
  81.       bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
  82.       bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
  83.       bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
  84.       bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
  85.       if value.is_a?(Numeric) and value < 0
  86.         bitmap.font.color.set(176, 255, 144)
  87.       else
  88.         bitmap.font.color.set(255, 255, 255)
  89.       end
  90.       bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  91.       if critical
  92.         bitmap.font.size = 20
  93.         bitmap.font.color.set(0, 0, 0)
  94.         bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
  95.         bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
  96.         bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
  97.         bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
  98.         bitmap.font.color.set(255, 255, 255)
  99.         bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
  100.       end
  101.       @_damage_sprite = ::Sprite.new(self.viewport)
  102.       @_damage_sprite.bitmap = bitmap
  103.       @_damage_sprite.ox = 80#rand(40) - 20, rand(30) + 50
  104.       @_damage_sprite.oy = 20
  105.       @_damage_sprite.x = self.x
  106.       @_damage_sprite.y = self.y - self.oy / 2
  107.       @_damage_sprite.z = 3000
  108.       @_damage_duration = 40
  109.     end
  110.  
  111.     def update
  112.       super
  113.       if @_whiten_duration > 0
  114.         @_whiten_duration -= 1
  115.         self.color.alpha = 128 - (16 - @_whiten_duration) * 10
  116.       end
  117.       if @_appear_duration > 0
  118.         @_appear_duration -= 1
  119.         self.opacity = (16 - @_appear_duration) * 16
  120.       end
  121.       if @_escape_duration > 0
  122.         @_escape_duration -= 1
  123.         self.opacity = 256 - (32 - @_escape_duration) * 10
  124.       end
  125.       if @_collapse_duration > 0
  126.         @_collapse_duration -= 1
  127.         self.opacity = 256 - (48 - @_collapse_duration) * 6
  128.       end
  129.       adddamage
  130.       if @_damage_duration > 0
  131.         @_damage_duration -= 1
  132.         case @_damage_duration
  133.         when 38..39
  134.           @_damage_sprite.y -= 4
  135.         when 36..37
  136.           @_damage_sprite.y -= 2
  137.         when 34..35
  138.           @_damage_sprite.y += 2
  139.         when 28..33
  140.           @_damage_sprite.y += 4
  141.         end
  142.         @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
  143.         if @_damage_duration == 0
  144.           dispose_damage
  145.         end
  146.       else
  147.         @dam = 0
  148.         @tdam = 0
  149.       end
  150.       if @_animation != nil and (Graphics.frame_count % 2 == 0)
  151.         @_animation_duration -= 1
  152.         update_animation
  153.       end
  154.       if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
  155.         update_loop_animation
  156.         @_loop_animation_index += 1
  157.         @_loop_animation_index %= @_loop_animation.frame_max
  158.       end
  159.       if @_blink
  160.         @_blink_count = (@_blink_count + 1) % 32
  161.         if @_blink_count < 16
  162.           alpha = (16 - @_blink_count) * 6
  163.         else
  164.           alpha = (@_blink_count - 16) * 6
  165.         end
  166.         self.color.set(255, 255, 255, alpha)
  167.       end
  168.       @@_animations.clear
  169.     end
  170.  
  171. end





Bul_aaaagq:
RUBY 代码复制
  1. class Bul_aaaagq < Sprite
  2.     attr_accessor :nextpx               
  3.     attr_accessor :nextpy
  4.  
  5.     attr_accessor :dam            
  6.     attr_accessor :damagerange
  7.  
  8.     attr_accessor :bul_st              
  9.  
  10.     def init
  11.       @bul_st       = 0
  12.       @damagerange  = 20
  13.       @nextpx       = 0
  14.       @nextpy       = 0
  15.       self.x        = -2000
  16.       self.y        = -2000
  17.     end
  18.  
  19.     def initialize
  20.       super
  21.       @bul_st       = 0
  22.       @damagerange  = 20
  23.       @dam          = 100
  24.       @nextpx       = 0
  25.       @nextpy       = 0
  26.       self.x        = -2000
  27.       self.y        = -2000
  28.       update
  29.     end
  30.  
  31.     def moving(spr)
  32.       if @bul_st == 0 #直线
  33.         if (self.x>-@damagerange) and (self.x<640+@damagerange) and
  34.            (self.y>-@damagerange) and (self.y<480+@damagerange)
  35.           self.x += @nextpx
  36.           self.y += @nextpy
  37.         else
  38.           self.x=-2000
  39.           self.y=-2000        
  40.         end
  41.       end
  42.       if @bul_st == 1 #等待
  43.         self.x = spr.x + @nextpx
  44.         self.y = spr.y + @nextpy
  45.       end
  46.     end
  47.     def c10(x,y)
  48.       if @bul_st == 1
  49.         @bul_st = 0
  50.         @nextpx = x
  51.         @nextpy = y
  52.       end
  53.     end
  54. end





RUBY 代码复制下载
  1. class Scene_Show
  2.   def main
  3.     @maxbul   =   $maxbul
  4.     @maxenemy =   $maxenemy
  5.     @lastB    =   false #集气相关
  6.     @numB     =   0     #集气相关
  7.  
  8.     @mysprite           = Srpite_aaaagq
  9.       @mysprite         = Srpite_aaaagq.new
  10.       @mysprite.bitmap  = Bitmap.new("Graphics/Battlers/001-Fighter01.png")
  11.       @mysprite.ox      = @mysprite.bitmap.width / 2
  12.       @mysprite.oy      = @mysprite.bitmap.height / 2
  13.       @mysprite.x       = 100
  14.       @mysprite.y       = 100
  15.     @enemy              = [Srpite_aaaagq.new,Srpite_aaaagq.new]
  16.     for i in 0 .. @maxenemy
  17.       @enemy[i]         = Srpite_aaaagq.new
  18.       @enemy[i].bitmap  = Bitmap.new("Graphics/Battlers/075-Devil01")
  19.       @enemy[i].ox      = @enemy[i].bitmap.width / 2
  20.       @enemy[i].oy      = @enemy[i].bitmap.height / 2
  21.       @enemy[i].x       = -2000
  22.       @enemy[i].y       = -2000
  23.     end
  24.       @enemy[0].x       = 580
  25.       @enemy[0].y       = 150
  26.       @enemy[1].x       = 590
  27.       @enemy[1].y       = 400
  28.     @bul                = [Bul_aaaagq.new,Bul_aaaagq.new]
  29.     for i in 0 .. @maxbul
  30.       @bul[i]           = Bul_aaaagq.new
  31.       @bul[i].bitmap    = Bitmap.new("Graphics/Icons/001-Weapon01.png")
  32.       @bul[i].ox        = @bul[i].bitmap.width / 2
  33.       @bul[i].oy        = @bul[i].bitmap.height / 2
  34.       @bul[i].x         = -2000
  35.       @bul[i].y         = -2000
  36.     end
  37.     Audio.bgm_play("bgm30.ogg")
  38.     Graphics.transition
  39.  
  40.     loop do
  41.       # 刷新游戏画面
  42.       Graphics.update
  43.       # 刷新输入信息
  44.       Input.update
  45.       # 刷新画面
  46.       update
  47.       if $scene != self
  48.         break
  49.       end
  50.     end
  51.     alldispose
  52.     Graphics.freeze
  53.   rescue Errno::ENOENT
  54.         Graphics.transition
  55.  
  56.     loop do
  57.       # 刷新游戏画面
  58.       Graphics.update
  59.       # 刷新输入信息
  60.       Input.update
  61.       # 刷新画面
  62.       update
  63.       if $scene != self
  64.         break
  65.       end
  66.     end
  67.     alldispose
  68.     Graphics.freeze
  69.  
  70.   end
  71.  
  72.   #------------------------------------------------------------------
  73.   def alldispose
  74.     @mysprite.dispose
  75.     for i in 0 .. @maxenemy
  76.       @enemy[i].dispose
  77.     end
  78.     for i in 0 .. @maxbul
  79.       @bul[i].dispose
  80.     end
  81.   end
  82.   def update
  83.       @mysprite.recover
  84.  
  85.       for i in 0 .. @maxenemy
  86.         for j in 0 .. @maxbul
  87.           if distance(@enemy[i],@bul[j])
  88.             if $伤害显示
  89.               @enemy[i].dam += @bul[j].dam*(150-rand(100))/100
  90.             end
  91.             #@bul[j].x = -2000
  92.             #@bul[j].y = -2000
  93.             @bul[j].init
  94.           end
  95.         end
  96.       end
  97.       for i in 0 .. @maxenemy
  98.         @enemy[i].update
  99.       end
  100.       for i in 0 .. @maxbul
  101.         @bul[i].moving(@mysprite)
  102.       end
  103.       if Input.press?(Input::UP)
  104.           @mysprite.y -= @mysprite.speed
  105.       end
  106.       if Input.press?(Input::DOWN)
  107.           @mysprite.y += @mysprite.speed
  108.       end
  109.       if Input.press?(Input::LEFT)
  110.           @mysprite.x -= @mysprite.speed
  111.       end
  112.       if Input.press?(Input::RIGHT)
  113.           @mysprite.x += @mysprite.speed
  114.       end
  115.       if Input.press?(Input::A)#普通攻击
  116.         onfire(@mysprite,0,0,13,0)
  117.         onfire(@mysprite,0,0,10,2)
  118.         onfire(@mysprite,0,0,10,-2)
  119.         if @maxbul>50
  120.           onfire(@mysprite,0,10,12,0)
  121.           onfire(@mysprite,0,-10,12,0)
  122.           onfire(@mysprite,0,20,11,0)
  123.           onfire(@mysprite,0,-20,11,0)
  124.           onfire(@mysprite,0,50,11,0)
  125.           onfire(@mysprite,0,-50,11,0)
  126.         end
  127.         if @mysprite.wt == 0
  128.           Audio.se_play("Audio/SE/043-Knock04.ogg")
  129.           @mysprite.wt = 100
  130.         end
  131.       end
  132.       if Input.press?(Input::B)#集气攻击
  133.         @lastB = true
  134.         for i in 0 .. 5
  135.           if onfire1(@mysprite, -rand(20), 2*(@numB%50)-50) != -1
  136.             @numB += 1
  137.           end
  138.         end
  139.       elsif @lastB
  140.         @lastB = false
  141.         @numB  = 0
  142.         for i in 0 .. @maxbul
  143.           @bul[i].c10(10+rand(10),-5+rand(10))
  144.         end
  145.         Audio.se_play("Audio/SE/142-Burst02.ogg")
  146.         if @mysprite.wt == 0
  147.           @mysprite.wt = 500
  148.         end
  149.       end
  150.       if Input.press?(Input::C)
  151.         $scene = Scene_Map.new
  152.       end
  153.   end
  154. #-------------------------------功能------------------------------------  
  155.   def onfire(spr,px,py,x,y)
  156.         if spr.wt == 0
  157.           for i in 0 .. @maxbul
  158.             if  @bul[i].x <= 0 or @bul[i].x >= 700
  159.               @bul[i].x = spr.x + px
  160.               @bul[i].y = spr.y + py
  161.               @bul[i].nextpx = x
  162.               @bul[i].nextpy = y
  163.               return i
  164.             end
  165.           end
  166.         end
  167.               return -1
  168.   end
  169.   def onfire1(spr,x,y)
  170.         #if spr.wt == 0
  171.           for i in 0 .. @maxbul
  172.             if  @bul[i].x <= 0 or @bul[i].x >= 700
  173.               @bul[i].x = spr.x + x
  174.               @bul[i].y = spr.y + y
  175.               @bul[i].nextpx = x
  176.               @bul[i].nextpy = y
  177.               @bul[i].bul_st = 1
  178.               return i
  179.             end
  180.           end
  181.         #end
  182.               return -1
  183.   end
  184.  
  185.   def distance(spr,bul)
  186.     if spr.x<-1000 or bul.x<-1000
  187.       return false
  188.     end
  189.     if spr.x>bul.x-bul.damagerange-spr.bitmap.width / 3.0 and spr.x<bul.x+bul.damagerange+spr.bitmap.width / 3.0 and
  190.        spr.y>bul.y-bul.damagerange-spr.bitmap.height / 3.0 and spr.y<bul.y+bul.damagerange+spr.bitmap.height / 3.0
  191.       return true
  192.     else
  193.       return false
  194.     end
  195.   end
  196.  
  197. end
『我对你矢志不渝。』

Lv3.寻梦者

梦石
0
星屑
1845
在线时间
367 小时
注册时间
2012-12-10
帖子
427
2
 楼主| 发表于 2014-11-2 13:27:24 | 只看该作者
没有人知道吗?
『我对你矢志不渝。』
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 04:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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