forked from mirror/openmw-tes3mp
[Client] Spawn DedicatedPlayer in exterior 0,0 (for other master files)
This commit is contained in:
parent
0527690b88
commit
9035908f6d
1 changed files with 10 additions and 10 deletions
|
@ -70,17 +70,17 @@ void Players::createPlayer(RakNet::RakNetGUID guid)
|
||||||
dedicPlayer->reference = new MWWorld::ManualRef(world->getStore(), recid, 1);
|
dedicPlayer->reference = new MWWorld::ManualRef(world->getStore(), recid, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Temporarily spawn or move player to ToddTest whenever setting base info
|
// Temporarily spawn or move player to exterior 0,0 whenever setting base info
|
||||||
ESM::Position newPos;
|
ESM::Position spawnPos;
|
||||||
world->findInteriorPosition("ToddTest", newPos);
|
spawnPos.pos[0] = spawnPos.pos[1] = spawnPos.pos[2] = 0;
|
||||||
MWWorld::CellStore *cellStore = world->getInterior("ToddTest");
|
MWWorld::CellStore *cellStore = world->getExterior(0, 0);
|
||||||
|
|
||||||
if (dedicPlayer->state == 0)
|
if (dedicPlayer->state == 0)
|
||||||
{
|
{
|
||||||
LOG_APPEND(Log::LOG_INFO, "- Creating new reference pointer for %s",
|
LOG_APPEND(Log::LOG_INFO, "- Creating new reference pointer for %s",
|
||||||
dedicPlayer->npc.mName.c_str());
|
dedicPlayer->npc.mName.c_str());
|
||||||
|
|
||||||
MWWorld::Ptr tmp = world->placeObject(dedicPlayer->reference->getPtr(), cellStore, newPos);
|
MWWorld::Ptr tmp = world->placeObject(dedicPlayer->reference->getPtr(), cellStore, spawnPos);
|
||||||
|
|
||||||
dedicPlayer->ptr.mCell = tmp.mCell;
|
dedicPlayer->ptr.mCell = tmp.mCell;
|
||||||
dedicPlayer->ptr.mRef = tmp.mRef;
|
dedicPlayer->ptr.mRef = tmp.mRef;
|
||||||
|
@ -94,7 +94,7 @@ void Players::createPlayer(RakNet::RakNetGUID guid)
|
||||||
dedicPlayer->npc.mName.c_str());
|
dedicPlayer->npc.mName.c_str());
|
||||||
|
|
||||||
dedicPlayer->ptr.getBase()->canChangeCell = true;
|
dedicPlayer->ptr.getBase()->canChangeCell = true;
|
||||||
dedicPlayer->updatePtr(world->moveObject(dedicPlayer->ptr, cellStore, newPos.pos[0], newPos.pos[1], newPos.pos[2]));
|
dedicPlayer->updatePtr(world->moveObject(dedicPlayer->ptr, cellStore, spawnPos.pos[0], spawnPos.pos[1], spawnPos.pos[2]));
|
||||||
|
|
||||||
npc.mId = players[guid]->ptr.get<ESM::NPC>()->mBase->mId;
|
npc.mId = players[guid]->ptr.get<ESM::NPC>()->mBase->mId;
|
||||||
|
|
||||||
|
@ -139,13 +139,13 @@ void Players::disconnectPlayer(RakNet::RakNetGUID guid)
|
||||||
MWBase::World *world = MWBase::Environment::get().getWorld();
|
MWBase::World *world = MWBase::Environment::get().getWorld();
|
||||||
world->disable(players[guid]->getPtr());
|
world->disable(players[guid]->getPtr());
|
||||||
|
|
||||||
// Move player to ToddTest
|
// Move player to exterior 0,0
|
||||||
ESM::Position newPos;
|
ESM::Position newPos;
|
||||||
world->findInteriorPosition("ToddTest", newPos);
|
newPos.pos[0] = newPos.pos[1] = newPos.pos[2] = 0;
|
||||||
MWWorld::CellStore *store = world->getInterior("ToddTest");
|
MWWorld::CellStore *cellStore = world->getExterior(0, 0);
|
||||||
|
|
||||||
players[guid]->getPtr().getBase()->canChangeCell = true;
|
players[guid]->getPtr().getBase()->canChangeCell = true;
|
||||||
world->moveObject(players[guid]->getPtr(), store, newPos.pos[0], newPos.pos[1], newPos.pos[2]);
|
world->moveObject(players[guid]->getPtr(), cellStore, newPos.pos[0], newPos.pos[1], newPos.pos[2]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue