static int luaModelGetMix(lua_State *L) { unsigned int chn = luaL_checkunsigned(L, 1); unsigned int idx = luaL_checkunsigned(L, 2); unsigned int first = getFirstMix(chn); unsigned int count = getMixesCountFromFirst(chn, first); if (idx < count) { MixData * mix = mixAddress(first+idx); lua_newtable(L); lua_pushtablezstring(L, "name", mix->name); lua_pushtableinteger(L, "source", mix->srcRaw); lua_pushtableinteger(L, "weight", mix->weight); lua_pushtableinteger(L, "offset", mix->offset); lua_pushtableinteger(L, "switch", mix->swtch); lua_pushtableinteger(L, "curveType", mix->curve.type); lua_pushtableinteger(L, "curveValue", mix->curve.value); lua_pushtableinteger(L, "multiplex", mix->mltpx); lua_pushtableinteger(L, "flightModes", mix->flightModes); lua_pushtableboolean(L, "carryTrim", mix->carryTrim); lua_pushtableinteger(L, "mixWarn", mix->mixWarn); lua_pushtableinteger(L, "delayUp", mix->delayUp); lua_pushtableinteger(L, "delayDown", mix->delayDown); lua_pushtableinteger(L, "speedUp", mix->speedUp); lua_pushtableinteger(L, "speedDown", mix->speedDown); } else { lua_pushnil(L); } return 1; }
static int _redirect(lua_State *L) { struct skynet_context * context = lua_touserdata(L, lua_upvalueindex(1)); uint32_t dest = luaL_checkunsigned(L,1); uint32_t source = luaL_checkunsigned(L,2); int type = luaL_checkinteger(L,3); int session = luaL_checkinteger(L,4); int mtype = lua_type(L,5); switch (mtype) { case LUA_TSTRING: { size_t len = 0; void * msg = (void *)lua_tolstring(L,5,&len); if (len == 0) { msg = NULL; } session = skynet_send(context, source, dest, type, session , msg, len); break; } case LUA_TLIGHTUSERDATA: { void * msg = lua_touserdata(L,5); int size = luaL_checkinteger(L,6); session = skynet_send(context, source, dest, type | PTYPE_TAG_DONTCOPY, session, msg, size); break; } default: luaL_error(L, "skynet.redirect invalid param %s", lua_typename(L,mtype)); } return 0; }
static int _get_rank_range(lua_State *L) { skiplist *sl = _to_skiplist(L); unsigned long r1 = luaL_checkunsigned(L, 2); unsigned long r2 = luaL_checkunsigned(L, 3); int reverse, rangelen; if(r1 <= r2) { reverse = 0; rangelen = r2 - r1 + 1; } else { reverse = 1; rangelen = r1 - r2 + 1; } skiplistNode* node = slGetNodeByRank(sl, r1); lua_createtable(L, rangelen, 0); int n = 0; while(node && n < rangelen) { n++; lua_pushlstring(L, node->obj->ptr, node->obj->length); lua_rawseti(L, -2, n); node = reverse? node->backward : node->level[0].forward; } return 1; }
int lua_AIMessage_static_create(lua_State* state) { // Get the number of parameters. int paramCount = lua_gettop(state); // Attempt to match the parameters to a valid binding. switch (paramCount) { case 4: { if (lua_type(state, 1) == LUA_TNUMBER && (lua_type(state, 2) == LUA_TSTRING || lua_type(state, 2) == LUA_TNIL) && (lua_type(state, 3) == LUA_TSTRING || lua_type(state, 3) == LUA_TNIL) && lua_type(state, 4) == LUA_TNUMBER) { // Get parameter 1 off the stack. unsigned int param1 = (unsigned int)luaL_checkunsigned(state, 1); // Get parameter 2 off the stack. ScriptUtil::LuaArray<const char> param2 = ScriptUtil::getString(2, false); // Get parameter 3 off the stack. ScriptUtil::LuaArray<const char> param3 = ScriptUtil::getString(3, false); // Get parameter 4 off the stack. unsigned int param4 = (unsigned int)luaL_checkunsigned(state, 4); void* returnPtr = (void*)AIMessage::create(param1, param2, param3, param4); if (returnPtr) { ScriptUtil::LuaObject* object = (ScriptUtil::LuaObject*)lua_newuserdata(state, sizeof(ScriptUtil::LuaObject)); object->instance = returnPtr; object->owns = false; luaL_getmetatable(state, "AIMessage"); lua_setmetatable(state, -2); } else { lua_pushnil(state); } return 1; } else { lua_pushstring(state, "lua_AIMessage_static_create - Failed to match the given parameters to a valid function signature."); lua_error(state); } break; } default: { lua_pushstring(state, "Invalid number of parameters (expected 4)."); lua_error(state); break; } } return 0; }
int my_lua_writen(lua_State *state) { hw_writen_fn_t fn = (hw_writen_fn_t)lua_touserdata(state, lua_upvalueindex(1)); int n = lua_gettop(state); if(n != 2) luaL_error(state, "writen takes two arguments"); fn(state, luaL_checkunsigned(state, 1), luaL_checkunsigned(state, 2)); return 0; }
/*luadoc @function model.getGlobalVariable(index [, phase]) Returns current global variable value. See also model.setGlobalVariable() @notice a simple warning or notice @param index zero based global variable index, use 0 for GV1, 8 for GV9 @param phase zero based phase index, use 0 for Phase 1, 5 for Phase 6 @retval nil requested global variable does not exist @retval number current value of global variable Example: ```lua -- get GV3 (index = 2) from flight phase 1 (phase = 0) val = model.getGlobalVariable(2, 0) ``` */ static int luaModelGetGlobalVariable(lua_State *L) { unsigned int idx = luaL_checkunsigned(L, 1); unsigned int phase = luaL_checkunsigned(L, 2); if (phase < MAX_FLIGHT_MODES && idx < MAX_GVARS) lua_pushinteger(L, g_model.flightModeData[phase].gvars[idx]); else lua_pushnil(L); return 1; }
int lua_Animation_createClip(lua_State* state) { // Get the number of parameters. int paramCount = lua_gettop(state); // Attempt to match the parameters to a valid binding. switch (paramCount) { case 4: { if ((lua_type(state, 1) == LUA_TUSERDATA) && (lua_type(state, 2) == LUA_TSTRING || lua_type(state, 2) == LUA_TNIL) && lua_type(state, 3) == LUA_TNUMBER && lua_type(state, 4) == LUA_TNUMBER) { // Get parameter 1 off the stack. const char* param1 = gameplay::ScriptUtil::getString(2, false); // Get parameter 2 off the stack. unsigned long param2 = (unsigned long)luaL_checkunsigned(state, 3); // Get parameter 3 off the stack. unsigned long param3 = (unsigned long)luaL_checkunsigned(state, 4); Animation* instance = getInstance(state); void* returnPtr = (void*)instance->createClip(param1, param2, param3); if (returnPtr) { gameplay::ScriptUtil::LuaObject* object = (gameplay::ScriptUtil::LuaObject*)lua_newuserdata(state, sizeof(gameplay::ScriptUtil::LuaObject)); object->instance = returnPtr; object->owns = true; luaL_getmetatable(state, "AnimationClip"); lua_setmetatable(state, -2); } else { lua_pushnil(state); } return 1; } lua_pushstring(state, "lua_Animation_createClip - Failed to match the given parameters to a valid function signature."); lua_error(state); break; } default: { lua_pushstring(state, "Invalid number of parameters (expected 4)."); lua_error(state); break; } } return 0; }
/*luadoc @function model.setGlobalVariable(index, phase, value) Sets current global variable value. See also model.getGlobalVariable() @param index zero based global variable index, use 0 for GV1, 8 for GV9 @param phase zero based phase index, use 0 for Phase 1, 5 for Phase 6 @param value new value for global variable. Permitted range is from -1024 to 1024. @notice Global variable can only store integer values, any floating point value is converted (todo check how) into integer value. */ static int luaModelSetGlobalVariable(lua_State *L) { unsigned int idx = luaL_checkunsigned(L, 1); unsigned int phase = luaL_checkunsigned(L, 2); int value = luaL_checkinteger(L, 3); if (phase < MAX_FLIGHT_MODES && idx < MAX_GVARS && value >= -GVAR_MAX && value <= GVAR_MAX) { g_model.flightModeData[phase].gvars[idx] = value; eeDirty(EE_MODEL); } return 0; }
int lua_Curve_static_create(lua_State* state) { // Get the number of parameters. int paramCount = lua_gettop(state); // Attempt to match the parameters to a valid binding. switch (paramCount) { case 2: { if (lua_type(state, 1) == LUA_TNUMBER && lua_type(state, 2) == LUA_TNUMBER) { // Get parameter 1 off the stack. unsigned int param1 = (unsigned int)luaL_checkunsigned(state, 1); // Get parameter 2 off the stack. unsigned int param2 = (unsigned int)luaL_checkunsigned(state, 2); void* returnPtr = (void*)Curve::create(param1, param2); if (returnPtr) { ScriptUtil::LuaObject* object = (ScriptUtil::LuaObject*)lua_newuserdata(state, sizeof(ScriptUtil::LuaObject)); object->instance = returnPtr; object->owns = true; luaL_getmetatable(state, "Curve"); lua_setmetatable(state, -2); } else { lua_pushnil(state); } return 1; } else { lua_pushstring(state, "lua_Curve_static_create - Failed to match the given parameters to a valid function signature."); lua_error(state); } break; } default: { lua_pushstring(state, "Invalid number of parameters (expected 2)."); lua_error(state); break; } } return 0; }
static int luaModelDeleteMix(lua_State *L) { unsigned int chn = luaL_checkunsigned(L, 1); unsigned int idx = luaL_checkunsigned(L, 2); unsigned int first = getFirstMix(chn); unsigned int count = getMixesCountFromFirst(chn, first); if (idx < count) { deleteExpoMix(0, first+idx); } return 0; }
static int lua_TileSet_setTileSource(lua_State* state) { // Get the number of parameters. int paramCount = lua_gettop(state); // Attempt to match the parameters to a valid binding. switch (paramCount) { case 4: { if ((lua_type(state, 1) == LUA_TUSERDATA) && lua_type(state, 2) == LUA_TNUMBER && lua_type(state, 3) == LUA_TNUMBER && (lua_type(state, 4) == LUA_TUSERDATA || lua_type(state, 4) == LUA_TNIL)) { // Get parameter 1 off the stack. unsigned int param1 = (unsigned int)luaL_checkunsigned(state, 2); // Get parameter 2 off the stack. unsigned int param2 = (unsigned int)luaL_checkunsigned(state, 3); // Get parameter 3 off the stack. bool param3Valid; gameplay::ScriptUtil::LuaArray<Vector2> param3 = gameplay::ScriptUtil::getObjectPointer<Vector2>(4, "Vector2", true, ¶m3Valid); if (!param3Valid) { lua_pushstring(state, "Failed to convert parameter 3 to type 'Vector2'."); lua_error(state); } TileSet* instance = getInstance(state); instance->setTileSource(param1, param2, *param3); return 0; } lua_pushstring(state, "lua_TileSet_setTileSource - Failed to match the given parameters to a valid function signature."); lua_error(state); break; } default: { lua_pushstring(state, "Invalid number of parameters (expected 4)."); lua_error(state); break; } } return 0; }
static int _delete_by_rank(lua_State *L) { skiplist *sl = _to_skiplist(L); unsigned int start = luaL_checkunsigned(L, 2); unsigned int end = luaL_checkunsigned(L, 3); luaL_checktype(L, 4, LUA_TFUNCTION); if (start > end) { unsigned int tmp = start; start = end; end = tmp; } lua_pushunsigned(L, slDeleteByRank(sl, start, end, _delete_rank_cb, L)); return 1; }
static int lsetalpha(lua_State *L) { struct sprite *s = self(L); uint8_t alpha = luaL_checkunsigned(L, 2); s->t.color = (s->t.color >> 8) | (alpha << 24); return 0; }
unsigned long ScriptController::getUnsignedLong(const char* name, unsigned long defaultValue) { lua_getglobal(_lua, name); unsigned long n = lua_isnumber(_lua, -1) ? (unsigned long)luaL_checkunsigned(_lua, -1) : defaultValue; lua_pop(_lua, 1); return n; }
static int test_unsigned (lua_State *L) { lua_Unsigned u = luaL_checkunsigned(L, 1); lua_Unsigned u2 = lua_tounsigned(L, 1); lua_pushunsigned(L, u); lua_pushboolean(L, u == u2); return 2; }
int lua_MeshBatch_setCapacity(lua_State* state) { // Get the number of parameters. int paramCount = lua_gettop(state); // Attempt to match the parameters to a valid binding. switch (paramCount) { case 2: { if ((lua_type(state, 1) == LUA_TUSERDATA) && lua_type(state, 2) == LUA_TNUMBER) { // Get parameter 1 off the stack. unsigned int param1 = (unsigned int)luaL_checkunsigned(state, 2); MeshBatch* instance = getInstance(state); instance->setCapacity(param1); return 0; } lua_pushstring(state, "lua_MeshBatch_setCapacity - Failed to match the given parameters to a valid function signature."); lua_error(state); break; } default: { lua_pushstring(state, "Invalid number of parameters (expected 2)."); lua_error(state); break; } } return 0; }
unsigned long ScriptController::getUnsignedLong(const char* name, unsigned long defaultValue) { PUSH_NESTED_VARIABLE(name, defaultValue); unsigned long n = lua_isnumber(_lua, -1) ? (unsigned long)luaL_checkunsigned(_lua, -1) : defaultValue; POP_NESTED_VARIABLE(); return n; }
static int luaModelSetTimer(lua_State *L) { unsigned int idx = luaL_checkunsigned(L, 1); if (idx < MAX_TIMERS) { TimerData & timer = g_model.timers[idx]; luaL_checktype(L, -1, LUA_TTABLE); for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) { luaL_checktype(L, -2, LUA_TSTRING); // key is string const char * key = luaL_checkstring(L, -2); if (!strcmp(key, "mode")) { timer.mode = luaL_checkinteger(L, -1); } else if (!strcmp(key, "start")) { timer.start = luaL_checkinteger(L, -1); } else if (!strcmp(key, "value")) { timersStates[idx].val = luaL_checkinteger(L, -1); } else if (!strcmp(key, "countdownBeep")) { timer.countdownBeep = luaL_checkinteger(L, -1); } else if (!strcmp(key, "minuteBeep")) { timer.minuteBeep = lua_toboolean(L, -1); } else if (!strcmp(key, "persistent")) { timer.persistent = luaL_checkinteger(L, -1); } } eeDirty(EE_MODEL); } return 0; }
static b_uint andaux (lua_State *L) { int i, n = lua_gettop(L); b_uint r = ~(b_uint)0; for (i = 1; i <= n; i++) r &= luaL_checkunsigned(L, i); return trim(r); }
static int _sock_recvfrom(lua_State *L) { socklen_t addr_len; struct sockaddr *addr; int nread; socket_t *sock = _getsock(L, 1); size_t len = luaL_checkunsigned(L, 2); #ifdef _WIN32 char *buf = (char*)lua_newuserdata(L, len); #else char buf[len]; #endif if(!_getsockaddrlen(sock, &addr_len)) { return luaL_argerror(L, 1, "bad family"); } addr = (struct sockaddr*)lua_newuserdata(L, addr_len); nread = recvfrom(sock->fd, buf, len, 0, addr, &addr_len); if(nread < 0) { lua_pushnil(L); lua_pushinteger(L, errno); return 2; } lua_pushlstring(L, buf, nread); return _makeaddr(L, addr, addr_len) + 1; }
//police logo //goods/equipment availability (1-per-economy-type: aka agricultural, industrial, tourist, etc) //goods/equipment legality static int l_fac_illegal_goods_probability(lua_State *L) { Faction *fac = l_fac_check(L, 1); const char *typeName = luaL_checkstring(L, 2); const Equip::Type e = static_cast<Equip::Type>(LuaConstants::GetConstant(L, "EquipType", typeName)); const Uint32 probability = luaL_checkunsigned(L, 3); if (e < Equip::FIRST_COMMODITY || e > Equip::LAST_COMMODITY) { pi_lua_warn(L, "argument out of range: Faction{%s}:IllegalGoodsProbability('%s', %d)", fac->name.c_str(), typeName, probability); return 0; } if (probability > 100) { pi_lua_warn(L, "argument (probability 0-100) out of range: Faction{%s}:IllegalGoodsProbability('%s', %d)", fac->name.c_str(), typeName, probability); return 0; } fac->equip_legality[e] = probability; lua_settop(L, 1); return 1; }
unsigned short ScriptController::getUnsignedShort(const char* name, unsigned short defaultValue) { lua_getglobal(_lua, name); unsigned short n = lua_isnumber(_lua, -1) ? (unsigned short)luaL_checkunsigned(_lua, -1) : defaultValue; lua_pop(_lua, 1); return n; }
static int lua_FontGlyph_advance(lua_State* state) { // Validate the number of parameters. if (lua_gettop(state) > 2) { lua_pushstring(state, "Invalid number of parameters (expected 1 or 2)."); lua_error(state); } Font::Glyph* instance = getInstance(state); if (lua_gettop(state) == 2) { // Get parameter 2 off the stack. unsigned int param2 = (unsigned int)luaL_checkunsigned(state, 2); instance->advance = param2; return 0; } else { unsigned int result = instance->advance; // Push the return value onto the stack. lua_pushunsigned(state, result); return 1; } }
static int luaModelSetModule(lua_State *L) { unsigned int idx = luaL_checkunsigned(L, 1); if (idx < NUM_MODULES) { ModuleData & module = g_model.moduleData[idx]; luaL_checktype(L, -1, LUA_TTABLE); for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) { luaL_checktype(L, -2, LUA_TSTRING); // key is string const char * key = luaL_checkstring(L, -2); if (!strcmp(key, "rfProtocol")) { module.rfProtocol = luaL_checkinteger(L, -1); } else if (!strcmp(key, "modelId")) { g_model.header.modelId[idx] = modelHeaders[g_eeGeneral.currModel].modelId[idx] = luaL_checkinteger(L, -1); } else if (!strcmp(key, "firstChannel")) { module.channelsStart = luaL_checkinteger(L, -1); } else if (!strcmp(key, "channelsCount")) { module.channelsCount = luaL_checkinteger(L, -1) - 8; } } eeDirty(EE_MODEL); } return 0; }
static int lsetcolor(lua_State *L) { struct sprite *s = self(L); uint32_t color = luaL_checkunsigned(L,2); s->t.color = color; return 0; }
static lua_Unsigned andaux (lua_State *L) { int i, n = lua_gettop(L); lua_Unsigned r = ~(lua_Unsigned)0; for (i = 1; i <= n; i++) r &= luaL_checkunsigned(L, i); return trim(r); }
static int lsetadditive(lua_State *L) { struct sprite *s = self(L); uint32_t additive = luaL_checkunsigned(L,2); s->t.additive = additive; return 0; }
unsigned char ScriptController::getUnsignedChar(const char* name, unsigned char defaultValue) { PUSH_NESTED_VARIABLE(name, defaultValue); unsigned char c = lua_isnumber(_lua, -1) ? (unsigned char)luaL_checkunsigned(_lua, -1) : defaultValue; POP_NESTED_VARIABLE(); return c; }
unsigned char ScriptController::getUnsignedChar(const char* name, unsigned char defaultValue) { lua_getglobal(_lua, name); unsigned char c = lua_isnumber(_lua, -1) ? (unsigned char)luaL_checkunsigned(_lua, -1) : defaultValue; lua_pop(_lua, 1); return c; }
static int luaModelGetMixesCount(lua_State *L) { unsigned int chn = luaL_checkunsigned(L, 1); unsigned int count = getMixesCount(chn); lua_pushinteger(L, count); return 1; }