/* * disable sensor * * @param sensor type */ SQInteger emoDisableSensor(HSQUIRRELVM v) { SQInteger nargs = sq_gettop(v); if (nargs < 2) { LOGE("Invalid call: emoDisableSensors(sensorType)"); return 0; } SQInteger sensorType; sq_getinteger(v, 2, &sensorType); engine->disableSensor(sensorType); return 0; }
SQInteger AIList::_set(HSQUIRRELVM vm) { if (sq_gettype(vm, 2) != OT_INTEGER) return SQ_ERROR; if (sq_gettype(vm, 3) != OT_INTEGER || sq_gettype(vm, 3) == OT_NULL) { return sq_throwerror(vm, _SC("you can only assign integers to this list")); } SQInteger idx, val; sq_getinteger(vm, 2, &idx); if (sq_gettype(vm, 3) == OT_NULL) { this->RemoveItem(idx); return 0; } sq_getinteger(vm, 3, &val); if (!this->HasItem(idx)) { this->AddItem(idx, val); return 0; } this->SetValue(idx, val); return 0; }
/* * enable onFps callback * * @param onUpdate interval */ SQInteger emoEnableOnFpsCallback(HSQUIRRELVM v) { engine->enableOnFpsListener(true); SQInteger nargs = sq_gettop(v); if (nargs <= 2 && sq_gettype(v, 2) != OT_NULL) { SQInteger interval; sq_getinteger(v, 2, &interval); engine->setOnFpsListenerInterval(interval); } return 0; }
// setPickupRotation(Pickupid, x, y, z) SQInteger CPickupNatives::SetRotation(SQVM * pVM) { SQInteger pickupid; sq_getinteger(pVM, 2, &pickupid); if(g_pPickupManager->DoesExist(pickupid)) { CVector3 vecPosition; sq_getvector3(pVM, 3, &vecPosition); sq_pushbool(pVM, g_pPickupManager->SetRotation(pickupid, vecPosition)); return 1; } sq_pushbool(pVM, false); return 1; }
SQInteger SFKeyPressed(HSQUIRRELVM v) { int key; sq_getinteger(Scripts.vm, 2, &key); if (InputKeyPressed(key)) { sq_pushbool(Scripts.vm, SQTrue); } else { sq_pushbool(Scripts.vm, SQFalse); } return 1; }
// showTextForPlayer SQInteger sq_toggleTextForPlayer(SQVM * pVM) { SQInteger playerId; SQInteger textId; SQBool show; sq_getbool(pVM, -1, &show); sq_getinteger(pVM, -2, &textId); sq_getinteger(pVM, -3, &playerId); if(pNetowkManager->GetPlayerManager()->GetSlotState(playerId)) { RakNet::BitStream bsSend; bsSend.Write((EntityId)textId); bsSend.Write(show != 0); pNetowkManager->GetRPC4()->Call("Script_toggleTextForPlayer",&bsSend,HIGH_PRIORITY,RELIABLE,0,pNetowkManager->GetRakPeer()->GetSystemAddressFromIndex(playerId),false); sq_pushbool(pVM, true); return 1; } sq_pushbool(pVM, false); return 1; }
int AnimSquirrel::getAnimLength(SQVM* v) { const char* tChar; int ID; float retVal = -1.0f; SQInteger nargs = sq_gettop(v); if(nargs >= 3) { sq_getstring(v,3,&tChar); sq_getinteger(v,2,&ID); retVal = GameEngine::getAnimLength(ID,tChar); } sq_pushfloat(v,retVal); return 1; }
// setActorNametagColor(actorid, color) SQInteger CActorNatives::SetColor(SQVM * pVM) { EntityId actorId; SQInteger color = 0xFFFFFFFF; sq_getentity(pVM, -2, &actorId); sq_getinteger(pVM, -1, &color); if(g_pActorManager->DoesExist(actorId)) { g_pActorManager->SetColor(actorId,color); return 1; } sq_pushbool(pVM,false); return 1; }
SQInteger TransportTimeSignatureCtor(HSQUIRRELVM vm) { SQInteger numargs = sq_gettop(vm); // check parameter count if(numargs > 3) { return sq_throwerror(vm, "too many parameters, expected at most 2"); } if(numargs < 3) { return sq_throwerror(vm, "insufficient parameters, expected at least 2"); } // get parameter 1 "numerator" as integer SQInteger numerator; if (SQ_FAILED(sq_getinteger(vm, 2, &numerator))){ return sq_throwerror(vm, "argument 1 \"numerator\" is not of type integer"); } // get parameter 2 "denominator" as integer SQInteger denominator; if (SQ_FAILED(sq_getinteger(vm, 3, &denominator))){ return sq_throwerror(vm, "argument 2 \"denominator\" is not of type integer"); } TimeSignature *obj; // call the implementation try { obj = new TimeSignature(numerator, denominator); } catch(std::exception const& e) { return sq_throwerror(vm, e.what()); } // return pointer to new object sq_setinstanceup(vm, 1, (SQUserPointer*)obj); sq_setreleasehook(vm, 1, TransportTimeSignatureRelease); return 1; }
int AnimSquirrel::isPlaying(SQVM* v) { const char* tChar; int ID; bool retVal = false; SQInteger nargs = sq_gettop(v); if(nargs >= 3) { sq_getstring(v,3,&tChar); sq_getinteger(v,2,&ID); retVal = GameEngine::isPlaying(ID,tChar); } sq_pushbool(v,retVal); return 1; }
// bool ViCbSetiPos(VApiHandle hWnd, int x, int y, int nWight, int nHight) SQInteger ViCbSetiPos(HSQUIRRELVM v) { SQInteger nargs = sq_gettop(v); SQInteger Handle = 0; CControlUI* pCtrl = NULL; int x = 0; int y = 0; int nWight = 0; int nHight = 0; RECT rc = {0}; if (!v || 5 + 1 != nargs) {goto _Exit_;} if (OT_INTEGER != sq_gettype(v, 2)) {goto _Exit_;} if (OT_INTEGER != sq_gettype(v, 3) && OT_FLOAT != sq_gettype(v, 3)) {goto _Exit_;} if (OT_INTEGER != sq_gettype(v, 4) && OT_FLOAT != sq_gettype(v, 4)) {goto _Exit_;} if (OT_INTEGER != sq_gettype(v, 5) && OT_FLOAT != sq_gettype(v, 5)) {goto _Exit_;} if (OT_INTEGER != sq_gettype(v, 6) && OT_FLOAT != sq_gettype(v, 6)) {goto _Exit_;} sq_getinteger(v, 2, &Handle); sq_getinteger(v, 3, &x); sq_getinteger(v, 4, &y); sq_getinteger(v, 5, &nWight); sq_getinteger(v, 6, &nHight); pCtrl = QiHwHandleToCtrl(Handle); if (!pCtrl) {goto _Exit_;} rc.left = x; rc.top = y; rc.right = x + nWight; rc.bottom = y + nHight; pCtrl->SetPos(rc); _Exit_: sq_pushbool(v, TRUE); return 1; }
// setDayOfWeek(day) SQInteger CWorldNatives::SetDayOfWeek(SQVM * pVM) { SQInteger iDay; sq_getinteger(pVM, 2, &iDay); if(iDay >= 0 && iDay <= 6) { CTime::GetInstance()->SetDayOfWeek(iDay); sq_pushbool(pVM, true); return 1; } sq_pushbool(pVM, false); return 1; }
bool sc_CallSomeCallback(HSQUIRRELVM v, const wchar_t *callback, const int param) { int top = sq_gettop(v); int result = 0; sq_pushroottable(v); sq_pushstring(v, callback, -1); if(SQ_SUCCEEDED(sq_get(v, -2))) { sq_pushroottable(v); sq_pushinteger(v, param); sq_call(v, 2, 1, 1); sq_getinteger(v, sq_gettop(v), &result); } sq_settop(v, top); return result == 1; }
SQInteger time_delayMicroseconds(HSQUIRRELVM v) { SQInteger nargs = sq_gettop(v); //number of arguments if(nargs >= 2) { if(sq_gettype(v, 2) == OT_INTEGER) { int us; sq_getinteger(v, 2, &us); delayMicroseconds(us); } else sq_throwerror(v, "Invalid parameter for delayMicroseconds()"); } return 0; }
/* * get instance member value as float */ bool getInstanceMemberAsInteger(HSQUIRRELVM v, int idx, const char *name, SQInteger* value) { if (sq_gettype(v, idx) == OT_NULL) return false; sq_pushstring(v, name, -1); if (!SQ_SUCCEEDED(sq_get(v, idx))) { sq_pop(v, 1); return false; } if (sq_gettype(v, -1) == OT_NULL) { return false; sq_pop(v, 1); } sq_getinteger(v, -1, value); sq_pop(v, 1); return true; }
// setTrafficLightsState(state) SQInteger CWorldNatives::SetTrafficLightsState(SQVM * pVM) { SQInteger iState; sq_getinteger(pVM, 2, &iState); if(iState > 0 && iState <= 3) { sq_pushbool(pVM, CTrafficLights::GetInstance()->SetState((CTrafficLights::eTrafficLightState)iState)); return 1; } else { CLogFile::Printf("Failed to set TrafficLightsState to %d(Only available from 0 to 3)",iState); sq_pushbool(pVM,false); return 1; } }
SQInteger CSharedVehicleNatives::GetModel( SQVM * pVM ) { // Get the vehicle id SQInteger vehicleId; sq_getinteger( pVM, -1, &vehicleId ); // Is the vehicle active? if( pCore->GetVehicleManager()->IsActive( vehicleId ) ) { sq_pushinteger( pVM, pCore->GetVehicleManager()->Get( vehicleId )->GetModel () ); return 1; } sq_pushbool( pVM, false ); return 1; }
_MEMBER_FUNCTION_IMPL(GUIMultiColumnList, removeRow) { CEGUI::MultiColumnList * pWindow = sq_getinstance<CEGUI::MultiColumnList *>(pVM); if(!pWindow) { sq_pushbool(pVM, false); return 1; } SQInteger sqiRow; sq_getinteger(pVM, -1, &sqiRow); pWindow->removeRow(sqiRow); sq_pushbool(pVM, true); return 1; }
bool sc_OnPlayerText(HSQUIRRELVM v, const short index, const wchar_t *text) { int result = 1; int top = sq_gettop(v); sq_pushroottable(v); sq_pushstring(v, _SC("OnPlayerText"), -1); if(SQ_SUCCEEDED(sq_get(v, -2))) { sq_pushroottable(v); sq_pushinteger(v, index); sq_pushstring(v, text, -1); sq_call(v, 3, 1, 1); sq_getinteger(v, sq_gettop(v), &result); } sq_settop(v, top); return result != 0; }
static SQInteger string_find(HSQUIRRELVM v) { SQInteger top,start_idx=0; const SQChar *str,*substr,*ret; if(((top=sq_gettop(v))>1) && SQ_SUCCEEDED(sq_getstring(v,1,&str)) && SQ_SUCCEEDED(sq_getstring(v,2,&substr))){ if(top>2)sq_getinteger(v,3,&start_idx); if((sq_getsize(v,1)>start_idx) && (start_idx>=0)){ ret=scstrstr(&str[start_idx],substr); if(ret){ sq_pushinteger(v,(SQInteger)(ret-str)); return 1; } } return 0; } return sq_throwerror(v,_SC("invalid param")); }
SQInteger _stream_readblob(HSQUIRRELVM v) { SETUP_STREAM(v); SQUserPointer data,blobp; SQInteger size,res; sq_getinteger(v,2,&size); if(size > self->Len()) { size = self->Len(); } data = sq_getscratchpad(v,size); res = self->Read(data,size); if(res <= 0) return sq_throwerror(v,_SC("no data left to read")); blobp = sqstd_createblob(v,res); memcpy(blobp,data,res); return 1; }
// toRGBA( colour ); SQInteger CUtilNatives::ToRGBA( SQVM * pVM ) { SQInteger iColour; sq_getinteger( pVM, -1, &iColour ); CColor m_color( (unsigned long)iColour ); CSquirrelArguments args; args.push( m_color.R ); args.push( m_color.G ); args.push( m_color.B ); args.push( m_color.A ); CSquirrelArgument arguments(args, true); arguments.push( pVM ); return 1; }
// Node:OpenNode(mode,name); int n_OpenNode(HSQUIRRELVM pVM) { for(int i = 0;i < MAX_NODES;i++) { if(pNodes[i]) continue; const char* temp; int mode; sq_getinteger(pVM,-2,&mode); sq_getstring(pVM, -1, &temp); pNodes[i] = new CNode((unsigned int)mode,temp); sq_pushinteger(pVM,i); return 1; } return 0; }
SQInteger sq_setTextPositionForAll(SQVM * pVM) { SQInteger textId; float x, y; sq_getfloat(pVM, -1, &y); sq_getfloat(pVM, -2, &x); sq_getinteger(pVM, -3, &textId); if(pNetowkManager->GetTextManager()->GetSlotState(textId)) { pNetowkManager->GetTextManager()->GetAt(textId)->SetPosition(x, y); } sq_pushbool(pVM, false); return 1; }
SQInteger CCheckpointNatives::SetDimension(SQVM * pVM) { SQInteger iDimension; EntityId checkpointId; sq_getinteger(pVM, -1, &iDimension); sq_getentity(pVM, -2, &checkpointId); CCheckpoint* pCheckpoint = g_pCheckpointManager->Get(checkpointId); if(pCheckpoint) { pCheckpoint->SetDimension(iDimension); sq_pushbool(pVM, true); return 1; } sq_pushbool(pVM, false); return 1; }
SQInteger SFMouseRelease(HSQUIRRELVM v) /* 1 - left; 2 - middle; 3 - right; */ { int button; sq_getinteger(Scripts.vm, 2, &button); switch (button) { case 1: /* left */ { if (Input.previousMouseLeft && !(Input.currentMouseLeft)) { sq_pushbool(Scripts.vm, SQTrue); } else { sq_pushbool(Scripts.vm, SQFalse); } break; } case 2: /* middle */ { if (Input.previousMouseMiddle && !(Input.currentMouseMiddle)) { sq_pushbool(Scripts.vm, SQTrue); } else { sq_pushbool(Scripts.vm, SQFalse); } break; } case 3: /* right */ { if (Input.previousMouseRight && !(Input.currentMouseRight)) { sq_pushbool(Scripts.vm, SQTrue); } else { sq_pushbool(Scripts.vm, SQFalse); } break; } } return 1; }
// bool ViCbIsFocused(VApiHandle hWnd) SQInteger ViCbIsFocused(HSQUIRRELVM v) { SQInteger nargs = sq_gettop(v); SQInteger Handle = 0; CControlUI* pCtrl = NULL; SQBool bRet = FALSE; if (!v || 1 + 1 != nargs) {goto _Exit_;} if (OT_INTEGER != sq_gettype(v, 2)) {goto _Exit_;} sq_getinteger(v, 2, &Handle); pCtrl = QiHwHandleToCtrl(Handle); if (!pCtrl) {goto _Exit_;} bRet = pCtrl->IsFocused(); _Exit_: sq_pushbool(v, bRet); return 1; }
// BOOL ViCbSetFocus(VApiHandle hWnd) SQInteger ViCbSetFocus(HSQUIRRELVM v) { SQInteger nargs = sq_gettop(v); SQInteger Handle = 0; CControlUI* pCtrl = NULL; LPCTSTR pstrName = NULL; if (!v || 1 + 1 != nargs) {goto _Exit_;} if (OT_INTEGER != sq_gettype(v, 2)) {goto _Exit_;} sq_getinteger(v, 2, &Handle); pCtrl = QiHwHandleToCtrl(Handle); if (!pCtrl) {goto _Exit_;} pCtrl->SetFocus(); _Exit_: sq_pushbool(v, TRUE); return 1; }
// wchar* ViCbGetToolTip(VApiHandle hWnd) SQInteger ViCbGetToolTip(HSQUIRRELVM v) { SQInteger nargs = sq_gettop(v); SQInteger Handle = 0; CControlUI* pCtrl = NULL; CStdString sName; if (!v || 1 + 1 != nargs) {goto _Exit_;} if (OT_INTEGER != sq_gettype(v, 2)) {goto _Exit_;} sq_getinteger(v, 2, &Handle); pCtrl = QiHwHandleToCtrl(Handle); if (!pCtrl) {goto _Exit_;} sName = pCtrl->GetToolTip(); _Exit_: sq_pushstring(v, sName.GetData(), sName.GetLength()); return 1; }
// VApiHandle ViCbGetParent(VApiHandle hWnd) SQInteger ViCbGetParent(HSQUIRRELVM v) { SQInteger nargs = sq_gettop(v); SQInteger Handle = 0; CControlUI* pCtrl = NULL; CControlUI* pParent = NULL; if (!v || 1 + 1 != nargs) {goto _Exit_;} if (OT_INTEGER != sq_gettype(v, 2)) {goto _Exit_;} sq_getinteger(v, 2, &Handle); pCtrl = QiHwHandleToCtrl(Handle); if (!pCtrl) {goto _Exit_;} pParent = pCtrl->GetParent(); _Exit_: sq_pushinteger(v, (SQInteger)QiHwCtrlToHandle(pParent)); return 1; }