Project1

标题: [RM素材] [类塞尔达][脚本]ABS战斗系统 [打印本页]

作者: 面粉    时间: 2006-8-10 06:48
标题: [RM素材] [类塞尔达][脚本]ABS战斗系统
今天翻素材的时候无意找到的一个用于ARPG的新的ABS……

时间是2006/8/2

作者是BEHEMOTH

感觉还不错……

大致翻译了一下压缩包里面的说明……

相信有了这个说明大部分人应该可以使用这个脚本了。

可能有一些语句翻译的不是很准确……还请见谅  -v-

压缩包已经上传到

http://rpg.blue/upload_program/files/ABSScript.zip

里面有原版的说明和脚本文件。

作者很厚道地附带了范例游戏  

地址是:http://www.phanxgames.com/pxg/projects/forstory/

PS:脚本默认的是

A:菜单
S:技能
D:物品
X:攻击
Page Up/Down:切换控制角色

脚本基本效果如图



(貌似队伍中有多个角色的状态下,未控制角色的跟随有一些问题……)

#############################################################################
#Script by: BEHEMOTH#  
#作者:    BEHEMOTH                                                         
#Date: August 2nd 2006                                                      
# 描述: 一个类似塞尔达或者圣剑传说2类型的ABS脚本
# 希望在使用的时候能够通知我一下,但并不是必需的。
#############################################################################

-------------------------------------------------------------------------------
如何将脚本插入你的工程
-------------------------------------------------------------------------------
这里我给出三个将脚本复制到你工程的脚本编辑器中的方法。
(1)Big File 文件夹
(2)ABS脚本文件
(3)Single文件夹(里面有独立的各个脚本,以.txt形式储存)
请阅读 ~How To Insert Script~.txt (~如何插入脚本~.txt)文件以便知晓如何插入脚本。

-------------------------------------------------------------------------------
如何使用这个脚本以及他在你游戏内的(调用)函数
-------------------------------------------------------------------------------

帮助你理解和掌握的范例游戏
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一个关于如何使用这个脚本的范例
可以在 http://www.phanxgames.com/ 上搜索 "Forgotten Story"这个游戏。
这是一个我用来说明ABS脚本功能的范例游戏。
或者你可以直接连接到 http://www.phanxgames.com/pxg/projects/forstory/


如何制作武器
~~~~~~~~~~~~~~~~

武器在Game_Weapons脚本中定义
现在武器不仅仅可被你的队员所用,只要你愿意,你也可以让怪物使用他们
在这个方法类中,在add the data here这个说明下,就是你可以自己定义武器数据的地方。武器有三种攻击类型。

近身:诸如剑之类的。
范围:诸如弓箭或者枪。
射击类:在对象身上显示一个射击动画。

这是一个近身武器设定的实例
@weapons[1].weapon_melee("长剑", 10, 3, 1, false, [1,1,0,0])    #长剑

这是一个范围武器设定的实例
@weapons[4].weapon_range("AK47", 5, 1, 15, true)                 #AK47

@weapons[1]表示数据库中第1号武器,weapon_melee 表示这是一个近身武器,后面括号中的数据含义按序如下所示:

(1)文件名----武器图像的名称 [更多详细内容请参阅 文件名图像相关内容 段落]
(2)硬直---- 花多长时间才能完成一次攻击。单位:帧
(3)攻击宽度---- 武器能够打击的横向范围
(4)攻击距离---- 武器能够打击到多远
(5)是否只能攻击单个敌人---- 如果设定为true,那么该武器一次只能攻击一个敌人。

下面这个并不是必须要设定的。
(6)攻击方向--- 攻击以何种方向进行。如果你不对该部分设定任何数据,那么武器只会攻击角色面前的敌人。
实例[1,1,0,0]解释如下:
第一个数字:如果设定为1,那么就可以攻击使用者前方的敌人
第二个数字:如果设定为1,那么就可以攻击使用者后方的敌人
第三个数字:如果设定为1,那么就可以攻击使用者左方的敌人
第四个数字:如果设定为1,那么就可以攻击使用者右方的敌人

因此,[1,1,0,0]这个设定将可以攻击使用者前方和后方。

以上的说明同样适用于范围武器的设定。


这是一个射击类武器的设定实例

@weapons[6].weapon_shot("手杖",10, 40, true, 2, 64, true)       #飓风之杖

括号中的各个数据含义按序如下:
(1)文件名  武器图像的名称 [更多详细内容请参阅 文件名图像相关内容 段落]
(2)硬直   花多长时间才能完成一次攻击。单位:帧
(3)距离   射击效果在消失之前能够攻击的距离
(4)是否单体   如果设定为true,那么该武器一次只能攻击一个敌人
(5)加速度   射击效果对于目标有多快的加速度
(6)最大速度   射击的最大速度
(7)热追踪(?)   射击效果是否会追踪目标

如何创建魔法和物品
~~~~~~~~~~~~~~~~~~~~~~~~
魔法和物品分别需要在Game_Magic和Game_Item中设定,在这两个方法类中,在add the data here这个说明下,就是你可以自己定义数据的地方。

这些设定与武器设定基本相同,但是也有微小的不同。
所以建议在阅读这个设定说明之前,先阅读武器的设定说明。

不同的地方就是……相对于@weapons[8].weapon_melee,你可以像如下这样,用@magic[8].magic_melee或者@items[8].item_melee来替代任何一个(定义?)(这是在说什么啊-v- ) (?)

魔法和物品会有一个另外的攻击方式:即效。
所以,如果目标单位进入了设定的范围内,你可以使用即效属性的治疗魔法,这样,该友方单位会立刻被治疗而不必担心使用者所处的位置。

这是一个即效属性物品的实例
@items[3].item_instant(40,20)

括号中的数据含义按序如下:
(1)吟唱时间(物品延迟)   完成魔法或者物品使用所需要的吟唱时间。单位:帧
(2)范围   魔法或者物品能够作用到多远的目标上

注:魔法和物品仍然具有类似武器的其他类型设定,比如范围、射击等等。

为战斗场地添加敌人
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
当需要添加敌人的时候,在你所希望它们出现的地方新建一个事件。
正如你如何使用对话文章命令一样,在事件名称内作一些更改。
事件的内容仍然有效。

在事件名称内,你可以添加如下任何命令:

\m[n] :事件将会被设定的第n号敌人所代替(需要设定对应的敌人)

\w[n] :事件将会持有设定的第n号武器

\a[n]:事件的移动AI类型会被设定为第n号类型
AI 移动类型如下所示:
0:只会按照事件定义的移动方式移动。
1:见到敌对角色仍然保持静止
2、向敌对角色移动(默认)
3、只有当敌对角色进入攻击范围的时候才会靠近(适合远程敌人)
4、远离敌对角色

\t[n]:事件目标AI会被设定为第n种类型
目标AI类型
0:不锁定任何目标
1:锁定角色中,视野范围内HP最少的
2、锁定角色中,视野范围内HP最多的
3、锁定角色中,距离该事件最近的
4、锁定玩家当前所控制的角色

\s[n]:事件视野范围AI。n所代表的数字越大,敌人所能看到的范围就越广。(默认为10格)

*:*标示符表示该事件不是怪兽,但是你希望这个事件只有被武器、魔法或者物品攻击之后才会被触发

文件名图像相关内容
~~~~~~~~~~~~~~~~
武器、魔法、物品需要一个文件名称以便寻找数据。程序会自动到character目录下寻找该文件名称的文件,找到后,便会显示在屏幕上。
如果程序没有找到,那么图像就不会被显示,如果此时攻击效果正在目标身上显示,那么就会弹出一个对话框,提示找不到指定文件名的文件。
所以请不要忘记在character文件夹下面添加对应图像。
我保持了这些图像与创建character图像相同的规格:任意大小的4X4单元图片


人物图像(行走图)---动画
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
假设你的人物的图片名称为“凯”
那么,当这个角色行走的时候,需要一个名称为“凯”的行走图,并会按默认方式加载。
当这个角色近身攻击的时候,需要加载一个名称为“凯_melee”的行走图
当这个角色进行范围攻击的时候,需要加载一个名称为“凯_range”的行走图
当这个角色死亡的时候,需要加载一个名称为“凯_dead”的行走图
当这个角色使用魔法的时候,需要加载一个名称为“凯_magic”的行走图
当这个角色使用物品的时候,需要加载一个名称为“凯_item”的行走图

以上就是如果你需要完全动画化一个角色,所需要的六种文件。
但是呢,并不是一个都不能缺。如果你没有相应的图片,那么你也不需要放入了。
如果能够把六种都准备齐全,你的游戏会有更好的视觉效果。


武器、魔法、物品图像--- 近身以及范围
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
当使用一个近身或者范围类型的攻击动画时,我们假设这个文件名称是“剑”
如果该文件存在于character文件夹,那么角色行走的时候,将会显示手中持有该武器的效果。当你按下按键的时候,程序便会寻找名称为“剑_effect”的文件,如果该文件存在,那么角色攻击的时候就会显示该图像。以上效果同样适用于范围属性。
图像将会以动画的形式在角色所面朝的方向播放出来。


武器、魔法、物品图像--- 射击类
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
当使用射击类型的攻击图像时,我们假设文件名称为“魔杖”而且它会向敌人射击一个火球。程序将会寻找在character文件夹下,是否存在名称为“魔杖”的图片。如果存在,那么角色行走的时候,将会显示手中持有该物品的效果。当你按下特定按键的时候,程序将会检查是否存在文件名称为“魔杖_effect”的文件。如果存在,那么攻击的时候将会显示该图像。由于这种类型的攻击还会击中敌人并显示另外一个图像,所以程序还会检查在character文件夹下是否存在“魔杖_shot”文件。如果存在,那么你的射击效果将会被显示出来。
否则,一个提示错误的对话框就会弹出,并提示说找不到图像文件。
图像将会以动画的形式在攻击路径上显示出来,并且循环到它消失为止。


作者: 面粉    时间: 2006-8-10 06:48
标题: [RM素材] [类塞尔达][脚本]ABS战斗系统
今天翻素材的时候无意找到的一个用于ARPG的新的ABS……

时间是2006/8/2

作者是BEHEMOTH

感觉还不错……

大致翻译了一下压缩包里面的说明……

相信有了这个说明大部分人应该可以使用这个脚本了。

可能有一些语句翻译的不是很准确……还请见谅  -v-

压缩包已经上传到

http://rpg.blue/upload_program/files/ABSScript.zip

里面有原版的说明和脚本文件。

作者很厚道地附带了范例游戏  

地址是:http://www.phanxgames.com/pxg/projects/forstory/

PS:脚本默认的是

A:菜单
S:技能
D:物品
X:攻击
Page Up/Down:切换控制角色

脚本基本效果如图



(貌似队伍中有多个角色的状态下,未控制角色的跟随有一些问题……)

#############################################################################
#Script by: BEHEMOTH#  
#作者:    BEHEMOTH                                                         
#Date: August 2nd 2006                                                      
# 描述: 一个类似塞尔达或者圣剑传说2类型的ABS脚本
# 希望在使用的时候能够通知我一下,但并不是必需的。
#############################################################################

-------------------------------------------------------------------------------
如何将脚本插入你的工程
-------------------------------------------------------------------------------
这里我给出三个将脚本复制到你工程的脚本编辑器中的方法。
(1)Big File 文件夹
(2)ABS脚本文件
(3)Single文件夹(里面有独立的各个脚本,以.txt形式储存)
请阅读 ~How To Insert Script~.txt (~如何插入脚本~.txt)文件以便知晓如何插入脚本。

-------------------------------------------------------------------------------
如何使用这个脚本以及他在你游戏内的(调用)函数
-------------------------------------------------------------------------------

帮助你理解和掌握的范例游戏
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一个关于如何使用这个脚本的范例
可以在 http://www.phanxgames.com/ 上搜索 "Forgotten Story"这个游戏。
这是一个我用来说明ABS脚本功能的范例游戏。
或者你可以直接连接到 http://www.phanxgames.com/pxg/projects/forstory/


如何制作武器
~~~~~~~~~~~~~~~~

武器在Game_Weapons脚本中定义
现在武器不仅仅可被你的队员所用,只要你愿意,你也可以让怪物使用他们
在这个方法类中,在add the data here这个说明下,就是你可以自己定义武器数据的地方。武器有三种攻击类型。

近身:诸如剑之类的。
范围:诸如弓箭或者枪。
射击类:在对象身上显示一个射击动画。

这是一个近身武器设定的实例
@weapons[1].weapon_melee("长剑", 10, 3, 1, false, [1,1,0,0])    #长剑

这是一个范围武器设定的实例
@weapons[4].weapon_range("AK47", 5, 1, 15, true)                 #AK47

@weapons[1]表示数据库中第1号武器,weapon_melee 表示这是一个近身武器,后面括号中的数据含义按序如下所示:

(1)文件名----武器图像的名称 [更多详细内容请参阅 文件名图像相关内容 段落]
(2)硬直---- 花多长时间才能完成一次攻击。单位:帧
(3)攻击宽度---- 武器能够打击的横向范围
(4)攻击距离---- 武器能够打击到多远
(5)是否只能攻击单个敌人---- 如果设定为true,那么该武器一次只能攻击一个敌人。

下面这个并不是必须要设定的。
(6)攻击方向--- 攻击以何种方向进行。如果你不对该部分设定任何数据,那么武器只会攻击角色面前的敌人。
实例[1,1,0,0]解释如下:
第一个数字:如果设定为1,那么就可以攻击使用者前方的敌人
第二个数字:如果设定为1,那么就可以攻击使用者后方的敌人
第三个数字:如果设定为1,那么就可以攻击使用者左方的敌人
第四个数字:如果设定为1,那么就可以攻击使用者右方的敌人

因此,[1,1,0,0]这个设定将可以攻击使用者前方和后方。

以上的说明同样适用于范围武器的设定。


这是一个射击类武器的设定实例

@weapons[6].weapon_shot("手杖",10, 40, true, 2, 64, true)       #飓风之杖

括号中的各个数据含义按序如下:
(1)文件名  武器图像的名称 [更多详细内容请参阅 文件名图像相关内容 段落]
(2)硬直   花多长时间才能完成一次攻击。单位:帧
(3)距离   射击效果在消失之前能够攻击的距离
(4)是否单体   如果设定为true,那么该武器一次只能攻击一个敌人
(5)加速度   射击效果对于目标有多快的加速度
(6)最大速度   射击的最大速度
(7)热追踪(?)   射击效果是否会追踪目标

如何创建魔法和物品
~~~~~~~~~~~~~~~~~~~~~~~~
魔法和物品分别需要在Game_Magic和Game_Item中设定,在这两个方法类中,在add the data here这个说明下,就是你可以自己定义数据的地方。

这些设定与武器设定基本相同,但是也有微小的不同。
所以建议在阅读这个设定说明之前,先阅读武器的设定说明。

不同的地方就是……相对于@weapons[8].weapon_melee,你可以像如下这样,用@magic[8].magic_melee或者@items[8].item_melee来替代任何一个(定义?)(这是在说什么啊-v- ) (?)

魔法和物品会有一个另外的攻击方式:即效。
所以,如果目标单位进入了设定的范围内,你可以使用即效属性的治疗魔法,这样,该友方单位会立刻被治疗而不必担心使用者所处的位置。

这是一个即效属性物品的实例
@items[3].item_instant(40,20)

括号中的数据含义按序如下:
(1)吟唱时间(物品延迟)   完成魔法或者物品使用所需要的吟唱时间。单位:帧
(2)范围   魔法或者物品能够作用到多远的目标上

注:魔法和物品仍然具有类似武器的其他类型设定,比如范围、射击等等。

为战斗场地添加敌人
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
当需要添加敌人的时候,在你所希望它们出现的地方新建一个事件。
正如你如何使用对话文章命令一样,在事件名称内作一些更改。
事件的内容仍然有效。

在事件名称内,你可以添加如下任何命令:

\m[n] :事件将会被设定的第n号敌人所代替(需要设定对应的敌人)

\w[n] :事件将会持有设定的第n号武器

\a[n]:事件的移动AI类型会被设定为第n号类型
AI 移动类型如下所示:
0:只会按照事件定义的移动方式移动。
1:见到敌对角色仍然保持静止
2、向敌对角色移动(默认)
3、只有当敌对角色进入攻击范围的时候才会靠近(适合远程敌人)
4、远离敌对角色

\t[n]:事件目标AI会被设定为第n种类型
目标AI类型
0:不锁定任何目标
1:锁定角色中,视野范围内HP最少的
2、锁定角色中,视野范围内HP最多的
3、锁定角色中,距离该事件最近的
4、锁定玩家当前所控制的角色

\s[n]:事件视野范围AI。n所代表的数字越大,敌人所能看到的范围就越广。(默认为10格)

*:*标示符表示该事件不是怪兽,但是你希望这个事件只有被武器、魔法或者物品攻击之后才会被触发

文件名图像相关内容
~~~~~~~~~~~~~~~~
武器、魔法、物品需要一个文件名称以便寻找数据。程序会自动到character目录下寻找该文件名称的文件,找到后,便会显示在屏幕上。
如果程序没有找到,那么图像就不会被显示,如果此时攻击效果正在目标身上显示,那么就会弹出一个对话框,提示找不到指定文件名的文件。
所以请不要忘记在character文件夹下面添加对应图像。
我保持了这些图像与创建character图像相同的规格:任意大小的4X4单元图片


人物图像(行走图)---动画
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
假设你的人物的图片名称为“凯”
那么,当这个角色行走的时候,需要一个名称为“凯”的行走图,并会按默认方式加载。
当这个角色近身攻击的时候,需要加载一个名称为“凯_melee”的行走图
当这个角色进行范围攻击的时候,需要加载一个名称为“凯_range”的行走图
当这个角色死亡的时候,需要加载一个名称为“凯_dead”的行走图
当这个角色使用魔法的时候,需要加载一个名称为“凯_magic”的行走图
当这个角色使用物品的时候,需要加载一个名称为“凯_item”的行走图

以上就是如果你需要完全动画化一个角色,所需要的六种文件。
但是呢,并不是一个都不能缺。如果你没有相应的图片,那么你也不需要放入了。
如果能够把六种都准备齐全,你的游戏会有更好的视觉效果。


武器、魔法、物品图像--- 近身以及范围
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
当使用一个近身或者范围类型的攻击动画时,我们假设这个文件名称是“剑”
如果该文件存在于character文件夹,那么角色行走的时候,将会显示手中持有该武器的效果。当你按下按键的时候,程序便会寻找名称为“剑_effect”的文件,如果该文件存在,那么角色攻击的时候就会显示该图像。以上效果同样适用于范围属性。
图像将会以动画的形式在角色所面朝的方向播放出来。


武器、魔法、物品图像--- 射击类
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
当使用射击类型的攻击图像时,我们假设文件名称为“魔杖”而且它会向敌人射击一个火球。程序将会寻找在character文件夹下,是否存在名称为“魔杖”的图片。如果存在,那么角色行走的时候,将会显示手中持有该物品的效果。当你按下特定按键的时候,程序将会检查是否存在文件名称为“魔杖_effect”的文件。如果存在,那么攻击的时候将会显示该图像。由于这种类型的攻击还会击中敌人并显示另外一个图像,所以程序还会检查在character文件夹下是否存在“魔杖_shot”文件。如果存在,那么你的射击效果将会被显示出来。
否则,一个提示错误的对话框就会弹出,并提示说找不到图像文件。
图像将会以动画的形式在攻击路径上显示出来,并且循环到它消失为止。


作者: 咸蛋超人XY    时间: 2006-8-10 07:07
提示: 作者被禁止或删除 内容自动屏蔽
作者: link006007    时间: 2006-8-10 07:21
不错不错,拿来看下,谢谢楼主乐
作者: 面粉    时间: 2006-8-10 08:46
试了一下他的范例游戏,手感不错的说……

从音乐和系统来看……作者明显是一个YS的Fans……{/se}




Ps:脚本默认的是

A:菜单
S:技能
D:物品
X:攻击


作者: MogStar    时间: 2006-8-10 17:17
提示: 作者被禁止或删除 内容自动屏蔽
作者: 美兽    时间: 2006-8-10 17:45
以下引用MogStar于2006-8-10 9:17:18的发言:

好东西呀,手感很好,系统设定也很全面


强烈引用,调成全屏远程敌人真素地狱{/gg}

作者: 千鸟    时间: 2006-8-11 02:18
好东西!!!!!!!!!!!
作者: 诗酒    时间: 2006-8-11 07:18
爆感兴趣!下下!
作者: 小天    时间: 2006-8-11 20:07
林克FAN
某天收!
谢谢共享
作者: king    时间: 2006-8-11 20:54
谢谢共享 !
不客气,拿走啦!
作者: 叼烟的男孩    时间: 2006-8-12 16:41
太好了!感谢楼主
作者: 千鸟    时间: 2006-8-14 16:06
这个脚本有错误!
选择战术中的目标的第一个,会出现脚本错误!
作者: sc1000y    时间: 2006-8-19 21:58
最后一个也会起冲突
作者: 美兽    时间: 2006-8-29 18:05
实际作者范例工程的内容与给出的脚本出入很大,虽大多为针对自己游戏的修改,

但有一处的差别非常影响攻击的流畅性,就是Game_Players的一个“moving? ”影响的

把Game_Players类的对应的部分改成这样就可以了

    unless $game_system.map_interpreter.running? or
           @move_route_forcing or $game_temp.message_window_showing
      unless moving?   #ready_for_action
        # Move player in the direction the directional button is being pressed
       if self.dead==false
        case Input.dir4
        when 2
          move_down
        when 4
          move_left
        when 6
          move_right
        when 8
          move_up
        end
       end
      end
      if Input.press?(Input::A)
        self.weapon_attack
      end
      if Input.press?(Input::Y)
        magic_id = $game_party.actors[@actor_id].hot_magic_id
        self.magic_attack(magic_id)
      end
      if Input.press?(Input::Z)
        item_id = $game_party.actors[@actor_id].hot_item_id
        self.item_attack(item_id)
      end
    end




作者: 叼烟的男孩    时间: 2006-8-29 18:19
脚本我很烂...调用不了...
作者: letianhs123    时间: 2006-9-2 08:49
好东西
拿走了{/se}
作者: 暴风の龙    时间: 2006-9-2 11:31
好东西啊~试试用
作者: libinsf    时间: 2007-5-19 18:18
好帖子沉了怪可惜的。顶了。
作者: 见光即死    时间: 2007-5-23 20:35
{/se}要了 谢谢 跑拉 拿了就要

作者: tranpol    时间: 2007-5-25 22:11
真的是很强的脚本啊~~~
下了收藏~~~

真的是个好东东
俺也超喜欢YS系列的啊
从一代到到现在的八代
都是精典啊
作者: 见光即死    时间: 2007-6-4 07:17
{/fd}{/se}喜欢 正点 好爽啊
作者: 唯舞独尊    时间: 2008-2-13 01:43
不错哦~
作者: asperta    时间: 2008-2-13 04:27
不错! 可惜已经下不了了!
作者: swabwind    时间: 2008-2-14 05:23
类塞尔达?作者是YS的FAN?
这么说战斗很爽快咯?
貌似不错,可惜已经失效,楼主修复一下啊




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