the problem was with the trigger being called multiple times, because the "nottriggerable" command was at the bottom of the thread
with this code it should be working fine
fly:
self nottriggerable
local.player = parm.other
if(local.player.flying!=1 || local.player.OWNS == 1)
{
local.team = parm.other.dmteam
local.use_teams = waitexec global/settings.scr::getcmd "use-teams"
if (local.use_teams == "1")
{
if(self.team != local.player.dmteam)
{
local.player iprint "You don't have the training for this aircraft"
local.plane = waitthread find_trig self.team self
local.plane light 0 0 1 100
waitframe
local.plane light 1 0 0 50
end
}
}
local.player weaponcommand dual targetname ("weapon" + local.player.entnum)
local.weapon = $("weapon" + local.player.entnum )
if (!local.weapon) {
local.player holster
} else {
local.weapon targetname ""
}
wait 0.5
if (!local.player) {
self triggerable
end
}
local.player.plane_start = self.start_pos
local.player scale self.plane_scale
local.player exec server_planes/server_fly.scr
local.player.flying=1
local.trigdelay = waitexec global/settings.scr::getcmd "trig-delay"
local.trigdelay = int local.trigdelay
local.trig = waitthread find_trig self.team self
local.trig hide
wait local.trigdelay
local.trig show
self triggerable
}
end