发表于 2006-2-16 21:111#
楼主没准有人看过......... 贴子如下文......
pose修改基础教程(基础篇)
pose修改对于没有编程基础的人来说完全是可以做到的,但研究pose文件必须要了解pose文件的基本构造和内部结构,以及各命令行的用途,下面开始讲解pose的基本构造。
一、文件的目录
pose文件全部在pmodel文件夹中,p0.pos---------p19.pos这20个文件,便是游戏中20个人物的pose,号码与人物在游戏中的排列顺序对应(比如0号是孟星魂,1号是冷燕……依此类推)
打开一个pose文件,pose XXX就代表XXX动作的内容,每一个pose xxx里面都是一个独立的动作。修改得当的话,可以做出很多好看的效果。
不要小瞧pose文件的修改,其实网络中的高攻击秒杀,多半是通过pose文件实现的。
二、pose 详解示例:(以匕首大绝为示例讲解)
Pose 259 #??忌?癣Α(此处的号码表示pose的代号,259号就代表匕首大绝)
{
Source 0
Start 9531 (整个动作桢开始,这里表示从9531号动作桢开始)
End 9561 (整个动作桢结束,这里表示到9561号动作桢结束)
EffectType 0 (攻击类型,无用,不必理会)
EffectID Pos259 (攻击效果ID)
link 349 (续招,这里表示做完259动作以后自动连接到349动作)
Blend (见注解1)
{
Start 9531 (本动作小节开始桢)
End 9540 (本动作小节结束桢)
Speed 1 (本动作小节桢数速度)
}
Action (见注解1)
{
Start 9541 (本动作小节开始桢)
End 9550 (本动作小节结束桢)
Speed 1 (本动作小节桢数速度)
}
Action (见注解1)
{
Start 9551 (本动作小节开始桢)
End 9558 (本动作小节结束桢)
Speed 0.5 (本动作小节桢数速度)
}
Blend (见注解1)
{
Start 9559 (本动作小节开始桢)
End 9561 (本动作小节开始桢)
Speed 1 (本动作小节桢数动作)
}
Attack (见注解2)
{
bone = "effect" (表示攻击以效果作为判定,详见注解3)
Start 9551 (攻击动作桢开始)
End 9553 (攻击动作桢结束)
AttackType 0 (攻击是否破防,0是不破防,1是破防,改成1,此招就破防了)
CheckFriend 0 (是否做同队伤害,无用,不必理会)
DefenseValue 0.5 (对方防御住此招后僵持时间,最大255)
DefenseMove 5 (对方防御住此招后移动距离,最大255)
TargetValue 0 (对方中此招后僵持时间,最大255)
TargetMove 5 (对方中此招后移动距离,最大255)
TargetPose 109 (对方中此招后做出的动作)
TargetPoseFront 109 (对方从前方中招后做出的动作)
TargetPoseBack 109 (对方从后方中招后做出的动作)
TargetPoseLeft 109 (对方从左边中招后做出的动作)
TargetPoseRight 109 (对方从右边中招后做出的动作)
} (以上5个中招动作,推荐改为一致的动作,否则可能效果不好)
Drag (使用光影效果的动作小节,见注解4)
{
Start 9550 (使用光影的动作开始桢)
End 9554 (使用光影的动作结束桢)
Time 0.2 (光影滞留时间)
Color 255,255,198 (光影颜色)
}
}
注解1:blend,action没有什么分别,我们可以把它们理解为“动作小节”。往后会详细讲到关于动作小节的修改。
注解2:attack括号里面的内容表示攻击参数,凡是带有attack的pose,都表示这个pose是带攻击力的,不带attack的pose,加上attack,一样可以让此pose带上攻击,至于攻击力的大小,则是由你选定的pose的动作桢决定的
注解3:很多pose并非bone = effect,而是bone = weapon 或者其他,比如bone = weapon就是以武器模型做为攻击判定,网络上流传的范围文件,就是改的武器模型,配合着bone = weapon使用,可以做出全屏秒杀。(注意,一定要选动气的招,才能做到全屏秒杀)
注解4:此处的光影效果,和SFX文件夹里面的光影效果是两回事。
攻击效果与攻击判定的合理搭配(进步篇)
作者:魔尊§重楼
在理解pose含义的基础上,首先应该了解的,就是攻击效果与攻击判定的搭配,本章如果理解好了,那么恭喜,你可以熟练运用pose修改了。
我们还是以匕首大绝为示例讲解:
{
Source 0
Start 9531
End 9561
EffectType 0
EffectID Pos259
link 349
Blend
{
Start 9531
End 9540
Speed 1
}
Action
{
Start 9541
End 9550
Speed 1
}
Action
{
Start 9551
End 9558
Speed 0.5
}
Blend
{
Start 9559
End 9561
Speed 1
}
Attack
{
bone = "effect"
Start 9551
End 9553
AttackType 0
CheckFriend 0
DefenseValue 0.5
DefenseMove 5
TargetValue 0
TargetMove 5
TargetPose 109
TargetPoseFront 109
TargetPoseBack 109
TargetPoseLeft 109
TargetPoseRight 109
}
Drag
{
Start 9550
End 9554
Time 0.2
Color 255,255,198
}
}
在基础篇中的注解中曾经提到过,bone = effect表示以效果做攻击判定,与上面的EffectID Pos259相照应,你可以尝试着更改EffectID,并依然以效果做攻击判定,你选的EffectID不同,攻击的效果也就不同(比如攻击范围,如果把EffectID换枪绝什么的,攻击范围肯定要比原来广的多)
请看下列的一段代码:
bone = "weapon","effect",
"bau Head","bau Spine1",
"bau Spine","bau R UpperArm",
"bau R Forearm","bau R Hand",
"bau L UpperArm","bau L Forearm",
"bau L Hand","bad R Thigh",
"bad R Calf","bad R Foot",
"bad L Thigh","bad L Calf",
"bad L Foot"
这个攻击判定代码,包含的内容可就多的很了,不过我们重点研究的还是"weapon"和"effect"两大效果,若是做全屏秒杀的话,那么一定会用到"weapon"(危害不小,这里不可能讲成品的制作方法,愿意研究可凭手头资料自行钻研),当然提倡使用"effect"做攻击判定,配合不同的EffectID,做出几十种实用的攻击pose都不在话下哦.
题外话:无论怎么改pose,都是不可能让别人看见效果的,只能饱自己的眼福,因为pose文件是从本地读取的,这点请注意。如果要使对方中毒,一种改法是使动作桢带毒,动作桢和.res里面的招式是对应关系,所以改pose实现让别人中毒,可以选取带毒的动作桢。
小技巧:利用&符号可以实现一次使用多个EffectID,比如这样:
EffectID Pos259&Pos259&Pos474&Pos325
多重攻击(提高篇)
作者:魔尊§重楼
顾名思义,多重攻击就是在一个攻击动作里面分成好几个攻击小节,每个小节进行一重不同的攻击,每重攻击的对敌效果都是不同的。
下面举个例子:
匕首的下上A将敌人扑倒,下扎3次,如果你想让你扎的第一下让对方施展“锤必”,第二下施展“剑绝”,第三下“趴在地上”,那么应该如何来改呢?
打开匕首下上A的pose,发现其中有3个attack,每一个attack叫做一重攻击,每重攻击都可以设置不同的参数来达到目的,这就是所谓的“多重攻击”。
根据这种分类方法,攻击大致可以分为3种:
1、无攻击 2、单重攻击 3、多重攻击
这三者之间可以互相转化,三者的区别方法只需要看此pose中attack的数量,无就是无攻击,只有一个就是单重攻击,大于等于2个叫做多重攻击。
注意:
多重攻击无法做到重复施展某个动作小节,因为动作针的进行是无回头式的(除非用link跳到某个地方),每重攻击未必只能进行一次攻击(前面提到过什么叫“一次攻击”了,就是看对方掉血的次数),而且无论给pose加多少重攻击,每重攻击的攻击动作桢必须在总动作桢的范围之内(超范围就无效了)。
指令教学文件
//注解
语法
//注解内容
功用
设定此行为注解,不必执行.
范例:
//设定A值
int a = 0;
/* */注解
语法
/*注解内容*/
功用
设定两个符号内的全是注解
范例:
/* 重楼对抗景天
景天太强打不败
*/
变数宣告
int a; 宣告a值为整数数值
string a; 宣告a值为字串数值
阵列宣告
int a[10]; 宣告a阵列为整数数值
string a[10]; 宣告a阵列为字串数值
FOR指令
语法
for(运算式){执行内容}
功用
重覆增值执行一段程序
范例:
int a;
for (a = 2;a <= 16;a++)
{
ChangeBehavior(a, "patrol", Rand(40), Rand(40), Rand(40));
}
这段程序可让NPC们全数修正行为
include指令
语法
#include "file name"
功用
载入另一个档案一起执行.
范例:
#include "gbj.ai"
载入gbj.ai一起执行
次程序
语法
function name(传递数值){程序内容}
功用
自定一个独立程序.
范例:
SaySub(int id,int s,string say1,string say2,string say3,string say4,string say5)
{
if (s == 0)
{
Say(id,say1);
}
if (s == 1)
{
Say(id,say2);
}
if (s == 2)
{
Say(id,say3);
}
if (s == 3)
{
Say(id,say4);
}
if (s == 4)
{
Say(id,say5);
}
}
int a;
OnUpdate()
{
int a = GetChar("重楼");
SaySub(a,Rand(5), "景天为啥砍我呀!?","大家安安","大家来玩流星吧!", "各位大大安安","再砍就翻脸了");
}
这就简单的副程序构成,及呼叫方式
pose修改基础教程(基础篇)
pose修改对于没有编程基础的人来说完全是可以做到的,但研究pose文件必须要了解pose文件的基本构造和内部结构,以及各命令行的用途,下面开始讲解pose的基本构造。
一、文件的目录
pose文件全部在pmodel文件夹中,p0.pos---------p19.pos这20个文件,便是游戏中20个人物的pose,号码与人物在游戏中的排列顺序对应(比如0号是孟星魂,1号是冷燕……依此类推)
打开一个pose文件,pose XXX就代表XXX动作的内容,每一个pose xxx里面都是一个独立的动作。修改得当的话,可以做出很多好看的效果。
不要小瞧pose文件的修改,其实网络中的高攻击秒杀,多半是通过pose文件实现的。
二、pose 详解示例:(以匕首大绝为示例讲解)
Pose 259 #??忌?癣Α(此处的号码表示pose的代号,259号就代表匕首大绝)
{
Source 0
Start 9531 (整个动作桢开始,这里表示从9531号动作桢开始)
End 9561 (整个动作桢结束,这里表示到9561号动作桢结束)
EffectType 0 (攻击类型,无用,不必理会)
EffectID Pos259 (攻击效果ID)
link 349 (续招,这里表示做完259动作以后自动连接到349动作)
Blend (见注解1)
{
Start 9531 (本动作小节开始桢)
End 9540 (本动作小节结束桢)
Speed 1 (本动作小节桢数速度)
}
Action (见注解1)
{
Start 9541 (本动作小节开始桢)
End 9550 (本动作小节结束桢)
Speed 1 (本动作小节桢数速度)
}
Action (见注解1)
{
Start 9551 (本动作小节开始桢)
End 9558 (本动作小节结束桢)
Speed 0.5 (本动作小节桢数速度)
}
Blend (见注解1)
{
Start 9559 (本动作小节开始桢)
End 9561 (本动作小节开始桢)
Speed 1 (本动作小节桢数动作)
}
Attack (见注解2)
{
bone = "effect" (表示攻击以效果作为判定,详见注解3)
Start 9551 (攻击动作桢开始)
End 9553 (攻击动作桢结束)
AttackType 0 (攻击是否破防,0是不破防,1是破防,改成1,此招就破防了)
CheckFriend 0 (是否做同队伤害,无用,不必理会)
DefenseValue 0.5 (对方防御住此招后僵持时间,最大255)
DefenseMove 5 (对方防御住此招后移动距离,最大255)
TargetValue 0 (对方中此招后僵持时间,最大255)
TargetMove 5 (对方中此招后移动距离,最大255)
TargetPose 109 (对方中此招后做出的动作)
TargetPoseFront 109 (对方从前方中招后做出的动作)
TargetPoseBack 109 (对方从后方中招后做出的动作)
TargetPoseLeft 109 (对方从左边中招后做出的动作)
TargetPoseRight 109 (对方从右边中招后做出的动作)
} (以上5个中招动作,推荐改为一致的动作,否则可能效果不好)
Drag (使用光影效果的动作小节,见注解4)
{
Start 9550 (使用光影的动作开始桢)
End 9554 (使用光影的动作结束桢)
Time 0.2 (光影滞留时间)
Color 255,255,198 (光影颜色)
}
}
注解1:blend,action没有什么分别,我们可以把它们理解为“动作小节”。往后会详细讲到关于动作小节的修改。
注解2:attack括号里面的内容表示攻击参数,凡是带有attack的pose,都表示这个pose是带攻击力的,不带attack的pose,加上attack,一样可以让此pose带上攻击,至于攻击力的大小,则是由你选定的pose的动作桢决定的
注解3:很多pose并非bone = effect,而是bone = weapon 或者其他,比如bone = weapon就是以武器模型做为攻击判定,网络上流传的范围文件,就是改的武器模型,配合着bone = weapon使用,可以做出全屏秒杀。(注意,一定要选动气的招,才能做到全屏秒杀)
注解4:此处的光影效果,和SFX文件夹里面的光影效果是两回事。
攻击效果与攻击判定的合理搭配(进步篇)
作者:魔尊§重楼
在理解pose含义的基础上,首先应该了解的,就是攻击效果与攻击判定的搭配,本章如果理解好了,那么恭喜,你可以熟练运用pose修改了。
我们还是以匕首大绝为示例讲解:
{
Source 0
Start 9531
End 9561
EffectType 0
EffectID Pos259
link 349
Blend
{
Start 9531
End 9540
Speed 1
}
Action
{
Start 9541
End 9550
Speed 1
}
Action
{
Start 9551
End 9558
Speed 0.5
}
Blend
{
Start 9559
End 9561
Speed 1
}
Attack
{
bone = "effect"
Start 9551
End 9553
AttackType 0
CheckFriend 0
DefenseValue 0.5
DefenseMove 5
TargetValue 0
TargetMove 5
TargetPose 109
TargetPoseFront 109
TargetPoseBack 109
TargetPoseLeft 109
TargetPoseRight 109
}
Drag
{
Start 9550
End 9554
Time 0.2
Color 255,255,198
}
}
在基础篇中的注解中曾经提到过,bone = effect表示以效果做攻击判定,与上面的EffectID Pos259相照应,你可以尝试着更改EffectID,并依然以效果做攻击判定,你选的EffectID不同,攻击的效果也就不同(比如攻击范围,如果把EffectID换枪绝什么的,攻击范围肯定要比原来广的多)
请看下列的一段代码:
bone = "weapon","effect",
"bau Head","bau Spine1",
"bau Spine","bau R UpperArm",
"bau R Forearm","bau R Hand",
"bau L UpperArm","bau L Forearm",
"bau L Hand","bad R Thigh",
"bad R Calf","bad R Foot",
"bad L Thigh","bad L Calf",
"bad L Foot"
这个攻击判定代码,包含的内容可就多的很了,不过我们重点研究的还是"weapon"和"effect"两大效果,若是做全屏秒杀的话,那么一定会用到"weapon"(危害不小,这里不可能讲成品的制作方法,愿意研究可凭手头资料自行钻研),当然提倡使用"effect"做攻击判定,配合不同的EffectID,做出几十种实用的攻击pose都不在话下哦.
题外话:无论怎么改pose,都是不可能让别人看见效果的,只能饱自己的眼福,因为pose文件是从本地读取的,这点请注意。如果要使对方中毒,一种改法是使动作桢带毒,动作桢和.res里面的招式是对应关系,所以改pose实现让别人中毒,可以选取带毒的动作桢。
小技巧:利用&符号可以实现一次使用多个EffectID,比如这样:
EffectID Pos259&Pos259&Pos474&Pos325
多重攻击(提高篇)
作者:魔尊§重楼
顾名思义,多重攻击就是在一个攻击动作里面分成好几个攻击小节,每个小节进行一重不同的攻击,每重攻击的对敌效果都是不同的。
下面举个例子:
匕首的下上A将敌人扑倒,下扎3次,如果你想让你扎的第一下让对方施展“锤必”,第二下施展“剑绝”,第三下“趴在地上”,那么应该如何来改呢?
打开匕首下上A的pose,发现其中有3个attack,每一个attack叫做一重攻击,每重攻击都可以设置不同的参数来达到目的,这就是所谓的“多重攻击”。
根据这种分类方法,攻击大致可以分为3种:
1、无攻击 2、单重攻击 3、多重攻击
这三者之间可以互相转化,三者的区别方法只需要看此pose中attack的数量,无就是无攻击,只有一个就是单重攻击,大于等于2个叫做多重攻击。
注意:
多重攻击无法做到重复施展某个动作小节,因为动作针的进行是无回头式的(除非用link跳到某个地方),每重攻击未必只能进行一次攻击(前面提到过什么叫“一次攻击”了,就是看对方掉血的次数),而且无论给pose加多少重攻击,每重攻击的攻击动作桢必须在总动作桢的范围之内(超范围就无效了)。
指令教学文件
//注解
语法
//注解内容
功用
设定此行为注解,不必执行.
范例:
//设定A值
int a = 0;
/* */注解
语法
/*注解内容*/
功用
设定两个符号内的全是注解
范例:
/* 重楼对抗景天
景天太强打不败
*/
变数宣告
int a; 宣告a值为整数数值
string a; 宣告a值为字串数值
阵列宣告
int a[10]; 宣告a阵列为整数数值
string a[10]; 宣告a阵列为字串数值
FOR指令
语法
for(运算式){执行内容}
功用
重覆增值执行一段程序
范例:
int a;
for (a = 2;a <= 16;a++)
{
ChangeBehavior(a, "patrol", Rand(40), Rand(40), Rand(40));
}
这段程序可让NPC们全数修正行为
include指令
语法
#include "file name"
功用
载入另一个档案一起执行.
范例:
#include "gbj.ai"
载入gbj.ai一起执行
次程序
语法
function name(传递数值){程序内容}
功用
自定一个独立程序.
范例:
SaySub(int id,int s,string say1,string say2,string say3,string say4,string say5)
{
if (s == 0)
{
Say(id,say1);
}
if (s == 1)
{
Say(id,say2);
}
if (s == 2)
{
Say(id,say3);
}
if (s == 3)
{
Say(id,say4);
}
if (s == 4)
{
Say(id,say5);
}
}
int a;
OnUpdate()
{
int a = GetChar("重楼");
SaySub(a,Rand(5), "景天为啥砍我呀!?","大家安安","大家来玩流星吧!", "各位大大安安","再砍就翻脸了");
}
这就简单的副程序构成,及呼叫方式
签名:技出群雄而谦虚不骄者为强,技停中阶而学上导下者为强,技不如人而恭心求进者为?技出群雄而自高自满者为弱,技停中阶而恼上鄙下者为弱,技不如人而自暴自弃者为弱.
UID 1748


