// actorWalkToCoordinatesForPlayer(playerid, actorid, x, y, z) SQInteger CActorNatives::WalkToCoordinates(SQVM * pVM) { EntityId playerId; EntityId actorId; CVector3 vecPosition; SQInteger iType; sq_getentity(pVM, -6, &playerId); sq_getentity(pVM, -5, &actorId); sq_getvector3(pVM, -4, &vecPosition); sq_getinteger(pVM, -1, &iType); if(g_pPlayerManager->DoesExist(playerId)) { CBitStream bsSend; bsSend.Write(actorId); bsSend.Write(vecPosition); bsSend.Write((int)iType); g_pNetworkManager->RPC(RPC_ScriptingActorWalkToCoordinates, &bsSend, PRIORITY_HIGH, RELIABILITY_RELIABLE_ORDERED, playerId, false); sq_pushbool(pVM, true); return 1; } sq_pushbool(pVM, false); return 1; }
// warpActorIntoVehicle(actorid, vehicleid, seatid) SQInteger CActorNatives::WarpIntoVehicle(SQVM * pVM) { EntityId actorId; EntityId vehicleId; SQInteger seatid; sq_getentity(pVM, -3, &actorId); sq_getentity(pVM, -2, &vehicleId); sq_getinteger(pVM, -1, &seatid); if(g_pActorManager->DoesExist(actorId)) { if(seatid >= 0 && seatid <= 3) { g_pActorManager->WarpIntoVehicle(actorId,vehicleId,(int)seatid); sq_pushbool(pVM, true); return 1; } else { CLogFile::Printf("Can't warp actor %d on the seat %d from the vehicle %d(Seats are only supported from 0 to 3(driver and passenger))",actorId,seatid,vehicleId); sq_pushbool(pVM, false); } } sq_pushbool(pVM, false); return 1; }
// getCheckpointTargetPosition(checkpointid) SQInteger CCheckpointNatives::GetTargetPosition(SQVM * pVM) { EntityId checkpointId; sq_getentity(pVM, -1, &checkpointId); CCheckpoint * pCheckpoint = g_pCheckpointManager->Get(checkpointId); if(pCheckpoint) { CVector3 vecTargetPosition; pCheckpoint->GetTargetPosition(vecTargetPosition); sq_newtable(pVM); sq_pushinteger(pVM, 0); sq_pushfloat(pVM, vecTargetPosition.fX); sq_createslot(pVM, -3); sq_pushinteger(pVM, 1); sq_pushfloat(pVM, vecTargetPosition.fY); sq_createslot(pVM, -3); sq_pushinteger(pVM, 2); sq_pushfloat(pVM, vecTargetPosition.fZ); sq_createslot(pVM, -3); return 1; } sq_pushbool(pVM, false); return 1; }
// deleteCheckpoint(checkpointid) SQInteger CCheckpointNatives::Delete(SQVM * pVM) { EntityId checkpointId; sq_getentity(pVM, -1, &checkpointId); sq_pushbool(pVM, g_pCheckpointManager->Delete(checkpointId)); return 1; }
// isVehicleValid(vehicleid) SQInteger CVehicleNatives::IsValid(SQVM * pVM) { EntityId vehicleId; sq_getentity(pVM, -1, &vehicleId); sq_pushbool(pVM, g_pClient->GetVehicleManager()->Exists(vehicleId)); return 1; }
// getVehicleOccupants(vehicleid) SQInteger CVehicleNatives::GetOccupants(SQVM * pVM) { EntityId vehicleId; sq_getentity(pVM, -1, &vehicleId); CNetworkVehicle * pVehicle = g_pClient->GetVehicleManager()->Get(vehicleId); if(pVehicle) { CSquirrelArguments args; for(BYTE i = 0; i < (MAX_VEHICLE_PASSENGERS + 1); i++) { args.push((int)(i + 1)); CNetworkPlayer * pOccupant = pVehicle->GetOccupant(i); args.push(pOccupant ? (int)pOccupant->GetPlayerId() : (int)INVALID_ENTITY_ID); } sq_pusharg(pVM, CSquirrelArgument(args, false)); return 1; } sq_pushbool(pVM, false); return 1; }
// getVehicleRotation(vehicleid) SQInteger CVehicleNatives::GetRotation(SQVM * pVM) { EntityId vehicleId; sq_getentity(pVM, -1, &vehicleId); if(g_pVehicleManager->Exists(vehicleId)) { CNetworkVehicle * pVehicle = g_pVehicleManager->Get(vehicleId); if(pVehicle) { CVector3 vecRotation; pVehicle->GetRotation(vecRotation); CSquirrelArguments args; args.push(vecRotation.fX); args.push(vecRotation.fY); args.push(vecRotation.fZ); sq_pusharg(pVM, CSquirrelArgument(args, true)); return 1; } } sq_pushbool(pVM, false); return 1; }
// hideCheckpointForPlayer(checkpointid, playerid) SQInteger CCheckpointNatives::HideForPlayer(SQVM * pVM) { EntityId checkpointId; EntityId playerId; sq_getentity(pVM, -2, &checkpointId); sq_getentity(pVM, -1, &playerId); CCheckpoint * pCheckpoint = g_pCheckpointManager->Get(checkpointId); if(pCheckpoint) { pCheckpoint->HideForPlayer(playerId); sq_pushbool(pVM, true); return 1; } sq_pushbool(pVM, false); return 1; }
SQInteger CCheckpointNatives::GetDimension(SQVM * pVM) { EntityId checkpointId; sq_getentity(pVM, -1, &checkpointId); CCheckpoint* pCheckpoint = g_pCheckpointManager->Get(checkpointId); if(pCheckpoint) { sq_pushinteger(pVM, (SQInteger)pCheckpoint->GetDimension()); } return 1; }
// removeActorFromVehicle(actorid) SQInteger CActorNatives::RemoveFromVehicle(SQVM * pVM) { EntityId actorId; sq_getentity(pVM, -1, &actorId); if(g_pActorManager->DoesExist(actorId)) { g_pActorManager->RemoveFromVehicle(actorId); return 1; } sq_pushbool(pVM, false); return 1; }
// getActorNametagColor(actorid) SQInteger CActorNatives::GetColor(SQVM * pVM) { EntityId actorId; sq_getentity(pVM, -1, &actorId); if(g_pActorManager->DoesExist(actorId)) { sq_pushinteger(pVM, g_pActorManager->GetColor(actorId)); return 1; } sq_pushbool(pVM,false); return 1; }
// getActorName(actorid) SQInteger CActorNatives::GetName(SQVM * pVM) { EntityId actorId; sq_getentity(pVM, -1, &actorId); if(g_pActorManager->DoesExist(actorId)) { sq_pushstring(pVM, g_pActorManager->GetActorName(actorId), -1); return 1; } sq_pushbool(pVM, false); return 1; }
// getActorModel(actorid) SQInteger CActorNatives::GetModel(SQVM * pVM) { EntityId actorId; sq_getentity(pVM, -1, &actorId); if(g_pActorManager->DoesExist(actorId)) { int aModel = g_pActorManager->GetModel(actorId); sq_pushinteger(pVM, aModel); return 1; } sq_pushbool(pVM, false); return 1; }
// getActorHeading(actorid) SQInteger CActorNatives::GetHeading(SQVM * pVM) { EntityId actorId; sq_getentity(pVM, -1, &actorId); if(g_pActorManager->DoesExist(actorId)) { float fHeading = g_pActorManager->GetHeading(actorId); sq_pushfloat(pVM, fHeading); return 1; } sq_pushbool(pVM, false); return 1; }
// deleteActor(actorid) SQInteger CActorNatives::Delete(SQVM * pVM) { EntityId actorId; sq_getentity(pVM, -1, &actorId); if(g_pActorManager->DoesExist(actorId)) { g_pActorManager->Delete(actorId); sq_pushbool(pVM, true); return 1; } sq_pushbool(pVM, false); 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; }
// getCheckpointRadius(checkpointid) SQInteger CCheckpointNatives::GetRadius(SQVM * pVM) { EntityId checkpointId; sq_getentity(pVM, -1, &checkpointId); CCheckpoint * pCheckpoint = g_pCheckpointManager->Get(checkpointId); if(pCheckpoint) { sq_pushfloat(pVM, pCheckpoint->GetRadius()); return 1; } sq_pushbool(pVM, false); return 1; }
// toggleActorBlip(actorid, toggle) SQInteger CActorNatives::ToggleBlip(SQVM * pVM) { EntityId actorId; SQBool show; sq_getentity(pVM, -2, &actorId); sq_getbool(pVM, -1, &show); if(g_pActorManager->DoesExist(actorId)) { bool bToggle = (show != 0); g_pActorManager->ToggleBlip(actorId, bToggle); return 1; } sq_pushbool(pVM, false); return 1; }
// getVehicleModel(vehicleid) SQInteger CVehicleNatives::GetModel(SQVM * pVM) { EntityId vehicleId; sq_getentity(pVM, -1, &vehicleId); CNetworkVehicle * pVehicle = g_pClient->GetVehicleManager()->Get(vehicleId); if(pVehicle) { sq_pushinteger(pVM, g_pClient->GetModelManager()->ModelHashToVehicleId(pVehicle->GetModelInfo()->GetHash())); return 1; } sq_pushbool(pVM, false); return 1; }
// getVehicleDirtLevel(vehicleid) SQInteger CVehicleNatives::GetDirtLevel(SQVM * pVM) { EntityId vehicleId; sq_getentity(pVM, -1, &vehicleId); CNetworkVehicle * pVehicle = g_pVehicleManager->Get(vehicleId); if(pVehicle) { sq_pushfloat(pVM, pVehicle->GetDirtLevel()); return 1; } sq_pushbool(pVM, false); return 1; }
// isVehicleOccupied(vehicleid) SQInteger CVehicleNatives::IsOccupied(SQVM * pVM) { EntityId vehicleId; sq_getentity(pVM, -1, &vehicleId); CNetworkVehicle * pVehicle = g_pClient->GetVehicleManager()->Get(vehicleId); if(pVehicle) { sq_pushbool(pVM, pVehicle->IsOccupied()); return 1; } sq_pushbool(pVM, false); return 1; }
// showCheckpointForAll(checkpointid) SQInteger CCheckpointNatives::ShowForAll(SQVM * pVM) { EntityId checkpointId; sq_getentity(pVM, -1, &checkpointId); CCheckpoint * pCheckpoint = g_pCheckpointManager->Get(checkpointId); if(pCheckpoint) { pCheckpoint->ShowForWorld(); sq_pushbool(pVM, true); return 1; } sq_pushbool(pVM, false); return 1; }
// getVehicleLocked(vehicleid) SQInteger CVehicleNatives::GetLocked(SQVM * pVM) { EntityId vehicleId; sq_getentity(pVM, -1, &vehicleId); CNetworkVehicle * pVehicle = g_pVehicleManager->Get(vehicleId); if(pVehicle) { sq_pushinteger(pVM, pVehicle->GetDoorLockState()); return 1; } sq_pushbool(pVM, false); return 1; }
// toggleActorFrozen(actorid, toggle) SQInteger CActorNatives::ToggleFrozen(SQVM * pVM) { EntityId actorId; SQBool frozen; sq_getentity(pVM, -2, &actorId); sq_getbool(pVM, -1, &frozen); if(g_pActorManager->DoesExist(actorId)) { bool bToggle = (frozen != 0); g_pActorManager->ToggleFrozen(actorId, bToggle); return 1; } sq_pushbool(pVM, false); return 1; }
// toggleActorHelmet(actorid, toggle) SQInteger CActorNatives::ToggleHelmet(SQVM * pVM) { EntityId actorId; SQBool helmet; sq_getentity(pVM, -2, &actorId); sq_getbool(pVM, -1, &helmet); if(g_pActorManager->DoesExist(actorId)) { bool bToggle = (helmet != 0); g_pActorManager->ToggleHelmet(actorId, bToggle); return 1; } sq_pushbool(pVM, false); return 1; }
// setActorCoordinates(actorid, x, y, z) SQInteger CActorNatives::SetCoordinates(SQVM * pVM) { EntityId actorId; CVector3 vecPosition; sq_getentity(pVM, -4, &actorId); sq_getvector3(pVM, -3, &vecPosition); if(g_pActorManager->DoesExist(actorId)) { g_pActorManager->SetPosition(actorId, vecPosition); sq_pushbool(pVM, true); return 1; } 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; }
// setActorName(actorid, name) SQInteger CActorNatives::SetName(SQVM * pVM) { EntityId actorId; const char * name = NULL; sq_getentity(pVM, -2, &actorId); sq_getstring(pVM, -1, &name); if(g_pActorManager->DoesExist(actorId)) { g_pActorManager->SetActorName(actorId, name); sq_pushbool(pVM, true); return 1; } sq_pushbool(pVM, false); return 1; }
// isActorValid(actorid) SQInteger CActorNatives::IsValid(SQVM * pVM) { EntityId actorId; sq_getentity(pVM, -1, &actorId); if(g_pActorManager->DoesExist(actorId)) { sq_pushbool(pVM, true); return 1; } else { sq_pushbool(pVM, false); return 1; } return 1; }
// setActorHeading(actorid, r) SQInteger CActorNatives::SetHeading(SQVM * pVM) { EntityId actorId; float fHeading; sq_getentity(pVM, -2, &actorId); sq_getfloat(pVM, -1, &fHeading); if(g_pActorManager->DoesExist(actorId)) { g_pActorManager->SetHeading(actorId, fHeading); sq_pushbool(pVM, true); return 1; } sq_pushbool(pVM, false); return 1; }