Bläddra i källkod

Merge branch 'master' into 'release'

bug: Fixed character select hanging

See merge request Isleward/isleward!622
tags/v0.12.0.8
Big Bad Waffle 1 år sedan
förälder
incheckning
ad084e2209
3 ändrade filer med 12 tillägg och 9 borttagningar
  1. +1
    -1
      src/server/security/connections.js
  2. +8
    -5
      src/server/world/atlas.js
  3. +3
    -3
      src/server/world/instancer.js

+ 1
- 1
src/server/security/connections.js Visa fil

@@ -130,7 +130,7 @@ module.exports = {


if (p.auth.username === exclude.auth.username) { if (p.auth.username === exclude.auth.username) {
if (p.name && p.zoneId) if (p.name && p.zoneId)
await atlas.forceSavePlayer(p.name, p.zoneId);
await atlas.forceSavePlayer(p.id, p.zoneId);


p.socket.emit('dc', {}); p.socket.emit('dc', {});
} }


+ 8
- 5
src/server/world/atlas.js Visa fil

@@ -60,14 +60,14 @@ module.exports = {
}); });
}, },


removeObjectFromInstancedZone: async function (thread, obj, callback) {
removeObjectFromInstancedZone: async function (thread, objId, callback) {
await new Promise(res => { await new Promise(res => {
const cb = this.registerCallback(res); const cb = this.registerCallback(res);


thread.worker.send({ thread.worker.send({
method: 'forceSavePlayer', method: 'forceSavePlayer',
args: { args: {
playerName: obj.name,
playerId: objId,
callbackId: cb callbackId: cb
} }
}); });
@@ -80,6 +80,9 @@ module.exports = {
}, },


removeObject: async function (obj, skipLocal, callback) { removeObject: async function (obj, skipLocal, callback) {
//We need to store the player id because the calling thread might delete it (connections.unzone)
const playerId = obj.id;

if (!skipLocal) if (!skipLocal)
objects.removeObject(obj); objects.removeObject(obj);


@@ -88,7 +91,7 @@ module.exports = {
return; return;


if (thread.instanced && (await gePlayerCountInThread(thread)) === 1) { if (thread.instanced && (await gePlayerCountInThread(thread)) === 1) {
this.removeObjectFromInstancedZone(thread, obj, callback);
this.removeObjectFromInstancedZone(thread, playerId, callback);


return; return;
} }
@@ -161,7 +164,7 @@ module.exports = {
await returnWhenThreadsIdle(); await returnWhenThreadsIdle();
}, },


forceSavePlayer: async function (playerName, zoneId) {
forceSavePlayer: async function (playerId, zoneId) {
const thread = getThreadFromId(zoneId); const thread = getThreadFromId(zoneId);


if (!thread) if (!thread)
@@ -173,7 +176,7 @@ module.exports = {
thread.worker.send({ thread.worker.send({
method: 'forceSavePlayer', method: 'forceSavePlayer',
args: { args: {
playerName,
playerId,
callbackId callbackId
} }
}); });


+ 3
- 3
src/server/world/instancer.js Visa fil

@@ -363,14 +363,14 @@ module.exports = {
}); });
}, },


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


if (!player?.auth) { if (!player?.auth) {
await io.setAsync({ await io.setAsync({
key: new Date(), key: new Date(),
table: 'error', table: 'error',
value: 'no auth found for forcesave ' + playerName
value: 'no auth found for forcesave ' + player?.name
}); });


return; return;


Laddar…
Avbryt
Spara