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

Project1

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

阵型脚本

 关闭 [复制链接]

Lv1.梦旅人

粉蜘蛛秀秀

梦石
0
星屑
76
在线时间
39 小时
注册时间
2007-6-4
帖子
384

贵宾第1届Title华丽大赛新人奖

跳转到指定楼层
1
发表于 2008-6-22 17:36:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
这个帖子里有人求~
所以就应求发布了
原因是自己也是吞食天地作者 所以就不好意思共享出来了
具体使用条件:5人战斗叫脚本,很简单的,推荐自己改
使用方法 自己看了 这里给出了核心~ 很多地方都可以调用

附带脚本重载Table的脚本MT:
因为阵型用到了Table
为啥要重载Table呢 因为Table是不能存放小数点的 为了能存放小数 所以只能重定义了

#kind 是阵型的类型 具体看脚本
# set_pos(kind)         #设置坐标 返回的是Array
# set_parameter(kind)   #设置参数 返回的是Hash, {"名称"=> MT} 自己取吧
# cost_sp(kind)         #设置消耗SP 返回Array
# set_status(kind)      #设置附加状态

#-------------------------------------
# 阵型脚本
# 作者 : 秀秀
# set_pos(kind)
# set_parameter(kind)
# cost_sp(kind)
# set_status(kind)
#-------------------------------------

class MT < Table
  def [](*args)
    return super(*args) / 10.to_f
  end
  
  def []=(*args)
    super(*(args[0, args.size - 1] << args[-1] * 10))
  end
end  



module Lineup
  

#  kind    类型

#  0       散开阵

#  1       鹤翼阵

#  2       冲方阵

#  3       白马阵

#  4       鱼鳞阵

#  5       锋箭阵

#  6       一字阵

#  7       背水阵

#  8       静寂阵

#  9       八卦阵



  # 函数定义
  module_function
  
  # 坐标
  def set_pos(kind)
    case kind
      when 0
        return [0,0,0,0,0]
      when 1
        return [35,0,-35,0,-35]
      when 2
        return [35,-35,35,-35,35]
      when 3
        return [35,0,-35,0,-35]
      when 4
        return [0,35,35,35,0]
      when 5
        return [-35,0,35,0,-35]
      when 6
        return [35,35,35,35,35]
      when 7
        return [35,0,-35,0,35]
      when 8
        return [0,0,0,0,0]
      when 9
        return [0,0,0,0,0]
    end
  end   
      
  
  # 阵型参数([兵力,攻击力,物理防御力,策略防御力,命中,回避,智利])
  def set_parameter(kind)
    a = MT.new(5,7)
    case kind
    when 0
      name = "散开阵"
      pos1 =[1,1,1,1,1,1,1]
      pos2 =[1,1,1,1,1,1,1]
      pos3 =[1,1,1,1,1,1,1]
      pos4 =[1,1,1,1,1,1,1]
      pos5 =[1,1,1,1,1,1,1]
      for j in 0..4
        for i in 0..6
          b = 1 + j
          a[j,i] = eval("pos"+"#{b}"+"")
        end
      end
     return {name=>a}
     
    when 1   
      name = "鹤翼阵"
      pos1 =[1,1,1.4,1,1,0.8,1]
      pos2 =[1,1,1.4,1,1,0.8,1]
      pos3 =[1,1,1.4,1,1,0.8,1]
      pos4 =[1,1,1.4,1,1,0.8,1]
      pos5 =[1,1,1.4,1,1,0.8,1]
      for j in 0..4
        for i in 0..6
          b = 1 + j
          a[j,i] = eval("pos"+"#{b}"+"")
        end
      end
     return {name=>a}

    when 2
      name = "冲方阵"
      pos1 = [1,1.6,1.2,1,1,0.6,1]  
      pos2 = [1,1.2,1.4,1,1,0.6,1]
      pos3 = [1,1.6,1.2,1,1,0.6,1]
      pos4 = [1,1.2,1.4,1,1,0.6,1]
      pos5 = [1,1.6,1.2,1,1,0.6,1]
      for j in 0..4
        for i in 0..6
          b = 1 + j
          a[j,i] = eval("pos"+"#{b}"+"")
        end
      end
     return {name=>a}
      
    when 3   
      name = "白马阵"
      pos1 = [1,1,1,1,1,1.5,1]  
      pos2 = [1,1,1,1,1,1.5,1]
      pos3 = [1,1,1,1,1,1.5,1]
      pos4 = [1,1,1,1,1,1.5,1]
      pos5 = [1,1,1,1,1,1.5,1]
      for j in 0..4
        for i in 0..6
          b = 1 + j
          a[j,i] = eval("pos"+"#{b}"+"")
        end
      end
     return {name=>a}

    when 4
      name = "鱼鳞阵"
      pos1 = [1,0.2,1.5,1.2,1,1,1]  
      pos2 = [1,1.5,1.2,1.2,1,1,1]
      pos3 = [1,1.5,1.2,1.2,1,1,1]
      pos4 = [1,1.5,1.2,1.2,1,1,1]
      pos5 = [1,0.2,1.5,1.2,1,1,1]
      for j in 0..4
        for i in 0..6
          b = 1 + j
          a[j,i] = eval("pos"+"#{b}"+"")
        end
      end
     return {name=>a}
      
    when 5   
      name = "峰箭阵"
      pos1 = [1,0.1,5.5,1,1,0.7,1]  
      pos2 = [1,1.3,1.7,1,1,0.8,1]
      pos3 = [1,3,0.7,1,1,0.9,1]
      pos4 = [1,1.3,1.7,1,1,0.8,1]
      pos5 = [1,0.1,5.5,1,1,0.7,1]
      for j in 0..4
        for i in 0..6
          b = 1 + j
          a[j,i] = eval("pos"+"#{b}"+"")
        end
      end
     return {name=>a}

    when 6
      name = "一字阵"
      pos1 = [1,1.5,0.7,1,1,1.2,1]  
      pos2 = [1,1.5,0.7,1,1,1.2,1]
      pos3 = [1,1.5,0.7,1,1,1.2,1]
      pos4 = [1,1.5,0.7,1,1,1.2,1]
      pos5 = [1,1.5,0.7,1,1,1.2,1]
      for j in 0..4
        for i in 0..6
          b = 1 + j
          a[j,i] = eval("pos"+"#{b}"+"")
        end
      end
     return {name=>a}
      
    when 7
      name = "背水阵"
      pos1 = [1,2,0.6,1,1,1,1]  
      pos2 = [1,2,0.6,1,1,1,1]
      pos3 = [1,2,0.6,1,1,1,1]
      pos4 = [1,2,0.6,1,1,1,1]
      pos5 = [1,2,0.6,1,1,1,1]
      for j in 0..4
        for i in 0..6
          b = 1 + j
          a[j,i] = eval("pos"+"#{b}"+"")
        end
      end
     return {name=>a}
      
    when 8
      name = "静寂阵"
      pos1 =[0,0,0,0,0,0,0]
      pos2 =[0,0,0,0,0,0,0]
      pos3 =[0,0,0,0,0,0,0]
      pos4 =[0,0,0,0,0,0,0]
      pos5 =[0,0,0,0,0,0,0]
      for j in 0..4
        for i in 0..6
          b = 1 + j
          a[j,i] = eval("pos"+"#{b}"+"")
        end
      end
     return {name=>a}

    when 9
      name = "八卦阵"
      pos1 =[0,0,0,0,0,0,0]
      pos2 =[0,0,0,0,0,0,0]
      pos3 =[0,0,0,0,0,0,0]
      pos4 =[0,0,0,0,0,0,0]
      pos5 =[0,0,0,0,0,0,0]
      for j in 0..4
        for i in 0..6
          b = 1 + j
          a[j,i] = eval("pos"+"#{b}"+"")
        end
      end
     return {name=>a}
  
    end  
  end
  

  def cost_sp(kind)
    return [0,5,10,15,20,25,30,35,40][kind]
  end
  
  #附加状态
  # stae_id 自己定义  
  def set_status(kind)
     case kind
     when 0
       state_id = 0
       for i in 0...$game_party.actors.size
         $game_party.actors.add_state(state_id)
       end
     when 1
       state_id = 1
       for i in 0...$game_party.actors.size
         $game_party.actors.add_state(state_id)
       end
     when 2
       state_id = 2
       for i in 0...$game_party.actors.size
         $game_party.actors.add_state(state_id)
       end
     when 3
       state_id = 3
       for i in 0...$game_party.actors.size
         $game_party.actors.add_state(state_id)
       end
     when 4
       state_id = 4
       for i in 0...$game_party.actors.size
         $game_party.actors.add_state(state_id)
       end
     when 5
       state_id = 5
       for i in 0...$game_party.actors.size
         $game_party.actors.add_state(state_id)
       end
     when 6
       state_id = 6
       for i in 0...$game_party.actors.size
         $game_party.actors.add_state(state_id)
       end
     when 7
       state_id = 7
       for i in 0...$game_party.actors.size
         $game_party.actors.add_state(state_id)
       end
     when 8
       state_id = 8
       for i in 0...$game_party.actors.size
         $game_party.actors.add_state(state_id)
       end
     when 9  
       state_id = 9
       for i in 0...$game_party.actors.size
         $game_party.actors.add_state(state_id)
       end
     end
  end
  
end
http://rpg.blue/upload_program/files/hide_xiu_96911465.png
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-6-16
帖子
67
2
发表于 2008-6-22 18:13:01 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

粉蜘蛛秀秀

梦石
0
星屑
76
在线时间
39 小时
注册时间
2007-6-4
帖子
384

贵宾第1届Title华丽大赛新人奖

3
 楼主| 发表于 2008-6-22 18:39:23 | 只看该作者
方法么。。。需要自己添加
比如 Game_Actor 和 Game_enemy里面 的 screen_x,screen_y,screen_z
里面用条件来添加坐标
坐标改了 当然其他数据都改了~很好理解~
screen_x,screen_y,screen_z 的数据是每贞刷新的 所以放心在这里下文章吧
系统信息:本贴由本区版主认可,66RPG感谢您的热情解答~
http://rpg.blue/upload_program/files/hide_xiu_96911465.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

沈黙栤冷

梦石
0
星屑
55
在线时间
5 小时
注册时间
2007-12-15
帖子
3048
4
发表于 2008-6-22 19:03:41 | 只看该作者
…………使用方法还是不太懂……
重来,一切将回更美好?我想不一定,因为苍天给予你的是最美好的结束……阿弥陀佛……(我了个去,关“阿弥陀佛”什么事?)
对于破解游戏,我无话可说,对于破解后宣传,我强烈鄙视,没错,我刚破解了某个正版游戏,想要吗?请自宫后,拿那个东西过来换吧。
……请用行动来支持国产游戏……
PS:谁有仙五破解版啊……(喂!PIA!)
什么情况,汽车漏胎?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

粉蜘蛛秀秀

梦石
0
星屑
76
在线时间
39 小时
注册时间
2007-6-4
帖子
384

贵宾第1届Title华丽大赛新人奖

5
 楼主| 发表于 2008-6-22 19:19:03 | 只看该作者
使用起来比较灵活 还是给一个例子吧
比如找到Game_Enemy 的 def screen_x 这里
是敌人的x坐标
以横板5人脚本为例 修改如下
def screen_x
    if $lineup != nil
      pos1,pos2,pos3,pos4,pos5 =
      $lineup[0],$lineup[1],$lineup[2],$lineup[3],$lineup[4]
    else
      pos1,pos2,pos3,pos4,pos5 = 0,0,0,0,0
    end

    case self.index
     when 0
       retrun 500 - pos1
     when 1
       retrun 500 - pos2
     when 2
       return 500 - pos3
     when  3
       return 500 - pos4
     when 4
       return 500 - pos5
     end
end

$lineup 这个全局变量哪来的捏
其实随便哪里都可以定义 不过要写成这样 $lineup = Lineup.set_pos(kind)
kind是阵型种类 这样定义好 $lineup就生成了 某阵型的5个坐标的数组
在screen_x 这里判断到 $lineup != nil的 情况下 坐标位置就改变了 实现了阵型
饿。。。用在哪里,在数据库的队伍中 可以用事件插入脚本条件在n回合
插入脚本  $lineup = Lineup.set_pos(kind) #kind 0-9 自己填写 需要突破9种
自己在以上的脚本中加~
阵型的效果 数据什么 原理一样的,在适合的位置 加上简单的条件 就可以实现了
具体就不说了 因为方法不是唯一的 全部写清楚~太长....
http://rpg.blue/upload_program/files/hide_xiu_96911465.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2008-5-16
帖子
280
6
发表于 2008-7-3 22:40:58 | 只看该作者
少见!如此有条理的脚本!!!{/se}
就是用法没说的太清楚,回去研究下先。{/pz}(我脚本太烂了)
大坑在我们的心中
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
230
在线时间
33 小时
注册时间
2008-2-13
帖子
348
7
发表于 2008-7-24 00:17:52 | 只看该作者
楼主给范例,拜托了。。。。。我不会用
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
25
在线时间
0 小时
注册时间
2008-9-11
帖子
2
8
发表于 2008-10-16 05:58:52 | 只看该作者
{/fd}请教楼主....
我设计了个战斗系统.有用到阵型.但是我不会做..

战斗流程与计算1 (基本物理攻击流程)
1: 攻击方确认攻击对象. 确定攻击方和反击方.
2: 攻击方附加计算. 攻击方优势阵型主将属性+10%.无关阵型+5%.不利阵型不附加.
3: 反击方附加计算. 反击方受攻击方向圈位置.主将属性+5%.角位置属性不附加.叉位置属性-5%.
4: 根据阵型人数.对双方主将属性附加.附加根据每个阵型而异.(详细见下表.)
5: 战斗计算.攻击方攻击.反击方生命值计算损伤.
如果:
没有归0.跳至6.
反击方生命值归0.跳至7.
6: 反击方对攻击反反击.攻击方生命值计算损伤.
如果:
没有归0. 计算双方经验值获得.战斗流程结束
攻击方生命值归0.跳至7.
7: 主将战死的一方.该阵型中所有队友生命值-10%.
计算双方经验值获得.战斗流程结束.

这是战斗系统流程的演示动画..我用flash做的..楼主帮我看看能做否..
http://home.goofar.com/xq111222/ys1.swf



现在我这有4~5个人在一起做一个游戏.但是这个战斗系统很难做.陷入了僵局.
如果你有兴趣+群57627741.
游戏的相关资料.你可以到这里察看.
http://tieba.baidu.com/f?kz=486919800
.......
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
2 小时
注册时间
2008-9-20
帖子
72
9
发表于 2008-10-16 06:08:38 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-2-7
帖子
9
10
发表于 2009-2-10 16:44:48 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 08:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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