Setup spawning changes for the classes

master
Joel Leclerc 2012-03-14 15:54:22 -06:00
parent 3203af0b38
commit 414a253af4
2 changed files with 21 additions and 7 deletions

View File

@ -4009,7 +4009,7 @@ void Server::RespawnPlayer(Player *player)
srp->setHP(20);
bool repositioned = scriptapi_on_respawnplayer(m_lua, srp);
if(!repositioned){
v3f pos = findSpawnPos(m_env->getServerMap());
v3f pos = findSpawnPos(m_env->getServerMap(), player->getClan());
player->setPosition(pos);
srp->m_last_good_position = pos;
srp->m_last_good_position_age = 0;
@ -4176,7 +4176,7 @@ const ModSpec* Server::getModSpec(const std::string &modname)
return NULL;
}
v3f findSpawnPos(ServerMap &map)
v3f findSpawnPos(ServerMap &map, u8 clan)
{
//return v3f(50,50,50)*BS;
@ -4188,10 +4188,23 @@ v3f findSpawnPos(ServerMap &map)
#endif
#if 1
// Try to find a good place a few times
for(s32 i=0; i<1000; i++)
s32 baserange = 1;
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
v2s16 nodepos2d = v2s16(-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 \""
<<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);
ServerRemotePlayer *srp = static_cast<ServerRemotePlayer*>(player);

View File

@ -43,7 +43,7 @@ class IWritableCraftDefManager;
/*
Some random functions
*/
v3f findSpawnPos(ServerMap &map);
v3f findSpawnPos(ServerMap &map, u8 clan);
/*
A structure containing the data needed for queueing the fetching