// createCheckpoint(type, x, y, z, targetx, targety, targetz, radius)
SQInteger CCheckpointNatives::Create(SQVM * pVM)
{
	SQInteger iType;
	CVector3 vecPosition;
	CVector3 vecTargetPosition;
	float fRadius;
	sq_getinteger(pVM, -8, &iType);
	sq_getvector3(pVM, -7, &vecPosition);
	sq_getvector3(pVM, -4, &vecTargetPosition);
	sq_getfloat(pVM, -1, &fRadius);
	sq_pushentity(pVM, g_pCheckpointManager->Add(iType, vecPosition, vecTargetPosition, fRadius));
	return 1;
}
// 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;
}
int CVehicleNatives::Create(SQVM * pVM)
{
	int iVehicleId;
	CVector3 vecPos, vecRot;
	sq_getinteger(pVM, -7, &iVehicleId);
	sq_getvector3(pVM, -6, &vecPos);
	sq_getvector3(pVM, -3, &vecRot);
	CVehicle * pVehicle = g_pServer->GetVehicleManager()->Add(iVehicleId);
	if(pVehicle)
	{
		pVehicle->SetPosition(vecPos);
		pVehicle->SetRotation(vecPos);
		pVehicle->SpawnForWorld();
		sq_pushentity(pVM, pVehicle);
	}
	sq_pushnull(pVM);
	return 1;
}
// createActor(modelhash, x, y, z, r)
SQInteger CActorNatives::Create(SQVM * pVM)
{
	SQInteger iModelId;
	CVector3 vecPosition;
	float fHeading;
	sq_getinteger(pVM, -5, &iModelId);
	sq_getvector3(pVM, -4, &vecPosition);
	sq_getfloat(pVM, -1, &fHeading);
	sq_pushentity(pVM, g_pActorManager->Create(iModelId, vecPosition, fHeading));
	return 1;
}
// 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;
}
int CVehicleNatives::SetPosition(SQVM * pVM)
{
	CVehicle * pVehicle = sq_tovehicle(pVM, 2);

	if(pVehicle)
	{
		CVector3 vecPos;
		sq_getvector3(pVM, 3, &vecPos);
		pVehicle->SetPosition(vecPos);
		sq_pushbool(pVM, true);
	}
	else
		sq_pushnull(pVM);

	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;
}
// setCheckpointTargetPosition(checkpointid, targetposition)
SQInteger CCheckpointNatives::SetTargetPosition(SQVM * pVM)
{
	EntityId checkpointId;
	CVector3 vecTargetPosition;
	sq_getentity(pVM, -4, &checkpointId);
	sq_getvector3(pVM, -3, &vecTargetPosition);
	CCheckpoint * pCheckpoint = g_pCheckpointManager->Get(checkpointId);

	if(pCheckpoint)
	{
		pCheckpoint->SetTargetPosition(vecTargetPosition);
		sq_pushbool(pVM, true);
		return 1;
	}

	sq_pushbool(pVM, false);
	return 1;
}