void NodeTimerList::serialize(std::ostream &os, u8 map_format_version) const { if (map_format_version == 24) { // Version 0 is a placeholder for "nothing to see here; go away." if (m_timers.empty()) { writeU8(os, 0); // version return; } writeU8(os, 1); // version writeU16(os, m_timers.size()); } if (map_format_version >= 25) { writeU8(os, 2 + 4 + 4); // length of the data for a single timer writeU16(os, m_timers.size()); } for (const auto &timer : m_timers) { NodeTimer t = timer.second; NodeTimer nt = NodeTimer(t.timeout, t.timeout - (f32)(timer.first - m_time), t.position); v3s16 p = t.position; u16 p16 = p.Z * MAP_BLOCKSIZE * MAP_BLOCKSIZE + p.Y * MAP_BLOCKSIZE + p.X; writeU16(os, p16); nt.serialize(os); } }
int NodeTimerRef::l_start(lua_State *L) { NodeTimerRef *o = checkobject(L, 1); ServerEnvironment *env = o->m_env; if(env == NULL) return 0; f32 t = luaL_checknumber(L,2); env->getMap().setNodeTimer(o->m_p,NodeTimer(t,0)); return 0; }
int NodeTimerRef::l_start(lua_State *L) { MAP_LOCK_REQUIRED; NodeTimerRef *o = checkobject(L, 1); ServerEnvironment *env = o->m_env; if(env == NULL) return 0; f32 t = readParam<float>(L,2); env->getMap().setNodeTimer(NodeTimer(t, 0, o->m_p)); return 0; }
int NodeTimerRef::l_set(lua_State *L) { MAP_LOCK_REQUIRED; NodeTimerRef *o = checkobject(L, 1); ServerEnvironment *env = o->m_env; if(env == NULL) return 0; f32 t = luaL_checknumber(L,2); f32 e = luaL_checknumber(L,3); env->getMap().setNodeTimer(NodeTimer(t, e, o->m_p)); return 0; }