示例#1
0
// 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;
}
示例#2
0
// 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;
}
示例#10
0
// 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;
}
示例#11
0
// 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;
}
示例#12
0
// 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;
}
示例#13
0
// 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;
}
示例#14
0
// 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;
}
示例#15
0
// 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;
}
示例#16
0
// 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;
}
示例#18
0
// 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;
}
示例#24
0
// 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;
}
示例#25
0
// 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;
}
示例#26
0
// 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;
}
示例#28
0
// 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;
}
示例#29
0
// 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;
}
示例#30
0
// 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;
}