Your sinking_sub.lua was inspired me to make a new level mission for my Commando series. I've named "U-boats Citadel".
Great work smallg !
Also, for this amazing script I created a special audio effect (attached and free for use because is made by me) and you can hearing it in a video below
Look at this script "heligoing.lua" - for ally helicopter that has drop player near the enemies' zone then it returns to base
-- script by Avram, adapted by Old Larry for ally helicopter that has drop you near the enemies' zone then it returns to base
-- save as heligoing.lua
-- the entity (helicopter) must be set as this: always active = YES, physics = NO
planes = planes or {}
SndPlaying = SndPlaying or {}
--local maxvolume = 80
--local minvolume = 0
--local noise = 0
function heligoing_main(e)
planes[e] = planes[e] or {} --initialize plane (helicopter) data
planes[e]['speed'] = planes[e]['speed'] or 150 + math.random(150,200) -- set helicopter speed (100-200)or greater
planes[e]['turnspeed'] = planes[e]['turnspeed'] or 150 -- set turning speed
planes[e]['fallspeed'] = planes[e]['fallspeed'] or 150 -- set falling speed
planes[e]['takeoffspeed'] = planes[e]['takeoffspeed'] or 150 -- set takeoff speed
local this = aEntity:new(e, "mustang") -- initialize entity obj
local state = this:attr("state") or "init" -- get current state [defaults to "init"]
local timer = aTimer:new(e) -- initialize timer
local dist = aPlayer:distance(this)
this:watch_death()
-- taking off
if state=="takeoff" then
timer:start() -- start timer
GravityOff(e) -- turn off gravity
if timer:between(0,2) then
MoveUp(e, planes[e]['takeoffspeed'] - (planes[e]['takeoffspeed'] * 0.3) ) -- start slower (3 secs)
elseif timer:between(2,3) then --activate this if you want more high
MoveUp(e, planes[e]['takeoffspeed']) -- go at takeoff speed (another 2 secs)
elseif timer:greater(3) then
if (g_Entity[e]['y'] <= g_PlayerPosY+200) then -- pull nose up and increase height (takeoff) while below player
--SendMessageF("setrotationx",e,-5);
SendMessageF("setpositiony",e,g_Entity[e]['y']+6)
else -- push nose down and set state to fly when above player, also stop the timer
SendMessageF("setrotationx",e,0);
state = "fly"
timer:stop()
end
MoveForward(e, planes[e]['takeoffspeed'] + (planes[e]['takeoffspeed'] * 0.5)) -- move at increased speed while taking off
end
end
-- flying straight
if state=="fly" then
MoveForward(e, planes[e]['speed']) -- move at defined speed
if (math.random(1, 2) == 2) then -- in 10% cases rotate plane a bit and change it's height
RotateX(e, math.random(-1, 1))
RotateZ(e, math.random(-1, 1))
SendMessageF("setpositiony",e,g_Entity[e]['y']+math.random(-1, 1));
end
end
-- initialization
if state=="init" then
GravityOff(e) -- turn gravity off
state = "takeoff" -- take off
end
-- if too far from the player, set to continuing fly state
if state=="fly" and dist > 5000 then
state = "fly"
end
if state=="fly" and dist >= 600 then --you can change it to desiderd start sound distance
LoopSound(e, 0)
SetSoundVolume(80)
end
if state=="fly" and dist >= 6000 then
state = "fall"
StopSound(e, 0)
Destroy(e)
ActivateIfUsed(e)
end
this:attr('state', state) -- store the (modified) state
end
Smile today, tomorrow could be worse
http://bestradiolarry.ro/fpsarea/
"The best forum, game software, operating system or web platform, it's that software which can give you most of the features and speed, not just amazing graphics."