int LuaCreatureObject::getGroupMember(lua_State* L) {
    int i = lua_tonumber(L, -1);

    if (i < 0)
        i = 0;

    Locker locker(realObject);

    GroupObject* group = realObject->getGroup();

    if (group == NULL) {
        lua_pushnil(L);
        return 1;
    }

    Locker lock(group, realObject);

    if (group->getGroupSize() < i) {
        lua_pushnil(L);
        return 1;
    }

    SceneObject* creo = group->getGroupMember(i);

    if (creo == NULL) {
        realObject->info("LuaCreatureObject::getGroupMember GroupMember is NULL.");
        lua_pushnil(L);
    } else {
        creo->_setUpdated(true);
        lua_pushlightuserdata(L, creo);
    }

    return 1;
}
int LuaSceneObject::getParent(lua_State* L) {
	SceneObject* obj = realObject->getParent().get().get();

	if (obj == NULL) {
		lua_pushnil(L);
	} else {
		obj->_setUpdated(true);
		lua_pushlightuserdata(L, obj);
	}

	return 1;
}
int LuaSceneObject::getSlottedObject(lua_State* L) {
	String slot = lua_tostring(L, -1);

	SceneObject* obj = realObject->getSlottedObject(slot);
	if (obj == NULL) {
		lua_pushnil(L);
	} else {
		obj->_setUpdated(true);
		lua_pushlightuserdata(L, obj);
	}

	return 1;
}
int LuaSceneObject::getContainerObjectById(lua_State* L) {
	uint64 objectID = lua_tointeger(L, -1);

	SceneObject* obj = realObject->getContainerObject(objectID);

	if (obj != NULL) {
		obj->_setUpdated(true);
		lua_pushlightuserdata(L, obj);
	} else {
		lua_pushnil(L);
	}

    return 1;
}
int LuaSceneObject::getContainerObject(lua_State* L) {
	int idx = lua_tonumber(L, -1);

	SceneObject* obj = realObject->getContainerObject(idx);

	if (obj == NULL) {
		lua_pushnil(L);
	} else {
		obj->_setUpdated(true);
		lua_pushlightuserdata(L, obj);
	}

	return 1;
}