aboutsummaryrefslogtreecommitdiff
path: root/src/script/common
Commit message (Expand)AuthorAge
* Move globals from main.cpp to more sane locationsCraig Robbins2015-04-01
* Clean up and tweak build systemShadowNinja2015-03-27
* Don't use luaL_checkstring to read node names, it's only for argumentsShadowNinja2015-03-07
* For usages of assert() that are meant to persist in Release builds (when NDEB...Craig Robbins2015-03-07
* Remove freezemelt (the remainder of proller nonsense)kwolekr2015-01-04
* Redefine NodeResolver interface and replace with callback mechanismkwolekr2014-12-27
* Move get_schematic and read_schematic to l_mapgen.cppkwolekr2014-12-10
* Remove get_noiseparams function. read_noiseparams should be used from now onkwolekr2014-12-10
* Add flags and lacunarity as new noise parameterskwolekr2014-12-07
* Schematics: Fix minetest.place_schematic() when defined by a Lua tablekwolekr2014-12-06
* Don't corrupt stepheight when setting other propertiesCiaran Gultnieks2014-11-26
* Add option 'eased' to NoiseParamsSmallJoker2014-11-13
* Add Generator Element Management frameworkkwolekr2014-11-12
* Split up mapgen.cppkwolekr2014-11-01
* Add NodeResolver and clean up node name -> content ID resolution systemkwolekr2014-10-26
* Custom collision boxes node property.RealBadAngel2014-10-19
* Add meshnode drawtype.RealBadAngel2014-10-18
* Fix LuaJIT exception wrapperKahrl2014-08-23
* Use "core" namespace internallyShadowNinja2014-05-08
* Add proper lua api deprecated handlingsapier2014-04-29
* Use integers instead of float valuesBlockMen2014-04-12
* Remove lua_State parameter from LuaError::LuaErrorShadowNinja2014-03-15
* Revert "Make sure we get a stacktrace for as many lua errors as possible"ShadowNinja2014-03-15
* Make sure we get a stacktrace for as many lua errors as possibleSfan52014-03-15
* Update set_mapgen_params and set_gen_notify Lua API to use new flag formatkwolekr2014-03-08
* Add minetest.set_noiseparam_defaults() Lua APIkwolekr2014-02-15
* Define strlcpy on platforms that do not have itkwolekr2014-02-09
* Add capability to read table flag fields from Lua APIkwolekr2014-02-09
* Make flag strings clear specified flag with 'no' prefixkwolekr2014-02-08
* Schematic: Read slice probability table from schematic descriptorskwolekr2014-01-19
* Add maximum recursion depth to read_json_valueShadowNinja2014-01-11
* Rename get_json_value to read_json_valueShadowNinja2014-01-11
* Fix InventoryList reading orderShadowNinja2013-12-30
* Don't throw a error when writing JSON failsShadowNinja2013-12-18
* Add 'minetest.write_json'ShadowNinja2013-12-18
* Handle LuaErrors in Lua -> C++ calls on LuaJITShadowNinja2013-12-18
* Move script_run_callbacks to LuaShadowNinja2013-12-07
* Shaders rework.RealBadAngel2013-12-03
* Optimize table creationShadowNinja2013-11-30
* Fix possible implicit conversion of NULL to std::stringkwolekr2013-11-21
* fixed array limit check when reading Lua specialtiles tableMetaDucky2013-11-16
* Pass a errfunc to lua_pcall to get a tracebackShadowNinja2013-11-15
* Add offset to automatic_face_movement_dirPilzAdam2013-09-10
* Add minetest.parse_json, engine.parse_jsonKahrl2013-09-02
* Omnicleanup: header cleanup, add ModApiUtil shared between game and mainmenuKahrl2013-08-14
* Add support for entities to automatic face movement directionsapier2013-08-13
* Decoration: Fix schematic probability mess with new MTS file versionkwolekr2013-08-11
* Add support for different drowning damage and allow drowning in other nodetypesBlockMen2013-08-06
* Add support for setting stepheight for entitiessapier2013-07-30
* Weather supportproller2013-07-27
"hl kwa">if (lua_gettop(L) == 8) // only spawn for a single player playername = luaL_checkstring(L, 8); } else if (lua_istable(L, 1)) { lua_getfield(L, 1, "pos"); if (lua_istable(L, -1)) p.pos = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "vel"); if (lua_istable(L, -1)) { p.vel = check_v3f(L, -1); log_deprecated(L, "The use of vel is deprecated. " "Use velocity instead"); } lua_pop(L, 1); lua_getfield(L, 1, "velocity"); if (lua_istable(L, -1)) p.vel = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "acc"); if (lua_istable(L, -1)) { p.acc = check_v3f(L, -1); log_deprecated(L, "The use of acc is deprecated. " "Use acceleration instead"); } lua_pop(L, 1); lua_getfield(L, 1, "acceleration"); if (lua_istable(L, -1)) p.acc = check_v3f(L, -1); lua_pop(L, 1); p.expirationtime = getfloatfield_default(L, 1, "expirationtime", p.expirationtime); p.size = getfloatfield_default(L, 1, "size", p.size); p.collisiondetection = getboolfield_default(L, 1, "collisiondetection", p.collisiondetection); p.collision_removal = getboolfield_default(L, 1, "collision_removal", p.collision_removal); p.object_collision = getboolfield_default(L, 1, "object_collision", p.object_collision); p.vertical = getboolfield_default(L, 1, "vertical", p.vertical); lua_getfield(L, 1, "animation"); p.animation = read_animation_definition(L, -1); lua_pop(L, 1); p.texture = getstringfield_default(L, 1, "texture", p.texture); p.glow = getintfield_default(L, 1, "glow", p.glow); lua_getfield(L, 1, "node"); if (lua_istable(L, -1)) p.node = readnode(L, -1, getGameDef(L)->ndef()); lua_pop(L, 1); p.node_tile = getintfield_default(L, 1, "node_tile", p.node_tile); playername = getstringfield_default(L, 1, "playername", ""); } getServer(L)->spawnParticle(playername, p); return 1; } // add_particlespawner({amount=, time=, // minpos=, maxpos=, // minvel=, maxvel=, // minacc=, maxacc=, // minexptime=, maxexptime=, // minsize=, maxsize=, // collisiondetection=, // collision_removal=, // object_collision=, // vertical=, // texture=, // player=}) // minpos/maxpos/minvel/maxvel/minacc/maxacc = {x=num, y=num, z=num} // minexptime/maxexptime = num (seconds) // minsize/maxsize = num // collisiondetection = bool // collision_removal = bool // object_collision = bool // vertical = bool // texture = e.g."default_wood.png" // animation = TileAnimation definition // glow = num int ModApiParticles::l_add_particlespawner(lua_State *L) { NO_MAP_LOCK_REQUIRED; // Get parameters ParticleSpawnerParameters p; ServerActiveObject *attached = NULL; std::string playername; if (lua_gettop(L) > 1) //deprecated { log_deprecated(L, "Deprecated add_particlespawner call with " "individual parameters instead of definition"); p.amount = luaL_checknumber(L, 1); p.time = luaL_checknumber(L, 2); p.minpos = check_v3f(L, 3); p.maxpos = check_v3f(L, 4); p.minvel = check_v3f(L, 5); p.maxvel = check_v3f(L, 6); p.minacc = check_v3f(L, 7); p.maxacc = check_v3f(L, 8); p.minexptime = luaL_checknumber(L, 9); p.maxexptime = luaL_checknumber(L, 10); p.minsize = luaL_checknumber(L, 11); p.maxsize = luaL_checknumber(L, 12); p.collisiondetection = readParam<bool>(L, 13); p.texture = luaL_checkstring(L, 14); if (lua_gettop(L) == 15) // only spawn for a single player playername = luaL_checkstring(L, 15); } else if (lua_istable(L, 1)) { p.amount = getintfield_default(L, 1, "amount", p.amount); p.time = getfloatfield_default(L, 1, "time", p.time); lua_getfield(L, 1, "minpos"); if (lua_istable(L, -1)) p.minpos = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "maxpos"); if (lua_istable(L, -1)) p.maxpos = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "minvel"); if (lua_istable(L, -1)) p.minvel = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "maxvel"); if (lua_istable(L, -1)) p.maxvel = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "minacc"); if (lua_istable(L, -1)) p.minacc = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "maxacc"); if (lua_istable(L, -1)) p.maxacc = check_v3f(L, -1); lua_pop(L, 1); p.minexptime = getfloatfield_default(L, 1, "minexptime", p.minexptime); p.maxexptime = getfloatfield_default(L, 1, "maxexptime", p.maxexptime); p.minsize = getfloatfield_default(L, 1, "minsize", p.minsize); p.maxsize = getfloatfield_default(L, 1, "maxsize", p.maxsize); p.collisiondetection = getboolfield_default(L, 1, "collisiondetection", p.collisiondetection); p.collision_removal = getboolfield_default(L, 1, "collision_removal", p.collision_removal); p.object_collision = getboolfield_default(L, 1, "object_collision", p.object_collision); lua_getfield(L, 1, "animation"); p.animation = read_animation_definition(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "attached"); if (!lua_isnil(L, -1)) { ObjectRef *ref = ObjectRef::checkobject(L, -1); lua_pop(L, 1); attached = ObjectRef::getobject(ref); } p.vertical = getboolfield_default(L, 1, "vertical", p.vertical); p.texture = getstringfield_default(L, 1, "texture", p.texture); playername = getstringfield_default(L, 1, "playername", ""); p.glow = getintfield_default(L, 1, "glow", p.glow); lua_getfield(L, 1, "node"); if (lua_istable(L, -1)) p.node = readnode(L, -1, getGameDef(L)->ndef()); lua_pop(L, 1); p.node_tile = getintfield_default(L, 1, "node_tile", p.node_tile); } u32 id = getServer(L)->addParticleSpawner(p, attached, playername); lua_pushnumber(L, id); return 1; } // delete_particlespawner(id, player) // player (string) is optional int ModApiParticles::l_delete_particlespawner(lua_State *L) { NO_MAP_LOCK_REQUIRED; // Get parameters u32 id = luaL_checknumber(L, 1); std::string playername; if (lua_gettop(L) == 2) { playername = luaL_checkstring(L, 2); } getServer(L)->deleteParticleSpawner(playername, id); return 1; } void ModApiParticles::Initialize(lua_State *L, int top) { API_FCT(add_particle); API_FCT(add_particlespawner); API_FCT(delete_particlespawner); }