Hello.
I’m creating a connection script using typescript and now i have a strange problem.
when i call deferrals.done() without any message it does not allow a player to connect to the server.
Here’s the code
private static async onPlayerConnecting( src : string, name :string, setKickReason :any, deferrals :any) : Promise<void> {
deferrals.defer()
deferrals.update(`Checking STEAM ID`)
await Delay(1000)
const ids : Record<string, string> = {}
const idsArray = []
for (let i = 0; i < GetNumPlayerIdentifiers(src); i++) {
const d = GetPlayerIdentifier(src, i)
const [key, value] = d.split(':')
ids[key] = value
idsArray.push(d)
}
if(!ids.steam) {
deferrals.done("No STEAM ID")
}
deferrals.update(`Checking DISCORD ID`)
await Delay(1000)
if(!ids.discord) {
deferrals.done("No DISCORD ID")
}
deferrals.update(`Checking GTA 5 licenses`)
await Delay(1000)
if(!ids.license || !ids.license2) {
deferrals.done("An error occurred while checking GTA 5 licenses")
}
const base = <Base>YRP.EXT['Base']
deferrals.update('Checking account')
const userId = await base.getUserIDByIdentifiers(idsArray)
if(userId > 0) {
const {whitelisted, banned} = await base.checkWhiteListAndBanned(userId)
if(banned) {
deferrals.done(`You have been banned. Your ID : ${userId}`)
}else {
if(base.cfg.whitelist && !whitelisted) {
deferrals.done(`You are not whitelisted. Your ID : ${userId}`)
}else {
const prevUser = User.findById(userId)
if(prevUser) {
prevUser.destroy(true)
}
new User(src, userId, ids.steam)
deferrals.done()
}
}
}else {
const id = await base.createUser(idsArray)
new User(src, id, ids.steam)
deferrals.done()
}
}
For some reason it gets stuck at this
but if i pass a message to deferrals.done() method it works
const prevUser = User.findById(userId)
if(prevUser) {
prevUser.destroy(true)
}
new User(src, userId, ids.steam)
deferrals.done('test done')
any help will be appreciated