战地资源网

 找回密码
 立即加入
搜索
查看: 10537|回复: 6

[教程] 发些新手教程/大佬勿喷

[复制链接]

6

主题

48

回帖

601

积分

上士

八一勋章

发表于 2019-6-22 16:19:54 | 显示全部楼层 |阅读模式
赞助bfmil
那么欢迎来到BF2的世界=v=
这是个十四年前的老游戏/但是欢迎新血液!

不说废话

先就是大家喜闻乐见[并不
的基础教程
一楼为基础教程[大佬们见烦了的那种]:

rem-------[别删帖/后面会有些自己琢磨出来的东西]------
以上是可以在贴吧等地搜索得到的新手教程
下面将会更新楼主[当然也欢迎别人发表自己的经验]自己琢磨出来的冷门指令~



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即加入

x
回复

使用道具 举报

6

主题

48

回帖

601

积分

上士

八一勋章

 楼主| 发表于 2019-6-22 16:42:22 | 显示全部楼层
第一个
直升机仿PR预热系统
[但是算不来时间=-=]

首先我们找到bf2\mods\[模组名称]\Objects_server.zip
在该压缩文件中寻找到直升机类型载具
在此,以四等人的ahe_ah1Z为例(路径在zip文件内的vehicles/air/ahe_ah1z/ahe1z.tweak上)

找到下列指令串 [该串指令可以理解为Engine类 的名为ahe_ah1z_Rotor的物件的设定]
ObjectTemplate.create Engine ahe_ah1z_Rotor
ObjectTemplate.modifiedByUser ljo
ObjectTemplate.setNetworkableInfo BasicInfo
ObjectTemplate.createdInEditor 1
rem ---BeginComp:WindAffector ---
ObjectTemplate.createComponent WindAffector
ObjectTemplate.windType RadialDir
ObjectTemplate.windIsDynamic 1
ObjectTemplate.windDirection 0/0/-1
ObjectTemplate.windSpeed 20
ObjectTemplate.windBlowTime -1
ObjectTemplate.windFalloff 30
ObjectTemplate.windRadialFalloff 20
rem ---EndComp ---
ObjectTemplate.floaterMod 0
ObjectTemplate.hasMobilePhysics 1
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
rem -------------------------------------
ObjectTemplate.addTemplate S_ahe_ah1z_Rotor_RotationRpm
ObjectTemplate.addTemplate S_ahe_ah1z_Rotor_Idle
ObjectTemplate.setPosition 0/0/1.60166
ObjectTemplate.addTemplate S_ahe_ah1z_Rotor_Rpm1
ObjectTemplate.setPosition 0/2.98719/0.680996
ObjectTemplate.addTemplate S_ahe_ah1z_Rotor_Rpm2
ObjectTemplate.setPosition 0/0/1.43693
ObjectTemplate.addTemplate S_ahe_ah1z_Rotor_Load
rem -------------------------------------
ObjectTemplate.setMaxRotation 0/0/150
ObjectTemplate.setMaxSpeed 0/0/1
ObjectTemplate.setAcceleration 0/0/10
ObjectTemplate.setInputToRoll PIThrottle
ObjectTemplate.setAutomaticReset 1
ObjectTemplate.setEngineType c_ETHelicopter
ObjectTemplate.setTorque 200
ObjectTemplate.setDifferential 400
ObjectTemplate.setGearUp 0.99
ObjectTemplate.setGearDown 0.01
ObjectTemplate.setGearChangeTime 0.1
ObjectTemplate.noPropellerEffectAtSpeed 1
ObjectTemplate.noPropellerEffectAtSpeed 1
ObjectTemplate.horizontalSpeedMagnifier 2
ObjectTemplate.horizontalDampAngle 0.1
ObjectTemplate.horizontalDampAngleFactor 0.001
ObjectTemplate.defaultAngleOfAttack 2
ObjectTemplate.maxAngleOfAttack 12
ObjectTemplate.attackSpeed 10
ObjectTemplate.decreaseAngleToZeroVerticalVel 0.5
ObjectTemplate.dampHorizontalVel 5
ObjectTemplate.dampHorizontalVelFactor -0.7
ObjectTemplate.canReverse 0
ObjectTemplate.audio.transformationRelativeRoot 1



从中间找到
rem -------------------------------------
ObjectTemplate.addTemplate S_ahe_ah1z_Rotor_RotationRpm
ObjectTemplate.addTemplate S_ahe_ah1z_Rotor_Idle
ObjectTemplate.setPosition 0/0/1.60166
ObjectTemplate.addTemplate S_ahe_ah1z_Rotor_Rpm1
ObjectTemplate.setPosition 0/2.98719/0.680996
ObjectTemplate.addTemplate S_ahe_ah1z_Rotor_Rpm2
ObjectTemplate.setPosition 0/0/1.43693
ObjectTemplate.addTemplate S_ahe_ah1z_Rotor_Load
rem -------------------------------------
ObjectTemplate.setMaxRotation 0/0/150
ObjectTemplate.setMaxSpeed 0/0/1
ObjectTemplate.setAcceleration 0/0/10



这两串红色的指令
ObjectTemplate.setMaxRotation 0/0/150
可理解为当主螺旋桨转速达到150R/s[该数值为桨叶极限速度]时更换主螺旋桨贴图[注:BF2里直升机的螺旋桨在直升机被乘坐后会开始旋转,当螺旋桨达到某一转速时,会直接更换主螺旋桨桨叶为一个正在缓慢旋转的贴图]并启用飞行功能[该意义仅在Engine ahe_ah1z_Rotor下成立


另一句:
ObjectTemplate.setAcceleration 0/0/10
可理解为主螺旋桨旋转加速度为10R/s^2[即每秒钟增加多少转速]


更改这两个指数,使 桨叶极限速度桨叶加速度 相除得到的数字越大,预热时间越长


[楼主使用的极限速度为500,加速度不变,预热时间13秒左右=-=???]
回复

使用道具 举报

6

主题

48

回帖

601

积分

上士

八一勋章

 楼主| 发表于 2019-6-22 17:44:59 | 显示全部楼层
本帖最后由 Huang_jia_CM 于 2019-6-22 17:49 编辑

对了
应该写个对载具的某些东西的理解=-=
大家应该常常看到载具[或某些枪]里有类似下面格式的东西
[请把下面的类似"x°"的东西当成一个符号,而不是"x"和"°"]
rem -------------------------------------
ObjectTemplate.addTemplate XXX
ObjectTemplate.setPosition x/y/z
ObjectTemplate.setRotation x°/y°/z°
rem -------------------------------------
这种格式的指令相当于目录,但也拥有实质上的作用
比如ObjectTemplate.addTemplate XXX的意思就是 [添加了名为 XXX 的物件] [注:此处的物件可以是一个"效果"/可以是一个"性质"/可以是一个"物品"/也可以是一个"质点"]

ObjectTemplate.setPosition x/y/z的意思是[把上述的东西{即XXX}放在了坐标为 x/y/z 的位置上{注,该位置要以拥有这个目录的条目的物件的位置为原点
     {{比如在ObjectTemplate.create AAA下 有


        rem -------------------------------------
        ObjectTemplate.addTemplate XXX
        ObjectTemplate.setPosition x/y/z
        rem -------------------------------------


        则XXX的位置在相对于AAA位置x/y/z}}}]


最后 ObjectTemplate.setRotation x°/y°/z°的意思是物体的朝向,x°为在X轴上偏移的角度,角度大小为自然数[不知道是否受条目影响,没试过,默认为是吧=v=]



下面为Ahe_ah1z的主体目录
受ObjectTemplate.createComponent Armor条目影响
以ObjectTemplate.createComponent Armor条目为中心

rem -------------------------------------
ObjectTemplate.addTemplate S_ahe_ah1z_Ambient
ObjectTemplate.addTemplate S_ahe_ah1z_AmbientDamaged
ObjectTemplate.addTemplate ahe_ah1z_Camera_pilot
ObjectTemplate.setPosition 0/0.827/2.22
ObjectTemplate.setRotation 0/4/0
ObjectTemplate.addTemplate ahe_ah1z_EntryPoint
ObjectTemplate.setPosition 0/-0.481644/2.60231
ObjectTemplate.addTemplate AHE_AH1Z_HydraLauncher
ObjectTemplate.addTemplate ahe_ah1z_mainrotor
ObjectTemplate.setPosition 0/1.49584/0
ObjectTemplate.setRotation -90/0/0
ObjectTemplate.addTemplate ahe_ah1z_tailrotor
ObjectTemplate.setPosition 0.54069/1.44036/-9.03099
ObjectTemplate.addTemplate HeatObject
ObjectTemplate.setPosition 0/0.74307/-2.38056
ObjectTemplate.addTemplate AHE_AH1Z_FlareLauncher
ObjectTemplate.addTemplate ahe_ah1z_Rotorhead
ObjectTemplate.setPosition 0/-20/0
ObjectTemplate.addTemplate ahe_ah1z_BodyWing
ObjectTemplate.setRotation 0/0/-90
ObjectTemplate.addTemplate ahe_ah1z_Rudder
ObjectTemplate.setPosition 0/0/-8.5
ObjectTemplate.setRotation 0/0/-90
ObjectTemplate.addTemplate ahe_ah1z_WingL
ObjectTemplate.setPosition -1/0/1
ObjectTemplate.setRotation 0/0/-10
ObjectTemplate.addTemplate ahe_ah1z_WingR
ObjectTemplate.setPosition 1/0/1
ObjectTemplate.setRotation 0/0/10
ObjectTemplate.addTemplate AHE_AH1Z_TailEngine
ObjectTemplate.setPosition 0/0/-8.87184
ObjectTemplate.setRotation -90/0/0
ObjectTemplate.addTemplate agm114_hellfiredummy
ObjectTemplate.setPosition 1.29/-0.32/0.3
ObjectTemplate.setRotation 0/-3.4/0
ObjectTemplate.addTemplate agm114_hellfiredummy
ObjectTemplate.setPosition -1.29/-0.32/0.3
ObjectTemplate.setRotation 0/-3.4/0
ObjectTemplate.addTemplate agm114_hellfiredummy
ObjectTemplate.setPosition 1.297/-0.63/0.3
ObjectTemplate.setRotation 0/-3.4/0
ObjectTemplate.addTemplate agm114_hellfiredummy
ObjectTemplate.setPosition -1.297/-0.63/0.3
ObjectTemplate.setRotation 0/-3.4/0
ObjectTemplate.addTemplate agm114_hellfiredummy
ObjectTemplate.setPosition 1.638/-0.32/0.3
ObjectTemplate.setRotation 0/-3.4/0
ObjectTemplate.addTemplate agm114_hellfiredummy
ObjectTemplate.setPosition -1.638/-0.32/0.3
ObjectTemplate.setRotation 0/-3.4/0
ObjectTemplate.addTemplate agm114_hellfiredummy
ObjectTemplate.setPosition 1.638/-0.62/0.3
ObjectTemplate.setRotation 0/-3.4/0
ObjectTemplate.addTemplate agm114_hellfiredummy
ObjectTemplate.setPosition -1.638/-0.62/0.3
ObjectTemplate.setRotation 0/-3.4/0
ObjectTemplate.addTemplate ahe_ah1z_EntryPoint2
ObjectTemplate.setPosition 0/1.40171/-0.806523
rem -------------------------------------


哈,是不是懵逼啦?
如果你按照ObjectTemplate.addTemplate指令所给出的物件名称往下找相同的,你会发现找得到物件名的位置大多是在
ObjectTemplate.create 后面
那么很明确,这一类物件是属于"性质"类型的
而你又会发现ObjectTemplate.create指令后面还接着一个词,再之后才是你所要找的物件名
比如按照
ObjectTemplate.addTemplate ahe_ah1z_Camera_pilot
给出的ahe_ah1z_Camera_pilot向下找
你会找到
ObjectTemplate.create Camera ahe_ah1z_Camera_pilot
ObjectTemplate.create 后面加了Camera才再接着ahe_ah1z_Camera_pilot
表示ahe_ah1z_Camera_pilot的类型是Camera,即玩家视角[不是照相机]的"性质"
这个条目下的东西暂且不讲。[这得另起篇幅]
但还是把这些东西叫什么讲了吧
ObjectTemplate.create 后的词的意义

Camera对应玩家视角
EntryPoint对应进入点[乘坐载具需要贴近或到达的位置,用这个可以做到必须从"坦克顶部进入/乘坐坦克"等功能]
GenericFireArm对应挂载武器
Wing对应翅翼[尚不明确其具体意义,只知道可以用于转向啥的]
Engine对应引擎/运动性质[控制运动方向/方式/运动速度/运动加速度/运动最大速度/运动延迟等等等等…………{超多来着QAQ}]
FloatingBundle对应浮力点[产生浮力的]








S_ahe_ah1z_Ambient为什么不在ObjectTemplate.create后呢?
因为他有个前缀S_
前缀和后缀在BF2里十分重要,主要用于识别文件/物件类型
比如
S_对应声音文件
E_对应效果文件
(并不区分大小写)
E_EXP_对应效果文件类的爆炸效果
C_对应引擎/运动性质类型
……[啊不记得还有什么了=-=]



再讲讲找不到的agm114_hellfiredummyHeatObject
这两个是"物品",属于在目录中直接引用到载具某位置上的。
大概可理解为,把某个已存在的东西放在了这载具的某位置上
这个东西必须是已有的,但是不一定是拥有具体形态的

注:
agm114_hellfiredummy位于objects_server/Weapons/Armament/missiles/agm114_hellfiredummy/agm114_hellfiredummy.tweak上
agm114_hellfiredummy是一个导弹模型[dummy做尾缀的东西就是摆设的那种……不会爆炸……不会作用……只是放在载具上当装饰的物品]
HeatObject的位置我忘了,但是可以告诉你这个东西的意义是:表示这东西为空中载具,可以被对空导弹追踪


嗯,大概就是这样=-=

回复

使用道具 举报

113

主题

1131

回帖

3314

积分

站长

战地资源网老兵,渣渣模组制作者

Rank: 9Rank: 9Rank: 9

游戏昵称
资源网老瓦

八一勋章

发表于 2019-6-22 19:51:39 | 显示全部楼层
虽然是很基础的教程,但是对于一些初涉代码修改的人来说还是有帮助的
战地资源网老兵,渣渣模组制作者
回复

使用道具 举报

6

主题

48

回帖

601

积分

上士

八一勋章

 楼主| 发表于 2019-6-22 21:08:38 | 显示全部楼层
wztwzt18 发表于 2019-6-22 19:51
虽然是很基础的教程,但是对于一些初涉代码修改的人来说还是有帮助的

对~就是给类似我这样的初涉代码的人的~
回复

使用道具 举报

6

主题

39

回帖

669

积分

上士

八一勋章

发表于 2019-7-12 18:50:18 | 显示全部楼层
不错,支持一波
回复

使用道具 举报

6

主题

48

回帖

601

积分

上士

八一勋章

 楼主| 发表于 2023-5-11 13:14:58 | 显示全部楼层
想要直升机攻击空中单位,需要在
Object_Server.zip Vehicles/air/对应直升机/AI
中找到object.ai文件,将其中的以下字段
rem *** Plugins ***
aiTemplatePlugIn.create Unit AHE_AH1ZUnit
aiTemplatePlugIn.equipmentTypeName Helicopter
aiTemplatePlugIn.setStrategicStrength 0 3
aiTemplatePlugIn.setStrategicStrength 1 3

aiTemplatePlugIn.create Cover AHE_AH1ZCover
aiTemplatePlugIn.coverValue 2.0

aiTemplatePlugIn.create Physical AHE_AH1ZPhysical
aiTemplatePlugIn.setStrType Helicopter

aiTemplatePlugIn.create ControlInfo AHE_AH1ZCtrl
aiTemplatePlugIn.driveTurnControl     PIYaw
aiTemplatePlugIn.driveThrottleControl PIThrottle
aiTemplatePlugIn.aimHorizontalControl PIYaw
aiTemplatePlugIn.aimVerticalControl   PIPitch
aiTemplatePlugIn.driveRollControl     PIRoll
aiTemplatePlugIn.drivePitchControl    PIPitch
aiTemplatePlugIn.aimRollControl       PIRoll
aiTemplatePlugIn.aimThrottleControl   PIThrottle
aiTemplatePlugIn.throttleSensitivity -3.0
rem aiTemplatePlugIn.pitchSensitivity -0.5
aiTemplatePlugIn.pitchSensitivity    -1.0
aiTemplatePlugIn.rollSensitivity     -1.3
aiTemplatePlugIn.yawSensitivity       0.3
aiTemplatePlugIn.throttleLookAhead    1.0
aiTemplatePlugIn.pitchLookAhead       1.2
aiTemplatePlugIn.rollLookAhead        1.5
aiTemplatePlugIn.yawLookAhead         0.3
aiTemplatePlugIn.throttleScale        1.0
rem *** Angle in radians ***
aiTemplatePlugIn.pitchScale           0.0010
aiTemplatePlugIn.rollScale            0.0020
aiTemplatePlugIn.yawScale             0.0175
aiTemplatePlugIn.maxRollAngle         0.9900
aiTemplatePlugIn.maxClimbAngle        0.3333

aiTemplatePlugIn.create Mobile AHE_AH1ZMobile
aiTemplatePlugIn.vehicleNumber -1
aiTemplatePlugIn.maxSpeed 60.0
aiTemplatePlugIn.turnRadius 5.0
aiTemplatePlugIn.setSoundSphereRadius 0.0 75.0
aiTemplatePlugIn.setHearingProbability 0.01 0.3

aiTemplatePlugIn.create Armament AHE_AH1ZArms
rem aiTemplatePlugIn.setIsAntiAircraft 1


的rem aiTemplatePlugIn.setIsAntiAircraft 1的Rem删除,以启用setIsAntiAircraft[攻击航空器]的字段
随后在Weapons.ai中将火箭弹[Rocket]对直升机和飞机的攻击优先级提高即可


我对Object.ai的文件还在琢磨阶段,昨晚给AH1Z做了个响尾蛇挂载,但是AI不使用,继续修bug咯


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

Archiver|小黑屋|bfmil ( 拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,会员帖子系会员发表,并不代表本站立场! )

GMT+8, 2024-3-28 22:22 , Processed in 0.118070 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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