小白求教arma3截图在游戏时怎么截图

查看: 14060|回复: 78
小白到大白 零编程基础讲解脚本编辑。。。。。
因为,arma3还支持sqs脚本。。而我也不太习惯sqf的脚本习惯,所以就一直用sqs。所幸很多sqs脚本能直接用到arma3里面。。。我看论坛的编程高手教程都是很专业化的语言来说的。。。我是编程零基础。。。随便写写。。。看看能不能容易理解点。从我自己的角度出发哈。。。。
首先,脚本调用,大家都知道两种方式& &exec 或者 execVM
分别说 sqs 文件后缀的就用exec来调用
sqf脚本就用execVM来调用&&调用时前面还要加一些自定义的东西来等于一下比如
suibian = [xx,xx] execVM &xxx.sqf&&&suibian 就是 “随便” 的拼音啦 为了自己编辑任务时方便自己知道这个脚本是干嘛的。所以用些自己想好的缩写也是很方便好记的。。
然后来看看一个sqs的例子。。希望说得够通俗吧
_s1 = _this select 0;
_s2 = _this select 1;
@(_s1 distance _s2 &= 10)
_s1 dofire _s2;
这个脚本什么意思?怎么调用?
先说调用在任意一个单位上,弹药箱啦游戏逻辑啦。甚至汽车等等的初始栏填上
[so1,so2] exec &脚本名.sqs& //注意!脚本名必须为英文自定义吧。so1就是一个名字为so1的士兵,随你定义哪一个士兵名字也可以随便改。只要你地图上摆放的士兵与脚本上填写的士兵名字一样就行了。so2也是同样道理
然后这个脚本的用处?我一句句给你们解释
#kai& &//这个是标题栏,通常高手用两个单词来说明下以下程序干嘛的,我嘛就用拼音
_s1 = _this select 0;&&//这个的意思是调用时,第一个位置填写的东西等于脚本里的_s1这个东东 [一号定义,二号定义] exec &脚本名.sqs&
_s2 = _this select 1; //这个道理同上。。不过就是定义第二个格代表什么。。。由于武装突袭的脚本规则所以序号是从0开始的。。。所以一号位应该叫零号位
@(_s1 distance _s2 &= 10) //这个是一个等待的脚本条件意思是&&“直到_s1 这个小子,距离_s2这个混蛋 小于或者等于 10米的时候” 程序就继续往下运行
~2& && && && && && && & //这个意思等待两秒时间
_s1 dofire _s2;& & //这个大家都很常见很常问的大名鼎鼎的 dofire 就是 s1向s2 开火
& && && && && && & //这里就是脚本结束的意思了。。。
全程不需要用触发器,发现没?这样的方式在任务编辑中少了很多蓝色的圆圈。。。而且更别说触发器很多时候突然就无效了
只要明白脚本开头 _s1 = _this select 0;& &这个定义是什么就能很好理解脚本的意思了。这就是很多人熟练使用触发器,但是完全看不懂脚本的原因【至少我是这样】
一般很多高手开发的脚本,是不会用_s1这种渣渣方式来定义的。使用英文单词定义其实更好更整洁方便理解。所以看脚本时看到_this select 0;&&类似这种语句不妨用
翻译机器看看他们 等于号前面的英文是什么意思。。。。
另外这个定义也是可以写很多个的比如
_s1 = _this select 0;
_自定义 = _this select 1;
_自定义 = _this select 2;
_自定义 = _this select 3;
_自定义 = _this select 4;& &一般来说10个左右就基本足够了。。看需求。。有多少个士兵或者事情想定义的,就写多少个
调用的时候记得每个格子对应好定义的顺序,而且不能留空。。如果留空了没东西写的话,要回到脚本里删除掉定义比如_this select 3;&&不想要了。。那么删除的时候就把后面
跟着的_this select 4; 改成_this select 3;&&让顺序保持正确。
不知道容不容易懂?我尽力了。。。二楼帖点编辑学习笔记吧、、
一个神不帮助小白,小白也不会认为他是神
一个大白帮助小白,小白也会把他当作神
{_x setBehaviour &stealth&} forEach units group a1
{_x& & 这里可以自定义& && & } forEach units group a1
count units group _s1 & 4& && && & 以一个组的人数作为条件
cameraOn = NAME;NAME switchCamera &GUNNER&;&&
&INTERNAL& (1st person)
&EXTERNAL& (3rd person)
&GUNNER& (optics / sights)
&GROUP& (commander view)
以上命令用于锁定到一个单位的身上录像跟随~而且不论跪下还是趴下都一致的,头也跟随摆动的
_gridPos = mapGridPosition getPos player 转换getpos坐标为 GPS坐标
_veh = createVehicle [&ah1w&, position player, [], 0, &FLY&]&&
这样可以刷出一出生就是飞行的单位
以多个条件为触发
@((Not alive _ap)||(player distance _ap &= random 50)||(getdammage _ap &= 0.000001)) 满足一个条件即可
@((Not alive _ap)AND(player distance _ap &= random 50)AND(getdammage _ap &= 0.000001)) 满足所有条件
?(()||()||()) 例子
@({_x == &SmokeShellRed&} count magazines player == 0)&&检测玩家身上是否携带有烟雾弹无即触发
检测高度作为条件 //&&?(position XXX select 2 &= 60):goto &xxx&
检测速度条件 // ?(speed player) &= 10
检测单位不等于某些事情 ?(_mm != player)
如果单位不在载具里 @not (_ma in _fly1)
如果单位在载具里 @(_ma in _fly1)
?(_ap in (units group GroupName))判断单位在不在一个指定的小队里
player setUnitRecoilCoefficient 10 调整玩家后助力 1.62和AA3可用
this addEventHandler [&handleDamage&, { (damage (_this select 0)) + ((_this select 2) * 0.03) }];
使命召唤一样的HP~后面那个0.03越小越难死,从0到1 该脚本代表中一枪扣多少血~一枪一0.1的话那么就是十枪,一枪0.01就是一百枪
player addAction [&call Medic&, &mdd.sqs&];给玩家增加一个菜单,菜单里不能给脚本定义单位,所以菜单里的脚本是用来调用另外一个脚本的
mdd.sqs里面只要一句话:[md] exec &jiaoben.sqs&这样就能给予某个单位定义了
[_unit] joinSilent GrpN//单位脱离一个小队
({_x distance _ap &= 20} count (AllUnits - [_ap])) == 1 出去单位_ap 其他任何单位只要一个靠近都触发
{this reveal _x} forEach allUnits 该单位了解整个地图上的任何单位
Floor random 3.5 向下化整数
Ceil random 3.5 向上化整数
_sp = speed _h1 * 0.28 就可以吧速度单位化为向量中的数值单位
_h1 setvelocity[_sp*sin(getdir _h1),_sp*cos(getdir _h1),0]
{addswitchableunit _x} fore整个小队都是可以控制的
删除死亡单位 { deleteVehicle _x } forEach allD重复执行就可以了~删除所有死的单位
& && && && & 抖动强度 抖动时间 抖动节奏
addCamShake [10, 10, 5]
沙尘暴 0.01为沙尘暴间隔 0.8为颜色,单位越小颜色越深 设置为true则为飞报纸 必须用触发器触发否则无效
[name,0.01,0.8,false] call BIS_fnc_
添加一个F7 function INIT那里填上下句,风沙的脚本才能执行
必须用触发器触发或者脚本触发不能直接天道INIT上
THIS attachTo [player,[-5,20,0]]约束四个游戏逻辑在玩家四周就可以模拟出很多沙尘在周围了
下面为例子 分别四个游戏逻辑 P1 P2 P1_1 P2_1
[p1,0.005,0.5,false] call BIS_fnc_[p2,0.005,0.5,false] call BIS_fnc_[p1_1,0.005,0.5,false] call BIS_fnc_[p2_1,0.005,0.5,false] call BIS_fnc_p1 attachTo [player,[5,10,0]];p1_1 attachTo [player,[-5,10,0]];p2 attachTo [player,[5,-10,0]];p2_1 attachTo [player,[5,-10,0]]&&
触发器内所有单位或者特定阵型单位统一做一样事情
{_x stop true} foreach thislist 单位统一不动
{_x 任意自定义} foreach thislist
this EnableIRLasers true& &单位作战时自动打开镭射灯
{_x EnableIRLasers true} forEach units group a1
unitName enableGunLights true 单位使用枪灯
{_x EnableIRLasers true} forE{_x enableGunLights true} forE
n1 reveal n2
{_x = _TA} foreach thislist
约束电脑的行为
setspeedmode &limited& 设置速度为慢
h1 dowatch sd&&单位朝向方向 载具单位没效果
dofire不可用于锁定单位攻击的目标,但是 dotarget可以
this setunitpos &middle& 保持蹲姿
this setunitpos &up&&&站姿
this setunitpos &kneelDown& 蹲下或者趴下
this setunitpos &auto&& &自己选择
this forceSpeed 2;&&移动速度
disableuserinput true&&玩家失去操作效果
让电脑移动和直接传送电脑
n1 setpos getpos n2 、、 n1 move getpos n2、、n1 domove getpos n2
锁定一个单位离不开另一个单位身边,以000为中心最后一个数值是高度
THIS attachTo [XXX,[0,0,0]]
detach player 解锁以上命令
治疗~&&第一个name是接受治疗的单位
name action [&heal&,name2]
5 fadeMusic 0 音乐五秒内渐变为0& &
5 fadeSound 0 所有游戏声音渐变为0& &音乐播放不会被干扰
5 fadeRadio 0.1 无线电声音渐变为0
让一个叫NA的单位 移动到我希望移动到的地方&&地图点击功能&&触发一下后 点开地图来点一下地图就会发生
onMapSingleClick &na domove _ onMapSingleClick &&&&;&;& && && &
房屋内放置随机位置一个组 似乎附近的房屋的房间有多少才能写随机数字否则随机进大海
{_x setpos(nearestBuilding this buildingpos random 5)} foreach units n1& && &&&
治疗~&&第一个name是接受治疗的单位
name action [&heal&,name2]
this addeventhandler [&fired&,{(_this select 0) setunitpos &up&}];this addeventhandler [&hit&, {(_this select 0) setunitpos &middle&}]
单位一开火就站,一中枪就蹲
this setvelocity[5*sin(getdir _h1),5*cos(getdir _h1),0]&&某单位恒定速度前进 需要脚本配合
Name disableAI &Move& – 单位不动
Name disableAI &Target& – 单位不瞄准
Name disableAI &Autotarget& – 单位变瞎子
Name disableAI &Anim& – 电脑单位失去所有能力
this enableAI &Move&& & 恢复电脑移动能力
{_x disableAI &Move&} forEach units group s2
电脑一组人全部不会跑
{_x enableSimulation false} foreach thislist
让一个触发器内的东西定住,但是恢复触发器的东西走动就要用班组命令才可以
而且载具要一个一个用h1 enableSimulation true 分开搞才可以
{_x enableSimulation true} forEach units group s2 用于解锁定住的命令 为班组命令
在脚本中使用 ?(xxx = true)为条件时,必须在此之前设置一个 xxx = false
@(g1);&&在脚本中意为:直到等待g1 = true 的时候才继续运行脚本,可以简化脚本不需要运行goto
名子 = 职为 载具名
名子可以写你喜欢的,之后编写任务也很方便。
职为可以填上crew(这是指全部机组员)、driver(驾驶)、gunner(炮手)、commander(指挥官)等等,可能还有些我忘了吧。
载具名则填上你为你那个载具取的名子。
我已以下是例子,我有一台叫做&heli01&的直升机,我想把他的驾驶命名叫作&Pilot01&
所以就这样打 Pilot01 = driver heli01;
这样之后就可以对这台直升机的驾驶另外给script了~!
hintSilent format [&玩家分数:%1 \n 玩家杀敌数:%2&,rating Player,_zhi]
&&以内的%1就是&&号以外的后面的第一个 第二个 数值等等
player addAction [&***&, &a1.sqf&, [①], ②15, ③false, ④true, &⑤&, &⑥(_target == player)&];
我把知道的说一下
*** 动作菜单显示名字
①输入参数可传递到 a1.sqf脚本声明的变量中
②菜单显示的上下优先排序
③④这两布尔值啥意思???
⑤按下菜单时同时执行输入的命令?
⑥菜单显示的条件(循环检测)
我就不排版咯。。当时锻炼下看程序的能力。。。高手们的脚本可比这乱得多
楼主好有才干
脸红 谢谢。。。。&
不取笑就不错了。。。&
懂不懂都不说一下?还是早就懂了?&
JDLSNIPER 发表于
有三分之一懂,三分之二不懂!编辑的时候只要能用触发器实现的我就用触发器!不管用几个或者转几个弯!脚本很少用!就是不懂它了!看了楼主的帖子后,明白了些东西,特别是一楼的_this select x,二楼的就有很多东西不懂了!
哈哈哈果然每个人的小册子都很混乱……
更混乱的不好意思丢出来。。。。自己都查半天&
JDLSNIPER 发表于
有三分之一懂,三分之二不懂!编辑的时候只要能用触发器实现的我就用触发器!不管用几个或者转几 ...
懂那个就好说。。。二楼是命令。。需要的时候淘下宝就好
下网上载 发表于
懂那个就好说。。。二楼是命令。。需要的时候淘下宝就好
多谢楼主了!
多谢楼主&&学习下
请教下让AI在直升机的某个位置怎么写
cccbss 发表于
请教下让AI在直升机的某个位置怎么写
指定cargo点是吧? 见过。。。等等我找找
cccbss 发表于
请教下让AI在直升机的某个位置怎么写
unitName moveInCargo vehicle
Parameters:
unitName: Object
vehicle: Object
Return Value:
Alternative Syntax
unitName moveInCargo [vehicle, CargoIndex]
Parameters:
unitName: Object
vehicle: Object
CargoIndex: Number
Return Value:
Example 1:
_soldierOne moveInCargo _jeepOne
Example 2:
_soldierOne moveInCargo [_jeepOne, 1]
大概就是这样了。。。1号2号位有多少填多少
牛逼!上网加我QQ吧,请教问题方便 &
大白甚是威武啊,小弟玩好游戏就行了。。。。。。突然感觉,坑略深
st904413 发表于
大白甚是威武啊,小弟玩好游戏就行了。。。。。。突然感觉,坑略深
当年我也觉得 arma的坑深不见底啊。。。。
Powered by}

我要回帖

更多关于 arma3汉化教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信