Hi.

here is the idea :
the return value of registerev shouldn't be 1 if it's already registered . it should be 1and the location of the file/thread it's registered to .
eg .

local.result = registerev "connected" ThisScriptPath.scr::connected
if(local.result[0])
{
local.OtherThreadPath = local.result[1]
local.result = unregisterev "connected"
local.result = registerev "connected" ThisScriptPath.scr::connected local.OtherThreadPath
}
end
connected local.player local.otherthread:
if(local.otherthread )
thread local.otherthread local.player
// script here
end

so the idea is to return where the other thread that the event is registered to and unregister the event then register it to our thread and from our thread we execute the other thread . hope someone got the idea