|
|
楼主 |
发表于 2015-4-13 17:19:25
|
显示全部楼层
function PlatoonReinforcements takes nothing returns nothing
local real handicap = 0.0
local integer i = 1
local integer id = 0
local integer LZSelect = GetRandomInt(1,8)
local real x = GetRectCenterX(udg_LandingZones[LZSelect])
local real y = GetRectCenterY(udg_LandingZones[LZSelect])
local location l
local real angle
local boolean present
local unit u
local real theta = GetRandomReal(0.0,6.28)
local real ux = Clamp(x+3000.0*Cos(theta),GetRectMinX(bj_mapInitialPlayableArea),GetRectMaxX(bj_mapInitialPlayableArea))
local real uy = Clamp(y+3000.0*Sin(theta),GetRectMinY(bj_mapInitialPlayableArea),GetRectMaxY(bj_mapInitialPlayableArea))
local unit blackhawk//一大坨变量的定义
if udg_InitialPlayers==udg_Players then//这个条件意义不明,从字面上来讲
return
else
loop
exitwhen i>udg_InitialPlayers//循环1~初始玩家数量
if (GetWidgetLife(udg_Hero[udg_Sorted])<=0.405 or udg_Experience[udg_Sorted]>400000) and GetPlayerSlotState(ConvertedPlayer(udg_Sorted))!=PLAYER_SLOT_STATE_LEFT//玩家没有离开游戏
then
set id=1337//噗这不是……
endif
set i=i+1
endloop
set i=1
if id!=1337 then//这作者是把1337当做flag来用了啊,好好用布尔不行嘛?
return
endif
endif
set l = Location(x,y)
set udg_LZPoint = Location(x,y)
set blackhawk = CreateUnit(Player(11),'h009',ux,uy,theta+3.14)//创建黑鹰单位
call UnitApplyTimedLife(blackhawk,'Bhwd',90.0)//设置生命周期
call SetUnitScalePercent(blackhawk,50.0,50.0,50.0)//设置单位缩放
call RemoveGuardPosition(blackhawk)//忽视单位警戒点
call TriggerSleepAction(0.)//等待0s
call IssuePointOrder(blackhawk,"move",x,y)//发布命令移动到坐标点
call StartSound(gg_snd_BlackHawkRotor)//播放黑鹰音效
call PolledWait(5.5)//等待5.5s
call SetUnitFlyHeight(blackhawk,15.0,130.0)//设置单位飞行高度
call SmoothUnitResize(blackhawk,0.6,1.2,4)//一个自己写的函数,看了一下大概是改变缩放?反正我也想不出这里需要什么奇妙的函数来作甚么
call EnableTrigger(gg_trg_Landing_Area)//开启触发,landingArea字面意思是着陆区域啊
call PolledWait(3.)//等待3s
call SetUnitTimeScalePercent(blackhawk,65.0)//改变单位缩放,仔细想想余波里头黑鹰的缩放似乎是有不科学的地方
call ExecuteFunc("BlackHawkWashOff")//烟尘效果额外做成一个函数了
call HeloShock(blackhawk)//这个是周围的单位会受到伤害,其实我在想又没这个必要,直升机降下来都要造成伤害
call AttachSoundToUnit(gg_snd_BlackHawkLand,blackhawk)//跟随单位播放声音
call SetSoundVolume(gg_snd_BlackHawkLand,127)//设置多通道音量
call StartSound(gg_snd_BlackHawkLand)//播放着陆声音
call PolledWait(2.5)//等待2.5s
call KiloEvac(blackhawk)//回收友军尸体的函数
call IssueImmediateOrder(blackhawk,"holdposition")//无目标命令原地站岗
loop
exitwhen i>udg_InitialPlayers
set angle = 360.0*(I2R(i)-1)/I2R(udg_InitialPlayers)
if (GetWidgetLife(udg_Hero[udg_Sorted])<=0.405 or udg_Experience[udg_Sorted]>400000) and GetPlayerSlotState(ConvertedPlayer(udg_Sorted))!=PLAYER_SLOT_STATE_LEFT then
set present = true
set handicap = handicap + 0.015
if GetRandomInt(0,10)==1 and udg_Experience[udg_Sorted]>60000 then
set id = 'z00E' //IUL
elseif udg_Chapter!=1 and GetRandomInt(0,55)==1 and udg_Experience[udg_Sorted]>60000 then
set id = 'z006' //Pilot
elseif GetRandomInt(0,12)==1 and udg_Experience[udg_Sorted]>30000 then
set id = 'z00G' //Sniper
elseif GetRandomInt(0,6)==1 then
set id = 'z009' //Flamethrower
elseif GetRandomInt(0,6)==1 then
set id = 'z001' //Corpsman
elseif GetRandomInt(0,8)==1 then
set id = 'z004' //Engineer
elseif GetRandomInt(0,3)==1 then
set id = 'z000' //Machine Gunner
elseif GetRandomInt(0,5)==1 then
set id = 'z00F' //Marksman
else
set id = 'z008' //Rifleman
endif
set u = CreateUnit(ConvertedPlayer(udg_Sorted),id,x+80.0,y-175.0,0.0)//以上,创建援军单位
call SetLoadState(I2S(H2I(u)),1)//又是函数,Load什么东西呢
call UnitAddItemById(u,'I004') //Medkit//初始物品,看样子是一人一个包
if id=='z001' then
call TriggerRegisterUnitEvent(gg_trg_Anti_Venom,u,EVENT_UNIT_SPELL_EFFECT)
elseif id=='z006' then
call TriggerRegisterUnitEvent(gg_trg_Control_Aircraft,u,EVENT_UNIT_SPELL_EFFECT)
elseif id=='z004' then
call UnitAddItemById(u,'I014') //Field Lights
call TriggerRegisterUnitEvent(gg_trg_Nanosteel_Net,u,EVENT_UNIT_SPELL_EFFECT)
endif//上面是注册单位事件
call UnitAddAbility(u,'A04R') //NVG
call TriggerRegisterUnitEvent(gg_trg_Ailments,u,EVENT_UNIT_DAMAGED)//哈……单位受伤害事件的注册,没有YDWE呢……
call TriggerRegisterUnitEvent(gg_trg_Article_15,u,EVENT_UNIT_DEATH)
call IssuePointOrder(u,"attack", x + (325.0*Cos(angle*0.01745)), y + (325.0*Sin(angle*0.01745)) )//发布命令攻击移动
endif
call TriggerSleepAction(0.)//等待0s,这个玩意到底意义何在
set i=i+1
endloop
if present then
call StartSound(gg_snd_RockandRoll)//援军抵达的音效
endif
if present then
call SetCameraQuickPosition(x,y)//设置镜头
call PingMinimapEx(x,y,15.0,255,0,0,false)//小地图信号
call ALICEText(15.0, "|cfff3ad00ALICE|r : Reinforcements have arrived." )//ALICE报信息
call SetPlayerHandicap(Player(13),GetPlayerHandicap(Player(13))+handicap)//handicap,不知道是什么
call SetPlayerHandicap(Player(14),GetPlayerHandicap(Player(14))+handicap)
endif
set i=1
loop
exitwhen i>12
call PolledWait(5.)
call KiloEvac(blackhawk)//啊,又运行了一遍,开头检查一遍回收尸体,结尾又是一遍。
set i=i+1
endloop
call ExecuteFunc("BlackHawkWashOff")//又是一遍烟尘,这是起飞了
call SetUnitFlyHeight(blackhawk,800.0,200.0)//设置飞行高度
call SmoothUnitResize(blackhawk,1.2,0.5,3)//我猜这个函数是平滑的设置单位缩放的意思
call SetUnitTimeScalePercent(blackhawk,100.0)//设置缩放
call IssuePointOrder(blackhawk,"move",13000.0,10000.0)//点目标命令移动到……哪里?看起来像是地图的右上角
call PolledWait(3.5)//等待
call DisableTrigger(gg_trg_Landing_Area)//关闭触发
call EnumDestructablesInCircleBJ(600,l,function TreeShakeEnd)//选取可破坏物做动作,停止摇晃树木……原来如此
call PolledWait(3.)
call RemoveUnit(blackhawk)//删除单位
call RemoveLocation(l)
call RemoveLocation(udg_LZPoint)
set l = null
set u = null
set blackhawk = null//排泄中
endfunction
[ 本帖最后由 大谎言家 于 2015-4-13 23:38 编辑 ] |
|