forked from Mirrorlandia_minetest/minetest
script: Move SAO usability check so that it covers all functions (#9698)
see also 91eef646a59575bd9ae792e257bb6ad12fafc0b1
This commit is contained in:
parent
4fb6b6afa7
commit
87829cd744
@ -50,6 +50,8 @@ ObjectRef* ObjectRef::checkobject(lua_State *L, int narg)
|
|||||||
ServerActiveObject* ObjectRef::getobject(ObjectRef *ref)
|
ServerActiveObject* ObjectRef::getobject(ObjectRef *ref)
|
||||||
{
|
{
|
||||||
ServerActiveObject *co = ref->m_object;
|
ServerActiveObject *co = ref->m_object;
|
||||||
|
if (co && co->isGone())
|
||||||
|
return NULL;
|
||||||
return co;
|
return co;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,8 +62,6 @@ LuaEntitySAO* ObjectRef::getluaobject(ObjectRef *ref)
|
|||||||
return NULL;
|
return NULL;
|
||||||
if (obj->getType() != ACTIVEOBJECT_TYPE_LUAENTITY)
|
if (obj->getType() != ACTIVEOBJECT_TYPE_LUAENTITY)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (obj->isGone())
|
|
||||||
return NULL;
|
|
||||||
return (LuaEntitySAO*)obj;
|
return (LuaEntitySAO*)obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,8 +72,6 @@ PlayerSAO* ObjectRef::getplayersao(ObjectRef *ref)
|
|||||||
return NULL;
|
return NULL;
|
||||||
if (obj->getType() != ACTIVEOBJECT_TYPE_PLAYER)
|
if (obj->getType() != ACTIVEOBJECT_TYPE_PLAYER)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (obj->isGone())
|
|
||||||
return NULL;
|
|
||||||
return (PlayerSAO*)obj;
|
return (PlayerSAO*)obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,7 +130,6 @@ int ObjectRef::l_set_pos(lua_State *L)
|
|||||||
{
|
{
|
||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
ObjectRef *ref = checkobject(L, 1);
|
ObjectRef *ref = checkobject(L, 1);
|
||||||
//LuaEntitySAO *co = getluaobject(ref);
|
|
||||||
ServerActiveObject *co = getobject(ref);
|
ServerActiveObject *co = getobject(ref);
|
||||||
if (co == NULL) return 0;
|
if (co == NULL) return 0;
|
||||||
// pos
|
// pos
|
||||||
@ -147,7 +144,6 @@ int ObjectRef::l_move_to(lua_State *L)
|
|||||||
{
|
{
|
||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
ObjectRef *ref = checkobject(L, 1);
|
ObjectRef *ref = checkobject(L, 1);
|
||||||
//LuaEntitySAO *co = getluaobject(ref);
|
|
||||||
ServerActiveObject *co = getobject(ref);
|
ServerActiveObject *co = getobject(ref);
|
||||||
if (co == NULL) return 0;
|
if (co == NULL) return 0;
|
||||||
// pos
|
// pos
|
||||||
@ -1102,17 +1098,13 @@ int ObjectRef::l_add_player_velocity(lua_State *L)
|
|||||||
ObjectRef *ref = checkobject(L, 1);
|
ObjectRef *ref = checkobject(L, 1);
|
||||||
v3f vel = checkFloatPos(L, 2);
|
v3f vel = checkFloatPos(L, 2);
|
||||||
|
|
||||||
RemotePlayer *player = getplayer(ref);
|
|
||||||
PlayerSAO *co = getplayersao(ref);
|
PlayerSAO *co = getplayersao(ref);
|
||||||
if (!player || !co)
|
if (!co)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
session_t peer_id = player->getPeerId();
|
|
||||||
if (peer_id == PEER_ID_INEXISTENT)
|
|
||||||
return 0;
|
|
||||||
// Do it
|
// Do it
|
||||||
co->setMaxSpeedOverride(vel);
|
co->setMaxSpeedOverride(vel);
|
||||||
getServer(L)->SendPlayerSpeed(peer_id, vel);
|
getServer(L)->SendPlayerSpeed(co->getPeerID(), vel);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user