Setup spawning changes for the classes
parent
3203af0b38
commit
414a253af4
|
@ -4009,7 +4009,7 @@ void Server::RespawnPlayer(Player *player)
|
||||||
srp->setHP(20);
|
srp->setHP(20);
|
||||||
bool repositioned = scriptapi_on_respawnplayer(m_lua, srp);
|
bool repositioned = scriptapi_on_respawnplayer(m_lua, srp);
|
||||||
if(!repositioned){
|
if(!repositioned){
|
||||||
v3f pos = findSpawnPos(m_env->getServerMap());
|
v3f pos = findSpawnPos(m_env->getServerMap(), player->getClan());
|
||||||
player->setPosition(pos);
|
player->setPosition(pos);
|
||||||
srp->m_last_good_position = pos;
|
srp->m_last_good_position = pos;
|
||||||
srp->m_last_good_position_age = 0;
|
srp->m_last_good_position_age = 0;
|
||||||
|
@ -4176,7 +4176,7 @@ const ModSpec* Server::getModSpec(const std::string &modname)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
v3f findSpawnPos(ServerMap &map)
|
v3f findSpawnPos(ServerMap &map, u8 clan)
|
||||||
{
|
{
|
||||||
//return v3f(50,50,50)*BS;
|
//return v3f(50,50,50)*BS;
|
||||||
|
|
||||||
|
@ -4188,10 +4188,23 @@ v3f findSpawnPos(ServerMap &map)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
// Try to find a good place a few times
|
s32 baserange = 1;
|
||||||
for(s32 i=0; i<1000; i++)
|
switch(clan)
|
||||||
{
|
{
|
||||||
s32 range = 1 + i;
|
case 0:
|
||||||
|
baserange = 1;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
baserange = -1000;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
baserange = 1000;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Try to find a good place a few times
|
||||||
|
for(s32 i=0; i<50; i++)
|
||||||
|
{
|
||||||
|
s32 range = baserange + i;
|
||||||
// We're going to try to throw the player to this position
|
// We're going to try to throw the player to this position
|
||||||
v2s16 nodepos2d = v2s16(-range + (myrand()%(range*2)),
|
v2s16 nodepos2d = v2s16(-range + (myrand()%(range*2)),
|
||||||
-range + (myrand()%(range*2)));
|
-range + (myrand()%(range*2)));
|
||||||
|
@ -4299,8 +4312,9 @@ ServerRemotePlayer *Server::emergePlayer(const char *name, u16 peer_id)
|
||||||
|
|
||||||
infostream<<"Server: Finding spawn place for player \""
|
infostream<<"Server: Finding spawn place for player \""
|
||||||
<<name<<"\""<<std::endl;
|
<<name<<"\""<<std::endl;
|
||||||
|
|
||||||
|
|
||||||
v3f pos = findSpawnPos(m_env->getServerMap());
|
v3f pos = findSpawnPos(m_env->getServerMap(), m_env->getPlayer(name)->getClan());
|
||||||
|
|
||||||
player = new ServerRemotePlayer(m_env, pos, peer_id, name);
|
player = new ServerRemotePlayer(m_env, pos, peer_id, name);
|
||||||
ServerRemotePlayer *srp = static_cast<ServerRemotePlayer*>(player);
|
ServerRemotePlayer *srp = static_cast<ServerRemotePlayer*>(player);
|
||||||
|
|
|
@ -43,7 +43,7 @@ class IWritableCraftDefManager;
|
||||||
/*
|
/*
|
||||||
Some random functions
|
Some random functions
|
||||||
*/
|
*/
|
||||||
v3f findSpawnPos(ServerMap &map);
|
v3f findSpawnPos(ServerMap &map, u8 clan);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
A structure containing the data needed for queueing the fetching
|
A structure containing the data needed for queueing the fetching
|
||||||
|
|
Loading…
Reference in New Issue