Browse Source

enhancement #1819

tags/v0.10.0^2
Shaun 2 years ago
parent
commit
295b4c89af
4 changed files with 41 additions and 2 deletions
  1. +1
    -1
      src/server/components/auth.js
  2. +4
    -1
      src/server/security/connections.js
  3. +19
    -0
      src/server/world/atlas.js
  4. +17
    -0
      src/server/world/instancer.js

+ 1
- 1
src/server/components/auth.js View File

@@ -283,7 +283,7 @@ module.exports = {
}
this.username = username;
cons.logOut(this.obj);
await cons.logOut(this.obj);

this.initTracker();



+ 4
- 1
src/server/security/connections.js View File

@@ -152,7 +152,7 @@ module.exports = {
msg.callback();
},

logOut: function (exclude) {
logOut: async function (exclude) {
let players = this.players;
let pLen = players.length;
for (let i = 0; i < pLen; i++) {
@@ -161,6 +161,9 @@ module.exports = {
if ((!p) || (p === exclude) || (!p.auth))
continue;

if (p.name && p.zoneName)
await atlas.forceSavePlayer(p.name, p.zoneName);

if (p.auth.username === exclude.auth.username)
p.socket.emit('dc', {});
}


+ 19
- 0
src/server/world/atlas.js View File

@@ -262,5 +262,24 @@ module.exports = {
});
});
});
},

forceSavePlayer: async function (playerName, zoneName) {
const thread = this.getThreadFromName(zoneName);

if (!thread)
return;

return new Promise(res => {
const callbackId = this.registerCallback(res);

thread.worker.send({
method: 'forceSavePlayer',
args: {
playerName,
callbackId
}
});
});
}
};

+ 17
- 0
src/server/world/instancer.js View File

@@ -337,5 +337,22 @@ module.exports = {
process.send({
method: 'onZoneIdle'
});
},

forceSavePlayer: async function ({ playerName, callbackId }) {
const player = objects.objects.find(o => o.player && o.name === playerName);

if (!player?.auth)
return;

await player.auth.doSave();

process.send({
module: 'atlas',
method: 'resolveCallback',
msg: {
id: callbackId
}
});
}
};

Loading…
Cancel
Save